From ccbab348781f80e661953cc2fcad4512764850ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Mottet=20=28oms=29?= Date: Wed, 5 May 2021 11:32:50 +0000 Subject: [PATCH] [FIX] website: handle disabled and preselected modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - The selection of cards corresponding to already installed modules is disabled. A disabled style has been applied to these cards and an info icon added. On hover on this icon the user is informed that the module is already installed on its DB. - Modules that were preselected based on website type can now be unselected by the user. - Correct typo in description of feature_module_career. task-2518565 closes odoo/odoo#72688 X-original-commit: ab364b06dbb20cce90c7caa8ca15d034e2dcb25e Signed-off-by: Jérémy Kersten (jke) Signed-off-by: Sébastien Mottet --- addons/website/__manifest__.py | 2 +- addons/website/data/website_data.xml | 2 +- addons/website/i18n/website.pot | 9 ++++++++- addons/website/models/website.py | 11 ++++++++++- .../src/components/configurator/configurator.js | 9 ++++----- .../src/components/configurator/configurator.xml | 14 ++++++++++---- addons/website/static/src/scss/configurator.scss | 5 +++++ 7 files changed, 39 insertions(+), 13 deletions(-) diff --git a/addons/website/__manifest__.py b/addons/website/__manifest__.py index a709f2ac51c..ee278e6daf6 100644 --- a/addons/website/__manifest__.py +++ b/addons/website/__manifest__.py @@ -5,7 +5,7 @@ 'name': 'Website', 'category': 'Website/Website', 'sequence': 20, - 'summary': 'Enterprise website builder', + 'summary': 'Website builder', 'website': 'https://www.odoo.com/page/website-builder', 'version': '1.0', 'description': "", diff --git a/addons/website/data/website_data.xml b/addons/website/data/website_data.xml index 737f7d26557..843fc2702a6 100644 --- a/addons/website/data/website_data.xml +++ b/addons/website/data/website_data.xml @@ -308,7 +308,7 @@ Career - Publish jobs offer and let people apply + Publish job offers and let people apply 8 fa-address-card diff --git a/addons/website/i18n/website.pot b/addons/website/i18n/website.pot index 9a95ece68d3..d98f3b866b2 100644 --- a/addons/website/i18n/website.pot +++ b/addons/website/i18n/website.pot @@ -1354,6 +1354,13 @@ msgstr "" msgid "Allow to specify for one page of the website to be trackable or not" msgstr "" +#. module: website +#. openerp-web +#: code:addons/website/static/src/components/configurator/configurator.xml:0 +#, python-format +msgid "Already installed" +msgstr "" + #. module: website #: model_terms:ir.ui.view,arch_db:website.s_faq_collapse msgid "" @@ -5899,7 +5906,7 @@ msgstr "" #. module: website #: model:website.configurator.feature,description:website.feature_module_career -msgid "Publish jobs offer and let people apply" +msgid "Publish job offers and let people apply" msgstr "" #. module: website diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 4430a37f30d..1a948b398cc 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -291,7 +291,16 @@ class Website(models.Model): def configurator_init(self): r = dict() company_id = self.get_current_website().company_id - r['features'] = self.env['website.configurator.feature'].search_read([], ['name', 'description', 'type', 'icon', 'website_types_preselection']) + configurator_features = self.env['website.configurator.feature'].search([]) + r['features'] = [{ + 'id': feature.id, + 'name': feature.name, + 'description': feature.description, + 'type': feature.type, + 'icon': feature.icon, + 'website_types_preselection': feature.website_types_preselection, + 'module_state': feature.module_id.state, + } for feature in configurator_features] r['logo'] = False if company_id.logo and company_id.logo != company_id._get_logo(): r['logo'] = company_id.logo.decode('utf-8') diff --git a/addons/website/static/src/components/configurator/configurator.js b/addons/website/static/src/components/configurator/configurator.js index 85b2fc49db9..79bed367c81 100644 --- a/addons/website/static/src/components/configurator/configurator.js +++ b/addons/website/static/src/components/configurator/configurator.js @@ -348,7 +348,7 @@ const getters = { const actions = { selectWebsiteType({state}, id) { - Object.values(state.features).forEach((feature) => { + Object.values(state.features).filter((feature) => feature.module_state !== 'installed').forEach((feature) => { feature.selected = feature.website_types_preselection.includes(WEBSITE_TYPES[id].name); }); state.selectedType = id; @@ -371,9 +371,8 @@ const actions = { }, toggleFeature({state}, featureId) { const feature = state.features[featureId]; - const websiteType = WEBSITE_TYPES[state.selectedType]; - const forceFeatureActive = websiteType && feature.website_types_preselection.includes(websiteType.name); - feature.selected = !feature.selected || forceFeatureActive; + const isModuleInstalled = feature.module_state === 'installed'; + feature.selected = !feature.selected || isModuleInstalled; }, setRecommendedPalette({state}, color1, color2) { if (color1 && color2) { @@ -409,7 +408,7 @@ async function getInitialState() { logo: results.logo ? 'data:image/png;base64,' + results.logo : false, }; results.features.forEach(feature => { - r.features[feature.id] = Object.assign({}, feature, {selected: false}); + r.features[feature.id] = Object.assign({}, feature, {selected: feature.module_state === 'installed'}); const wtp = r.features[feature.id].website_types_preselection; r.features[feature.id].website_types_preselection = wtp ? wtp.split(',') : []; }); diff --git a/addons/website/static/src/components/configurator/configurator.xml b/addons/website/static/src/components/configurator/configurator.xml index 2890139538b..2c4257e7ec4 100644 --- a/addons/website/static/src/components/configurator/configurator.xml +++ b/addons/website/static/src/components/configurator/configurator.xml @@ -165,12 +165,18 @@
+
-
+
- -
- + + + + + + +
+

diff --git a/addons/website/static/src/scss/configurator.scss b/addons/website/static/src/scss/configurator.scss index 2a2e89257c7..b3f6ddff7c8 100644 --- a/addons/website/static/src/scss/configurator.scss +++ b/addons/website/static/src/scss/configurator.scss @@ -229,6 +229,11 @@ &.o_feature_selection_screen { .card { cursor: pointer; + + &.card_installed { + cursor: default; + opacity: 0.75; + } } .o_configurator_feature_status { @include o-position-absolute($card-spacer-y * 0.5 , $card-spacer-x * 0.5);