diff --git a/public/build.json b/public/build.json index 0fc99a7010..cc1847b039 100644 --- a/public/build.json +++ b/public/build.json @@ -138,6 +138,7 @@ "lib/public/js/wn/ui/toolbar/search.js", "lib/public/js/wn/ui/toolbar/report.js", "lib/public/js/wn/ui/toolbar/recent.js", + "lib/public/js/wn/ui/toolbar/bookmarks.js", "lib/public/js/wn/ui/toolbar/toolbar.js", "lib/public/js/legacy/widgets/form/fields.js", diff --git a/public/js/wn/ui/toolbar/bookmarks.js b/public/js/wn/ui/toolbar/bookmarks.js new file mode 100644 index 0000000000..0139e13d8a --- /dev/null +++ b/public/js/wn/ui/toolbar/bookmarks.js @@ -0,0 +1,61 @@ +// recent document list +wn.ui.toolbar.Bookmarks = Class.extend({ + init:function() { + $('.navbar .nav:first').append(''); + + + this.setup(); + }, + setup: function() { + var me = this; + + this.bookmarks = wn.user.get_default("_bookmarks") || []; + for(var i=this.bookmarks.length-1; i>=0; i--) { + var bookmark = this.bookmarks[i]; + this.add_item(bookmark.route, bookmark.title) + } + + $("#add-bookmark-link").click(function() { + me.add(wn.get_route_str(), document.title); + return false; + }) + + }, + add_item: function(route, title) { + var html = repl('
  • %(title)s
  • ', + {route: route, title: title}); + $('#toolbar-bookmarks').prepend(html); + + }, + add: function(route, title) { + // bring to front + if(wn.utils.filter_dict(this.bookmarks, {"route": route}).length) { + this.remove(route); + } + + // max length + if(this.bookmarks.length >= 17) { + this.remove(this.bookmarks[this.bookmarks.length-1].route); + } + + this.add_item(route, title); + + this.bookmarks = [{"route":route, "title":title}].concat(this.bookmarks); + + // update server + wn.user.set_default("_bookmarks", this.bookmarks); + }, + remove: function(route) { + this.bookmarks = $.map(this.bookmarks, function(d) { + if(d.route!=route) return d; }); + $(repl('#toolbar-bookmarks li a[href="#%(route)s"]', {route:route})).parent().remove(); + }, +}); \ No newline at end of file diff --git a/public/js/wn/ui/toolbar/recent.js b/public/js/wn/ui/toolbar/recent.js index a807752dec..ec34f51e92 100644 --- a/public/js/wn/ui/toolbar/recent.js +++ b/public/js/wn/ui/toolbar/recent.js @@ -25,7 +25,8 @@ wn.ui.toolbar.RecentDocs = Class.extend({ init:function() { $('.navbar .nav:first').append(''); this.setup(); diff --git a/public/js/wn/ui/toolbar/toolbar.js b/public/js/wn/ui/toolbar/toolbar.js index dcdb6c2667..fa7656e229 100644 --- a/public/js/wn/ui/toolbar/toolbar.js +++ b/public/js/wn/ui/toolbar/toolbar.js @@ -27,6 +27,7 @@ wn.ui.toolbar.Toolbar = Class.extend({ this.make_home(); this.make_document(); wn.ui.toolbar.recent = new wn.ui.toolbar.RecentDocs(); + wn.ui.toolbar.bookmarks = new wn.ui.toolbar.Bookmarks(); this.make_tools(); this.set_user_name(); this.make_logout(); @@ -64,7 +65,8 @@ wn.ui.toolbar.Toolbar = Class.extend({ wn.ui.toolbar.report = new wn.ui.toolbar.Report(); $('.navbar .nav:first').append('