Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

82 lignes
2.3 KiB

  1. // recent document list
  2. wn.ui.toolbar.Bookmarks = Class.extend({
  3. init:function() {
  4. $('.navbar .nav:first').append('<li class="dropdown">\
  5. <a class="dropdown-toggle" data-toggle="dropdown" href="#" \
  6. title="'+wn._("Bookmarks")+'"\
  7. onclick="return false;"><i class="icon-star"></i></a>\
  8. <ul class="dropdown-menu" id="toolbar-bookmarks">\
  9. <li class="divider"></li>\
  10. <li><a href="#" id="add-bookmark-link"><i class="icon-plus"></i> '
  11. +wn._('Add Bookmark')+'</a></li>\
  12. <li style="display: none" id="remove-bookmark-link"><a href="#"><i class="icon-minus"></i> '
  13. +wn._('Remove Bookmark')+'</a></li>\
  14. </ul>\
  15. </li>');
  16. this.setup();
  17. },
  18. setup: function() {
  19. var me = this;
  20. this.bookmarks = wn.defaults.get_default("_bookmarks") || [];
  21. for(var i=this.bookmarks.length-1; i>=0; i--) {
  22. var bookmark = this.bookmarks[i];
  23. this.add_item(bookmark.route, bookmark.title)
  24. }
  25. $("#add-bookmark-link").click(function() {
  26. me.add(wn.get_route_str(), document.title);
  27. return false;
  28. })
  29. $("#remove-bookmark-link").click(function() {
  30. me.remove(wn.get_route_str());
  31. me.save();
  32. me.show_hide_bookmark();
  33. return false;
  34. });
  35. $(window).bind('hashchange', function() {
  36. me.show_hide_bookmark();
  37. });
  38. me.show_hide_bookmark();
  39. },
  40. show_hide_bookmark: function() {
  41. $("#remove-bookmark-link").toggle(this.bookmarked(wn.get_route_str()) ? true : false);
  42. },
  43. add_item: function(route, title) {
  44. var html = repl('<li><a href="#%(route)s">%(title)s</a></li>',
  45. {route: route, title: title});
  46. $('#toolbar-bookmarks').prepend(html);
  47. },
  48. add: function(route, title) {
  49. // bring to front
  50. if(this.bookmarked(route)) {
  51. this.remove(route);
  52. }
  53. // max length
  54. if(this.bookmarks.length >= 11) {
  55. this.remove(this.bookmarks[this.bookmarks.length-1].route);
  56. }
  57. this.add_item(route, title);
  58. this.bookmarks = [{"route":route, "title":title}].concat(this.bookmarks);
  59. this.save();
  60. },
  61. bookmarked: function(route) {
  62. return wn.utils.filter_dict(this.bookmarks, {"route": route}).length;
  63. },
  64. save: function() {
  65. wn.defaults.set_default("_bookmarks", this.bookmarks);
  66. },
  67. remove: function(route) {
  68. this.bookmarks = $.map(this.bookmarks, function(d) {
  69. if(d.route!=route) return d; });
  70. $(repl('#toolbar-bookmarks li a[href="#%(route)s"]', {route:route})).parent().remove();
  71. },
  72. });