diff options
Diffstat (limited to 'addons/base_import/static/src/js/import_buttons.js')
| -rw-r--r-- | addons/base_import/static/src/js/import_buttons.js | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/addons/base_import/static/src/js/import_buttons.js b/addons/base_import/static/src/js/import_buttons.js new file mode 100644 index 00000000000..77d5d0e876e --- /dev/null +++ b/addons/base_import/static/src/js/import_buttons.js @@ -0,0 +1,120 @@ +odoo.define('base_import.import_buttons', function (require) { +"use strict"; + +var KanbanController = require('web.KanbanController'); +var KanbanView = require('web.KanbanView'); +var ListController = require('web.ListController'); +var ListView = require('web.ListView'); + + +// Mixins that enable the 'Import' feature +var ImportViewMixin = { + /** + * @override + */ + init: function (viewInfo, params) { + var importEnabled = 'import_enabled' in params ? params.import_enabled : true; + // if true, the 'Import' button will be visible + this.controllerParams.importEnabled = importEnabled; + }, +}; + +var ImportControllerMixin = { + /** + * @override + */ + init: function (parent, model, renderer, params) { + this.importEnabled = params.importEnabled; + }, + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * Adds an event listener on the import button. + * + * @private + */ + _bindImport: function () { + if (!this.$buttons) { + return; + } + var self = this; + this.$buttons.on('click', '.o_button_import', function () { + var state = self.model.get(self.handle, {raw: true}); + self.do_action({ + type: 'ir.actions.client', + tag: 'import', + params: { + model: self.modelName, + context: state.getContext(), + } + }, { + on_reverse_breadcrumb: self.reload.bind(self), + }); + }); + } +}; + +// Activate 'Import' feature on List views +ListView.include({ + init: function () { + this._super.apply(this, arguments); + ImportViewMixin.init.apply(this, arguments); + }, +}); + +ListController.include({ + init: function () { + this._super.apply(this, arguments); + ImportControllerMixin.init.apply(this, arguments); + }, + + //-------------------------------------------------------------------------- + // Public + //-------------------------------------------------------------------------- + + /** + * Extends the renderButtons function of ListView by adding an event listener + * on the import button. + * + * @override + */ + renderButtons: function () { + this._super.apply(this, arguments); // Sets this.$buttons + ImportControllerMixin._bindImport.call(this); + } +}); + +// Activate 'Import' feature on Kanban views +KanbanView.include({ + init: function () { + this._super.apply(this, arguments); + ImportViewMixin.init.apply(this, arguments); + }, +}); + +KanbanController.include({ + init: function () { + this._super.apply(this, arguments); + ImportControllerMixin.init.apply(this, arguments); + }, + + //-------------------------------------------------------------------------- + // Public + //-------------------------------------------------------------------------- + + /** + * Extends the renderButtons function of ListView by adding an event listener + * on the import button. + * + * @override + */ + renderButtons: function () { + this._super.apply(this, arguments); // Sets this.$buttons + ImportControllerMixin._bindImport.call(this); + } +}); + +}); |
