diff options
Diffstat (limited to 'addons/web/static/src')
5 files changed, 44 insertions, 16 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index 9b1e930cef3..c2bd4f5d5b8 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -401,8 +401,8 @@ var FieldMany2One = AbstractField.extend({ initial_ids: ids ? _.map(ids, function (x) { return x[0]; }) : undefined, initial_view: view, disable_multiple_selection: true, - on_selected: function (element_ids) { - self.reinitialize({id: element_ids[0]}); + on_selected: function (records) { + self.reinitialize(records[0]); self.activate(); } })).open(); @@ -1150,15 +1150,16 @@ var FieldMany2Many = FieldX2Many.extend({ title: _t("Add: ") + this.string, no_create: this.nodeOptions.no_create || !this.activeActions.create, fields_view: this.attrs.views.form, - on_selected: function (res_ids) { - var new_ids = _.difference(res_ids, self.value.res_ids); - if (new_ids.length) { - var values = _.map(new_ids, function (id) { + on_selected: function (records) { + var resIDs = _.pluck(records, 'id'); + var newIDs = _.difference(resIDs, self.value.res_ids); + if (newIDs.length) { + var values = _.map(newIDs, function (id) { return {id: id}; }); self._setValue({ operation: 'ADD_M2M', - ids: values + ids: values, }); } } 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)); diff --git a/addons/web/static/src/js/widgets/debug_manager.js b/addons/web/static/src/js/widgets/debug_manager.js index c74ce95ac1b..a57e452de4b 100644 --- a/addons/web/static/src/js/widgets/debug_manager.js +++ b/addons/web/static/src/js/widgets/debug_manager.js @@ -169,11 +169,11 @@ var DebugManager = Widget.extend({ title: _t('Select a view'), disable_multiple_selection: true, domain: [['type', '!=', 'qweb'], ['type', '!=', 'search']], - on_selected: function (element_ids) { + on_selected: function (records) { self._rpc({ model: 'ir.ui.view', method: 'search_read', - domain: [['id', '=', element_ids[0]]], + domain: [['id', '=', records[0].id]], fields: ['name', 'model', 'type'], limit: 1, }) |
