[IMP] mail: reintroduce mail_template_ids in activity

Task-2998135

closes odoo/odoo#101998

X-original-commit: c00828010f1245200b30451fb25a239047986421
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
This commit is contained in:
Didier (did)
2022-10-04 13:28:52 +02:00
parent 2a47e097c0
commit 7ffb5a0eff
5 changed files with 61 additions and 24 deletions
@@ -28,8 +28,13 @@
</t>
<small t-att-title="activityListViewItem.activity.dateDeadline" t-esc="activityListViewItem.delayLabel"/>
</div>
<!-- TODO handle "mail_template_ids" -->
<ActivityMarkDonePopoverContent t-if="activityListViewItem.markDoneView" record="activityListViewItem.markDoneView"/>
<div t-if="activityListViewItem.mailTemplateViews.length > 0" class="mx-3 mt-2">
<MailTemplate
t-foreach="activityListViewItem.mailTemplateViews" t-as="mailTemplateView" t-key="mailTemplateView"
record="mailTemplateView"
/>
</div>
</div>
</t>
</templates>
@@ -2,6 +2,10 @@
// Layout
// ------------------------------------------------------------------
.o_Activity_core {
min-width: 0;
}
.o_Activity_detailsUserAvatar {
object-fit: cover;
height: 18px;
@@ -3,25 +3,29 @@
<t t-name="mail.MailTemplate" owl="1">
<t t-if="mailTemplateView">
<div class="o_MailTemplate flex-shrink-0 align-items-center d-flex" t-attf-class="{{ className }}" t-ref="root">
<i class="fa fa-envelope-o" title="Mail" role="img"/>
<span class="o_MailTemplate_name ms-2" t-esc="mailTemplateView.mailTemplate.name"/>
<span>:</span>
<button
class="o_MailTemplate_button o_MailTemplate_preview btn btn-link py-0"
t-att-data-mail-template-id="mailTemplateView.mailTemplate.id"
t-on-click="mailTemplateView.onClickPreview"
>
Preview
</button>
<em class="o_MailTemplate_text text-500">or</em>
<button
class="o_MailTemplate_button o_MailTemplate_send btn btn-link py-0"
t-att-data-mail-template-id="mailTemplateView.mailTemplate.id"
t-on-click="mailTemplateView.onClickSend"
>
Send Now
</button>
<div class="o_MailTemplate d-flex align-items-baseline flex-wrap" t-attf-class="{{ className }}" t-ref="root">
<div class="text-truncate">
<i class="fa fa-envelope-o" title="Mail" role="img"/>
<span class="o_MailTemplate_name ms-2" t-esc="mailTemplateView.mailTemplate.name"/>
<span>:</span>
</div>
<div class="d-flex align-items-baseline">
<button
class="o_MailTemplate_button o_MailTemplate_preview btn btn-link py-0"
t-att-data-mail-template-id="mailTemplateView.mailTemplate.id"
t-on-click="mailTemplateView.onClickPreview"
>
Preview
</button>
<em class="o_MailTemplate_text text-500">or</em>
<button
class="o_MailTemplate_button o_MailTemplate_send btn btn-link py-0"
t-att-data-mail-template-id="mailTemplateView.mailTemplate.id"
t-on-click="mailTemplateView.onClickSend"
>
Send Now
</button>
</div>
</div>
</t>
</t>
@@ -1,7 +1,7 @@
/** @odoo-module **/
import { registerModel } from '@mail/model/model_core';
import { attr, one } from '@mail/model/model_field';
import { attr, many, one } from '@mail/model/model_field';
import { clear } from '@mail/model/model_field_command';
import { auto_str_to_date } from 'web.time';
@@ -103,6 +103,12 @@ registerModel({
return !this.fileUploader;
},
}),
mailTemplateViews: many('MailTemplateView', {
compute() {
return this.activity.mailTemplates.map(mailTemplate => ({ mailTemplate }));
},
inverse: 'activityListViewItemOwner',
}),
markDoneView: one('ActivityMarkDonePopoverContentView', {
inverse: 'activityListViewItemOwner',
}),
@@ -12,7 +12,10 @@ registerModel({
onClickPreview(ev) {
ev.stopPropagation();
ev.preventDefault();
this.mailTemplate.preview(this.activityViewOwner.activity);
this.mailTemplate.preview(this.activity);
if (this.activityListViewItemOwner) {
this.activityListViewItemOwner.activityListViewOwner.popoverViewOwner.delete();
}
},
/**
* @param {MouseEvent} ev
@@ -20,12 +23,27 @@ registerModel({
onClickSend(ev) {
ev.stopPropagation();
ev.preventDefault();
this.mailTemplate.send(this.activityViewOwner.activity);
this.mailTemplate.send(this.activity);
if (this.activityListViewItemOwner) {
this.activityListViewItemOwner.activityListViewOwner.popoverViewOwner.delete();
}
},
},
fields: {
activity: one('Activity', {
compute() {
if (this.activityViewOwner) {
return this.activityViewOwner.activity;
}
if (this.activityListViewItemOwner) {
return this.activityListViewItemOwner.activity;
}
}
}),
activityListViewItemOwner: one('ActivityListViewItem', {
inverse: 'mailTemplateViews',
}),
activityViewOwner: one('ActivityView', {
identifying: true,
inverse: 'mailTemplateViews',
}),
mailTemplate: one('MailTemplate', {