[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).
|
* view should be displayed (if there is one active).
|
||||||
*/
|
*/
|
||||||
searchable: false,
|
searchable: false,
|
||||||
|
readonly : false,
|
||||||
form_template: "FormView",
|
form_template: "FormView",
|
||||||
identifier_prefix: '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.dirty_for_user = false;
|
||||||
this.default_focus_field = null;
|
this.default_focus_field = null;
|
||||||
this.default_focus_button = 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.has_been_loaded = $.Deferred();
|
||||||
this.$form_header = null;
|
this.$form_header = null;
|
||||||
this.translatable_fields = [];
|
this.translatable_fields = [];
|
||||||
|
@ -101,10 +102,11 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
self.on_pager_action(action);
|
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_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_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_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);
|
this.$form_header.find('button.oe_form_button_toggle').click(this.on_toggle_readonly);
|
||||||
|
|
||||||
if (this.options.sidebar && this.options.sidebar_id) {
|
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.widgets = {};
|
||||||
self.fields = {};
|
self.fields = {};
|
||||||
self.$form_header.find('button').unbind('click');
|
self.$form_header.find('button').unbind('click');
|
||||||
self.registry = self.registry === openerp.web.form.widgets
|
self.readonly = !self.readonly;
|
||||||
? openerp.web.form.readonly
|
self.registry = self.readonly ? openerp.web.form.readonly : openerp.web.form.widgets;
|
||||||
: openerp.web.form.widgets;
|
|
||||||
self.on_loaded(self.fields_view);
|
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 () {
|
do_show: function () {
|
||||||
var promise;
|
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('.oe_form_on_update').show();
|
||||||
this.$form_header.find('button.oe_form_button_new').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.dirty_for_user = false;
|
||||||
this.datarecord = record;
|
this.datarecord = record;
|
||||||
for (var f in this.fields) {
|
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() {
|
$.when(this.has_been_loaded).then(function() {
|
||||||
if (self.can_be_discarded()) {
|
if (self.can_be_discarded()) {
|
||||||
var keys = _.keys(self.fields_view.fields);
|
var keys = _.keys(self.fields_view.fields);
|
||||||
if (keys.length) {
|
$.when(self.do_set_editable()).then(function() {
|
||||||
self.dataset.default_get(keys).then(self.on_record_loaded).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();
|
def.resolve();
|
||||||
});
|
}
|
||||||
} else {
|
});
|
||||||
self.on_record_loaded({});
|
|
||||||
def.resolve();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return def.promise();
|
return def.promise();
|
||||||
|
@ -363,7 +374,20 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
if (self.can_be_discarded()) {
|
if (self.can_be_discarded()) {
|
||||||
self.dataset.call('copy', [self.datarecord.id, {}, self.dataset.context]).then(function(new_id) {
|
self.dataset.call('copy', [self.datarecord.id, {}, self.dataset.context]).then(function(new_id) {
|
||||||
return self.on_created({ result : 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();
|
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 {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)
|
* @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) {
|
do_save: function(success, prepend_on_create) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var action = function() {
|
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);
|
this.mutating_lock = this.mutating_lock.pipe(action, action);
|
||||||
return this.mutating_lock;
|
return this.mutating_lock;
|
||||||
},
|
},
|
||||||
switch_readonly: function() {
|
|
||||||
},
|
|
||||||
switch_editable: function() {
|
|
||||||
},
|
|
||||||
on_invalid: function() {
|
on_invalid: function() {
|
||||||
var msg = "<ul>";
|
var msg = "<ul>";
|
||||||
_.each(this.fields, function(f) {
|
_.each(this.fields, function(f) {
|
||||||
|
|
|
@ -473,8 +473,6 @@
|
||||||
<h2><t t-esc="name"/></h2>
|
<h2><t t-esc="name"/></h2>
|
||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
|
|
||||||
<t t-name="Sidebar.section.items">
|
<t t-name="Sidebar.section.items">
|
||||||
<li t-foreach="items" t-as="item" t-att-class="item.classname">
|
<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="#">
|
<a class="oe_sidebar_action_a" t-att-id="item.element_id" t-att-title="item.title" href="#">
|
||||||
|
@ -551,6 +549,7 @@
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<table t-name="ListView" class="oe-listview-content">
|
<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)"/>
|
<t t-set="columns_count" t-value="visible_columns.length + (options.selectable ? 1 : 0) + (options.deletable ? 1 : 0)"/>
|
||||||
<thead class="ui-widget-header">
|
<thead class="ui-widget-header">
|
||||||
|
@ -660,16 +659,18 @@
|
||||||
<t t-name="ListView.row.form">
|
<t t-name="ListView.row.form">
|
||||||
<t t-raw="frame.render()"/>
|
<t t-raw="frame.render()"/>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
<t t-name="FormView">
|
<t t-name="FormView">
|
||||||
<div class="oe_form_header">
|
<div class="oe_form_header">
|
||||||
<div class="oe_form_buttons" t-if="widget.options.action_buttons !== false">
|
<div class="oe_form_buttons" t-if="widget.options.action_buttons !== false">
|
||||||
<button type="button" class="oe_form_button_save">
|
<button type="button" class="oe_form_button_save oe_form_on_editable">Save</button>
|
||||||
<span class="oe_form_on_update">Save</span>
|
<button type="button" class="oe_form_button_toggle">
|
||||||
<span class="oe_form_on_create">Create</span>
|
<span class="oe_form_on_editable">Cancel</span>
|
||||||
|
<span class="oe_form_on_readonly">Edit</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="oe_form_button_new">New</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_update">Duplicate</button>
|
<button type="button" class="oe_form_button_duplicate oe_form_on_readonly">Duplicate</button>
|
||||||
<button type="button" class="oe_form_button_toggle">Readonly/Editable</button>
|
<button type="button" class="oe_form_button_delete oe_form_on_readonly">Delete</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_form_pager" t-if="widget.options.pager !== false">
|
<div class="oe_form_pager" t-if="widget.options.pager !== false">
|
||||||
<button type="button" data-pager-action="first">First</button>
|
<button type="button" data-pager-action="first">First</button>
|
||||||
|
@ -1010,6 +1011,7 @@
|
||||||
<span t-if="widget.string"><t t-esc="widget.string"/></span>
|
<span t-if="widget.string"><t t-esc="widget.string"/></span>
|
||||||
</button>
|
</button>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
<t t-name="SearchView">
|
<t t-name="SearchView">
|
||||||
<form class="oe_forms">
|
<form class="oe_forms">
|
||||||
<t t-call="SearchView.render_lines"/>
|
<t t-call="SearchView.render_lines"/>
|
||||||
|
|
Loading…
Reference in New Issue