form do_mode_switch

bzr revid: al@openerp.com-20120409213043-85a3zd2xoocd4uij
This commit is contained in:
Antony Lesuisse 2012-04-09 23:30:43 +02:00
parent 45b11fe674
commit b40479a59e
2 changed files with 31 additions and 16 deletions

View File

@ -49,7 +49,6 @@ openerp.web.FormView = openerp.web.View.extend({
this.mutating_mutex = new $.Mutex();
this.on_change_mutex = new $.Mutex();
this.reload_mutex = new $.Mutex();
this.set({"force_readonly": false});
this.rendering_engine = new openerp.web.FormRenderingEngine(this);
},
destroy: function() {
@ -432,17 +431,32 @@ openerp.web.FormView = openerp.web.View.extend({
}
},
do_switch_mode: function(mode) {
console.log("switch to",mode)
var self = this;
if(mode) {
self.$buttons.find('.oe_form_buttons_edit').show();
self.$buttons.find('.oe_form_buttons_view').hide();
_.each(this.fields,function(field){
field.set({"force_readonly": false});
});
} else {
self.$buttons.find('.oe_form_buttons_edit').hide();
self.$buttons.find('.oe_form_buttons_view').show();
_.each(this.fields,function(field){
field.set({"force_readonly": true});
});
}
},
on_button_save: function() {
var self = this;
return this.do_save().then(function(result) {
self.do_prev_view({'created': result.created, 'default': 'page'});
self.do_switch_mode(0);
self.do_prev_view({'created': result.created, 'default': 'form'});
});
},
on_button_cancel: function() {
if (this.can_be_discarded()) {
return this.do_prev_view({'default': 'page'});
this.do_switch_mode(0);
return this.do_prev_view({'default': 'form'});
}
},
on_button_new: function() {
@ -2491,7 +2505,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend(
res_model: self.field.relation,
res_id: self.get("value"),
context: self.build_context(),
views: [[false, 'page'], [false, 'form']],
views: [[false, 'form']],
target: 'current'
});
return false;
@ -2637,7 +2651,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
}
} else if (view.view_type === "form") {
if (self.get("effective_readonly")) {
view.view_type = 'page';
view.view_type = 'form';
}
view.options.not_interactible_on_create = true;
}
@ -2664,7 +2678,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
if (view_type == "list") {
if (self.get("effective_readonly"))
controller.set_editable(false);
} else if (view_type == "form" || view_type == 'page') {
} else if (view_type == "form" || view_type == 'form') {
if (view_type == 'page' || self.get("effective_readonly")) {
$(".oe_form_buttons", controller.$element).children().remove();
}

View File

@ -677,12 +677,16 @@
</t>
<t t-name="FormView.buttons">
<div class="oe_form_buttons" t-if="widget.options.action_buttons !== false">
view:<button type="button" class="oe_button oe_form_button_edit">Edit</button>
<button type="button" class="oe_button oe_form_button_create">Create</button>
<button type="button" class="oe_button oe_form_button_duplicate">Duplicate</button>
<button type="button" class="oe_button oe_form_button_delete">Delete</button>
edit:<button type="button" class="oe_button oe_form_button_save">Save</button>
<button type="button" class="oe_button oe_form_button_cancel">Cancel</button>
<span class="oe_form_buttons_view">
<button type="button" class="oe_button oe_form_button_edit">Edit</button>
<button type="button" class="oe_button oe_form_button_create">Create</button>
<button type="button" class="oe_button oe_form_button_duplicate">Duplicate</button>
<button type="button" class="oe_button oe_form_button_delete">Delete</button>
</span>
<span class="oe_form_buttons_edit">
<button type="button" class="oe_button oe_form_button_save">Save</button>
<button type="button" class="oe_button oe_form_button_cancel">Cancel</button>
</span>
</div>
</t>
<t t-name="FormView.pager">
@ -692,9 +696,6 @@
</t>
</div>
</t>
<t t-name="PageView" t-extend="FormView">
</t>
<t t-name="FormView.sidebar.attachments">
<div class="oe-sidebar-attachments-toolbar">
<div class="oe-binary-file-set" style="float: right">