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.
 
 
 
 
 
 

133 lines
3.3 KiB

  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. })