Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

262 строки
8.1 KiB

  1. // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
  2. // MIT License. See license.txt
  3. wn.ui.toolbar.Toolbar = Class.extend({
  4. init: function() {
  5. this.make();
  6. //this.make_modules();
  7. this.make_file();
  8. wn.ui.toolbar.recent = new wn.ui.toolbar.RecentDocs();
  9. wn.ui.toolbar.bookmarks = new wn.ui.toolbar.Bookmarks();
  10. this.make_tools();
  11. this.set_user_name();
  12. this.make_logout();
  13. this.make_notification();
  14. $('.dropdown-toggle').dropdown();
  15. $(document).trigger('toolbar_setup');
  16. // clear all custom menus on page change
  17. $(document).on("page-change", function() {
  18. $("header .navbar .custom-menu").remove();
  19. })
  20. },
  21. make: function() {
  22. $('header').append('<div class="navbar navbar-fixed-top navbar-inverse" \
  23. style="min-height: 50px;" role="navigation">\
  24. <div class="container">\
  25. <div class="navbar-header">\
  26. <button type="button" class="navbar-toggle" data-toggle="collapse" \
  27. data-target=".navbar-responsive-collapse">\
  28. <span class="icon-bar"></span>\
  29. <span class="icon-bar"></span>\
  30. <span class="icon-bar"></span>\
  31. </button>\
  32. <a class="navbar-brand" href="#"></a>\
  33. </div>\
  34. <div class="collapse navbar-collapse navbar-responsive-collapse">\
  35. <ul class="nav navbar-nav navbar-left">\
  36. </ul>\
  37. <img src="lib/images/ui/spinner.gif" id="spinner"/>\
  38. <ul class="nav navbar-nav navbar-right">\
  39. <li class="dropdown">\
  40. <a class="dropdown-toggle" data-toggle="dropdown" href="#" \
  41. onclick="return false;" id="toolbar-user-link"></a>\
  42. <ul class="dropdown-menu" id="toolbar-user">\
  43. </ul>\
  44. </li>\
  45. </ul>\
  46. </div>\
  47. </div>\
  48. </div>');
  49. },
  50. make_home: function() {
  51. $('.navbar-brand').attr('href', "#");
  52. },
  53. make_notification: function() {
  54. $('.navbar .navbar-right').append('<li class="dropdown">\
  55. <a class="dropdown-toggl" href="#" data-toggle="dropdown"\
  56. title="'+wn._("Unread Messages")+'"\
  57. onclick="return false;"><span class="navbar-new-comments">0</span></a>\
  58. <ul class="dropdown-menu" id="navbar-notification">\
  59. </ul>\
  60. </li>');
  61. $(document).on("notification-update", function() {
  62. wn.ui.toolbar.update_notifications();
  63. })
  64. },
  65. // make_modules: function() {
  66. // $('<li class="dropdown">\
  67. // <a class="dropdown-toggle" data-toggle="dropdown" href="#"\
  68. // title="'+wn._("Modules")+'"\
  69. // onclick="return false;">'+wn._("Modules")+'</a>\
  70. // <ul class="dropdown-menu modules">\
  71. // </ul>\
  72. // </li>').prependTo('.navbar .nav:first');
  73. //
  74. // var modules_list = wn.user.get_desktop_items().sort();
  75. // var menu_list = $(".navbar .modules");
  76. //
  77. // var _get_list_item = function(m) {
  78. // args = {
  79. // module: m,
  80. // module_page: wn.modules[m].link,
  81. // module_label: wn._(wn.modules[m].label || m),
  82. // icon: wn.modules[m].icon
  83. // }
  84. //
  85. // return repl('<li><a href="#%(module_page)s" \
  86. // data-module="%(module)s"><i class="%(icon)s" style="display: inline-block; \
  87. // width: 21px; margin-top: -2px; margin-left: -7px;"></i>\
  88. // %(module_label)s</a></li>', args);
  89. // }
  90. //
  91. // // desktop
  92. // $('<li><a href="#desktop"><i class="icon-th"></i> '
  93. // + wn._("Desktop") + '</a></li>\
  94. // <li class="divider"></li>').appendTo(menu_list)
  95. //
  96. // // add to dropdown
  97. // $.each(modules_list,function(i, m) {
  98. // if(m!='Setup') {
  99. // menu_list.append(_get_list_item(m));
  100. // }
  101. // })
  102. //
  103. // // setup for system manager
  104. // if(user_roles.indexOf("System Manager")!=-1) {
  105. // menu_list.append('<li class="divider">' + _get_list_item("Setup"));
  106. // }
  107. //
  108. // },
  109. make_file: function() {
  110. wn.ui.toolbar.new_dialog = new wn.ui.toolbar.NewDialog();
  111. wn.ui.toolbar.search = new wn.ui.toolbar.Search();
  112. wn.ui.toolbar.report = new wn.ui.toolbar.Report();
  113. $('.navbar .nav:first').append('<li class="dropdown">\
  114. <a class="dropdown-toggle" href="#" data-toggle="dropdown"\
  115. title="'+wn._("File")+'"\
  116. onclick="return false;">'+wn._("File")+'</a>\
  117. <ul class="dropdown-menu" id="navbar-file">\
  118. <li><a href="#" onclick="return wn.ui.toolbar.new_dialog.show();">\
  119. <i class="icon-plus"></i> '+wn._('New')+'...</a></li>\
  120. <li><a href="#" onclick="return wn.ui.toolbar.search.show();">\
  121. <i class="icon-search"></i> '+wn._('Search')+'...</a></li>\
  122. <li><a href="#" onclick="return wn.ui.toolbar.report.show();">\
  123. <i class="icon-list"></i> '+wn._('Report')+'...</a></li>\
  124. </ul>\
  125. </li>');
  126. },
  127. make_tools: function() {
  128. $('.navbar .nav:first').append('<li class="dropdown">\
  129. <a class="dropdown-toggle" data-toggle="dropdown" href="#" \
  130. title="'+wn._("Tools")+'"\
  131. onclick="return false;">'+wn._("Tools")+'</a>\
  132. <ul class="dropdown-menu" id="toolbar-tools">\
  133. <li><a href="#" onclick="return wn.ui.toolbar.clear_cache();">\
  134. <i class="icon-fixed-width icon-refresh"></i> '
  135. +wn._('Clear Cache & Refresh')+'</a></li>\
  136. <li><a href="#" onclick="return wn.ui.toolbar.show_about();">\
  137. <i class="icon-fixed-width icon-info-sign"></i> '
  138. +wn._('About')+'</a></li>\
  139. <li><a href="http://erpnext.org/docs.attributions.html" target="_blank"><i class="icon-fixed-width icon-heart"></i> '
  140. +wn._('Attributions')+'</a></li>\
  141. </ul>\
  142. </li>');
  143. if(has_common(user_roles,['Administrator','System Manager'])) {
  144. $('#toolbar-tools').append('<li><a href="#" \
  145. onclick="return wn.ui.toolbar.download_backup();"><i class="icon-fixed-width icon-download"></i> '
  146. +wn._('Download Backup')+'</a></li>');
  147. }
  148. },
  149. set_user_name: function() {
  150. var fn = user_fullname;
  151. if(fn.length > 15) fn = fn.substr(0,12) + '...';
  152. $('#toolbar-user-link').html(fn + '<b class="caret"></b>');
  153. },
  154. make_logout: function() {
  155. // logout
  156. $('#toolbar-user').append('<li><a href="#" onclick="return wn.app.logout();">\
  157. <i class="icon-fixed-width icon-signout"></i> '+wn._('Logout')+'</a></li>');
  158. }
  159. });
  160. wn.ui.toolbar.update_notifications = function() {
  161. var total = 0;
  162. var doctypes = keys(wn.boot.notification_info.open_count_doctype).sort();
  163. var modules = keys(wn.boot.notification_info.open_count_module).sort();
  164. $("#navbar-notification").empty();
  165. $.each(modules, function(i, module) {
  166. var count = wn.boot.notification_info.open_count_module[module];
  167. if(count) {
  168. $(repl('<li><a>\
  169. <span class="badge pull-right">\
  170. %(count)s</span> \
  171. <i class="icon-fixed-width %(icon)s"></i> %(module)s </a></li>', {
  172. module: module,
  173. count: count,
  174. icon: wn.modules[module].icon
  175. }))
  176. .appendTo("#navbar-notification")
  177. .find("a")
  178. .attr("data-module", module)
  179. .css({"min-width":"200px"})
  180. .on("click", function() {
  181. wn.set_route(wn.modules[$(this).attr("data-module")].link);
  182. });
  183. total += count;
  184. }
  185. });
  186. if(total) {
  187. $('<li class="divider"></li>').appendTo("#navbar-notification");
  188. }
  189. $.each(doctypes, function(i, doctype) {
  190. var count = wn.boot.notification_info.open_count_doctype[doctype];
  191. if(count) {
  192. $(repl('<li><a>\
  193. <span class="badge pull-right">\
  194. %(count)s</span> \
  195. <i class="icon-fixed-width %(icon)s"></i> %(doctype)s </a></li>', {
  196. doctype: doctype,
  197. icon: wn.boot.doctype_icons[doctype],
  198. count: count
  199. }))
  200. .appendTo("#navbar-notification")
  201. .find("a")
  202. .attr("data-doctype", doctype)
  203. .css({"min-width":"200px"})
  204. .on("click", function() {
  205. wn.views.show_open_count_list(this);
  206. });
  207. total += count;
  208. }
  209. });
  210. $(".navbar-new-comments")
  211. .html(total)
  212. .toggleClass("navbar-new-comments-true", total ? true : false);
  213. }
  214. wn.ui.toolbar.clear_cache = function() {
  215. localStorage && localStorage.clear();
  216. $c('webnotes.sessions.clear',{},function(r,rt){
  217. if(!r.exc) {
  218. show_alert(r.message);
  219. location.reload();
  220. }
  221. });
  222. return false;
  223. }
  224. wn.ui.toolbar.download_backup = function() {
  225. msgprint(wn._("Your download is being built, this may take a few moments..."));
  226. return $c('webnotes.utils.backups.get_backup',{},function(r,rt) {});
  227. return false;
  228. }
  229. wn.ui.toolbar.show_about = function() {
  230. try {
  231. wn.ui.misc.about();
  232. } catch(e) {
  233. console.log(e);
  234. }
  235. return false;
  236. }
  237. wn.ui.toolbar.show_banner = function(msg) {
  238. return $('<div class="toolbar-banner"></div>').html(msg).appendTo($('header'));
  239. }