diff --git a/addons/mail/static/src/js/views/activity/activity_controller.js b/addons/mail/static/src/js/views/activity/activity_controller.js index 1fb5f928c50..ede639a80fd 100644 --- a/addons/mail/static/src/js/views/activity/activity_controller.js +++ b/addons/mail/static/src/js/views/activity/activity_controller.js @@ -2,11 +2,18 @@ odoo.define('mail.ActivityController', function (require) { "use strict"; var BasicController = require('web.BasicController'); +var core = require('web.core'); +var field_registry = require('web.field_registry'); +var ViewDialogs = require('web.view_dialogs'); + +var KanbanActivity = field_registry.get('kanban_activity'); +var _t = core._t; var ActivityController = BasicController.extend({ custom_events: _.extend({}, BasicController.prototype.custom_events, { empty_cell_clicked: '_onEmptyCell', send_mail_template: '_onSendMailTemplate', + schedule_activity: '_onScheduleActivity', }), //-------------------------------------------------------------------------- @@ -26,6 +33,25 @@ var ActivityController = BasicController.extend({ // Handlers //-------------------------------------------------------------------------- + /** + * @private + */ + _onScheduleActivity: function () { + var self = this; + + var state = this.model.get(this.handle); + new ViewDialogs.SelectCreateDialog(this, { + res_model: state.model, + domain: this.model.originalDomain, + title: _.str.sprintf(_t("Search: %s"), this.renderer.arch.attrs.string), + disable_multiple_selection: true, + on_selected: function (record) { + var fakeRecord = self.renderer.getKanbanActivityData({}, record[0]); + var widget = new KanbanActivity(self, 'activity_ids', fakeRecord, {}); + widget.scheduleActivity(); + }, + }).open(); + }, /** * @private * @param {OdooEvent} ev diff --git a/addons/mail/static/src/js/views/activity/activity_model.js b/addons/mail/static/src/js/views/activity/activity_model.js index f464cf6a92f..3a511c0ae57 100644 --- a/addons/mail/static/src/js/views/activity/activity_model.js +++ b/addons/mail/static/src/js/views/activity/activity_model.js @@ -31,6 +31,7 @@ var ActivityModel = BasicModel.extend({ * @param {Array[]} params.domain */ load: function (params) { + this.originalDomain = _.extend([], params.domain); params.domain.push(['activity_ids', '!=', false]); this.domain = params.domain; this.modelName = params.modelName; @@ -46,6 +47,7 @@ var ActivityModel = BasicModel.extend({ */ reload: function (handle, params) { if (params && 'domain' in params) { + this.originalDomain = _.extend([], params.domain); params.domain.push(['activity_ids', '!=', false]); this.domain = params.domain; } diff --git a/addons/mail/static/src/js/views/activity/activity_renderer.js b/addons/mail/static/src/js/views/activity/activity_renderer.js index 435a00d44c2..04c7d00530f 100644 --- a/addons/mail/static/src/js/views/activity/activity_renderer.js +++ b/addons/mail/static/src/js/views/activity/activity_renderer.js @@ -18,6 +18,7 @@ var ActivityRenderer = AbstractRenderer.extend({ events: { 'click .o_send_mail_template': '_onSenMailTemplateClicked', 'click .o_activity_empty_cell': '_onEmptyCell', + 'click .o_record_selector': '_onRecordSelector', }, /** @@ -32,16 +33,15 @@ var ActivityRenderer = AbstractRenderer.extend({ }, //-------------------------------------------------------------------------- - // Private + // Public //-------------------------------------------------------------------------- /** - * @private * @param {Object} activityGroup * @param {integer} resID * @returns {Object} */ - _getKanbanActivityData: function (activityGroup, resID) { + getKanbanActivityData: function (activityGroup, resID) { return { data: { activity_ids: { @@ -70,6 +70,11 @@ var ActivityRenderer = AbstractRenderer.extend({ //todo intercept event or changes on record to update view }; }, + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + /** * @override * @private @@ -82,22 +87,13 @@ var ActivityRenderer = AbstractRenderer.extend({ * @private */ _render: function () { - this.$el - .removeClass('table-responsive') - .empty(); - - if (this.state.activity_types.length === 0) { - this.$el.append(QWeb.render('ActivityView.nodata')); - } else { - var $table = $('
| + Schedule activity + | +