diff --git a/htroot/YMarks.html b/htroot/YMarks.html index cf88a8157..7c0d7b767 100644 --- a/htroot/YMarks.html +++ b/htroot/YMarks.html @@ -25,8 +25,9 @@ {display: 'Public', name : 'public', width : 25, sortable : true, align: 'center'}, {display: 'Title', name : 'title', width : 400, sortable : true, align: 'left'}, {display: 'Tags', name : 'tags', width : 160, sortable : false, align: 'left'}, - {display: 'Folders', name : 'folders', width : 160, sortable : false, align: 'left', hide: false}, - {display: 'Date', name : 'date', width : 100, sortable : true, align: 'left'} + {display: 'Folders', name : 'folders', width : 160, sortable : true, align: 'left', hide: false}, + {display: 'Date added', name : 'date_added', width : 100, sortable : true, align: 'left'}, + {display: 'Date visited', name : 'date_visited', width : 100, sortable : true, align: 'left'} ], buttons: [ {name: 'Add', bclass: 'bookmark', onpress: bm_action}, @@ -96,7 +97,8 @@ var qtag = $(this).text().replace(/\s+/g,""); $('#ymarks').flexOptions({ query: qtag, - qtype: "_tags" + qtype: "_tags", + newp: 1 }); $('#ymarks').flexReload(); }); diff --git a/htroot/api/ymarks/get_ymark.json b/htroot/api/ymarks/get_ymark.json index 0328725bb..30a080014 100644 --- a/htroot/api/ymarks/get_ymark.json +++ b/htroot/api/ymarks/get_ymark.json @@ -9,7 +9,10 @@ rows: [ "

#[title]#

#[desc]#

#[url]#", "

#[tags]#

", "

#[folders]#

", -"

#[date_added]#

"]}#[comma]# +"

#[date_added]#

", +"

#[date_modified]#

", +"

#[date_visited]#

" +]}#[comma]# #{/json}# ] } \ No newline at end of file diff --git a/htroot/api/ymarks/import_ymark.java b/htroot/api/ymarks/import_ymark.java index 00a13f60a..8bebe3962 100644 --- a/htroot/api/ymarks/import_ymark.java +++ b/htroot/api/ymarks/import_ymark.java @@ -47,12 +47,11 @@ public class import_ymark { boolean empty = false; if(post.containsKey("autotag") && !post.get("autotag", "off").equals("off")) { - if(post.get("autotag").equals("merge")) { - autotag = true; + autotag = true; + if(post.get("autotag").equals("merge")) { merge = true; } if(post.get("autotag").equals("empty")) { - autotag = true; empty = true; } t = new Thread(new YMarkAutoTagger(autoTaggingQueue, sb.loader, sb.tables.bookmarks, bmk_user, merge),"YMarks - autoTagger"); @@ -154,7 +153,7 @@ public class import_ymark { try { String url = bmk.get(YMarkEntry.BOOKMARK.URL.key()); // other protocols could cause problems - if(url.startsWith("http")) { + if(url != null && url.startsWith("http")) { ymarks.addBookmark(bmk_user, bmk, true, true); if(autotag) { if(!empty) { diff --git a/htroot/yacy/ui/js/jquery-flexigrid.js b/htroot/yacy/ui/js/jquery-flexigrid.js index d48a8edca..f5813c40a 100644 --- a/htroot/yacy/ui/js/jquery-flexigrid.js +++ b/htroot/yacy/ui/js/jquery-flexigrid.js @@ -594,7 +594,7 @@ if ($.browser.opera) $(t).css('visibility','hidden'); - if (!p.newp) p.newp = 1; + if (!p.newp) p.newp = 1; if (p.page>p.pages) p.page = p.pages; //var param = {page:p.newp, rp: p.rp, sortname: p.sortname, sortorder: p.sortorder, query: p.query, qtype: p.qtype}; diff --git a/source/de/anomic/data/ymark/YMarkAutoTagger.java b/source/de/anomic/data/ymark/YMarkAutoTagger.java index 1e19b2625..986655899 100644 --- a/source/de/anomic/data/ymark/YMarkAutoTagger.java +++ b/source/de/anomic/data/ymark/YMarkAutoTagger.java @@ -65,6 +65,13 @@ public class YMarkAutoTagger implements Runnable, Thread.UncaughtExceptionHandle response = loader.load(loader.request(uri, true, false), CrawlProfile.CacheStrategy.IFEXIST, Long.MAX_VALUE, true); } catch (IOException e) { Log.logWarning(YMarkTables.BOOKMARKS_LOG, "loadDocument failed due to IOException for url: "+url); + try { + this.ymarks.addFolder(this.bmk_user, url, "/IOExceptions"); + } catch (IOException e1) { + Log.logException(e1); + } catch (RowSpaceExceededException e1) { + Log.logException(e1); + } return null; } try { diff --git a/source/de/anomic/data/ymark/YMarkTables.java b/source/de/anomic/data/ymark/YMarkTables.java index 76338a53d..22d3585b3 100644 --- a/source/de/anomic/data/ymark/YMarkTables.java +++ b/source/de/anomic/data/ymark/YMarkTables.java @@ -237,6 +237,25 @@ public class YMarkTables { } } + public void addFolder(final String bmk_user, final String url, final String folder) throws IOException, RowSpaceExceededException { + if(!folder.isEmpty()) { + // do not set defaults as we only want to add a folder + final YMarkEntry bmk = new YMarkEntry(false); + bmk.put(YMarkEntry.BOOKMARK.URL.key(), url); + bmk.put(YMarkEntry.BOOKMARK.FOLDERS.key(), folder); + this.addBookmark(bmk_user, bmk, true, true); + } + } + + public void visited(final String bmk_user, final String url) throws IOException, RowSpaceExceededException { + // do not set defaults + final YMarkEntry bmk = new YMarkEntry(false); + bmk.put(YMarkEntry.BOOKMARK.URL.key(), url); + bmk.put(YMarkEntry.BOOKMARK.DATE_VISITED.key(), (new YMarkDate()).toString()); + this.addBookmark(bmk_user, bmk, true, true); + } + + public void addBookmark(final String bmk_user, final YMarkEntry bmk, final boolean mergeTags, final boolean mergeFolders) throws IOException, RowSpaceExceededException { final String bmk_table = TABLES.BOOKMARKS.tablename(bmk_user); final String date = String.valueOf(System.currentTimeMillis());