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

13 лет назад
13 лет назад
13 лет назад
12 лет назад
12 лет назад
13 лет назад
13 лет назад
13 лет назад
12 лет назад
12 лет назад
12 лет назад
12 лет назад
12 лет назад
12 лет назад
12 лет назад
12 лет назад
12 лет назад
12 лет назад
13 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. full_name: function(uid) {
  31. return uid===user ?
  32. "You" :
  33. wn.user_info(uid).fullname;
  34. },
  35. image: function(uid) {
  36. return wn.user_info(uid).image;
  37. },
  38. avatar: function(uid, large) {
  39. return wn.avatar(uid, large);
  40. },
  41. has_role: function(rl) {
  42. if(typeof rl=='string')
  43. rl = [rl];
  44. for(var i in rl) {
  45. if((wn.boot ? wn.boot.profile.roles : ['Guest']).indexOf(rl[i])!=-1)
  46. return true;
  47. }
  48. },
  49. get_desktop_items: function() {
  50. // get user sequence preference
  51. var user_list = wn.defaults.get_default("_desktop_items");
  52. if(user_list && user_list.length)
  53. var modules_list = user_list;
  54. if(modules_list) {
  55. // add missing modules - they will be hidden anyways by the view
  56. $.each(wn.modules, function(m, data) {
  57. if(modules_list.indexOf(m)==-1) {
  58. modules_list.push(m);
  59. }
  60. });
  61. }
  62. if(!modules_list || !modules_list.length) {
  63. // all modules
  64. modules_list = keys(wn.modules).sort();
  65. }
  66. // filter hidden modules
  67. if(wn.boot.hidden_modules && modules_list) {
  68. var hidden_list = JSON.parse(wn.boot.hidden_modules);
  69. var modules_list = $.map(modules_list, function(m) {
  70. if(hidden_list.indexOf(m)==-1) return m; else return null;
  71. });
  72. }
  73. // hide based on permission
  74. modules_list = $.map(modules_list, function(m) {
  75. var type = wn.modules[m] && wn.modules[m].type;
  76. var ret = null;
  77. switch(type) {
  78. case "module":
  79. if(wn.boot.profile.allow_modules.indexOf(m)!=-1)
  80. ret = m;
  81. break;
  82. case "page":
  83. if(wn.boot.allowed_pages.indexOf(wn.modules[m].link)!=-1)
  84. ret = m;
  85. break;
  86. case "list":
  87. if(wn.model.can_read(wn.modules[m].doctype))
  88. ret = m;
  89. break;
  90. case "view":
  91. ret = m;
  92. break;
  93. case "setup":
  94. ret = m;
  95. break;
  96. default:
  97. ret = null;
  98. }
  99. return ret;
  100. })
  101. return modules_list;
  102. },
  103. is_report_manager: function() {
  104. return wn.user.has_role(['Administrator', 'System Manager', 'Report Manager']);
  105. }
  106. })
  107. wn.session_alive = true;
  108. $(document).bind('mousemove', function() {
  109. wn.session_alive = true;
  110. if(wn.session_alive_timeout)
  111. clearTimeout(wn.session_alive_timeout);
  112. wn.session_alive_timeout = setTimeout('wn.session_alive=false;', 30000);
  113. })