summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/views/basic/basic_controller.js35
-rw-r--r--addons/web/static/src/js/views/form/form_controller.js35
-rw-r--r--addons/web/static/src/js/views/list/list_controller.js7
3 files changed, 37 insertions, 40 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_controller.js b/addons/web/static/src/js/views/basic/basic_controller.js
index 5293ee6f4b6..7beb15a9d70 100644
--- a/addons/web/static/src/js/views/basic/basic_controller.js
+++ b/addons/web/static/src/js/views/basic/basic_controller.js
@@ -88,6 +88,41 @@ return AbstractController.extend(FieldManagerMixin, {
//--------------------------------------------------------------------------
/**
+ * When the user clicks on a 'action button', this function determines what
+ * should happen.
+ *
+ * @private
+ * @param {Object} attrs the attrs of the button clicked
+ * @param {Object} [record] the current state of the view
+ * @returns {Deferred}
+ */
+ _callButtonAction: function (attrs, record) {
+ var self = this;
+ var def = $.Deferred();
+ var reload = function () {
+ if (!self.isDestroyed()) {
+ self.reload();
+ }
+ };
+ record = record || this.model.get(this.handle);
+ var recordID = record.data.id;
+ this.trigger_up('execute_action', {
+ action_data: _.extend({}, attrs, {
+ context: record.getContext({additionalContext: attrs.context}),
+ }),
+ model: record.model,
+ record_id: recordID,
+ on_closed: function (reason) {
+ if (!_.isObject(reason)) {
+ reload();
+ }
+ },
+ on_fail: reload,
+ on_success: def.resolve.bind(def),
+ });
+ return this.alive(def);
+ },
+ /**
* Called by the field manager mixin to confirm that a change just occured
* (after that potential onchanges have been applied).
*
diff --git a/addons/web/static/src/js/views/form/form_controller.js b/addons/web/static/src/js/views/form/form_controller.js
index e833c80e3b2..981d614f52c 100644
--- a/addons/web/static/src/js/views/form/form_controller.js
+++ b/addons/web/static/src/js/views/form/form_controller.js
@@ -261,41 +261,6 @@ var FormController = BasicController.extend({
//--------------------------------------------------------------------------
/**
- * When the user clicks on a form button, this function determines what
- * should happen.
- *
- * @private
- * @param {Object} attrs the attrs of the button clicked
- * @param {Object} [record] the current state of the view
- * @returns {Deferred}
- */
- _callButtonAction: function (attrs, record) {
- var self = this;
- var def = $.Deferred();
- var reload = function () {
- if (!self.isDestroyed()) {
- self.reload();
- }
- };
- record = record || this.model.get(this.handle);
- var recordID = record.data.id;
- this.trigger_up('execute_action', {
- action_data: _.extend({}, attrs, {
- context: record.getContext({additionalContext: attrs.context}),
- }),
- model: record.model,
- record_id: recordID,
- on_closed: function (reason) {
- if (!_.isObject(reason)) {
- reload();
- }
- },
- on_fail: reload,
- on_success: def.resolve.bind(def),
- });
- return this.alive(def);
- },
- /**
* When a save operation has been confirmed from the model, this method is
* called.
*
diff --git a/addons/web/static/src/js/views/list/list_controller.js b/addons/web/static/src/js/views/list/list_controller.js
index 1f5bb64cac8..d4d1fe9debe 100644
--- a/addons/web/static/src/js/views/list/list_controller.js
+++ b/addons/web/static/src/js/views/list/list_controller.js
@@ -210,11 +210,8 @@ var ListController = BasicController.extend({
* @param {OdooEvent} event
*/
_onButtonClicked: function (event) {
- this.trigger_up('execute_action', {
- action_data: event.data.attrs,
- model: this.modelName,
- record_id: event.data.record.res_id,
- });
+ event.stopPropagation();
+ this._callButtonAction(event.data.attrs, event.data.record);
},
/**
* This event is triggered when a list renderer goes from mode = readonly to