Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

165 lignes
3.9 KiB

  1. // App.js
  2. // dialog container
  3. var popup_cont;
  4. var session = {};
  5. if(!wn) var wn = {};
  6. function startup() {
  7. popup_cont = $a(document.getElementsByTagName('body')[0], 'div');
  8. // Globals
  9. // ---------------------------------
  10. var setup_globals = function(r) {
  11. wn.boot = r;
  12. profile = r.profile;
  13. user = r.profile.name;
  14. user_fullname = wn.user_info(user).fullname;
  15. user_defaults = profile.defaults;
  16. user_roles = profile.roles;
  17. user_email = profile.email;
  18. home_page = r.home_page;
  19. _p.letter_heads = r.letter_heads;
  20. sys_defaults = r.sysdefaults;
  21. // bc
  22. session.rt = profile.can_read;
  23. if(r.ipinfo) session.ipinfo = r.ipinfo;
  24. session.dt_labels = r.dt_labels;
  25. session.rev_dt_labels = {} // reverse lookup - get doctype by label
  26. if(r.dt_labels) {
  27. for(key in r.dt_labels)session.rev_dt_labels[r.dt_labels[key]] = key;
  28. }
  29. // control panel
  30. wn.control_panel = r.control_panel;
  31. }
  32. var setup_viewport = function() {
  33. wn.container = new wn.views.Container();
  34. // toolbar
  35. if(user=='Guest')
  36. user_defaults.hide_webnotes_toolbar = 1;
  37. if(!cint(user_defaults.hide_webnotes_toolbar) || user=='Administrator') {
  38. wn.container.wntoolbar = new wn.ui.toolbar.Toolbar();
  39. }
  40. // startup code
  41. $(document).trigger('startup');
  42. try{
  43. if(wn.control_panel.custom_startup_code)
  44. eval(wn.control_panel.custom_startup_code);
  45. } catch(e) {
  46. console.log('Error in evaluating custom startup code:');
  47. console.log(e);
  48. }
  49. // open an existing page or record
  50. var t = to_open();
  51. if(t) {
  52. window.location.hash = t;
  53. set_favicon();
  54. } else if(home_page) {
  55. loadpage(home_page);
  56. }
  57. wn.route();
  58. $dh('startup_div');
  59. $ds('body_div');
  60. }
  61. var callback = function(r,rt) {
  62. if(r.exc) console.log(r.exc);
  63. setup_globals(r);
  64. setup_viewport();
  65. }
  66. if(wn.boot) {
  67. LocalDB.sync(wn.boot.docs);
  68. callback(wn.boot, '');
  69. if(wn.boot.error_messages)
  70. console.log(wn.boot.error_messages)
  71. if(wn.boot.server_messages)
  72. msgprint(wn.boot.server_messages);
  73. } else {
  74. if($i('startup_div'))
  75. $c('startup',{},callback,null,1);
  76. }
  77. }
  78. function to_open() {
  79. if(get_url_arg('page'))
  80. return get_url_arg('page');
  81. var h = location.hash;
  82. if(h) {
  83. return h.substr(1);
  84. }
  85. }
  86. function logout() {
  87. $c('logout', args = {}, function(r,rt) {
  88. if(r.exc) {
  89. console.log(r.exc);
  90. return;
  91. }
  92. redirect_to_login();
  93. });
  94. }
  95. function redirect_to_login() {
  96. if(login_file)
  97. window.location.href = login_file;
  98. else {
  99. window.location.reload();
  100. }
  101. }
  102. // default print style
  103. _p.def_print_style_body = "html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }" + "\npre { margin:0; padding:0;}"
  104. _p.def_print_style_other = "\n.simpletable, .noborder { border-collapse: collapse; margin-bottom: 10px;}"
  105. +"\n.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }"
  106. +"\n.noborder td { vertical-align: top; }"
  107. _p.go = function(html) {
  108. var d = document.createElement('div')
  109. d.innerHTML = html
  110. $(d).printElement();
  111. }
  112. _p.preview = function(html) {
  113. var w = window.open('');
  114. w.document.write(html)
  115. w.document.close();
  116. }
  117. var resize_observers = []
  118. function set_resize_observer(fn) {
  119. if(resize_observers.indexOf(fn)==-1) resize_observers.push(fn);
  120. }
  121. window.onresize = function() {
  122. return;
  123. var ht = get_window_height();
  124. for(var i=0; i< resize_observers.length; i++){
  125. resize_observers[i](ht);
  126. }
  127. }
  128. get_window_height = function() {
  129. var ht = window.innerHeight ? window.innerHeight : document.documentElement.offsetHeight ? document.documentElement.offsetHeight : document.body.offsetHeight;
  130. return ht;
  131. }
  132. // favicon disappears when window.location.hash value is changed in firefox
  133. // This is used to mitigate this favicon bug in firefox
  134. function set_favicon() {
  135. var link = $('link[type="image/x-icon"]').remove().attr("href");
  136. var favicon ='\
  137. <link rel="shortcut icon" href="' + link + '" type="image/x-icon"> \
  138. <link rel="icon" href="' + link + '" type="image/x-icon">'
  139. $(favicon).appendTo('head');
  140. }