From 5a2bf0cb9d4428915d9ce0bb4514f5d96379ae1a Mon Sep 17 00:00:00 2001 From: David Date: Mon, 8 Jul 2024 16:58:02 +0200 Subject: [PATCH 1/5] [ADD] website_conditional_visibility_user_group: New module TT50008 --- .../README.rst | 94 ++++ .../__init__.py | 1 + .../__manifest__.py | 28 ++ .../i18n/es.po | 43 ++ ...site_conditional_visibility_user_group.pot | 41 ++ .../models/__init__.py | 1 + .../models/ir_http.py | 20 + .../readme/CONFIGURE.md | 9 + .../readme/CONTRIBUTORS.md | 2 + .../readme/DESCRIPTION.md | 2 + .../static/description/index.html | 441 ++++++++++++++++++ .../static/src/js/inject_dom.esm.js | 9 + .../snippet_visibility_portal_tests.esm.js | 28 ++ .../src/tests/snippet_visibility_tests.esm.js | 67 +++ .../tests/__init__.py | 1 + .../test_conditional_visibility_user_group.py | 19 + .../views/snippet_options_template.xml | 48 ++ 17 files changed, 854 insertions(+) create mode 100644 website_conditional_visibility_user_group/README.rst create mode 100644 website_conditional_visibility_user_group/__init__.py create mode 100644 website_conditional_visibility_user_group/__manifest__.py create mode 100644 website_conditional_visibility_user_group/i18n/es.po create mode 100644 website_conditional_visibility_user_group/i18n/website_conditional_visibility_user_group.pot create mode 100644 website_conditional_visibility_user_group/models/__init__.py create mode 100644 website_conditional_visibility_user_group/models/ir_http.py create mode 100644 website_conditional_visibility_user_group/readme/CONFIGURE.md create mode 100644 website_conditional_visibility_user_group/readme/CONTRIBUTORS.md create mode 100644 website_conditional_visibility_user_group/readme/DESCRIPTION.md create mode 100644 website_conditional_visibility_user_group/static/description/index.html create mode 100644 website_conditional_visibility_user_group/static/src/js/inject_dom.esm.js create mode 100644 website_conditional_visibility_user_group/static/src/tests/snippet_visibility_portal_tests.esm.js create mode 100644 website_conditional_visibility_user_group/static/src/tests/snippet_visibility_tests.esm.js create mode 100644 website_conditional_visibility_user_group/tests/__init__.py create mode 100644 website_conditional_visibility_user_group/tests/test_conditional_visibility_user_group.py create mode 100644 website_conditional_visibility_user_group/views/snippet_options_template.xml diff --git a/website_conditional_visibility_user_group/README.rst b/website_conditional_visibility_user_group/README.rst new file mode 100644 index 0000000000..db42063980 --- /dev/null +++ b/website_conditional_visibility_user_group/README.rst @@ -0,0 +1,94 @@ +==================================================== +Conditional visibility for internal users in Website +==================================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:748c0a8174d9f9a0b4aee5b58aeaced2309a29997f74d53c86a129c7b0b021a0 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fwebsite-lightgray.png?logo=github + :target: https://github.com/OCA/website/tree/15.0/website_conditional_visibility_user_group + :alt: OCA/website +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/website-15-0/website-15-0-website_conditional_visibility_user_group + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/website&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds extra granularity in the visibility of the website +snippets allowing to set if the users that can see a block are internal +or portal ones. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To configure the user group visibility: + +- With the frontend editor opened select the block you want to set the + visibility for. +- In *Style* tab of the editor panel set the *Visibility* option to + *Conditional* and unfold it. +- Set the *Users* option to *Visible for logged in*. +- Now you'll see the new *Groups* option. +- You can choose between *Only internal users*, *Only portal users* or + *No restriction*, which is the default value. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Tecnativa + +Contributors +------------ + +- `Tecnativa `__ + + - David Vidal + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/website `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/website_conditional_visibility_user_group/__init__.py b/website_conditional_visibility_user_group/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/website_conditional_visibility_user_group/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/website_conditional_visibility_user_group/__manifest__.py b/website_conditional_visibility_user_group/__manifest__.py new file mode 100644 index 0000000000..d7fe90cb76 --- /dev/null +++ b/website_conditional_visibility_user_group/__manifest__.py @@ -0,0 +1,28 @@ +# Copyright 2024 Tecnativa - David Vidal +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Conditional visibility for internal users in Website", + "summary": "Only internal users will see the blocks you add this condition to", + "version": "15.0.1.0.0", + "category": "Product", + "website": "https://github.com/OCA/website", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["website"], + "data": ["views/snippet_options_template.xml"], + "assets": { + "web.assets_frontend_minimal": [ + "website_conditional_visibility_user_group/static/src/js/*.js", + ], + "web.assets_frontend_lazy": [ + # Remove assets_frontend_minimal + ( + "remove", + "website_conditional_visibility_user_group/static/src/js/*.js", + ), + ], + "web.assets_tests": [ + "website_conditional_visibility_user_group/static/src/tests/*.js" + ], + }, +} diff --git a/website_conditional_visibility_user_group/i18n/es.po b/website_conditional_visibility_user_group/i18n/es.po new file mode 100644 index 0000000000..b0c0c3eeeb --- /dev/null +++ b/website_conditional_visibility_user_group/i18n/es.po @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_conditional_visibility_user_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-07-12 05:20+0000\n" +"PO-Revision-Date: 2024-07-12 07:21+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.4.4\n" + +#. module: website_conditional_visibility_user_group +#: model:ir.model,name:website_conditional_visibility_user_group.model_ir_http +msgid "HTTP Routing" +msgstr "Ruta HTTP" + +#. module: website_conditional_visibility_user_group +#: model_terms:ir.ui.view,arch_db:website_conditional_visibility_user_group.snippet_options +msgid "No restriction" +msgstr "Sin restricciones" + +#. module: website_conditional_visibility_user_group +#: model_terms:ir.ui.view,arch_db:website_conditional_visibility_user_group.snippet_options +msgid "Only internal users" +msgstr "Solo usuarios internos" + +#. module: website_conditional_visibility_user_group +#: model_terms:ir.ui.view,arch_db:website_conditional_visibility_user_group.snippet_options +msgid "Only portal users" +msgstr "Solo usuarios de portal" + +#. module: website_conditional_visibility_user_group +#: model_terms:ir.ui.view,arch_db:website_conditional_visibility_user_group.snippet_options +msgid "⌙ Groups" +msgstr "⌙ Grupos" diff --git a/website_conditional_visibility_user_group/i18n/website_conditional_visibility_user_group.pot b/website_conditional_visibility_user_group/i18n/website_conditional_visibility_user_group.pot new file mode 100644 index 0000000000..eb2f3ac984 --- /dev/null +++ b/website_conditional_visibility_user_group/i18n/website_conditional_visibility_user_group.pot @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_conditional_visibility_user_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-07-12 05:19+0000\n" +"PO-Revision-Date: 2024-07-12 05:19+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: website_conditional_visibility_user_group +#: model:ir.model,name:website_conditional_visibility_user_group.model_ir_http +msgid "HTTP Routing" +msgstr "" + +#. module: website_conditional_visibility_user_group +#: model_terms:ir.ui.view,arch_db:website_conditional_visibility_user_group.snippet_options +msgid "No restriction" +msgstr "" + +#. module: website_conditional_visibility_user_group +#: model_terms:ir.ui.view,arch_db:website_conditional_visibility_user_group.snippet_options +msgid "Only internal users" +msgstr "" + +#. module: website_conditional_visibility_user_group +#: model_terms:ir.ui.view,arch_db:website_conditional_visibility_user_group.snippet_options +msgid "Only portal users" +msgstr "" + +#. module: website_conditional_visibility_user_group +#: model_terms:ir.ui.view,arch_db:website_conditional_visibility_user_group.snippet_options +msgid "⌙ Groups" +msgstr "" diff --git a/website_conditional_visibility_user_group/models/__init__.py b/website_conditional_visibility_user_group/models/__init__.py new file mode 100644 index 0000000000..9a5eb71871 --- /dev/null +++ b/website_conditional_visibility_user_group/models/__init__.py @@ -0,0 +1 @@ +from . import ir_http diff --git a/website_conditional_visibility_user_group/models/ir_http.py b/website_conditional_visibility_user_group/models/ir_http.py new file mode 100644 index 0000000000..5bbd10afbc --- /dev/null +++ b/website_conditional_visibility_user_group/models/ir_http.py @@ -0,0 +1,20 @@ +# Copyright 2024 Tecnativa - David Vidal +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import api, models +from odoo.http import request + + +class IrHttp(models.AbstractModel): + _inherit = "ir.http" + + @api.model + def get_frontend_session_info(self): + # Used for the visibility of the website snippets + session_info = super().get_frontend_session_info() + if request.env.user.has_group("base.group_user"): + session_info["user_group"] = "internal" + elif request.env.user.has_group("base.group_portal"): + session_info["user_group"] = "portal" + else: + session_info["user_group"] = "public" + return session_info diff --git a/website_conditional_visibility_user_group/readme/CONFIGURE.md b/website_conditional_visibility_user_group/readme/CONFIGURE.md new file mode 100644 index 0000000000..b518af04f9 --- /dev/null +++ b/website_conditional_visibility_user_group/readme/CONFIGURE.md @@ -0,0 +1,9 @@ +To configure the user group visibility: + +- With the frontend editor opened select the block you want to set the visibility for. +- In *Style* tab of the editor panel set the *Visibility* option to *Conditional* and + unfold it. +- Set the *Users* option to *Visible for logged in*. +- Now you'll see the new *Groups* option. +- You can choose between *Only internal users*, *Only portal users* or *No restriction*, + which is the default value. diff --git a/website_conditional_visibility_user_group/readme/CONTRIBUTORS.md b/website_conditional_visibility_user_group/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..96d0c4c7ff --- /dev/null +++ b/website_conditional_visibility_user_group/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- [Tecnativa](https://tecnativa.com) + - David Vidal diff --git a/website_conditional_visibility_user_group/readme/DESCRIPTION.md b/website_conditional_visibility_user_group/readme/DESCRIPTION.md new file mode 100644 index 0000000000..d97bd2b265 --- /dev/null +++ b/website_conditional_visibility_user_group/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module adds extra granularity in the visibility of the website snippets allowing +to set if the users that can see a block are internal or portal ones. diff --git a/website_conditional_visibility_user_group/static/description/index.html b/website_conditional_visibility_user_group/static/description/index.html new file mode 100644 index 0000000000..b8faeddd20 --- /dev/null +++ b/website_conditional_visibility_user_group/static/description/index.html @@ -0,0 +1,441 @@ + + + + + + +Conditional visibility for internal users in Website + + + +
+

Conditional visibility for internal users in Website

+ + +

Beta License: AGPL-3 OCA/website Translate me on Weblate Try me on Runboat

+

This module adds extra granularity in the visibility of the website +snippets allowing to set if the users that can see a block are internal +or portal ones.

+

Table of contents

+ +
+

Configuration

+

To configure the user group visibility:

+
    +
  • With the frontend editor opened select the block you want to set the +visibility for.
  • +
  • In Style tab of the editor panel set the Visibility option to +Conditional and unfold it.
  • +
  • Set the Users option to Visible for logged in.
  • +
  • Now you’ll see the new Groups option.
  • +
  • You can choose between Only internal users, Only portal users or +No restriction, which is the default value.
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/website project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/website_conditional_visibility_user_group/static/src/js/inject_dom.esm.js b/website_conditional_visibility_user_group/static/src/js/inject_dom.esm.js new file mode 100644 index 0000000000..0190631516 --- /dev/null +++ b/website_conditional_visibility_user_group/static/src/js/inject_dom.esm.js @@ -0,0 +1,9 @@ +/** @odoo-module */ +/* Copyright 2024 Tecnativa - David Vidal + * License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */ +import {session} from "@web/session"; + +document.addEventListener("DOMContentLoaded", () => { + const htmlEl = document.documentElement; + htmlEl.dataset.user_group = session.user_group; +}); diff --git a/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_portal_tests.esm.js b/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_portal_tests.esm.js new file mode 100644 index 0000000000..867ea65984 --- /dev/null +++ b/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_portal_tests.esm.js @@ -0,0 +1,28 @@ +/** @odoo-module */ +/* Copyright 2024 Tecnativa - David Vidal + * License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */ +import tour from "web_tour.tour"; + +tour.register( + "conditional_visibility_portal", + { + test: true, + url: "/", + }, + [ + { + content: "The content should be hidden for portal users", + trigger: "#wrap", + run: function () { + const style = window.getComputedStyle( + this.$anchor[0].getElementsByClassName("s_text_image")[0] + ); + if (style.display !== "none") { + console.error( + "Error: This item should be invisible for portal users" + ); + } + }, + }, + ] +); diff --git a/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_tests.esm.js b/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_tests.esm.js new file mode 100644 index 0000000000..a192b485bd --- /dev/null +++ b/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_tests.esm.js @@ -0,0 +1,67 @@ +/** @odoo-module */ +/* Copyright 2024 Tecnativa - David Vidal + * License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */ +import tour from "web_tour.tour"; +import wTourUtils from "website.tour_utils"; + +const snippet = { + id: "s_text_image", + name: "Text - Image", +}; + +tour.register( + "conditional_visibility_only_internal_user", + { + test: true, + url: "/", + }, + [ + { + content: "enter edit mode", + trigger: "a[data-action=edit]", + }, + wTourUtils.dragNDrop(snippet), + wTourUtils.clickOnSnippet(snippet), + wTourUtils.changeOption("ConditionalVisibility", "we-toggler"), + { + content: "Set on conditional visibility", + trigger: '[data-name="visibility_conditional"]', + run: "click", + }, + { + content: "Click in User visibility", + trigger: '[data-save-attribute="visibilityValueLogged"]', + run: "click", + }, + { + content: "Set visibility to logged in users", + trigger: '[data-name="visibility_logged_in"]', + run: "click", + }, + { + content: "Click in group visibility", + trigger: '[data-save-attribute="visibilityUserGroup"]', + run: "click", + }, + { + content: "Set visibility to logged internal users only", + trigger: '[data-name="user_group_internal"]', + run: "click", + }, + ...wTourUtils.clickOnSave(), + { + content: "Check if the rule was applied", + trigger: "body:not(.editor_enable) #wrap", + run: function () { + const style = window.getComputedStyle( + this.$anchor[0].getElementsByClassName("s_text_image")[0] + ); + if (style.display === "none") { + console.error( + "Error: this item should be visible for internal users" + ); + } + }, + }, + ] +); diff --git a/website_conditional_visibility_user_group/tests/__init__.py b/website_conditional_visibility_user_group/tests/__init__.py new file mode 100644 index 0000000000..d1c4bc70cb --- /dev/null +++ b/website_conditional_visibility_user_group/tests/__init__.py @@ -0,0 +1 @@ +from . import test_conditional_visibility_user_group diff --git a/website_conditional_visibility_user_group/tests/test_conditional_visibility_user_group.py b/website_conditional_visibility_user_group/tests/test_conditional_visibility_user_group.py new file mode 100644 index 0000000000..d21c0546d3 --- /dev/null +++ b/website_conditional_visibility_user_group/tests/test_conditional_visibility_user_group.py @@ -0,0 +1,19 @@ +# Copyright 2024 Tecnativa - David Vidal +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo.tests import HttpCase, new_test_user, tagged + + +@tagged("-at_install", "post_install") +class TestConditionalVisibilityUserGroup(HttpCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + new_test_user(cls.env, login="portal_user", groups="base.group_portal") + + def test_snippet_for_internal_users(self): + """Only internal users can see the snippet""" + # We drag a new block, set its visibility to internal users and check that + # we can see it as internal users + self.start_tour("/", "conditional_visibility_only_internal_user", login="admin") + # The block is hidden for portal users + self.start_tour("/", "conditional_visibility_portal", login="portal_user") diff --git a/website_conditional_visibility_user_group/views/snippet_options_template.xml b/website_conditional_visibility_user_group/views/snippet_options_template.xml new file mode 100644 index 0000000000..9b387a8265 --- /dev/null +++ b/website_conditional_visibility_user_group/views/snippet_options_template.xml @@ -0,0 +1,48 @@ + + + + + From 43b867dceaa87012ea52dc5f03a7377668598b15 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 12 Jul 2024 07:46:18 +0000 Subject: [PATCH 2/5] [UPD] Update website_conditional_visibility_user_group.pot --- .../i18n/website_conditional_visibility_user_group.pot | 2 -- 1 file changed, 2 deletions(-) diff --git a/website_conditional_visibility_user_group/i18n/website_conditional_visibility_user_group.pot b/website_conditional_visibility_user_group/i18n/website_conditional_visibility_user_group.pot index eb2f3ac984..0cadf36a81 100644 --- a/website_conditional_visibility_user_group/i18n/website_conditional_visibility_user_group.pot +++ b/website_conditional_visibility_user_group/i18n/website_conditional_visibility_user_group.pot @@ -6,8 +6,6 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-12 05:19+0000\n" -"PO-Revision-Date: 2024-07-12 05:19+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" From 0f14f18368bcea2b9b170213f0d9aedbe330efef Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 12 Jul 2024 07:49:30 +0000 Subject: [PATCH 3/5] [BOT] post-merge updates --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website_conditional_visibility_user_group/static/description/icon.png diff --git a/website_conditional_visibility_user_group/static/description/icon.png b/website_conditional_visibility_user_group/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From c376697d205a51c3ebf2830763c98713a6a3fa92 Mon Sep 17 00:00:00 2001 From: pilarvargas-tecnativa Date: Fri, 10 Jan 2025 14:10:48 +0100 Subject: [PATCH 4/5] [IMP] website_conditional_visibility_user_group: pre-commit auto fixes --- website_conditional_visibility_user_group/pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 website_conditional_visibility_user_group/pyproject.toml diff --git a/website_conditional_visibility_user_group/pyproject.toml b/website_conditional_visibility_user_group/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/website_conditional_visibility_user_group/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" From e70867acc03e13c6b9dbf6fd90d6b23df8a828ac Mon Sep 17 00:00:00 2001 From: pilarvargas-tecnativa Date: Mon, 13 Jan 2025 11:19:54 +0100 Subject: [PATCH 5/5] [MIG] website_conditional_visibility_user_group: Migration to version 17.0 TT51963 --- .../README.rst | 11 +++--- .../__manifest__.py | 2 +- .../readme/CONTRIBUTORS.md | 1 + .../static/description/index.html | 19 +++++---- .../snippet_visibility_portal_tests.esm.js | 28 ++++++++----- .../src/tests/snippet_visibility_tests.esm.js | 39 +++++++------------ 6 files changed, 52 insertions(+), 48 deletions(-) diff --git a/website_conditional_visibility_user_group/README.rst b/website_conditional_visibility_user_group/README.rst index db42063980..6cc9577a98 100644 --- a/website_conditional_visibility_user_group/README.rst +++ b/website_conditional_visibility_user_group/README.rst @@ -17,13 +17,13 @@ Conditional visibility for internal users in Website :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fwebsite-lightgray.png?logo=github - :target: https://github.com/OCA/website/tree/15.0/website_conditional_visibility_user_group + :target: https://github.com/OCA/website/tree/17.0/website_conditional_visibility_user_group :alt: OCA/website .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/website-15-0/website-15-0-website_conditional_visibility_user_group + :target: https://translation.odoo-community.org/projects/website-17-0/website-17-0-website_conditional_visibility_user_group :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/website&target_branch=15.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/website&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -57,7 +57,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -75,6 +75,7 @@ Contributors - `Tecnativa `__ - David Vidal + - Pilar Vargas Maintainers ----------- @@ -89,6 +90,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/website `_ project on GitHub. +This module is part of the `OCA/website `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/website_conditional_visibility_user_group/__manifest__.py b/website_conditional_visibility_user_group/__manifest__.py index d7fe90cb76..0917acf526 100644 --- a/website_conditional_visibility_user_group/__manifest__.py +++ b/website_conditional_visibility_user_group/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Conditional visibility for internal users in Website", "summary": "Only internal users will see the blocks you add this condition to", - "version": "15.0.1.0.0", + "version": "17.0.1.0.0", "category": "Product", "website": "https://github.com/OCA/website", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/website_conditional_visibility_user_group/readme/CONTRIBUTORS.md b/website_conditional_visibility_user_group/readme/CONTRIBUTORS.md index 96d0c4c7ff..d0b6436b45 100644 --- a/website_conditional_visibility_user_group/readme/CONTRIBUTORS.md +++ b/website_conditional_visibility_user_group/readme/CONTRIBUTORS.md @@ -1,2 +1,3 @@ - [Tecnativa](https://tecnativa.com) - David Vidal + - Pilar Vargas diff --git a/website_conditional_visibility_user_group/static/description/index.html b/website_conditional_visibility_user_group/static/description/index.html index b8faeddd20..38ddce875b 100644 --- a/website_conditional_visibility_user_group/static/description/index.html +++ b/website_conditional_visibility_user_group/static/description/index.html @@ -1,4 +1,3 @@ - @@ -9,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -369,7 +369,7 @@

Conditional visibility for internal users in Website

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:748c0a8174d9f9a0b4aee5b58aeaced2309a29997f74d53c86a129c7b0b021a0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/website Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/website Translate me on Weblate Try me on Runboat

This module adds extra granularity in the visibility of the website snippets allowing to set if the users that can see a block are internal or portal ones.

@@ -405,7 +405,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -421,6 +421,7 @@

Contributors

@@ -428,11 +429,13 @@

Contributors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/website project on GitHub.

+

This module is part of the OCA/website project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_portal_tests.esm.js b/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_portal_tests.esm.js index 867ea65984..08b3102ef0 100644 --- a/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_portal_tests.esm.js +++ b/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_portal_tests.esm.js @@ -1,26 +1,34 @@ /** @odoo-module */ /* Copyright 2024 Tecnativa - David Vidal * License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */ -import tour from "web_tour.tour"; -tour.register( +import wTourUtils from "@website/js/tours/tour_utils"; + +wTourUtils.registerWebsitePreviewTour( "conditional_visibility_portal", { test: true, url: "/", }, - [ + () => [ + { + content: "Go to '/'", + trigger: 'header#top a[href="/"]', + }, { content: "The content should be hidden for portal users", trigger: "#wrap", run: function () { - const style = window.getComputedStyle( - this.$anchor[0].getElementsByClassName("s_text_image")[0] - ); - if (style.display !== "none") { - console.error( - "Error: This item should be invisible for portal users" - ); + const elements = this.$anchor[0].getElementsByClassName("s_text_image"); + if (elements.length === 0) { + console.log("Success: Element is not visible for portal users"); + } else { + const style = window.getComputedStyle(elements[0]); + if (style.display !== "none") { + console.error( + "Error: This item should be invisible for portal users" + ); + } } }, }, diff --git a/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_tests.esm.js b/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_tests.esm.js index a192b485bd..ed29d54b4d 100644 --- a/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_tests.esm.js +++ b/website_conditional_visibility_user_group/static/src/tests/snippet_visibility_tests.esm.js @@ -1,33 +1,26 @@ /** @odoo-module */ /* Copyright 2024 Tecnativa - David Vidal * License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). */ -import tour from "web_tour.tour"; -import wTourUtils from "website.tour_utils"; +import wTourUtils from "@website/js/tours/tour_utils"; -const snippet = { - id: "s_text_image", - name: "Text - Image", -}; - -tour.register( +wTourUtils.registerWebsitePreviewTour( "conditional_visibility_only_internal_user", { test: true, url: "/", + edition: true, }, - [ - { - content: "enter edit mode", - trigger: "a[data-action=edit]", - }, - wTourUtils.dragNDrop(snippet), - wTourUtils.clickOnSnippet(snippet), + () => [ + wTourUtils.dragNDrop({id: "s_text_image", name: "Text - Image"}), + wTourUtils.clickOnSnippet({ + id: "s_text_image", + name: "Text - Image", + }), wTourUtils.changeOption("ConditionalVisibility", "we-toggler"), - { - content: "Set on conditional visibility", - trigger: '[data-name="visibility_conditional"]', - run: "click", - }, + wTourUtils.changeOption( + "ConditionalVisibility", + '[data-name="visibility_conditional"]' + ), { content: "Click in User visibility", trigger: '[data-save-attribute="visibilityValueLogged"]', @@ -51,11 +44,9 @@ tour.register( ...wTourUtils.clickOnSave(), { content: "Check if the rule was applied", - trigger: "body:not(.editor_enable) #wrap", + trigger: "iframe #wrap .s_text_image", run: function () { - const style = window.getComputedStyle( - this.$anchor[0].getElementsByClassName("s_text_image")[0] - ); + const style = window.getComputedStyle(this.$anchor[0]); if (style.display === "none") { console.error( "Error: this item should be visible for internal users"