From 03fabb0c4aefa57ee3a584f45b0af1d64ae01f48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Fri, 31 Mar 2017 15:27:08 +0200 Subject: [PATCH] [REF] base_import: split import button code out of action --- .../js/{base_import.js => import_action.js} | 107 ---------------- .../static/src/js/import_buttons.js | 120 ++++++++++++++++++ ...mport_tests.js => import_buttons_tests.js} | 0 .../views/base_import_templates.xml | 5 +- 4 files changed, 123 insertions(+), 109 deletions(-) rename addons/base_import/static/src/js/{base_import.js => import_action.js} (88%) create mode 100644 addons/base_import/static/src/js/import_buttons.js rename addons/base_import/static/tests/{base_import_tests.js => import_buttons_tests.js} (100%) diff --git a/addons/base_import/static/src/js/base_import.js b/addons/base_import/static/src/js/import_action.js similarity index 88% rename from addons/base_import/static/src/js/base_import.js rename to addons/base_import/static/src/js/import_action.js index 7292d898ad5..9c35620c486 100644 --- a/addons/base_import/static/src/js/base_import.js +++ b/addons/base_import/static/src/js/import_action.js @@ -3,10 +3,6 @@ odoo.define('base_import.import', function (require) { var ControlPanelMixin = require('web.ControlPanelMixin'); var core = require('web.core'); -var KanbanController = require('web.KanbanController'); -var KanbanView = require('web.KanbanView'); -var ListController = require('web.ListController'); -var ListView = require('web.ListView'); var session = require('web.session'); var time = require('web.time'); var Widget = require('web.Widget'); @@ -48,109 +44,6 @@ function jsonp(form, attributes, callback) { $(form).ajaxSubmit(attributes); } -// Mixins that enable the 'Import' feature -var ImportViewMixin = { - 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 = { - 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); - } -}); - var DataImport = Widget.extend(ControlPanelMixin, { template: 'ImportView', opts: [ 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); + } +}); + +}); diff --git a/addons/base_import/static/tests/base_import_tests.js b/addons/base_import/static/tests/import_buttons_tests.js similarity index 100% rename from addons/base_import/static/tests/base_import_tests.js rename to addons/base_import/static/tests/import_buttons_tests.js diff --git a/addons/base_import/views/base_import_templates.xml b/addons/base_import/views/base_import_templates.xml index 6ff4d9bff8e..941ca9850d9 100644 --- a/addons/base_import/views/base_import_templates.xml +++ b/addons/base_import/views/base_import_templates.xml @@ -5,14 +5,15 @@ - + +