diff options
| author | Fabien Meghazi <fme@openerp.com> | 2011-09-15 10:12:41 +0200 |
|---|---|---|
| committer | Fabien Meghazi <fme@openerp.com> | 2011-09-15 10:12:41 +0200 |
| commit | 6af24261ba6450ea2e8ce51e5d3550821fc44fd8 (patch) | |
| tree | 092d7b6c0689daf9b0a9b995e9b154b960e88b28 /addons/web/static/src | |
| parent | b612f2563f04ce8a271522787b83641275afdfcd (diff) | |
[ADD] Added duplicate feature to FormView
bzr revid: fme@openerp.com-20110915081241-3q4us9bweru4iyx1
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 15 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b097fc6abf0..a2188d736fd 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -89,6 +89,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.$form_header.find('button.oe_form_button_save_edit').click(this.do_save_edit); 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); if (this.options.sidebar && this.options.sidebar_id) { this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id); @@ -307,6 +308,20 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# }); return def.promise(); }, + on_button_duplicate: function() { + var self = this; + var def = $.Deferred(); + $.when(this.has_been_loaded).then(function() { + 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() { + def.resolve(); + }); + } + }); + return def.promise(); + }, can_be_discarded: function() { return !this.dirty_for_user || confirm(_t("Warning, the record has been modified, your changes will be discarded.")); }, diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 422ecca5760..83ca819b4e6 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -661,6 +661,7 @@ </button> <!--<button type="button" class="oe_form_button_cancel">Cancel</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> </div> <div class="oe_form_pager" t-if="view.options.pager !== false"> <button type="button" data-pager-action="first">First</button> |
