diff options
| author | Hiral Bhavsar <hbh@odoo.com> | 2018-02-21 18:50:38 +0530 |
|---|---|---|
| committer | Martin Geubelle <mge@odoo.com> | 2018-04-25 09:50:44 +0200 |
| commit | 5c651a09e12b4657bfe64e37e353c0a86f40a0ce (patch) | |
| tree | df9bfb43b9273966d4a77fc21614a77de0ac02d9 /addons/web/static/src/js | |
| parent | b192431aeecc59b48898ce9c6f276b82d65cbfa6 (diff) | |
[IMP] web: Kanban: allow to archive/restore column records
This feature has been removed in rev. odoo/odoo@e533085 but this commit
reintroduces it. It was considered as "too dangerous" for new users.
Instead of removing the feature, a confirmation request has been added to warn
the user about his potentially harmful action.
The same warning has also been added in List view when archiving records.
Task 60393
Co-authored-by: Mohammed Shekha <msh@openerp.com>
Diffstat (limited to 'addons/web/static/src/js')
3 files changed, 53 insertions, 1 deletions
diff --git a/addons/web/static/src/js/views/kanban/kanban_column.js b/addons/web/static/src/js/views/kanban/kanban_column.js index e66601816c2..5dfcbce01c8 100644 --- a/addons/web/static/src/js/views/kanban/kanban_column.js +++ b/addons/web/static/src/js/views/kanban/kanban_column.js @@ -27,6 +27,8 @@ var KanbanColumn = Widget.extend({ 'click .o_kanban_quick_add': '_onAddQuickCreate', 'click .o_kanban_load_more': '_onLoadMore', 'click .o_kanban_toggle_fold': '_onToggleFold', + 'click .o_column_archive_records': '_onArchiveRecords', + 'click .o_column_unarchive_records': '_onUnarchiveRecords' }, /** * @override @@ -355,6 +357,28 @@ var KanbanColumn = Widget.extend({ ev.data.callback(record.$el, record.state.data); }); }, + /** + * @private + * @param {MouseEvent} event + */ + _onArchiveRecords: function (event) { + event.preventDefault(); + Dialog.confirm(this, _t("Are you sure that you want to archive all the records from this column?"), { + confirm_callback: this.trigger_up.bind(this, 'kanban_column_records_toggle_active', { + archive: true, + }), + }); + }, + /** + * @private + * @param {MouseEvent} event + */ + _onUnarchiveRecords: function (event) { + event.preventDefault(); + this.trigger_up('kanban_column_records_toggle_active', { + archive: false, + }); + } }); return KanbanColumn; diff --git a/addons/web/static/src/js/views/kanban/kanban_controller.js b/addons/web/static/src/js/views/kanban/kanban_controller.js index 986fff3a53e..86f1cb72589 100644 --- a/addons/web/static/src/js/views/kanban/kanban_controller.js +++ b/addons/web/static/src/js/views/kanban/kanban_controller.js @@ -30,6 +30,7 @@ var KanbanController = BasicController.extend({ kanban_load_more: '_onLoadMore', kanban_load_records: '_onLoadColumnRecords', column_toggle_fold: '_onToggleColumn', + kanban_column_records_toggle_active: '_onToggleActiveRecords', }), /** * @override @@ -443,6 +444,27 @@ var KanbanController = BasicController.extend({ ev.data.force_save = true; this._applyChanges(ev.target.db_id, changes, ev); }, + /** + * Allow the user to archive/restore all the records of a column. + * + * @private + * @param {OdooEvent} event + */ + _onToggleActiveRecords: function (event) { + var self = this; + var active = !event.data.archive; + var column = event.target; + var recordIds = _.pluck(column.records, 'db_id'); + if (recordIds.length) { + this.model + .toggleActive(recordIds, active, column.db_id) + .then(function (dbID) { + var data = self.model.get(dbID); + self.renderer.updateColumn(dbID, data); + self._updateEnv(); + }); + } + }, }); return KanbanController; 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 b42da9665ad..ae1a8f7305b 100644 --- a/addons/web/static/src/js/views/list/list_controller.js +++ b/addons/web/static/src/js/views/list/list_controller.js @@ -10,6 +10,7 @@ odoo.define('web.ListController', function (require) { var core = require('web.core'); var BasicController = require('web.BasicController'); var DataExport = require('web.DataExport'); +var Dialog = require('web.Dialog'); var pyeval = require('web.pyeval'); var Sidebar = require('web.Sidebar'); @@ -136,6 +137,7 @@ var ListController = BasicController.extend({ * @param {jQuery Node} $node */ renderSidebar: function ($node) { + var self = this; if (this.hasSidebar) { var other = [{ label: _t("Export"), @@ -144,7 +146,11 @@ var ListController = BasicController.extend({ if (this.archiveEnabled) { other.push({ label: _t("Archive"), - callback: this._onToggleArchiveState.bind(this, true) + callback: function () { + Dialog.confirm(self, _t("Are you sure that you want to archive all the selected records?"), { + confirm_callback: self._onToggleArchiveState.bind(self, true), + }); + } }); other.push({ label: _t("Unarchive"), |
