Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

88 Zeilen
2.6 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;">'+wn._("Bookmarks")+'</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 route_parts = decodeURIComponent(route).split("/");
  45. if(route_parts[0]==="List" || route_parts[0]==="Form") {
  46. var icon = wn.boot.doctype_icons[route_parts[1]];
  47. } else {
  48. var icon = "icon-play";
  49. }
  50. var html = repl('<li><a href="#%(route)s"><i class="icon-fixed-width %(icon)s"></i> %(title)s</a></li>',
  51. {route: route, title: title, icon: icon});
  52. $('#toolbar-bookmarks').prepend(html);
  53. },
  54. add: function(route, title) {
  55. // bring to front
  56. if(this.bookmarked(route)) {
  57. this.remove(route);
  58. }
  59. // max length
  60. if(this.bookmarks.length >= 11) {
  61. this.remove(this.bookmarks[this.bookmarks.length-1].route);
  62. }
  63. this.add_item(route, title);
  64. this.bookmarks = [{"route":route, "title":title}].concat(this.bookmarks);
  65. this.save();
  66. },
  67. bookmarked: function(route) {
  68. return wn.utils.filter_dict(this.bookmarks, {"route": route}).length;
  69. },
  70. save: function() {
  71. wn.defaults.set_default("_bookmarks", this.bookmarks);
  72. },
  73. remove: function(route) {
  74. this.bookmarks = $.map(this.bookmarks, function(d) {
  75. if(d.route!=route) return d; });
  76. $(repl('#toolbar-bookmarks li a[href="#%(route)s"]', {route:route})).parent().remove();
  77. },
  78. });