From c30155c13c4d6c67804e21aeec9463a5060b53bb Mon Sep 17 00:00:00 2001 From: jem-odoo Date: Thu, 21 Jun 2018 14:05:36 +0200 Subject: [PATCH] [IMP] mail: allow to decorate background of activity notes In some case, we want to have a different style for activities that require attention for users. Sometimes activities should attract the user attention with actions to perform that are important. This commit introduces a decoration option on the activity type. By default no decoration is done. However decoration type can be set to warning or error. This triggers the related bootstrap alert classes. This commit is related to task ID #1860833. Closes #25479. --- addons/mail/models/mail_activity.py | 6 ++++++ addons/mail/static/src/js/activity.js | 6 +++++- addons/mail/static/src/scss/mail_activity.scss | 4 ++++ addons/mail/static/src/xml/activity.xml | 2 +- addons/mail/views/mail_activity_views.xml | 1 + 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/addons/mail/models/mail_activity.py b/addons/mail/models/mail_activity.py index 47b724aac98..02507b46928 100644 --- a/addons/mail/models/mail_activity.py +++ b/addons/mail/models/mail_activity.py @@ -6,6 +6,7 @@ import pytz from odoo import api, exceptions, fields, models, _ from odoo.osv import expression +from odoo.tools import pycompat class MailActivityType(models.Model): @@ -34,6 +35,10 @@ class MailActivityType(models.Model): 'Planned in', default=0, help='Number of days before executing the action. It allows to plan the action deadline.') icon = fields.Char('Icon', help="Font awesome icon e.g. fa-tasks") + decoration_type = fields.Selection([ + ('warning', 'Alert'), + ('danger', 'Error')], string="Decoration Type", + help="Change the background color of the related activities of this type.") res_model_id = fields.Many2one( 'ir.model', 'Model', index=True, domain=['&', ('is_mail_thread', '=', True), ('transient', '=', False)], @@ -85,6 +90,7 @@ class MailActivity(models.Model): 'mail.activity.type', 'Activity', domain="['|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id)]", ondelete='restrict') activity_category = fields.Selection(related='activity_type_id.category') + activity_decoration = fields.Selection(related='activity_type_id.decoration_type') icon = fields.Char('Icon', related='activity_type_id.icon') summary = fields.Char('Summary') note = fields.Html('Note') diff --git a/addons/mail/static/src/js/activity.js b/addons/mail/static/src/js/activity.js index 828e29e195d..9c86104603f 100644 --- a/addons/mail/static/src/js/activity.js +++ b/addons/mail/static/src/js/activity.js @@ -201,8 +201,12 @@ var Activity = AbstractActivityField.extend({ */ _render: function () { _.each(this._activities, function (activity) { - if (activity.note) { + var note = mailUtils.parseAndTransform(activity.note || '', mailUtils.inline); + var is_blank = (/^\s*$/).test(note); + if (!is_blank) { activity.note = mailUtils.parseAndTransform(activity.note, mailUtils.addLink); + } else { + activity.note = ''; } }); var activities = setDelayLabel(this._activities); diff --git a/addons/mail/static/src/scss/mail_activity.scss b/addons/mail/static/src/scss/mail_activity.scss index f835275e873..d4d9a3ffecb 100644 --- a/addons/mail/static/src/scss/mail_activity.scss +++ b/addons/mail/static/src/scss/mail_activity.scss @@ -89,6 +89,10 @@ .o_thread_message_note { margin: 2px 0 5px; + padding: 0px; + } + .o_thread_message_warning { + margin: 2px 0 5px; } .o_thread_message_tools { diff --git a/addons/mail/static/src/xml/activity.xml b/addons/mail/static/src/xml/activity.xml index 5ed86b37614..1e9892b4d1e 100644 --- a/addons/mail/static/src/xml/activity.xml +++ b/addons/mail/static/src/xml/activity.xml @@ -51,7 +51,7 @@ -
+
diff --git a/addons/mail/views/mail_activity_views.xml b/addons/mail/views/mail_activity_views.xml index 56908319829..343de996f81 100644 --- a/addons/mail/views/mail_activity_views.xml +++ b/addons/mail/views/mail_activity_views.xml @@ -21,6 +21,7 @@ +