59 lines
No EOL
1.3 KiB
JavaScript
59 lines
No EOL
1.3 KiB
JavaScript
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
|
|
// MIT License. See license.txt
|
|
|
|
wn.provide('wn.views.formview');
|
|
|
|
wn.views.FormFactory = wn.views.Factory.extend({
|
|
make: function(route) {
|
|
var me = this,
|
|
dt = route[1];
|
|
|
|
if(!wn.views.formview[dt]) {
|
|
me.page = wn.container.add_page("Form/" + dt);
|
|
wn.views.formview[dt] = me.page;
|
|
wn.model.with_doctype(dt, function() {
|
|
me.page.frm = new _f.Frm(dt, me.page, true);
|
|
me.show_doc(route);
|
|
});
|
|
} else {
|
|
me.show_doc(route);
|
|
}
|
|
},
|
|
show_doc: function(route) {
|
|
var dt = route[1],
|
|
dn = route.slice(2).join("/"),
|
|
me = this;
|
|
|
|
if(wn.model.new_names[dn]) {
|
|
dn = wn.model.new_names[dn];
|
|
wn.set_route("Form", dt, dn);
|
|
return;
|
|
}
|
|
|
|
wn.model.with_doc(dt, dn, function(dn, r) {
|
|
if(r && r['403']) return; // not permitted
|
|
|
|
if(!(locals[dt] && locals[dt][dn])) {
|
|
// doc not found, but starts with New,
|
|
// make a new doc and set it
|
|
if(dn && dn.substr(0,4)=="New ") {
|
|
var new_name = wn.model.make_new_doc_and_get_name(dt);
|
|
if(new_name===dn) {
|
|
me.load(dt, dn);
|
|
} else {
|
|
wn.set_route("Form", dt, new_name)
|
|
}
|
|
} else {
|
|
wn.show_not_found(route);
|
|
}
|
|
return;
|
|
}
|
|
me.load(dt, dn);
|
|
});
|
|
|
|
},
|
|
load: function(dt, dn) {
|
|
wn.container.change_to("Form/" + dt);
|
|
wn.views.formview[dt].frm.refresh(dn);
|
|
}
|
|
}); |