選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

user.js 2.7 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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" 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. });
  26. }
  27. wn.provide('wn.user');
  28. $.extend(wn.user, {
  29. name: (wn.boot ? wn.boot.profile.name : 'Guest'),
  30. has_role: function(rl) {
  31. if(typeof rl=='string')
  32. rl = [rl];
  33. for(var i in rl) {
  34. if((wn.boot ? wn.boot.profile.roles : ['Guest']).indexOf(rl[i])!=-1)
  35. return true;
  36. }
  37. },
  38. get_desktop_items: function() {
  39. // get user sequence preference
  40. var user_list = wn.defaults.get_default("_desktop_items");
  41. if(user_list && user_list.length)
  42. var modules_list = user_list;
  43. if(modules_list) {
  44. // add missing modules - they will be hidden anyways by the view
  45. $.each(wn.modules, function(m, data) {
  46. if(modules_list.indexOf(m)==-1) {
  47. modules_list.push(m);
  48. }
  49. });
  50. }
  51. if(!modules_list || !modules_list.length) {
  52. // all modules
  53. modules_list = keys(wn.modules).sort();
  54. }
  55. // filter hidden modules
  56. if(wn.boot.hidden_modules && modules_list) {
  57. var hidden_list = JSON.parse(wn.boot.hidden_modules);
  58. var modules_list = $.map(modules_list, function(m) {
  59. if(hidden_list.indexOf(m)==-1) return m; else return null;
  60. });
  61. }
  62. // hide based on permission
  63. modules_list = $.map(modules_list, function(m) {
  64. var type = wn.modules[m] && wn.modules[m].type;
  65. var ret = null;
  66. switch(type) {
  67. case "module":
  68. if(wn.boot.profile.allow_modules.indexOf(m)!=-1)
  69. ret = m;
  70. break;
  71. case "page":
  72. if(wn.boot.allowed_pages.indexOf(wn.modules[m].link)!=-1)
  73. ret = m;
  74. break;
  75. case "view":
  76. ret = m;
  77. break;
  78. case "setup":
  79. ret = m;
  80. break;
  81. default:
  82. ret = null;
  83. }
  84. return ret;
  85. })
  86. return modules_list;
  87. },
  88. is_report_manager: function() {
  89. return wn.user.has_role(['Administrator', 'System Manager', 'Report Manager']);
  90. }
  91. })
  92. wn.session_alive = true;
  93. $(document).bind('mousemove', function() {
  94. wn.session_alive = true;
  95. if(wn.session_alive_timeout)
  96. clearTimeout(wn.session_alive_timeout);
  97. wn.session_alive_timeout = setTimeout('wn.session_alive=false;', 30000);
  98. })