Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

218 linhas
5.2 KiB

  1. // App.js
  2. // dialog container
  3. var popup_cont;
  4. var session = {};
  5. var start_sid = null;
  6. function startup() {
  7. //initialize our DHTML history
  8. dhtmlHistory.initialize();
  9. //subscribe to DHTML history change events
  10. dhtmlHistory.addListener(historyChange);
  11. // save the sid (so that we know if it changes mid-session)
  12. start_sid = get_cookie('sid');
  13. popup_cont = $a(document.getElementsByTagName('body')[0], 'div');
  14. // Globals
  15. // ---------------------------------
  16. var setup_globals = function(r) {
  17. profile = r.profile;
  18. user = r.profile.name;
  19. user_fullname = profile.first_name + (r.profile.last_name ? (' ' + r.profile.last_name) : '');
  20. user_defaults = profile.defaults;
  21. user_roles = profile.roles;
  22. user_email = profile.email;
  23. profile.start_items = r.start_items;
  24. home_page = r.home_page;
  25. _p.letter_heads = r.letter_heads;
  26. sys_defaults = r.sysdefaults;
  27. // bc
  28. session.rt = profile.can_read;
  29. if(r.ipinfo) session.ipinfo = r.ipinfo;
  30. session.dt_labels = r.dt_labels;
  31. session.rev_dt_labels = {} // reverse lookup - get doctype by label
  32. _tags.color_map = r.tag_color_map;
  33. if(r.dt_labels) {
  34. for(key in r.dt_labels)session.rev_dt_labels[r.dt_labels[key]] = key;
  35. }
  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) msgprint(r.ext);
  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. $dh('startup_div');
  70. $ds('body_div');
  71. // show a new form on loading?
  72. if(get_url_arg('embed')) {
  73. newdoc(get_url_arg('embed'));
  74. return;
  75. }
  76. // open an existing page or record
  77. var t = to_open();
  78. if(t) {
  79. historyChange(t);
  80. } else if(home_page) {
  81. // show home oage
  82. loadpage(home_page);
  83. }
  84. }
  85. if(keys(_startup_data).length && _startup_data.docs) {
  86. LocalDB.sync(_startup_data.docs);
  87. callback(_startup_data, '');
  88. // for debug
  89. if(_startup_data.server_messages) msgprint(_startup_data.server_messages);
  90. } else {
  91. $c('startup',{},callback,null,1);
  92. }
  93. }
  94. function to_open() {
  95. if(get_url_arg('page'))
  96. return get_url_arg('page');
  97. var h = location.hash;
  98. if(h) {
  99. return h.substr(1);
  100. }
  101. }
  102. function logout() {
  103. $c('logout', args = {}, function(r,rt) {
  104. if(r.exc) {
  105. msgprint(r.exc);
  106. return;
  107. }
  108. redirect_to_login();
  109. });
  110. }
  111. function redirect_to_login() {
  112. if(login_file)
  113. window.location.href = login_file;
  114. else
  115. window.location.href = 'index.cgi';
  116. }
  117. // default print style
  118. _p.def_print_style_body = "html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }"
  119. +"\npre { margin:0; padding:0;}"
  120. _p.def_print_style_other = "\n.simpletable, .noborder { border-collapse: collapse; margin-bottom: 10px;}"
  121. +"\n.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }"
  122. +"\n.noborder td { vertical-align: top; }"
  123. _p.go = function(html) {
  124. var d = document.createElement('div')
  125. d.innerHTML = html
  126. $(d).printElement();
  127. }
  128. _p.preview = function(html) {
  129. var w = window.open('');
  130. w.document.write(html)
  131. w.document.close();
  132. }
  133. // setup calendar
  134. function setup_calendar() {
  135. var p = new Page('_calendar');
  136. p.wrapper.style.height = '100%'; // IE FIX
  137. p.wrapper.onshow = function() {
  138. if(!_c.calendar) {
  139. new_widget('Calendar', function(c) {
  140. _c.calendar = c;
  141. _c.calendar.init(p.cont);
  142. rename_observers.push(_c.calendar);
  143. });
  144. }
  145. }
  146. }
  147. startup_list.push(setup_calendar);
  148. var resize_observers = []
  149. function set_resize_observer(fn) {
  150. if(resize_observers.indexOf(fn)==-1) resize_observers.push(fn);
  151. }
  152. window.onresize = function() {
  153. return;
  154. var ht = get_window_height();
  155. for(var i=0; i< resize_observers.length; i++){
  156. resize_observers[i](ht);
  157. }
  158. }
  159. get_window_height = function() {
  160. var ht = window.innerHeight ? window.innerHeight : document.documentElement.offsetHeight ? document.documentElement.offsetHeight : document.body.offsetHeight;
  161. var toolbarh = page_body.wntoolbar ? page_body.wntoolbar.wrapper.offsetHeight : 0
  162. var bannerh = page_body.banner_area ? page_body.banner_area.offsetHeight : 0
  163. var footerh = page_body.footer ? page_body.footer.offsetHeight : 0
  164. ht = ht - bannerh - toolbarh - footerh;
  165. return ht;
  166. }
  167. setup_shortcuts = function() {
  168. $(document).bind('keydown', 'ctrl+s', function() {
  169. if(cur_frm && cur_frm.doc && cur_frm.doc.docstatus==0)
  170. cur_frm.save("Save")
  171. }
  172. );
  173. $(document).bind('keydown', 'ctrl+n', function() {
  174. if(cur_frm) new_doc(cur_frm.doctype);
  175. else if(page_body.wntoolbar) page_body.wntoolbar.show_new();
  176. }
  177. );
  178. $(document).bind('keydown', 'ctrl+p', function() {
  179. if(cur_frm) cur_frm.print_doc();
  180. }
  181. );
  182. }
  183. startup_list.push(setup_shortcuts);