summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2011-09-15 10:12:41 +0200
committerFabien Meghazi <fme@openerp.com>2011-09-15 10:12:41 +0200
commit6af24261ba6450ea2e8ce51e5d3550821fc44fd8 (patch)
tree092d7b6c0689daf9b0a9b995e9b154b960e88b28 /addons/web/static/src
parentb612f2563f04ce8a271522787b83641275afdfcd (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.js15
-rw-r--r--addons/web/static/src/xml/base.xml1
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>