[IMP] Refactored form view's buttons
Yuck bzr revid: fme@openerp.com-20111107134539-ndykhew56v66i218
This commit is contained in:
parent
a3d158bc75
commit
6389731d37
|
@ -10,6 +10,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
* view should be displayed (if there is one active).
|
||||
*/
|
||||
searchable: false,
|
||||
readonly : false,
|
||||
form_template: "FormView",
|
||||
identifier_prefix: 'formview-',
|
||||
/**
|
||||
|
@ -37,7 +38,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
this.dirty_for_user = false;
|
||||
this.default_focus_field = null;
|
||||
this.default_focus_button = null;
|
||||
this.registry = openerp.web.form.widgets;
|
||||
this.registry = this.readonly ? openerp.web.form.readonly : openerp.web.form.widgets;
|
||||
this.has_been_loaded = $.Deferred();
|
||||
this.$form_header = null;
|
||||
this.translatable_fields = [];
|
||||
|
@ -101,10 +102,11 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
self.on_pager_action(action);
|
||||
});
|
||||
|
||||
this.$form_header.find('button.oe_form_button_save').click(this.do_save);
|
||||
this.$form_header.find('button.oe_form_button_save').click(this.do_save_then_readonly);
|
||||
this.$form_header.find('button.oe_form_button_cancel').click(this.do_cancel);
|
||||
this.$form_header.find('button.oe_form_button_new').click(this.on_button_new);
|
||||
this.$form_header.find('button.oe_form_button_duplicate').click(this.on_button_duplicate);
|
||||
this.$form_header.find('button.oe_form_button_delete').click(this.on_button_delete);
|
||||
this.$form_header.find('button.oe_form_button_toggle').click(this.on_toggle_readonly);
|
||||
|
||||
if (this.options.sidebar && this.options.sidebar_id) {
|
||||
|
@ -123,11 +125,16 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
self.widgets = {};
|
||||
self.fields = {};
|
||||
self.$form_header.find('button').unbind('click');
|
||||
self.registry = self.registry === openerp.web.form.widgets
|
||||
? openerp.web.form.readonly
|
||||
: openerp.web.form.widgets;
|
||||
self.readonly = !self.readonly;
|
||||
self.registry = self.readonly ? openerp.web.form.readonly : openerp.web.form.widgets;
|
||||
self.on_loaded(self.fields_view);
|
||||
self.reload();
|
||||
return self.reload();
|
||||
},
|
||||
do_set_readonly: function() {
|
||||
return this.readonly ? $.Deferred().resolve() : this.on_toggle_readonly();
|
||||
},
|
||||
do_set_editable: function() {
|
||||
return !this.readonly ? $.Deferred().resolve() : this.on_toggle_readonly();
|
||||
},
|
||||
do_show: function () {
|
||||
var promise;
|
||||
|
@ -164,6 +171,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
this.$form_header.find('.oe_form_on_update').show();
|
||||
this.$form_header.find('button.oe_form_button_new').show();
|
||||
}
|
||||
this.$form_header.find('.oe_form_on_readonly').toggle(this.readonly);
|
||||
this.$form_header.find('.oe_form_on_editable').toggle(!this.readonly);
|
||||
this.dirty_for_user = false;
|
||||
this.datarecord = record;
|
||||
for (var f in this.fields) {
|
||||
|
@ -344,14 +353,16 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
$.when(this.has_been_loaded).then(function() {
|
||||
if (self.can_be_discarded()) {
|
||||
var keys = _.keys(self.fields_view.fields);
|
||||
if (keys.length) {
|
||||
self.dataset.default_get(keys).then(self.on_record_loaded).then(function() {
|
||||
$.when(self.do_set_editable()).then(function() {
|
||||
if (keys.length) {
|
||||
self.dataset.default_get(keys).then(self.on_record_loaded).then(function() {
|
||||
def.resolve();
|
||||
});
|
||||
} else {
|
||||
self.on_record_loaded({});
|
||||
def.resolve();
|
||||
});
|
||||
} else {
|
||||
self.on_record_loaded({});
|
||||
def.resolve();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
return def.promise();
|
||||
|
@ -363,7 +374,20 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
if (self.can_be_discarded()) {
|
||||
self.dataset.call('copy', [self.datarecord.id, {}, self.dataset.context]).then(function(new_id) {
|
||||
return self.on_created({ result : new_id });
|
||||
}).then(function() {
|
||||
}).then(self.do_set_editable).then(function() {
|
||||
def.resolve();
|
||||
});
|
||||
}
|
||||
});
|
||||
return def.promise();
|
||||
},
|
||||
on_button_delete: function() {
|
||||
var self = this;
|
||||
var def = $.Deferred();
|
||||
$.when(this.has_been_loaded).then(function() {
|
||||
if (self.can_be_discarded() && self.datarecord.id) {
|
||||
self.dataset.unlink([self.datarecord.id]).then(function() {
|
||||
self.on_pager_action('next');
|
||||
def.resolve();
|
||||
});
|
||||
}
|
||||
|
@ -381,6 +405,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
* @param {Function} success callback on save success
|
||||
* @param {Boolean} [prepend_on_create=false] if ``do_save`` creates a new record, should that record be inserted at the start of the dataset (by default, records are added at the end)
|
||||
*/
|
||||
do_save_then_readonly: function(success, prepend_on_create) {
|
||||
return this.do_save(success, prepend_on_create).then(this.do_set_readonly);
|
||||
},
|
||||
do_save: function(success, prepend_on_create) {
|
||||
var self = this;
|
||||
var action = function() {
|
||||
|
@ -428,10 +455,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
this.mutating_lock = this.mutating_lock.pipe(action, action);
|
||||
return this.mutating_lock;
|
||||
},
|
||||
switch_readonly: function() {
|
||||
},
|
||||
switch_editable: function() {
|
||||
},
|
||||
on_invalid: function() {
|
||||
var msg = "<ul>";
|
||||
_.each(this.fields, function(f) {
|
||||
|
|
|
@ -473,8 +473,6 @@
|
|||
<h2><t t-esc="name"/></h2>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
|
||||
<t t-name="Sidebar.section.items">
|
||||
<li t-foreach="items" t-as="item" t-att-class="item.classname">
|
||||
<a class="oe_sidebar_action_a" t-att-id="item.element_id" t-att-title="item.title" href="#">
|
||||
|
@ -551,6 +549,7 @@
|
|||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<table t-name="ListView" class="oe-listview-content">
|
||||
<t t-set="columns_count" t-value="visible_columns.length + (options.selectable ? 1 : 0) + (options.deletable ? 1 : 0)"/>
|
||||
<thead class="ui-widget-header">
|
||||
|
@ -660,16 +659,18 @@
|
|||
<t t-name="ListView.row.form">
|
||||
<t t-raw="frame.render()"/>
|
||||
</t>
|
||||
|
||||
<t t-name="FormView">
|
||||
<div class="oe_form_header">
|
||||
<div class="oe_form_buttons" t-if="widget.options.action_buttons !== false">
|
||||
<button type="button" class="oe_form_button_save">
|
||||
<span class="oe_form_on_update">Save</span>
|
||||
<span class="oe_form_on_create">Create</span>
|
||||
<button type="button" class="oe_form_button_save oe_form_on_editable">Save</button>
|
||||
<button type="button" class="oe_form_button_toggle">
|
||||
<span class="oe_form_on_editable">Cancel</span>
|
||||
<span class="oe_form_on_readonly">Edit</span>
|
||||
</button>
|
||||
<button type="button" class="oe_form_button_new">New</button>
|
||||
<button type="button" class="oe_form_button_duplicate oe_form_on_update">Duplicate</button>
|
||||
<button type="button" class="oe_form_button_toggle">Readonly/Editable</button>
|
||||
<button type="button" class="oe_form_button_new oe_form_on_readonly">Create</button>
|
||||
<button type="button" class="oe_form_button_duplicate oe_form_on_readonly">Duplicate</button>
|
||||
<button type="button" class="oe_form_button_delete oe_form_on_readonly">Delete</button>
|
||||
</div>
|
||||
<div class="oe_form_pager" t-if="widget.options.pager !== false">
|
||||
<button type="button" data-pager-action="first">First</button>
|
||||
|
@ -1010,6 +1011,7 @@
|
|||
<span t-if="widget.string"><t t-esc="widget.string"/></span>
|
||||
</button>
|
||||
</t>
|
||||
|
||||
<t t-name="SearchView">
|
||||
<form class="oe_forms">
|
||||
<t t-call="SearchView.render_lines"/>
|
||||
|
|
Loading…
Reference in New Issue