Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

275 Zeilen
6.3 KiB

  1. // Load Report
  2. // -------------------------------------------------------------------------------
  3. function loadreport(dt, rep_name, onload, menuitem, reset_report) {
  4. dt = get_label_doctype(dt);
  5. var show_report_builder = function(rb_con) {
  6. if(!_r.rb_con) {
  7. // first load
  8. _r.rb_con = rb_con;
  9. }
  10. _r.rb_con.set_dt(dt, function(rb) {
  11. if(rep_name) {
  12. var t = rb.current_loaded;
  13. rb.load_criteria(rep_name);
  14. // call onload
  15. if(onload)
  16. onload(rb);
  17. // if loaded, then run
  18. if((rb.dt) && (!rb.dt.has_data() || rb.current_loaded!=t))
  19. rb.dt.run();
  20. } else {
  21. // reset if from toolbar
  22. if(reset_report) {
  23. rb.reset_report();
  24. }
  25. }
  26. // show
  27. if(!rb.forbidden) {
  28. page_body.change_to('Report Builder');
  29. nav_obj.open_notify('Report',dt,rep_name);
  30. }
  31. } );
  32. }
  33. new_widget('_r.ReportContainer', show_report_builder, 1);
  34. }
  35. // Load Doc
  36. // -------------------------------------------------------------------------------
  37. var load_doc = loaddoc;
  38. function loaddoc(doctype, name, onload, menuitem, from_archive) {
  39. doctype = get_label_doctype(doctype);
  40. // validate
  41. if(frms['DocType'] && frms['DocType'].opendocs[doctype]) {
  42. msgprint("Cannot open an instance of \"" + doctype + "\" when the DocType is open.");
  43. return;
  44. }
  45. // reverse validation - do not open DocType when an instance is open
  46. if(doctype=='DocType' && frms[name]) {
  47. msgprint("Cannot open DocType \"" + name + "\" when its instance is open.");
  48. return;
  49. }
  50. var show_form = function(f) {
  51. // load the frm container
  52. if(!_f.frm_con && f) {
  53. _f.frm_con = f; //new _f.FrmContainer();
  54. }
  55. // case A - frm not loaded
  56. if(!frms[doctype]) {
  57. _f.add_frm(doctype, show_doc, name, from_archive);
  58. // case B - both loaded
  59. } else if(LocalDB.is_doc_loaded(doctype, name)) {
  60. show_doc();
  61. // case C - only frm loaded
  62. } else {
  63. $c('webnotes.widgets.form.getdoc', {'name':name, 'doctype':doctype, 'user':user, 'from_archive':(from_archive ? 1 : 0) }, show_doc, null, null); // onload
  64. }
  65. }
  66. var show_doc = function(r,rt) {
  67. if(locals[doctype] && locals[doctype][name]) {
  68. page_body.set_status('Done');
  69. var frm = frms[doctype];
  70. // show
  71. frm.refresh(name);
  72. // notify for back button
  73. if(!frm.in_dialog)
  74. nav_obj.open_notify('Form',doctype,name);
  75. if(onload) onload();
  76. } else {
  77. // nothing, go home - there were errors
  78. if(r.exc) { msgprint('There were errors while loading ' + doctype + ' ' + name); }
  79. loadpage('_home');
  80. }
  81. }
  82. //// is libary loaded?
  83. new_widget('_f.FrmContainer', show_form, 1);
  84. }
  85. // New Doc
  86. // -------------------------------------------------------------------------------
  87. function new_doc(doctype, onload, in_dialog, on_save_callback, cdt, cdn, cnic) {
  88. // cnic = caller not in container (caller is a dialog)
  89. doctype = get_label_doctype(doctype);
  90. if(!doctype) {
  91. if(cur_frm)doctype = cur_frm.doctype; else return;
  92. }
  93. var show_doc = function() {
  94. frm = frms[doctype];
  95. if (frm.perm[0][CREATE]==1) {
  96. // load new doc - create the new doc (if single, just load it)
  97. if(frm.meta.issingle) {
  98. var dn = doctype;
  99. LocalDB.set_default_values(locals[doctype][doctype]);
  100. } else
  101. var dn = LocalDB.create(doctype);
  102. // call (optional) onload
  103. if(onload)onload(dn);
  104. if(frm.in_dialog) {
  105. // attach values so that the "new" value is set in the field from which it was set
  106. var fd = _f.frm_dialog;
  107. fd.cdt = cdt;
  108. fd.cdn = cdn;
  109. fd.cnic = cnic;
  110. fd.on_save_callback = on_save_callback;
  111. } else {
  112. nav_obj.open_notify('Form',doctype,dn);
  113. }
  114. // show the form
  115. frm.refresh(dn);
  116. } else {
  117. msgprint('error:Not Allowed To Create '+doctype+'\nContact your Admin for help');
  118. }
  119. }
  120. var show_form = function() {
  121. // load the frm container
  122. if(!_f.frm_con) {
  123. _f.frm_con = new _f.FrmContainer();
  124. }
  125. if(!frms[doctype])
  126. _f.add_frm(doctype, show_doc); // load
  127. else
  128. show_doc(frms[doctype]); // directly
  129. }
  130. new_widget('_f.FrmContainer', show_form, 1);
  131. }
  132. var newdoc = new_doc;
  133. //
  134. // Load Page
  135. //
  136. var pscript={};
  137. var cur_page;
  138. function loadpage(page_name, call_back, no_history) {
  139. if(page_name=='_home')
  140. page_name = home_page;
  141. var fn = function(r,rt) {
  142. page_body.set_status('Done');
  143. if(page_body.pages[page_name]) {
  144. // loaded
  145. var p = page_body.pages[page_name]
  146. // show
  147. page_body.change_to(page_name);
  148. } else {
  149. // new page
  150. var p = render_page(page_name);
  151. if(!p)return;
  152. }
  153. // execute callback
  154. cur_page = page_name;
  155. if(call_back)call_back();
  156. // scroll to top
  157. scroll(0,0);
  158. // update "back"
  159. pscript.update_page_history(page_name, no_history)
  160. // call refresh script
  161. try {
  162. if(pscript['refresh_'+page_name]) pscript['refresh_'+page_name](); // onload
  163. } catch(e) {
  164. submit_error(e);
  165. }
  166. }
  167. if(get_local('Page', page_name) || page_body.pages[page_name])
  168. fn();
  169. else {
  170. args = get_url_dict(); // send everything to the page
  171. args.name = page_name;
  172. $c('webnotes.widgets.page.getpage', args, fn);
  173. }
  174. }
  175. //
  176. // adds to the url (if called using loadpage and not the url) - if i do not do this then it will overwrite
  177. // this is useful when an argument is passed to the page separated by a /
  178. //
  179. pscript.update_page_history = function(page_name, no_history) {
  180. var arg = null;
  181. // get from page
  182. if(window.location.hash) {
  183. var t = nav_obj.get_page(window.location.hash)
  184. } else if(get_url_arg('page')) {
  185. var t = nav_obj.get_page(get_url_arg('page'))
  186. } else {
  187. return;
  188. }
  189. if(t[1]==page_name) arg = t[2];
  190. nav_obj.open_notify('Page', page_name, arg, no_history);
  191. }
  192. //
  193. // Load Script
  194. //
  195. function loadscript(src, call_back) {
  196. set_loading();
  197. var script = $a('head','script');
  198. script.type = 'text/javascript';
  199. script.src = src;
  200. script.onload = function() {
  201. if(call_back)call_back(); hide_loading();
  202. }
  203. // IE 6 & 7
  204. script.onreadystatechange = function() {
  205. if (this.readyState == 'complete' || this.readyState == 'loaded') {
  206. hide_loading();
  207. call_back();
  208. }
  209. }
  210. }
  211. // Load DocBrowser
  212. // -------------------------------------------------------------------------------
  213. var doc_browser_page;
  214. function loaddocbrowser(dt, label, fields) {
  215. dt = get_label_doctype(dt);
  216. if(!doc_browser_page)
  217. doc_browser_page = new ItemBrowserPage();
  218. doc_browser_page.show(dt, label, fields);
  219. nav_obj.open_notify('List',dt,'');
  220. }