Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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