diff --git a/addons/calendar/views/mail_activity_views.xml b/addons/calendar/views/mail_activity_views.xml index 9df0180fead..9075e09d233 100644 --- a/addons/calendar/views/mail_activity_views.xml +++ b/addons/calendar/views/mail_activity_views.xml @@ -27,7 +27,7 @@ {'invisible': [('activity_category', '=', 'meeting')]} - {'invisible': [('activity_category', '=', 'meeting')]} + {'invisible': ['|', ('activity_category', '=', 'meeting'), ('force_next', '=', True)]} {'invisible': [('activity_category', '=', 'meeting')]} diff --git a/addons/contacts/models/res_users.py b/addons/contacts/models/res_users.py index 3a42daaa007..65062bcb6e7 100644 --- a/addons/contacts/models/res_users.py +++ b/addons/contacts/models/res_users.py @@ -18,7 +18,7 @@ class Users(models.Model): continue activity['icon'] = modules.module.get_module_icon('contacts') activity['actions'] = [{ - 'icon': 'fa-clock-o', + 'icon': 'fa-th', 'name': 'Summary', 'action_xmlid': 'contacts.action_contacts_summary' }] diff --git a/addons/mail/models/mail_activity.py b/addons/mail/models/mail_activity.py index 78b4b005f77..bdf9546e72b 100644 --- a/addons/mail/models/mail_activity.py +++ b/addons/mail/models/mail_activity.py @@ -58,6 +58,7 @@ class MailActivityType(models.Model): ' and not available when managing activities for other models.') default_next_type_id = fields.Many2one('mail.activity.type', 'Default Next Activity', domain="['|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id)]") + force_next = fields.Boolean("Auto-launched next activity", default=False) next_type_ids = fields.Many2many( 'mail.activity.type', 'mail_activity_rel', 'activity_id', 'recommended_id', domain="['|', ('res_model_id', '=', False), ('res_model_id', '=', res_model_id)]", @@ -151,6 +152,7 @@ class MailActivity(models.Model): compute='_compute_has_recommended_activities', help='Technical field for UX purpose') mail_template_ids = fields.Many2many(related='activity_type_id.mail_template_ids') + force_next = fields.Boolean(related='activity_type_id.force_next') @api.multi @api.onchange('previous_activity_type_id') @@ -371,24 +373,33 @@ class MailActivity(models.Model): @api.multi def action_feedback_schedule_next(self, feedback=False): - wizard_ctx = dict( - self.env.context, - default_previous_activity_type_id=self.activity_type_id.id, - activity_previous_deadline=self.date_deadline, - default_res_id=self.res_id, - default_res_model=self.res_model, - ) - self.action_feedback(feedback) - return { - 'name': _('Schedule an Activity'), - 'context': wizard_ctx, - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'mail.activity', - 'views': [(False, 'form')], - 'type': 'ir.actions.act_window', - 'target': 'new', - } + ctx = dict( + self.env.context, + default_previous_activity_type_id=self.activity_type_id.id, + activity_previous_deadline=self.date_deadline, + default_res_id=self.res_id, + default_res_model=self.res_model, + ) + force_next = self.force_next + self.action_feedback(feedback) # will unlink activity, dont access self after that + if force_next: + Activity = self.env['mail.activity'].with_context(ctx) + res = Activity.new(Activity.default_get(Activity.fields_get())) + res._onchange_previous_activity_type_id() + res._onchange_activity_type_id() + Activity.create(res._convert_to_write(res._cache)) + return False + else: + return { + 'name': _('Schedule an Activity'), + 'context': ctx, + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'mail.activity', + 'views': [(False, 'form')], + 'type': 'ir.actions.act_window', + 'target': 'new', + } @api.multi def action_close_dialog(self): diff --git a/addons/mail/static/src/js/activity.js b/addons/mail/static/src/js/activity.js index ff1cf8b5761..cabcd469b5c 100644 --- a/addons/mail/static/src/js/activity.js +++ b/addons/mail/static/src/js/activity.js @@ -169,11 +169,15 @@ var BasicActivity = AbstractField.extend({ context: this.record.getContext(), }).then( function (rslt_action) { - self.do_action(rslt_action, { - on_close: function () { - self.trigger_up('reload'); - }, - }); + if (rslt_action) { + self.do_action(rslt_action, { + on_close: function () { + self.trigger_up('reload'); + }, + }); + } else { + self.trigger_up('reload'); + } } ); }, @@ -270,6 +274,7 @@ var BasicActivity = AbstractField.extend({ var $popoverElement = $(ev.currentTarget); var activityID = $popoverElement.data('activity-id'); var previousActivityTypeID = $popoverElement.data('previous-activity-type-id'); + var forceNextActivity = $popoverElement.data('force-next-activity'); if (!$popoverElement.data('bs.popover')) { $popoverElement.popover({ template: $(Popover.Default.template).addClass('o_mail_activity_feedback')[0].outerHTML, // Ugly but cannot find another way @@ -279,7 +284,7 @@ var BasicActivity = AbstractField.extend({ trigger:'click', placement: 'right', // FIXME: this should work, maybe a bug in the popper lib content : function () { - var $popover = $(QWeb.render('mail.activity_feedback_form', { previous_activity_type_id: previousActivityTypeID })); + var $popover = $(QWeb.render('mail.activity_feedback_form', { previous_activity_type_id: previousActivityTypeID, force_next: forceNextActivity})); $popover.find('#activity_feedback').val(self._draftFeedback[activityID]); $popover.on('click', '.o_activity_popover_done', function (ev) { ev.stopPropagation(); diff --git a/addons/mail/static/src/js/views/activity/activity_view.js b/addons/mail/static/src/js/views/activity/activity_view.js index e96248d41ed..084d40a15ac 100644 --- a/addons/mail/static/src/js/views/activity/activity_view.js +++ b/addons/mail/static/src/js/views/activity/activity_view.js @@ -13,7 +13,7 @@ var _lt = core._lt; var ActivityView = AbstractView.extend({ accesskey: "a", display_name: _lt('Activity'), - icon: 'fa-clock-o', + icon: 'fa-th', config: _.extend({}, AbstractView.prototype.config, { Controller: ActivityController, Model: ActivityModel, diff --git a/addons/mail/static/src/scss/mail_activity.scss b/addons/mail/static/src/scss/mail_activity.scss index d7970492949..cdd8bbe1cb5 100644 --- a/addons/mail/static/src/scss/mail_activity.scss +++ b/addons/mail/static/src/scss/mail_activity.scss @@ -200,7 +200,7 @@ background-color: $o-brand-lightsecondary; } - &.o_edit_activity { + &.o_log_activity { padding: 8px 10px 8px 0px; vertical-align: middle; &:hover { diff --git a/addons/mail/static/src/xml/activity.xml b/addons/mail/static/src/xml/activity.xml index 2ddcea9121f..cb7f8a5ae28 100644 --- a/addons/mail/static/src/xml/activity.xml +++ b/addons/mail/static/src/xml/activity.xml @@ -75,9 +75,10 @@
- - Mark Done - + + + Mark Done + Edit @@ -94,12 +95,18 @@