summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorArnold Moyaux <arm@odoo.com>2018-01-12 16:21:48 +0100
committerSimon Lejeune <sle@openerp.com>2018-02-01 15:26:59 +0100
commit17f5f74af94384e040e39eb146ff5fbb84fb02ff (patch)
treeb01bf30034d5591155aa41d9ab70dcfa43eccfcb /addons
parent18d5b11cb4a58a3bd0676427d318249a127a6a5f (diff)
[IMP] mail: redirect on mail activity
Allow to redirect on a form view when the user click on a html tag a with data-oe-model and data-oe-id specified. In order to avoid code duplication the do_action already existing in mail_thread is moved in the action_manager and mail_thread and mail_activity use a trigger_up in order to call it.
Diffstat (limited to 'addons')
-rw-r--r--addons/mail/static/src/js/activity.js12
-rw-r--r--addons/mail/static/src/js/thread_field.js8
-rw-r--r--addons/web/static/src/js/chrome/action_manager.js19
3 files changed, 33 insertions, 6 deletions
diff --git a/addons/mail/static/src/js/activity.js b/addons/mail/static/src/js/activity.js
index 4d3d7adee50..2798a8364a3 100644
--- a/addons/mail/static/src/js/activity.js
+++ b/addons/mail/static/src/js/activity.js
@@ -111,6 +111,7 @@ var AbstractActivityField = AbstractField.extend({
var Activity = AbstractActivityField.extend({
className: 'o_mail_activity',
events: {
+ 'click a': '_onClickRedirect',
'click .o_activity_edit': '_onEditActivity',
'click .o_activity_unlink': '_onUnlinkActivity',
'click .o_activity_done': '_onMarkActivityDone',
@@ -164,6 +165,17 @@ var Activity = AbstractActivityField.extend({
},
// handlers
+ _onClickRedirect: function (ev) {
+ var id = $(ev.target).data('oe-id');
+ if (id) {
+ ev.preventDefault();
+ var model = $(ev.target).data('oe-model');
+ this.trigger_up('redirect', {
+ res_id: id,
+ res_model: model,
+ });
+ }
+ },
_onEditActivity: function (event, options) {
event.preventDefault();
var self = this;
diff --git a/addons/mail/static/src/js/thread_field.js b/addons/mail/static/src/js/thread_field.js
index 00ea4e2037a..0a745b69a96 100644
--- a/addons/mail/static/src/js/thread_field.js
+++ b/addons/mail/static/src/js/thread_field.js
@@ -168,13 +168,9 @@ var ThreadField = AbstractField.extend({
});
},
_onRedirect: function (res_model, res_id) {
- this.do_action({
- type:'ir.actions.act_window',
- view_type: 'form',
- view_mode: 'form',
- res_model: res_model,
- views: [[false, 'form']],
+ this.trigger_up('redirect', {
res_id: res_id,
+ res_model: res_model,
});
},
_onUpdateMessage: function (message) {
diff --git a/addons/web/static/src/js/chrome/action_manager.js b/addons/web/static/src/js/chrome/action_manager.js
index ef2baaaad38..cea75c56726 100644
--- a/addons/web/static/src/js/chrome/action_manager.js
+++ b/addons/web/static/src/js/chrome/action_manager.js
@@ -27,6 +27,7 @@ var ActionManager = Widget.extend({
breadcrumb_clicked: '_onBreadcrumbClicked',
history_back: '_onHistoryBack',
push_state: '_onPushState',
+ redirect: '_onRedirect',
},
/**
@@ -885,6 +886,24 @@ var ActionManager = Widget.extend({
this._pushState(ev.data.controllerID, ev.data.state);
}
},
+ /**
+ * Intercepts and triggers a redirection on a link
+ *
+ * @private
+ * @param {OdooEvent} ev
+ * @param {integer} ev.data.res_id
+ * @param {string} ev.data.res_model
+ */
+ _onRedirect: function (ev) {
+ this.do_action({
+ type:'ir.actions.act_window',
+ view_type: 'form',
+ view_mode: 'form',
+ res_model: ev.data.res_model,
+ views: [[false, 'form']],
+ res_id: ev.data.res_id,
+ });
+ },
});
return ActionManager;