You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

60 lines
1.4 KiB

  1. // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. // MIT License. See license.txt
  3. wn.provide('wn.views.formview');
  4. wn.views.FormFactory = wn.views.Factory.extend({
  5. make: function(route) {
  6. var me = this,
  7. dt = route[1];
  8. if(!wn.views.formview[dt]) {
  9. me.page = wn.container.add_page("Form/" + dt);
  10. wn.views.formview[dt] = me.page;
  11. wn.model.with_doctype(dt, function() {
  12. me.page.frm = new _f.Frm(dt, me.page, true);
  13. me.show_doc(route);
  14. });
  15. } else {
  16. me.show_doc(route);
  17. }
  18. },
  19. show_doc: function(route) {
  20. var dt = route[1],
  21. dn = route.slice(2).join("/"),
  22. me = this;
  23. if(wn.model.new_names[dn]) {
  24. dn = wn.model.new_names[dn];
  25. wn.set_route("Form", dt, dn);
  26. return;
  27. }
  28. wn.model.with_doc(dt, dn, function(dn, r) {
  29. if(r && r['403']) return; // not permitted
  30. if(!(locals[dt] && locals[dt][dn])) {
  31. // doc not found, but starts with New,
  32. // make a new doc and set it
  33. var new_str = wn._("New") + " ";
  34. if(dn && dn.substr(0, new_str.length)==new_str) {
  35. var new_name = wn.model.make_new_doc_and_get_name(dt);
  36. if(new_name===dn) {
  37. me.load(dt, dn);
  38. } else {
  39. wn.set_route("Form", dt, new_name)
  40. }
  41. } else {
  42. wn.show_not_found(route);
  43. }
  44. return;
  45. }
  46. me.load(dt, dn);
  47. });
  48. },
  49. load: function(dt, dn) {
  50. wn.container.change_to("Form/" + dt);
  51. wn.views.formview[dt].frm.refresh(dn);
  52. }
  53. });