diff options
| author | Yogesh (OpenERP) <ysa@tinyerp.com> | 2011-11-08 10:42:55 +0530 |
|---|---|---|
| committer | Yogesh (OpenERP) <ysa@tinyerp.com> | 2011-11-08 10:42:55 +0530 |
| commit | 8bceb275103eff05c6620f4ca43352df464dfbe2 (patch) | |
| tree | 4931913b7f3be1eacee0af169c9113e09b0238a5 /addons/web/static/src | |
| parent | c5576d9a0452ca2777e871cecaabdf21c6887ddc (diff) | |
| parent | cda361dc52f1393b84e7abea73ca60c3c9d8a509 (diff) | |
[MERGE] Merge with trunk upto revision no 1412.
bzr revid: ysa@tinyerp.com-20111108051255-r40ncrljjf0ru5op
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 63 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 18 |
2 files changed, 51 insertions, 30 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 237199d5472..603e2abb008 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -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,10 @@ 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_cancel').click(this.do_cancel); + this.$form_header.find('button.oe_form_button_save').click(this.do_save_then_readonly); 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 +124,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 +170,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 +352,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 +373,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 +404,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 +454,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) { @@ -489,9 +511,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# on_action: function (action) { console.debug('Executing action', action); }, - do_cancel: function () { - console.debug("Cancelling form"); - }, reload: function() { var self = this; var act = function() { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 0d86a840718..1fc98ba34ee 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -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"/> |
