您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

13 年前
14 年前
13 年前
14 年前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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. profile.start_items = r.start_items;
  22. home_page = r.home_page;
  23. _p.letter_heads = r.letter_heads;
  24. sys_defaults = r.sysdefaults;
  25. // bc
  26. session.rt = profile.can_read;
  27. if(r.ipinfo) session.ipinfo = r.ipinfo;
  28. session.dt_labels = r.dt_labels;
  29. session.rev_dt_labels = {} // reverse lookup - get doctype by label
  30. _tags.color_map = r.tag_color_map;
  31. if(r.dt_labels) {
  32. for(key in r.dt_labels)session.rev_dt_labels[r.dt_labels[key]] = key;
  33. }
  34. // control panel
  35. wn.control_panel = r.control_panel;
  36. }
  37. var setup_history = function(r) {
  38. rename_observers.push(nav_obj);
  39. }
  40. var setup_events = function() {
  41. addEvent('keyup', function(ev, target) {
  42. for(var i in keypress_observers) {
  43. if(keypress_observers[i])
  44. keypress_observers[i].notify_keypress(ev, ev.keyCode);
  45. }
  46. });
  47. addEvent('click', function(ev, target) {
  48. for(var i=0; i<click_observers.length; i++) {
  49. if(click_observers[i])
  50. click_observers[i].notify_click(ev, target);
  51. }
  52. });
  53. // Transparent background for IE
  54. if(isIE) {
  55. $op($i('dialog_back'), 60);
  56. }
  57. }
  58. var callback = function(r,rt) {
  59. if(r.exc) console.log(r.exc);
  60. setup_globals(r);
  61. setup_history();
  62. setup_events();
  63. var a = new Body();
  64. page_body.run_startup_code();
  65. page_body.setup_sidebar_menu();
  66. for(var i=0; i<startup_list.length; i++) {
  67. startup_list[i]();
  68. }
  69. // show a new form on loading?
  70. if(get_url_arg('embed')) {
  71. newdoc(get_url_arg('embed'));
  72. return;
  73. }
  74. // open an existing page or record
  75. var t = to_open();
  76. if(t) {
  77. historyChange(t);
  78. } else if(home_page) {
  79. // show home oage
  80. loadpage(home_page);
  81. }
  82. page_body.ready();
  83. }
  84. if(wn.boot) {
  85. LocalDB.sync(wn.boot.docs);
  86. callback(wn.boot, '');
  87. if(wn.boot.error_messages)
  88. console.log(wn.boot.error_messages)
  89. if(wn.boot.server_messages)
  90. msgprint(wn.boot.server_messages);
  91. } else {
  92. if($i('startup_div'))
  93. $c('startup',{},callback,null,1);
  94. }
  95. }
  96. function to_open() {
  97. if(get_url_arg('page'))
  98. return get_url_arg('page');
  99. var h = location.hash;
  100. if(h) {
  101. return h.substr(1);
  102. }
  103. }
  104. function logout() {
  105. $c('logout', args = {}, function(r,rt) {
  106. if(r.exc) {
  107. msgprint(r.exc);
  108. return;
  109. }
  110. redirect_to_login();
  111. });
  112. }
  113. function redirect_to_login() {
  114. if(login_file)
  115. window.location.href = login_file;
  116. else {
  117. window.location.reload();
  118. }
  119. }
  120. // default print style
  121. _p.def_print_style_body = "html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }" + "\npre { margin:0; padding:0;}"
  122. _p.def_print_style_other = "\n.simpletable, .noborder { border-collapse: collapse; margin-bottom: 10px;}"
  123. +"\n.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }"
  124. +"\n.noborder td { vertical-align: top; }"
  125. _p.go = function(html) {
  126. var d = document.createElement('div')
  127. d.innerHTML = html
  128. $(d).printElement();
  129. }
  130. _p.preview = function(html) {
  131. var w = window.open('');
  132. w.document.write(html)
  133. w.document.close();
  134. }
  135. // setup calendar
  136. function setup_calendar() {
  137. var p = new Page('_calendar');
  138. p.wrapper.style.height = '100%'; // IE FIX
  139. p.wrapper.onshow = function() {
  140. wn.require('lib/js/legacy/widgets/calendar.js');
  141. if(!_c.calendar) {
  142. _c.calendar = new Calendar();
  143. _c.calendar.init(p.cont);
  144. rename_observers.push(_c.calendar);
  145. }
  146. }
  147. }
  148. startup_list.push(setup_calendar);
  149. // ie6 fixed pos fix
  150. if(isIE6) {
  151. var scroll_list = []
  152. window.onscroll = function() {
  153. for(var i=0; i<scroll_list.length; i++) {
  154. scroll_list[i]();
  155. }
  156. }
  157. }
  158. var resize_observers = []
  159. function set_resize_observer(fn) {
  160. if(resize_observers.indexOf(fn)==-1) resize_observers.push(fn);
  161. }
  162. window.onresize = function() {
  163. return;
  164. var ht = get_window_height();
  165. for(var i=0; i< resize_observers.length; i++){
  166. resize_observers[i](ht);
  167. }
  168. }
  169. get_window_height = function() {
  170. var ht = window.innerHeight ? window.innerHeight : document.documentElement.offsetHeight ? document.documentElement.offsetHeight : document.body.offsetHeight;
  171. return ht;
  172. }