Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

app.js 5.0 KiB

14 år sedan
14 år sedan
14 år sedan
14 år sedan
14 år sedan
14 år sedan
14 år sedan
14 år sedan
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. // App.js
  2. // dialog container
  3. var popup_cont;
  4. var session = {};
  5. var start_sid = null;
  6. function startup() {
  7. // save the sid (so that we know if it changes mid-session)
  8. start_sid = get_cookie('sid');
  9. popup_cont = $a(document.getElementsByTagName('body')[0], 'div');
  10. // Globals
  11. // ---------------------------------
  12. var setup_globals = function(r) {
  13. profile = r.profile;
  14. user = r.profile.name;
  15. user_fullname = profile.first_name + (r.profile.last_name ? (' ' + r.profile.last_name) : '');
  16. user_defaults = profile.defaults;
  17. user_roles = profile.roles;
  18. user_email = profile.email;
  19. profile.start_items = r.start_items;
  20. home_page = r.home_page;
  21. _p.letter_heads = r.letter_heads;
  22. sys_defaults = r.sysdefaults;
  23. // bc
  24. session.rt = profile.can_read;
  25. if(r.ipinfo) session.ipinfo = r.ipinfo;
  26. session.dt_labels = r.dt_labels;
  27. session.rev_dt_labels = {} // reverse lookup - get doctype by label
  28. _tags.color_map = r.tag_color_map;
  29. if(r.dt_labels) {
  30. for(key in r.dt_labels)session.rev_dt_labels[r.dt_labels[key]] = key;
  31. }
  32. }
  33. var setup_history = function(r) {
  34. rename_observers.push(nav_obj);
  35. }
  36. var setup_events = function() {
  37. addEvent('keyup', function(ev, target) {
  38. for(var i in keypress_observers) {
  39. if(keypress_observers[i])
  40. keypress_observers[i].notify_keypress(ev, ev.keyCode);
  41. }
  42. });
  43. addEvent('click', function(ev, target) {
  44. for(var i=0; i<click_observers.length; i++) {
  45. if(click_observers[i])
  46. click_observers[i].notify_click(ev, target);
  47. }
  48. });
  49. // Transparent background for IE
  50. if(isIE) {
  51. $op($i('dialog_back'), 60);
  52. }
  53. }
  54. var callback = function(r,rt) {
  55. if(wn.sb) wn.sb.hide();
  56. if(r.exc) msgprint(r.exc);
  57. setup_globals(r);
  58. setup_history();
  59. setup_events();
  60. var a = new Body();
  61. page_body.run_startup_code();
  62. page_body.setup_sidebar_menu();
  63. for(var i=0; i<startup_list.length; i++) {
  64. startup_list[i]();
  65. }
  66. $dh('startup_div');
  67. $ds('body_div');
  68. // show a new form on loading?
  69. if(get_url_arg('embed')) {
  70. newdoc(get_url_arg('embed'));
  71. return;
  72. }
  73. // open an existing page or record
  74. var t = to_open();
  75. if(t) {
  76. historyChange(t);
  77. } else if(home_page) {
  78. // show home oage
  79. loadpage(home_page);
  80. }
  81. }
  82. if(_startup_data && keys(_startup_data).length && _startup_data.docs) {
  83. LocalDB.sync(_startup_data.docs);
  84. callback(_startup_data, '');
  85. // for debug
  86. if(_startup_data.server_messages) msgprint(_startup_data.server_messages);
  87. } else {
  88. if($i('startup_div'))
  89. $c('startup',{},callback,null,1);
  90. }
  91. }
  92. function to_open() {
  93. if(get_url_arg('page'))
  94. return get_url_arg('page');
  95. var h = location.hash;
  96. if(h) {
  97. return h.substr(1);
  98. }
  99. }
  100. function logout() {
  101. $c('logout', args = {}, function(r,rt) {
  102. if(r.exc) {
  103. msgprint(r.exc);
  104. return;
  105. }
  106. redirect_to_login();
  107. });
  108. }
  109. function redirect_to_login() {
  110. if(login_file)
  111. window.location.href = login_file;
  112. else
  113. window.location.href = 'index.html';
  114. }
  115. // default print style
  116. _p.def_print_style_body = "html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }"
  117. +"\npre { margin:0; padding:0;}"
  118. _p.def_print_style_other = "\n.simpletable, .noborder { border-collapse: collapse; margin-bottom: 10px;}"
  119. +"\n.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }"
  120. +"\n.noborder td { vertical-align: top; }"
  121. _p.go = function(html) {
  122. var d = document.createElement('div')
  123. d.innerHTML = html
  124. $(d).printElement();
  125. }
  126. _p.preview = function(html) {
  127. var w = window.open('');
  128. w.document.write(html)
  129. w.document.close();
  130. }
  131. // setup calendar
  132. function setup_calendar() {
  133. var p = new Page('_calendar');
  134. p.wrapper.style.height = '100%'; // IE FIX
  135. p.wrapper.onshow = function() {
  136. wn.require('lib/js/legacy/widgets/calendar.js');
  137. if(!_c.calendar) {
  138. new_widget('Calendar', function(c) {
  139. _c.calendar = c;
  140. _c.calendar.init(p.cont);
  141. rename_observers.push(_c.calendar);
  142. });
  143. }
  144. }
  145. }
  146. startup_list.push(setup_calendar);
  147. // ie6 fixed pos fix
  148. if(isIE6) {
  149. var scroll_list = []
  150. window.onscroll = function() {
  151. for(var i=0; i<scroll_list.length; i++) {
  152. scroll_list[i]();
  153. }
  154. }
  155. }
  156. var resize_observers = []
  157. function set_resize_observer(fn) {
  158. if(resize_observers.indexOf(fn)==-1) resize_observers.push(fn);
  159. }
  160. window.onresize = function() {
  161. return;
  162. var ht = get_window_height();
  163. for(var i=0; i< resize_observers.length; i++){
  164. resize_observers[i](ht);
  165. }
  166. }
  167. get_window_height = function() {
  168. var ht = window.innerHeight ? window.innerHeight : document.documentElement.offsetHeight ? document.documentElement.offsetHeight : document.body.offsetHeight;
  169. var toolbarh = page_body.wntoolbar ? page_body.wntoolbar.wrapper.offsetHeight : 0
  170. var bannerh = page_body.banner_area ? page_body.banner_area.offsetHeight : 0
  171. var footerh = page_body.footer ? page_body.footer.offsetHeight : 0
  172. ht = ht - bannerh - toolbarh - footerh;
  173. return ht;
  174. }
  175. // setup space holder
  176. setup_space_holder = function() {
  177. // space holder div
  178. window.space_holder_div = $a(null,'div','space_holder');
  179. window.space_holder_div.innerHTML = 'Loading...'
  180. }
  181. startup_list.push(setup_space_holder);