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('\
'+wn._('Recent')+'\
+ title="'+wn._("Recent")+'"\
+ onclick="return false;"> \
\
');
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('\
'+wn._('Document')+'\
+ title="'+wn._("Documents")+'"\
+ onclick="return false;"> \