diff options
| author | Alexandre Kühn <aku@odoo.com> | 2020-08-31 14:15:58 +0000 |
|---|---|---|
| committer | Alexandre Kühn <aku@odoo.com> | 2020-09-01 11:00:57 +0000 |
| commit | b020e45832a967213c4ea4ae28b3a3d4d0c4e7f3 (patch) | |
| tree | aafbe238b4ca85a0d685b2db2e9f9b0643b9faa7 /addons/mail/static/src/components/activity | |
| parent | 57665a02f7b4cd113f8f40ec47c58a518fe8669c (diff) | |
[FIX] mail: message/activity link with dataset oe-id and oe-model
Task-2328718
closes odoo/odoo#56864
X-original-commit: 430aa0c2ffe242992fb935733d81f6e05a6d2458
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Diffstat (limited to 'addons/mail/static/src/components/activity')
3 files changed, 68 insertions, 1 deletions
diff --git a/addons/mail/static/src/components/activity/activity.js b/addons/mail/static/src/components/activity/activity.js index 6c70f876160..45fb2d12a8e 100644 --- a/addons/mail/static/src/components/activity/activity.js +++ b/addons/mail/static/src/components/activity/activity.js @@ -134,6 +134,25 @@ class Activity extends Component { * @private * @param {MouseEvent} ev */ + _onClick(ev) { + if ( + ev.target.tagName === 'A' && + ev.target.dataset.oeId && + ev.target.dataset.oeModel + ) { + this.env.messaging.openProfile({ + id: Number(ev.target.dataset.oeId), + model: ev.target.dataset.oeModel, + }); + // avoid following dummy href + ev.preventDefault(); + } + } + + /** + * @private + * @param {MouseEvent} ev + */ _onClickCancel(ev) { ev.preventDefault(); this.activity.deleteServerRecord(); diff --git a/addons/mail/static/src/components/activity/activity.xml b/addons/mail/static/src/components/activity/activity.xml index 41d284b9dd6..d8ae1808bf5 100644 --- a/addons/mail/static/src/components/activity/activity.xml +++ b/addons/mail/static/src/components/activity/activity.xml @@ -2,7 +2,7 @@ <templates xml:space="preserve"> <t t-name="mail.Activity" owl="1"> - <div class="o_Activity"> + <div class="o_Activity" t-on-click="_onClick"> <t t-if="activity"> <div class="o_Activity_sidebar"> <div class="o_Activity_user"> diff --git a/addons/mail/static/src/components/activity/activity_tests.js b/addons/mail/static/src/components/activity/activity_tests.js index 7c9b33ce385..dce0969159d 100644 --- a/addons/mail/static/src/components/activity/activity_tests.js +++ b/addons/mail/static/src/components/activity/activity_tests.js @@ -1069,6 +1069,54 @@ QUnit.test('activity mark done popover click on discard', async function (assert ); }); +QUnit.test('data-oe-id & data-oe-model link redirection on click', async function (assert) { + assert.expect(7); + + const bus = new Bus(); + bus.on('do-action', null, payload => { + assert.strictEqual( + payload.action.type, + 'ir.actions.act_window', + "action should open view" + ); + assert.strictEqual( + payload.action.res_model, + 'some.model', + "action should open view on 'some.model' model" + ); + assert.strictEqual( + payload.action.res_id, + 250, + "action should open view on 250" + ); + assert.step('do-action:openFormView_some.model_250'); + }); + await this.start({ env: { bus } }); + const activity = this.env.models['mail.activity'].create({ + canWrite: true, + category: 'not_upload_file', + id: 12, + note: `<p><a href="#" data-oe-id="250" data-oe-model="some.model">some.model_250</a></p>`, + }); + await this.createActivityComponent(activity); + assert.containsOnce( + document.body, + '.o_Activity_note', + "activity should have a note" + ); + assert.containsOnce( + document.querySelector('.o_Activity_note'), + 'a', + "activity note should have a link" + ); + + document.querySelector(`.o_Activity_note a`).click(); + assert.verifySteps( + ['do-action:openFormView_some.model_250'], + "should have open form view on related record after click on link" + ); +}); + }); }); }); |
