Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

před 13 roky
před 13 roky
před 12 roky
před 12 roky
před 12 roky
před 12 roky
před 12 roky
před 12 roky
před 12 roky
před 12 roky
před 12 roky
před 12 roky
před 12 roky
před 12 roky
před 12 roky
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. // misc user functions
  2. wn.user_info = function(uid) {
  3. var def = {
  4. 'fullname':uid,
  5. 'image': 'lib/images/ui/avatar.png'
  6. }
  7. if(!wn.boot.user_info) return def
  8. if(!wn.boot.user_info[uid]) return def
  9. if(!wn.boot.user_info[uid].fullname)
  10. wn.boot.user_info[uid].fullname = uid;
  11. if(!wn.boot.user_info[uid].image)
  12. wn.boot.user_info[uid].image = def.image;
  13. return wn.boot.user_info[uid];
  14. }
  15. wn.avatar = function(user, large, title) {
  16. var image = wn.utils.get_file_link(wn.user_info(user).image);
  17. var to_size = large ? 72 : 30;
  18. if(!title) title = wn.user_info(user).fullname;
  19. return repl('<span class="avatar %(small_or_large)s" title="%(title)s" style="width: %(len)s; \
  20. height: %(len)s; border-radius: %(len)s; overflow: hidden;">\
  21. <img src="%(image)s"></span>', {
  22. image: image,
  23. len: to_size + "px",
  24. title: title,
  25. small_or_large: large ? "avatar-large" : "avatar-small"
  26. });
  27. }
  28. wn.ui.set_user_background = function(src) {
  29. wn.dom.set_style(repl('body { background: url("%(src)s") repeat fixed;}',
  30. {src:src}))
  31. }
  32. wn.provide('wn.user');
  33. $.extend(wn.user, {
  34. name: (wn.boot ? wn.boot.profile.name : 'Guest'),
  35. full_name: function(uid) {
  36. return uid===user ?
  37. "You" :
  38. wn.user_info(uid).fullname;
  39. },
  40. image: function(uid) {
  41. return wn.user_info(uid).image;
  42. },
  43. avatar: function(uid, large) {
  44. return wn.avatar(uid, large);
  45. },
  46. has_role: function(rl) {
  47. if(typeof rl=='string')
  48. rl = [rl];
  49. for(var i in rl) {
  50. if((wn.boot ? wn.boot.profile.roles : ['Guest']).indexOf(rl[i])!=-1)
  51. return true;
  52. }
  53. },
  54. get_desktop_items: function() {
  55. // get user sequence preference
  56. var user_list = wn.defaults.get_default("_desktop_items");
  57. if(user_list && user_list.length)
  58. var modules_list = user_list;
  59. if(modules_list) {
  60. // add missing modules - they will be hidden anyways by the view
  61. $.each(wn.modules, function(m, data) {
  62. if(modules_list.indexOf(m)==-1) {
  63. modules_list.push(m);
  64. }
  65. });
  66. }
  67. if(!modules_list || !modules_list.length) {
  68. // all modules
  69. modules_list = keys(wn.modules).sort();
  70. }
  71. // filter hidden modules
  72. if(wn.boot.hidden_modules && modules_list) {
  73. var hidden_list = JSON.parse(wn.boot.hidden_modules);
  74. var modules_list = $.map(modules_list, function(m) {
  75. if(hidden_list.indexOf(m)==-1) return m; else return null;
  76. });
  77. }
  78. // hide based on permission
  79. modules_list = $.map(modules_list, function(m) {
  80. var type = wn.modules[m] && wn.modules[m].type;
  81. var ret = null;
  82. switch(type) {
  83. case "module":
  84. if(wn.boot.profile.allow_modules.indexOf(m)!=-1)
  85. ret = m;
  86. break;
  87. case "page":
  88. if(wn.boot.allowed_pages.indexOf(wn.modules[m].link)!=-1)
  89. ret = m;
  90. break;
  91. case "list":
  92. if(wn.model.can_read(wn.modules[m].doctype))
  93. ret = m;
  94. break;
  95. case "view":
  96. ret = m;
  97. break;
  98. case "setup":
  99. ret = m;
  100. break;
  101. default:
  102. ret = null;
  103. }
  104. return ret;
  105. })
  106. return modules_list;
  107. },
  108. is_report_manager: function() {
  109. return wn.user.has_role(['Administrator', 'System Manager', 'Report Manager']);
  110. }
  111. })
  112. wn.session_alive = true;
  113. $(document).bind('mousemove', function() {
  114. if(wn.session_alive===false) {
  115. $(document).trigger("session_alive");
  116. }
  117. wn.session_alive = true;
  118. if(wn.session_alive_timeout)
  119. clearTimeout(wn.session_alive_timeout);
  120. wn.session_alive_timeout = setTimeout('wn.session_alive=false;', 30000);
  121. })