diff options
| author | pka-odoo <pka@odoo.com> | 2020-05-04 09:09:23 +0000 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2020-05-04 14:31:11 +0000 |
| commit | 470fa48686f5ac430f0f7eb0853cf2c81dca62c0 (patch) | |
| tree | 66a041b2002aec7ad45bceb64ce33d3cebfd2048 /addons/base_import/static/src/js | |
| parent | 93c01a231a80a3a0795af33b4776bf679299c4b2 (diff) | |
[IMP] base_import,*: move Import button to Favorite menu
*account,crm_iap_lead,hr_expense
Part of task 2234547
Co-authored-by: Mohammed Shekha <msh@odoo.com>
Co-authored-by: Aaron Bohy <aab@odoo.com>
Diffstat (limited to 'addons/base_import/static/src/js')
| -rw-r--r-- | addons/base_import/static/src/js/import_buttons.js | 123 | ||||
| -rw-r--r-- | addons/base_import/static/src/js/import_menu.js | 63 |
2 files changed, 63 insertions, 123 deletions
diff --git a/addons/base_import/static/src/js/import_buttons.js b/addons/base_import/static/src/js/import_buttons.js deleted file mode 100644 index 89baedc8113..00000000000 --- a/addons/base_import/static/src/js/import_buttons.js +++ /dev/null @@ -1,123 +0,0 @@ -odoo.define('base_import.import_buttons', function (require) { -"use strict"; - -var config = require('web.config'); -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 - * @param {Object} params - * @param {boolean} [params.import_enabled=true] set to false to disable - * the Import feature (no 'Import' button in the control panel). Can also - * be disabled with 'import' attrs set to '0' in the arch. - */ - init: function (viewInfo, params) { - var importEnabled = !!JSON.parse(this.arch.attrs.import || '1') && - ('import_enabled' in params ? params.import_enabled : true); - this.controllerParams.importEnabled = importEnabled && !config.device.isMobile; - }, -}; - -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(), - } - }); - }); - } -}; - -// 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/src/js/import_menu.js b/addons/base_import/static/src/js/import_menu.js new file mode 100644 index 00000000000..a5c5c5e1293 --- /dev/null +++ b/addons/base_import/static/src/js/import_menu.js @@ -0,0 +1,63 @@ +odoo.define('base_import.ImportMenu', function (require) { + "use strict"; + + const DropdownMenuItem = require('web.DropdownMenuItem'); + const FavoriteMenu = require('web.FavoriteMenu'); + const { useModel } = require('web.model'); + + /** + * Import Records menu + * + * This component is used to import the records for particular model. + * + * @extends DropdownMenuItem + */ + class ImportMenu extends DropdownMenuItem { + constructor() { + super(...arguments); + this.model = useModel('controlPanelModel'); + } + + //--------------------------------------------------------------------- + // Handlers + //--------------------------------------------------------------------- + + /** + * @private + */ + _onImportClick() { + const action = { + type: 'ir.actions.client', + tag: 'import', + params: { + model: this.model.modelName, + context: this.model.actionContext, + } + }; + this.trigger('do-action', {action: action}); + } + + //--------------------------------------------------------------------- + // Static + //--------------------------------------------------------------------- + + /** + * @param {Object} env + * @returns {boolean} + */ + static shouldBeDisplayed(env) { + return env.view && + ['kanban', 'list'].includes(env.view.type) && + !env.device.isMobile && + !!JSON.parse(env.view.arch.attrs.import || '1') && + !!JSON.parse(env.view.arch.attrs.create || '1'); + } + } + + ImportMenu.props = {}; + ImportMenu.template = 'base_import.ImportMenu'; + + FavoriteMenu.registry.add('import-menu', ImportMenu, 1); + + return ImportMenu; +}); |
