diff options
Diffstat (limited to 'addons/web/static/src/js/views')
| -rw-r--r-- | addons/web/static/src/js/views/calendar/calendar_model.js | 4 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/list/list_controller.js | 13 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/view_dialogs.js | 24 |
3 files changed, 34 insertions, 7 deletions
diff --git a/addons/web/static/src/js/views/calendar/calendar_model.js b/addons/web/static/src/js/views/calendar/calendar_model.js index eb6d7176884..4374421d7b3 100644 --- a/addons/web/static/src/js/views/calendar/calendar_model.js +++ b/addons/web/static/src/js/views/calendar/calendar_model.js @@ -2,6 +2,7 @@ odoo.define('web.CalendarModel', function (require) { "use strict"; var AbstractModel = require('web.AbstractModel'); +var Context = require('web.Context'); var core = require('web.core'); var fieldUtils = require('web.field_utils'); var session = require('web.session'); @@ -298,11 +299,12 @@ return AbstractModel.extend({ data[k] = dateToServer(data[k]); } } + var context = new Context(this.data.context, {from_ui: true}); return this._rpc({ model: this.modelName, method: 'write', args: [[record.id], data], - context: this.data.context + context: context }); }, diff --git a/addons/web/static/src/js/views/list/list_controller.js b/addons/web/static/src/js/views/list/list_controller.js index 2465b1ee3c5..7222d792c69 100644 --- a/addons/web/static/src/js/views/list/list_controller.js +++ b/addons/web/static/src/js/views/list/list_controller.js @@ -87,9 +87,20 @@ var ListController = BasicController.extend({ * @returns {number[]} list of res_ids */ getSelectedIds: function () { + return _.map(this.getSelectedRecords(), function (record) { + return record.res_id; + }); + }, + /** + * Returns the list of currently selected records (with the check boxes on + * the left) + * + * @returns {Object[]} list of records + */ + getSelectedRecords: function () { var self = this; return _.map(this.selectedRecords, function (db_id) { - return self.model.get(db_id, {raw: true}).res_id; + return self.model.get(db_id, {raw: true}); }); }, /** diff --git a/addons/web/static/src/js/views/view_dialogs.js b/addons/web/static/src/js/views/view_dialogs.js index 876c37fbd59..645540b7a57 100644 --- a/addons/web/static/src/js/views/view_dialogs.js +++ b/addons/web/static/src/js/views/view_dialogs.js @@ -238,8 +238,11 @@ var SelectCreateListController = ListController.extend({ // row of the list) such that it triggers up 'select_record' with its res_id. custom_events: _.extend({}, ListController.prototype.custom_events, { open_record: function (event) { - var selected_record = this.model.get(event.data.id); - this.trigger_up('select_record', {id: selected_record.res_id}); + var selectedRecord = this.model.get(event.data.id); + this.trigger_up('select_record', { + id: selectedRecord.res_id, + display_name: selectedRecord.data.display_name, + }); }, }), }); @@ -251,7 +254,7 @@ var SelectCreateDialog = ViewDialog.extend({ custom_events: _.extend({}, ViewDialog.prototype.custom_events, { select_record: function (event) { if (!this.options.readonly) { - this.on_selected([event.data.id]); + this.on_selected([event.data]); this.close(); } }, @@ -369,7 +372,14 @@ var SelectCreateDialog = ViewDialog.extend({ disabled: true, close: true, click: function () { - self.on_selected(self.list_controller.getSelectedIds()); + var records = self.list_controller.getSelectedRecords(); + var values = _.map(records, function (record) { + return { + id: record.res_id, + display_name: record.data.display_name, + }; + }); + self.on_selected(values); }, }); } @@ -399,7 +409,11 @@ var SelectCreateDialog = ViewDialog.extend({ var self = this; var dialog = new FormViewDialog(this, _.extend({}, this.options, { on_saved: function (record) { - self.on_selected([record.res_id]); + var values = [{ + id: record.res_id, + display_name: record.data.display_name, + }]; + self.on_selected(values); }, })).open(); dialog.on('closed', this, this.close.bind(this)); |
