You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

desktop.js 2.8 KiB

12 years ago
12 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. wn.provide('wn.core.pages.desktop');
  2. wn.core.pages.desktop.refresh = function() {
  3. wn.core.pages.desktop.render();
  4. $("#icon-grid").sortable({
  5. update: function() {
  6. new_order = [];
  7. $("#icon-grid .case-wrapper").each(function(i, e) {
  8. new_order.push($(this).attr("data-name"));
  9. });
  10. wn.defaults.set_default("_desktop_items", new_order);
  11. }
  12. });
  13. }
  14. wn.core.pages.desktop.render = function() {
  15. document.title = "Desktop";
  16. var add_icon = function(m) {
  17. var module = wn.modules[m];
  18. if(!module || !module.link)
  19. return;
  20. if(!module.label)
  21. module.label = m;
  22. module.name = m;
  23. module.label = wn._(module.label);
  24. //module.gradient_css = wn.get_gradient_css(module.color, 45);
  25. module._link = module.link.toLowerCase().replace("/", "-");
  26. $module_icon = $(repl('<div id="module-icon-%(_link)s" class="case-wrapper" \
  27. data-name="%(name)s" data-link="%(link)s">\
  28. <div id="module-count-%(_link)s" class="circle" style="display: None">\
  29. <span class="circle-text"></span>\
  30. </div>\
  31. <div class="case-border" style="background-color: %(color)s">\
  32. <i class="%(icon)s"></i>\
  33. </div>\
  34. <div class="case-label">%(label)s</div>\
  35. </div>', module)).click(function() {
  36. var link = $(this).attr("data-link");
  37. if(link.substr(0, 1)==="/") {
  38. window.open(link.substr(1))
  39. }
  40. wn.set_route(link);
  41. }).css({
  42. cursor:"pointer"
  43. }).appendTo("#icon-grid");
  44. }
  45. // modules
  46. var modules_list = wn.user.get_desktop_items();
  47. $.each(modules_list, function(i, m) {
  48. if(m!="Setup")
  49. add_icon(m);
  50. })
  51. // setup
  52. if(user_roles.indexOf('System Manager')!=-1)
  53. add_icon('Setup')
  54. // notifications
  55. wn.core.pages.desktop.show_pending_notifications();
  56. $(document).on("notification-update", function() {
  57. wn.core.pages.desktop.show_pending_notifications();
  58. })
  59. }
  60. wn.core.pages.desktop.show_pending_notifications = function() {
  61. if (!wn.boot.notification_info.module_doctypes) {
  62. return;
  63. }
  64. var modules_list = wn.user.get_desktop_items();
  65. $.each(modules_list, function(i, module) {
  66. var module_doctypes = wn.boot.notification_info.module_doctypes[module];
  67. var sum = 0;
  68. if(module_doctypes) {
  69. if(wn.boot.notification_info.open_count_doctype) {
  70. $.each(module_doctypes, function(j, doctype) {
  71. sum += (wn.boot.notification_info.open_count_doctype[doctype] || 0);
  72. });
  73. }
  74. } else if(wn.boot.notification_info.open_count_module
  75. && wn.boot.notification_info.open_count_module[module]!=null) {
  76. sum = wn.boot.notification_info.open_count_module[module];
  77. }
  78. if (wn.modules[module]) {
  79. var notifier = $("#module-count-" + wn.modules[module]._link);
  80. if(notifier.length) {
  81. notifier.toggle(sum ? true : false);
  82. notifier.find(".circle-text").html(sum || "");
  83. }
  84. }
  85. });
  86. }
  87. pscript.onload_desktop = function(wrapper) {
  88. // load desktop
  89. wn.core.pages.desktop.refresh();
  90. }