選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

59 行
1.3 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. if(dn && dn.substr(0,4)=="New ") {
  34. var new_name = wn.model.make_new_doc_and_get_name(dt);
  35. if(new_name===dn) {
  36. me.load(dt, dn);
  37. } else {
  38. wn.set_route("Form", dt, new_name)
  39. }
  40. } else {
  41. wn.show_not_found(route);
  42. }
  43. return;
  44. }
  45. me.load(dt, dn);
  46. });
  47. },
  48. load: function(dt, dn) {
  49. wn.container.change_to("Form/" + dt);
  50. wn.views.formview[dt].frm.refresh(dn);
  51. }
  52. });