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 | |
| 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')
| -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 | ||||
| -rw-r--r-- | addons/base_import/static/src/xml/base_import.xml | 23 |
3 files changed, 71 insertions, 138 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; +}); diff --git a/addons/base_import/static/src/xml/base_import.xml b/addons/base_import/static/src/xml/base_import.xml index d0dd6657a79..827f95a337a 100644 --- a/addons/base_import/static/src/xml/base_import.xml +++ b/addons/base_import/static/src/xml/base_import.xml @@ -1,4 +1,12 @@ <templates> + <t t-name="base_import.ImportMenu" owl="1"> + <li class="o_menu_item o_import_menu" role="menuitem"> + <button type="button" class="dropdown-item" t-on-click="_onImportClick"> + Import Records + </button> + </li> + </t> + <t t-name="ImportView"> <t t-set="_id" t-value="_.uniqueId('export')"/> <form action="" method="post" enctype="multipart/form-data" class="oe_import"> @@ -217,19 +225,4 @@ <t t-if="error.rows" t-esc="at(error.rows)"/> <t t-if="error.moreinfo" t-raw="info(error.moreinfo)"/> </t> - <t t-name="ImportView.import_button"> - <button t-if='widget and widget.importEnabled' type="button" class="btn btn-secondary o_button_import"> - Import - </button> - </t> - <t t-extend="ListView.buttons"> - <t t-jquery="button.o_list_button_add" t-operation="after"> - <t t-call="ImportView.import_button"/> - </t> - </t> - <t t-extend="KanbanView.buttons"> - <t t-jquery="button" t-operation="after"> - <t t-call="ImportView.import_button"/> - </t> - </t> </templates> |
