[MOV] calendar: move mail data in their own files
It lessen noise on other data when updating templates. As they are subject to frequent changes it is better to have them located in a single file. It is also easier to find when searching for mail templates. This allows calendar to comply more with the guidelines. By the way also remove a falsy comment in calendar data. This commit is linked to task ID 1843136 (and 1868112) and to PR #25412 (and #25889).
This commit is contained in:
committed by
Thibault Delavallée
parent
fa9382a33c
commit
a35a7f5931
@@ -28,6 +28,7 @@ If you need to manage your meetings, you should install the CRM module.
|
||||
'security/calendar_security.xml',
|
||||
'data/calendar_cron.xml',
|
||||
'data/calendar_data.xml',
|
||||
'data/mail_data.xml',
|
||||
'views/mail_activity_views.xml',
|
||||
'views/calendar_templates.xml',
|
||||
'views/calendar_views.xml',
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Expense-related subtypes for messaging / Chatter -->
|
||||
<record id="calendar.subtype_invitation" model="mail.message.subtype">
|
||||
<field name="name">Invitation</field>
|
||||
<field name="res_model">calendar.event</field>
|
||||
@@ -51,280 +49,5 @@
|
||||
<field name="interval">hours</field>
|
||||
<field name="type">email</field>
|
||||
</record>
|
||||
|
||||
<record id="calendar_template_meeting_invitation" model="mail.template">
|
||||
<field name="name">Calendar: Meeting Invitation</field>
|
||||
<field name="email_from">${object.event_id.user_id.email or ''}</field>
|
||||
<field name="subject">${object.event_id.name} invitation</field>
|
||||
<field name="model_id" ref="calendar.model_calendar_attendee"/>
|
||||
<field name="email_to" >${('' if object.partner_id and object.partner_id.email and object.partner_id.email==object.email else object.email|safe)}</field>
|
||||
<field name="partner_to">${object.partner_id and object.partner_id.email and object.partner_id.email==object.email and object.partner_id.id or False }</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="body_html"><![CDATA[
|
||||
<div summary="o_mail_template" style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
% set colors = {'needsAction': 'grey', 'accepted': 'green', 'tentative': '#FFFF00', 'declined': 'red'}
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="center" width="200" style="padding:10px 10px 10px 5px;font-size: 12px">
|
||||
<img src="/logo.png" style="padding: 0px; margin: 0px; height: auto; width: 80px;" alt="${user.company_id.name}">
|
||||
</td>
|
||||
<td valign="center" align="right" width="340" style="padding:10px 10px 10px 5px; font-size: 12px;">
|
||||
<p>
|
||||
<a href="/calendar/meeting/accept?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Accept</a>
|
||||
<a href="/calendar/meeting/decline?db=${'dbname' in ctx and ctx['dbname'] or '' }&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Decline</a>
|
||||
<a href="/calendar/meeting/view?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">View</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="top" style="width:600px; padding:10px 10px 10px 5px;">
|
||||
<div>
|
||||
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0;margin:15px auto;padding:0">
|
||||
</div>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td style="padding:10px 10px 10px 5px;font-size: 14px;">
|
||||
<p style="font-size: 20px; text-align: center;">Invitation to <strong>${object.event_id.name}</strong></p>
|
||||
<p>
|
||||
<strong>Dear ${object.common_name}</strong>,<br />
|
||||
${object.event_id.user_id.partner_id.name} invited you for the ${object.event_id.name} meeting of ${object.event_id.user_id.company_id.name}.</p>
|
||||
<table style="margin-top: 20px;"><tr>
|
||||
<td>
|
||||
<div style="border-top-left-radius:3px;border-top-right-radius:3px;font-size:12px;border-collapse:separate;text-align:center;font-weight:bold;color:#ffffff;width:130px;min-height: 18px;background:#875A7B;padding-top: 4px;border:1px solid #875A7B;">
|
||||
${object.event_id.get_interval('dayname', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style="font-size:48px;min-height:auto;font-weight:bold;text-align:center;color: #5F5F5F;background-color: #F8F8F8;width: 130px;border:1px solid #875A7B;">
|
||||
${object.event_id.get_interval('day', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#875A7B'>${object.event_id.get_interval('month', tz=object.partner_id.tz if not object.event_id.allday else None)}</div>
|
||||
<div style="border-collapse:separate;color: #5F5F5F;text-align:center;width: 130px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid #875A7B;border-bottom-left-radius:3px;">${not object.event_id.allday and object.event_id.get_interval('time', tz=object.partner_id.tz) or ''}</div>
|
||||
</td>
|
||||
<td width="20px;"/>
|
||||
<td>
|
||||
<p>Details of the event</p>
|
||||
<ul>
|
||||
% if object.event_id.location:
|
||||
<li>Location: ${object.event_id.location}
|
||||
(<a target="_blank" href="http://maps.google.com/maps?oi=map&q=${object.event_id.location}">View Map</a>)
|
||||
</li>
|
||||
% endif
|
||||
% if object.event_id.description :
|
||||
<li>Description: ${object.event_id.description}</li>
|
||||
% endif
|
||||
% if not object.event_id.allday and object.event_id.duration
|
||||
<li>Duration: ${('%dH%02d' % (object.event_id.duration,(object.event_id.duration*60)%60))}</li>
|
||||
% endif
|
||||
<li>Attendees
|
||||
<ul>
|
||||
% for attendee in object.event_id.attendee_ids:
|
||||
<li>
|
||||
<div style="display:inline-block; border-radius: 50%; width:10px; height:10px;background:${colors[attendee.state] or 'white'};"></div>
|
||||
% if attendee.common_name != object.common_name:
|
||||
<span style="margin-left:5px">${attendee.common_name}</span>
|
||||
% else:
|
||||
<span style="margin-left:5px">You</span>
|
||||
% endif
|
||||
</li>
|
||||
% endfor
|
||||
</ul></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>]]></field>
|
||||
</record>
|
||||
|
||||
<record id="calendar_template_meeting_changedate" model="mail.template">
|
||||
<field name="name">Calendar: Date updated</field>
|
||||
<field name="email_from">${object.event_id.user_id.email or ''}</field>
|
||||
<field name="subject">${object.event_id.name}: Date updated</field>
|
||||
<field name="model_id" ref="calendar.model_calendar_attendee"/>
|
||||
<field name="email_to" >${('' if object.partner_id and object.partner_id.email and object.partner_id.email==object.email else object.email|safe)}</field>
|
||||
<field name="partner_to">${object.partner_id and object.partner_id.email and object.partner_id.email==object.email and object.partner_id.id or False }</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="body_html"><![CDATA[
|
||||
<div summary="o_mail_template" style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
% set colors = {'needsAction': 'grey', 'accepted': 'green', 'tentative': '#FFFF00', 'declined': 'red'}
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="center" width="200" style="padding:10px 10px 10px 5px;font-size: 12px">
|
||||
<img src="/logo.png" style="padding: 0px; margin: 0px; height: auto; width: 80px;" alt="${user.company_id.name}">
|
||||
</td>
|
||||
<td valign="center" align="right" width="340" style="padding:10px 10px 10px 5px; font-size: 12px;">
|
||||
<p>
|
||||
<a href="/calendar/meeting/accept?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Accept</a>
|
||||
<a href="/calendar/meeting/decline?db=${'dbname' in ctx and ctx['dbname'] or '' }&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Decline</a>
|
||||
<a href="/calendar/meeting/view?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">View</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="top" style="width:600px; padding:10px 10px 10px 5px;">
|
||||
<div>
|
||||
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0;margin:15px auto;padding:0">
|
||||
</div>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td style="padding:10px 10px 10px 5px;font-size: 14px;">
|
||||
<p style="font-size: 20px; text-align: center;"><strong>${object.event_id.name} date updated</strong></p>
|
||||
<p>
|
||||
<strong>Dear ${object.common_name}</strong>,<br />
|
||||
The date of the meeting has been upated. The meeting ${object.event_id.name} created by ${object.event_id.user_id.partner_id.name} is now scheduled for ${object.event_id.get_display_time_tz(tz=object.partner_id.tz)}.
|
||||
</p>
|
||||
<table style="margin-top: 20px;"><tr>
|
||||
<td>
|
||||
<div style="border-top-left-radius:3px;border-top-right-radius:3px;font-size:12px;border-collapse:separate;text-align:center;font-weight:bold;color:#ffffff;width:130px;min-height: 18px;background:#875A7B;padding-top: 4px;">
|
||||
${object.event_id.get_interval('dayname', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style="font-size:48px;min-height:auto;font-weight:bold;text-align:center;color: #5F5F5F;background-color: #F8F8F8;width: 130px;border:1px solid #875A7B;">
|
||||
${object.event_id.get_interval('day', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#875A7B'>${object.event_id.get_interval('month', tz=object.partner_id.tz if not object.event_id.allday else None)}</div>
|
||||
<div style="border-collapse:separate;color: #5F5F5F;text-align:center;width: 130px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid #875A7B;border-bottom-left-radius:3px;">${not object.event_id.allday and object.event_id.get_interval('time', tz=object.partner_id.tz) or ''}</div>
|
||||
</td>
|
||||
<td width="20px;"/>
|
||||
<td>
|
||||
<p>Details of the event</p>
|
||||
<ul>
|
||||
% if object.event_id.location:
|
||||
<li>Location: ${object.event_id.location}
|
||||
(<a target="_blank" href="http://maps.google.com/maps?oi=map&q=${object.event_id.location}">View Map</a>)
|
||||
</li>
|
||||
% endif
|
||||
% if object.event_id.description :
|
||||
<li>Description: ${object.event_id.description}</li>
|
||||
% endif
|
||||
% if not object.event_id.allday and object.event_id.duration
|
||||
<li>Duration: ${('%dH%02d' % (object.event_id.duration,(object.event_id.duration*60)%60))}</li>
|
||||
% endif
|
||||
<li>Attendees
|
||||
<ul>
|
||||
% for attendee in object.event_id.attendee_ids:
|
||||
<li>
|
||||
<div style="display:inline-block; border-radius: 50%; width:10px; height:10px;background:${colors[attendee.state] or 'white'};"></div>
|
||||
% if attendee.common_name != object.common_name:
|
||||
<span style="margin-left:5px">${attendee.common_name}</span>
|
||||
% else:
|
||||
<span style="margin-left:5px">You</span>
|
||||
% endif
|
||||
</li>
|
||||
% endfor
|
||||
</ul></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>]]></field>
|
||||
</record>
|
||||
|
||||
<record id="calendar_template_meeting_reminder" model="mail.template">
|
||||
<field name="name">Calendar: Reminder</field>
|
||||
<field name="email_from">${object.event_id.user_id.email or ''}</field>
|
||||
<field name="subject">${object.event_id.name} - Reminder</field>
|
||||
<field name="model_id" ref="calendar.model_calendar_attendee"/>
|
||||
<field name="email_to" >${('' if object.partner_id and object.partner_id.email and object.partner_id.email==object.email else object.email|safe)}</field>
|
||||
<field name="partner_to">${object.partner_id and object.partner_id.email and object.partner_id.email==object.email and object.partner_id.id or False }</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="body_html"><![CDATA[
|
||||
<div summary="o_mail_template" style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
% set colors = {'needsAction': 'grey', 'accepted': 'green', 'tentative': '#FFFF00', 'declined': 'red'}
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="center" width="200" style="padding:10px 10px 10px 5px;font-size: 12px">
|
||||
<img src="/logo.png" style="padding: 0px; margin: 0px; height: auto; width: 80px;" alt="${user.company_id.name}">
|
||||
</td>
|
||||
<td valign="center" align="right" width="340" style="padding:10px 10px 10px 5px; font-size: 12px;">
|
||||
<p>
|
||||
<a href="/calendar/meeting/accept?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Accept</a>
|
||||
<a href="/calendar/meeting/decline?db=${'dbname' in ctx and ctx['dbname'] or '' }&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Decline</a>
|
||||
<a href="/calendar/meeting/view?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">View</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="top" style="width:600px; padding:10px 10px 10px 5px;">
|
||||
<div>
|
||||
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0;margin:15px auto;padding:0">
|
||||
</div>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td style="padding:10px 10px 10px 5px;font-size: 14px;">
|
||||
<p style="font-size: 20px; text-align: center;">Reminder for <strong>${object.event_id.name}</strong></p>
|
||||
<p>
|
||||
<strong>Dear ${object.common_name}</strong>,<br />
|
||||
This is a reminder for the below event :
|
||||
</p>
|
||||
<table style="margin-top: 20px;"><tr>
|
||||
<td>
|
||||
<div style="border-top-left-radius:3px;border-top-right-radius:3px;font-size:12px;border-collapse:separate;text-align:center;font-weight:bold;color:#ffffff;width:130px;min-height: 18px;background:#875A7B;padding-top: 4px;">
|
||||
${object.event_id.get_interval('dayname', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style="font-size:48px;min-height:auto;font-weight:bold;text-align:center;color: #5F5F5F;background-color: #F8F8F8;width: 130px;border:1px solid #875A7B;">
|
||||
${object.event_id.get_interval('day', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#875A7B'>${object.event_id.get_interval('month', tz=object.partner_id.tz if not object.event_id.allday else None)}</div>
|
||||
<div style="border-collapse:separate;color: #5F5F5F;text-align:center;width: 130px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid #875A7B;border-bottom-left-radius:3px;">${not object.event_id.allday and object.event_id.get_interval('time', tz=object.partner_id.tz) or ''}</div>
|
||||
</td>
|
||||
<td width="20px;"/>
|
||||
<td>
|
||||
<p>Details of the event</p>
|
||||
<ul>
|
||||
% if object.event_id.location:
|
||||
<li>Location: ${object.event_id.location}
|
||||
(<a target="_blank" href="http://maps.google.com/maps?oi=map&q=${object.event_id.location}">View Map</a>)
|
||||
</li>
|
||||
% endif
|
||||
% if object.event_id.description :
|
||||
<li>Description: ${object.event_id.description}</li>
|
||||
% endif
|
||||
% if not object.event_id.allday and object.event_id.duration
|
||||
<li>Duration: ${('%dH%02d' % (object.event_id.duration,(object.event_id.duration*60)%60))}</li>
|
||||
% endif
|
||||
<li>Attendees
|
||||
<ul>
|
||||
% for attendee in object.event_id.attendee_ids:
|
||||
<li>
|
||||
<div style="display:inline-block; border-radius: 50%; width:10px; height:10px;background:${colors[attendee.state] or 'white'};"></div>
|
||||
% if attendee.common_name != object.common_name:
|
||||
<span style="margin-left:5px">${attendee.common_name}</span>
|
||||
% else:
|
||||
<span style="margin-left:5px">You</span>
|
||||
% endif
|
||||
</li>
|
||||
% endfor
|
||||
</ul></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>]]></field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
</odoo>
|
||||
@@ -0,0 +1,279 @@
|
||||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="calendar_template_meeting_invitation" model="mail.template">
|
||||
<field name="name">Calendar: Meeting Invitation</field>
|
||||
<field name="email_from">${object.event_id.user_id.email or ''}</field>
|
||||
<field name="subject">${object.event_id.name} invitation</field>
|
||||
<field name="model_id" ref="calendar.model_calendar_attendee"/>
|
||||
<field name="email_to" >${('' if object.partner_id and object.partner_id.email and object.partner_id.email==object.email else object.email|safe)}</field>
|
||||
<field name="partner_to">${object.partner_id and object.partner_id.email and object.partner_id.email==object.email and object.partner_id.id or False }</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="body_html"><![CDATA[
|
||||
<div summary="o_mail_template" style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
% set colors = {'needsAction': 'grey', 'accepted': 'green', 'tentative': '#FFFF00', 'declined': 'red'}
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="center" width="200" style="padding:10px 10px 10px 5px;font-size: 12px">
|
||||
<img src="/logo.png" style="padding: 0px; margin: 0px; height: auto; width: 80px;" alt="${user.company_id.name}">
|
||||
</td>
|
||||
<td valign="center" align="right" width="340" style="padding:10px 10px 10px 5px; font-size: 12px;">
|
||||
<p>
|
||||
<a href="/calendar/meeting/accept?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Accept</a>
|
||||
<a href="/calendar/meeting/decline?db=${'dbname' in ctx and ctx['dbname'] or '' }&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Decline</a>
|
||||
<a href="/calendar/meeting/view?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">View</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="top" style="width:600px; padding:10px 10px 10px 5px;">
|
||||
<div>
|
||||
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0;margin:15px auto;padding:0">
|
||||
</div>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td style="padding:10px 10px 10px 5px;font-size: 14px;">
|
||||
<p style="font-size: 20px; text-align: center;">Invitation to <strong>${object.event_id.name}</strong></p>
|
||||
<p>
|
||||
<strong>Dear ${object.common_name}</strong>,<br />
|
||||
${object.event_id.user_id.partner_id.name} invited you for the ${object.event_id.name} meeting of ${object.event_id.user_id.company_id.name}.</p>
|
||||
<table style="margin-top: 20px;"><tr>
|
||||
<td>
|
||||
<div style="border-top-left-radius:3px;border-top-right-radius:3px;font-size:12px;border-collapse:separate;text-align:center;font-weight:bold;color:#ffffff;width:130px;min-height: 18px;background:#875A7B;padding-top: 4px;border:1px solid #875A7B;">
|
||||
${object.event_id.get_interval('dayname', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style="font-size:48px;min-height:auto;font-weight:bold;text-align:center;color: #5F5F5F;background-color: #F8F8F8;width: 130px;border:1px solid #875A7B;">
|
||||
${object.event_id.get_interval('day', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#875A7B'>${object.event_id.get_interval('month', tz=object.partner_id.tz if not object.event_id.allday else None)}</div>
|
||||
<div style="border-collapse:separate;color: #5F5F5F;text-align:center;width: 130px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid #875A7B;border-bottom-left-radius:3px;">${not object.event_id.allday and object.event_id.get_interval('time', tz=object.partner_id.tz) or ''}</div>
|
||||
</td>
|
||||
<td width="20px;"/>
|
||||
<td>
|
||||
<p>Details of the event</p>
|
||||
<ul>
|
||||
% if object.event_id.location:
|
||||
<li>Location: ${object.event_id.location}
|
||||
(<a target="_blank" href="http://maps.google.com/maps?oi=map&q=${object.event_id.location}">View Map</a>)
|
||||
</li>
|
||||
% endif
|
||||
% if object.event_id.description :
|
||||
<li>Description: ${object.event_id.description}</li>
|
||||
% endif
|
||||
% if not object.event_id.allday and object.event_id.duration
|
||||
<li>Duration: ${('%dH%02d' % (object.event_id.duration,(object.event_id.duration*60)%60))}</li>
|
||||
% endif
|
||||
<li>Attendees
|
||||
<ul>
|
||||
% for attendee in object.event_id.attendee_ids:
|
||||
<li>
|
||||
<div style="display:inline-block; border-radius: 50%; width:10px; height:10px;background:${colors[attendee.state] or 'white'};"></div>
|
||||
% if attendee.common_name != object.common_name:
|
||||
<span style="margin-left:5px">${attendee.common_name}</span>
|
||||
% else:
|
||||
<span style="margin-left:5px">You</span>
|
||||
% endif
|
||||
</li>
|
||||
% endfor
|
||||
</ul></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>]]></field>
|
||||
</record>
|
||||
|
||||
<record id="calendar_template_meeting_changedate" model="mail.template">
|
||||
<field name="name">Calendar: Date updated</field>
|
||||
<field name="email_from">${object.event_id.user_id.email or ''}</field>
|
||||
<field name="subject">${object.event_id.name}: Date updated</field>
|
||||
<field name="model_id" ref="calendar.model_calendar_attendee"/>
|
||||
<field name="email_to" >${('' if object.partner_id and object.partner_id.email and object.partner_id.email==object.email else object.email|safe)}</field>
|
||||
<field name="partner_to">${object.partner_id and object.partner_id.email and object.partner_id.email==object.email and object.partner_id.id or False }</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="body_html"><![CDATA[
|
||||
<div summary="o_mail_template" style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
% set colors = {'needsAction': 'grey', 'accepted': 'green', 'tentative': '#FFFF00', 'declined': 'red'}
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="center" width="200" style="padding:10px 10px 10px 5px;font-size: 12px">
|
||||
<img src="/logo.png" style="padding: 0px; margin: 0px; height: auto; width: 80px;" alt="${user.company_id.name}">
|
||||
</td>
|
||||
<td valign="center" align="right" width="340" style="padding:10px 10px 10px 5px; font-size: 12px;">
|
||||
<p>
|
||||
<a href="/calendar/meeting/accept?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Accept</a>
|
||||
<a href="/calendar/meeting/decline?db=${'dbname' in ctx and ctx['dbname'] or '' }&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Decline</a>
|
||||
<a href="/calendar/meeting/view?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">View</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="top" style="width:600px; padding:10px 10px 10px 5px;">
|
||||
<div>
|
||||
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0;margin:15px auto;padding:0">
|
||||
</div>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td style="padding:10px 10px 10px 5px;font-size: 14px;">
|
||||
<p style="font-size: 20px; text-align: center;"><strong>${object.event_id.name} date updated</strong></p>
|
||||
<p>
|
||||
<strong>Dear ${object.common_name}</strong>,<br />
|
||||
The date of the meeting has been upated. The meeting ${object.event_id.name} created by ${object.event_id.user_id.partner_id.name} is now scheduled for ${object.event_id.get_display_time_tz(tz=object.partner_id.tz)}.
|
||||
</p>
|
||||
<table style="margin-top: 20px;"><tr>
|
||||
<td>
|
||||
<div style="border-top-left-radius:3px;border-top-right-radius:3px;font-size:12px;border-collapse:separate;text-align:center;font-weight:bold;color:#ffffff;width:130px;min-height: 18px;background:#875A7B;padding-top: 4px;">
|
||||
${object.event_id.get_interval('dayname', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style="font-size:48px;min-height:auto;font-weight:bold;text-align:center;color: #5F5F5F;background-color: #F8F8F8;width: 130px;border:1px solid #875A7B;">
|
||||
${object.event_id.get_interval('day', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#875A7B'>${object.event_id.get_interval('month', tz=object.partner_id.tz if not object.event_id.allday else None)}</div>
|
||||
<div style="border-collapse:separate;color: #5F5F5F;text-align:center;width: 130px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid #875A7B;border-bottom-left-radius:3px;">${not object.event_id.allday and object.event_id.get_interval('time', tz=object.partner_id.tz) or ''}</div>
|
||||
</td>
|
||||
<td width="20px;"/>
|
||||
<td>
|
||||
<p>Details of the event</p>
|
||||
<ul>
|
||||
% if object.event_id.location:
|
||||
<li>Location: ${object.event_id.location}
|
||||
(<a target="_blank" href="http://maps.google.com/maps?oi=map&q=${object.event_id.location}">View Map</a>)
|
||||
</li>
|
||||
% endif
|
||||
% if object.event_id.description :
|
||||
<li>Description: ${object.event_id.description}</li>
|
||||
% endif
|
||||
% if not object.event_id.allday and object.event_id.duration
|
||||
<li>Duration: ${('%dH%02d' % (object.event_id.duration,(object.event_id.duration*60)%60))}</li>
|
||||
% endif
|
||||
<li>Attendees
|
||||
<ul>
|
||||
% for attendee in object.event_id.attendee_ids:
|
||||
<li>
|
||||
<div style="display:inline-block; border-radius: 50%; width:10px; height:10px;background:${colors[attendee.state] or 'white'};"></div>
|
||||
% if attendee.common_name != object.common_name:
|
||||
<span style="margin-left:5px">${attendee.common_name}</span>
|
||||
% else:
|
||||
<span style="margin-left:5px">You</span>
|
||||
% endif
|
||||
</li>
|
||||
% endfor
|
||||
</ul></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>]]></field>
|
||||
</record>
|
||||
|
||||
<record id="calendar_template_meeting_reminder" model="mail.template">
|
||||
<field name="name">Calendar: Reminder</field>
|
||||
<field name="email_from">${object.event_id.user_id.email or ''}</field>
|
||||
<field name="subject">${object.event_id.name} - Reminder</field>
|
||||
<field name="model_id" ref="calendar.model_calendar_attendee"/>
|
||||
<field name="email_to" >${('' if object.partner_id and object.partner_id.email and object.partner_id.email==object.email else object.email|safe)}</field>
|
||||
<field name="partner_to">${object.partner_id and object.partner_id.email and object.partner_id.email==object.email and object.partner_id.id or False }</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="body_html"><![CDATA[
|
||||
<div summary="o_mail_template" style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
% set colors = {'needsAction': 'grey', 'accepted': 'green', 'tentative': '#FFFF00', 'declined': 'red'}
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="center" width="200" style="padding:10px 10px 10px 5px;font-size: 12px">
|
||||
<img src="/logo.png" style="padding: 0px; margin: 0px; height: auto; width: 80px;" alt="${user.company_id.name}">
|
||||
</td>
|
||||
<td valign="center" align="right" width="340" style="padding:10px 10px 10px 5px; font-size: 12px;">
|
||||
<p>
|
||||
<a href="/calendar/meeting/accept?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Accept</a>
|
||||
<a href="/calendar/meeting/decline?db=${'dbname' in ctx and ctx['dbname'] or '' }&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">Decline</a>
|
||||
<a href="/calendar/meeting/view?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}" style="padding: 5px 10px; font-size: 12px; line-height: 18px; color: #FFFFFF; border-color:#875A7B; text-decoration: none; display: inline-block; margin-bottom: 0px; font-weight: 400; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; background-image: none; background-color: #875A7B; border: 1px solid #875A7B; border-radius:3px">View</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td valign="top" style="width:600px; padding:10px 10px 10px 5px;">
|
||||
<div>
|
||||
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0;margin:15px auto;padding:0">
|
||||
</div>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="padding:0px;width:600px;margin:auto;background: #FFFFFF repeat top /100%;color:#777777">
|
||||
<table cellspacing="0" cellpadding="0" style="width:600px;border-collapse:collapse;background:inherit;color:inherit">
|
||||
<tbody><tr>
|
||||
<td style="padding:10px 10px 10px 5px;font-size: 14px;">
|
||||
<p style="font-size: 20px; text-align: center;">Reminder for <strong>${object.event_id.name}</strong></p>
|
||||
<p>
|
||||
<strong>Dear ${object.common_name}</strong>,<br />
|
||||
This is a reminder for the below event :
|
||||
</p>
|
||||
<table style="margin-top: 20px;"><tr>
|
||||
<td>
|
||||
<div style="border-top-left-radius:3px;border-top-right-radius:3px;font-size:12px;border-collapse:separate;text-align:center;font-weight:bold;color:#ffffff;width:130px;min-height: 18px;background:#875A7B;padding-top: 4px;">
|
||||
${object.event_id.get_interval('dayname', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style="font-size:48px;min-height:auto;font-weight:bold;text-align:center;color: #5F5F5F;background-color: #F8F8F8;width: 130px;border:1px solid #875A7B;">
|
||||
${object.event_id.get_interval('day', tz=object.partner_id.tz if not object.event_id.allday else None)}
|
||||
</div>
|
||||
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#875A7B'>${object.event_id.get_interval('month', tz=object.partner_id.tz if not object.event_id.allday else None)}</div>
|
||||
<div style="border-collapse:separate;color: #5F5F5F;text-align:center;width: 130px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid #875A7B;border-bottom-left-radius:3px;">${not object.event_id.allday and object.event_id.get_interval('time', tz=object.partner_id.tz) or ''}</div>
|
||||
</td>
|
||||
<td width="20px;"/>
|
||||
<td>
|
||||
<p>Details of the event</p>
|
||||
<ul>
|
||||
% if object.event_id.location:
|
||||
<li>Location: ${object.event_id.location}
|
||||
(<a target="_blank" href="http://maps.google.com/maps?oi=map&q=${object.event_id.location}">View Map</a>)
|
||||
</li>
|
||||
% endif
|
||||
% if object.event_id.description :
|
||||
<li>Description: ${object.event_id.description}</li>
|
||||
% endif
|
||||
% if not object.event_id.allday and object.event_id.duration
|
||||
<li>Duration: ${('%dH%02d' % (object.event_id.duration,(object.event_id.duration*60)%60))}</li>
|
||||
% endif
|
||||
<li>Attendees
|
||||
<ul>
|
||||
% for attendee in object.event_id.attendee_ids:
|
||||
<li>
|
||||
<div style="display:inline-block; border-radius: 50%; width:10px; height:10px;background:${colors[attendee.state] or 'white'};"></div>
|
||||
% if attendee.common_name != object.common_name:
|
||||
<span style="margin-left:5px">${attendee.common_name}</span>
|
||||
% else:
|
||||
<span style="margin-left:5px">You</span>
|
||||
% endif
|
||||
</li>
|
||||
% endfor
|
||||
</ul></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
</div>]]></field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user