diff options
| author | Arnold Moyaux <arm@odoo.com> | 2018-01-12 16:21:48 +0100 |
|---|---|---|
| committer | Simon Lejeune <sle@openerp.com> | 2018-02-01 15:26:59 +0100 |
| commit | 17f5f74af94384e040e39eb146ff5fbb84fb02ff (patch) | |
| tree | b01bf30034d5591155aa41d9ab70dcfa43eccfcb /addons | |
| parent | 18d5b11cb4a58a3bd0676427d318249a127a6a5f (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.js | 12 | ||||
| -rw-r--r-- | addons/mail/static/src/js/thread_field.js | 8 | ||||
| -rw-r--r-- | addons/web/static/src/js/chrome/action_manager.js | 19 |
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; |
