Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

282 строки
6.4 KiB

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