Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

164 wiersze
3.7 KiB

  1. // App.js
  2. // dialog container
  3. var popup_cont;
  4. var session = {};
  5. var start_sid = null;
  6. if(!wn) var wn = {};
  7. function startup() {
  8. // save the sid (so that we know if it changes mid-session)
  9. start_sid = get_cookie('sid');
  10. popup_cont = $a(document.getElementsByTagName('body')[0], 'div');
  11. // Globals
  12. // ---------------------------------
  13. var setup_globals = function(r) {
  14. wn.boot = r;
  15. profile = r.profile;
  16. user = r.profile.name;
  17. user_fullname = profile.first_name + (r.profile.last_name ? (' ' + r.profile.last_name) : '');
  18. user_defaults = profile.defaults;
  19. user_roles = profile.roles;
  20. user_email = profile.email;
  21. home_page = r.home_page;
  22. _p.letter_heads = r.letter_heads;
  23. sys_defaults = r.sysdefaults;
  24. // bc
  25. session.rt = profile.can_read;
  26. if(r.ipinfo) session.ipinfo = r.ipinfo;
  27. session.dt_labels = r.dt_labels;
  28. session.rev_dt_labels = {} // reverse lookup - get doctype by label
  29. if(r.dt_labels) {
  30. for(key in r.dt_labels)session.rev_dt_labels[r.dt_labels[key]] = key;
  31. }
  32. // control panel
  33. wn.control_panel = r.control_panel;
  34. }
  35. var setup_history = function(r) {
  36. rename_observers.push(nav_obj);
  37. }
  38. var callback = function(r,rt) {
  39. if(r.exc) console.log(r.exc);
  40. setup_globals(r);
  41. setup_history();
  42. var a = new Body();
  43. page_body.run_startup_code();
  44. for(var i=0; i<startup_list.length; i++) {
  45. startup_list[i]();
  46. }
  47. // show a new form on loading?
  48. // open an existing page or record
  49. var t = to_open();
  50. if(t) {
  51. historyChange(t);
  52. } else if(home_page) {
  53. // show home oage
  54. loadpage(home_page);
  55. }
  56. page_body.ready();
  57. }
  58. if(wn.boot) {
  59. LocalDB.sync(wn.boot.docs);
  60. callback(wn.boot, '');
  61. if(wn.boot.error_messages)
  62. console.log(wn.boot.error_messages)
  63. if(wn.boot.server_messages)
  64. msgprint(wn.boot.server_messages);
  65. } else {
  66. if($i('startup_div'))
  67. $c('startup',{},callback,null,1);
  68. }
  69. }
  70. function to_open() {
  71. if(get_url_arg('page'))
  72. return get_url_arg('page');
  73. var h = location.hash;
  74. if(h) {
  75. return h.substr(1);
  76. }
  77. }
  78. function logout() {
  79. $c('logout', args = {}, function(r,rt) {
  80. if(r.exc) {
  81. msgprint(r.exc);
  82. return;
  83. }
  84. redirect_to_login();
  85. });
  86. }
  87. function redirect_to_login() {
  88. if(login_file)
  89. window.location.href = login_file;
  90. else {
  91. window.location.reload();
  92. }
  93. }
  94. // default print style
  95. _p.def_print_style_body = "html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }" + "\npre { margin:0; padding:0;}"
  96. _p.def_print_style_other = "\n.simpletable, .noborder { border-collapse: collapse; margin-bottom: 10px;}"
  97. +"\n.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }"
  98. +"\n.noborder td { vertical-align: top; }"
  99. _p.go = function(html) {
  100. var d = document.createElement('div')
  101. d.innerHTML = html
  102. $(d).printElement();
  103. }
  104. _p.preview = function(html) {
  105. var w = window.open('');
  106. w.document.write(html)
  107. w.document.close();
  108. }
  109. // setup calendar
  110. function setup_calendar() {
  111. var p = new Page('_calendar');
  112. p.wrapper.style.height = '100%'; // IE FIX
  113. p.wrapper.onshow = function() {
  114. wn.require('lib/js/legacy/widgets/calendar.js');
  115. if(!_c.calendar) {
  116. _c.calendar = new Calendar();
  117. _c.calendar.init(p.cont);
  118. rename_observers.push(_c.calendar);
  119. }
  120. }
  121. }
  122. startup_list.push(setup_calendar);
  123. var resize_observers = []
  124. function set_resize_observer(fn) {
  125. if(resize_observers.indexOf(fn)==-1) resize_observers.push(fn);
  126. }
  127. window.onresize = function() {
  128. return;
  129. var ht = get_window_height();
  130. for(var i=0; i< resize_observers.length; i++){
  131. resize_observers[i](ht);
  132. }
  133. }
  134. get_window_height = function() {
  135. var ht = window.innerHeight ? window.innerHeight : document.documentElement.offsetHeight ? document.documentElement.offsetHeight : document.body.offsetHeight;
  136. return ht;
  137. }