From c1663fc4ac6b4f2b1b054fd466f1c4328e9ff7c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 4 Jun 2025 15:18:48 -0300 Subject: [PATCH 1/9] =?UTF-8?q?Adiciona=20volto.navtitle=20aos=20tipos=20d?= =?UTF-8?q?e=20conte=C3=BAdo=20padr=C3=A3o=20(Fixes=20#7)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/news/+versions.feature | 1 + backend/news/7.feature | 1 + .../core/profiles/base/metadata.xml | 2 +- .../profiles/dependencies/repositorytool.xml | 29 +++++++++ .../dependencies/types/Collection.xml | 11 ++++ .../profiles/dependencies/types/Document.xml | 28 +++++++++ .../profiles/dependencies/types/Event.xml | 33 ++++++++++ .../core/profiles/dependencies/types/File.xml | 20 ++++++ .../profiles/dependencies/types/Folder.xml | 11 ++++ .../profiles/dependencies/types/Image.xml | 19 ++++++ .../core/profiles/dependencies/types/Link.xml | 23 +++++++ .../profiles/dependencies/types/News_Item.xml | 24 ++++++++ .../dependencies/types/Plone_Site.xml | 24 ++++++++ .../portalbrasil/core/upgrades/configure.zcml | 1 + .../core/upgrades/v1002/__init__.py | 0 .../core/upgrades/v1002/configure.zcml | 23 +++++++ backend/tests/conftest.py | 2 +- backend/tests/content_types/conftest.py | 6 ++ .../tests/content_types/test_available_ct.py | 6 +- .../tests/content_types/test_ct_collection.py | 26 ++++++++ .../tests/content_types/test_ct_document.py | 55 +++++++++++++++++ backend/tests/content_types/test_ct_event.py | 61 +++++++++++++++++++ backend/tests/content_types/test_ct_file.py | 46 ++++++++++++++ backend/tests/content_types/test_ct_folder.py | 26 ++++++++ backend/tests/content_types/test_ct_image.py | 45 ++++++++++++++ backend/tests/content_types/test_ct_link.py | 49 +++++++++++++++ .../tests/content_types/test_ct_news_item.py | 53 ++++++++++++++++ .../tests/content_types/test_plone_site.py | 7 +-- backend/tests/setup/test_setup_install.py | 4 +- backend/tests/setup/test_upgrades.py | 42 +++++++++++++ 30 files changed, 665 insertions(+), 13 deletions(-) create mode 100644 backend/news/+versions.feature create mode 100644 backend/news/7.feature create mode 100644 backend/src/portalbrasil/core/profiles/dependencies/repositorytool.xml create mode 100644 backend/src/portalbrasil/core/profiles/dependencies/types/Collection.xml create mode 100644 backend/src/portalbrasil/core/profiles/dependencies/types/Document.xml create mode 100644 backend/src/portalbrasil/core/profiles/dependencies/types/Event.xml create mode 100644 backend/src/portalbrasil/core/profiles/dependencies/types/File.xml create mode 100644 backend/src/portalbrasil/core/profiles/dependencies/types/Folder.xml create mode 100644 backend/src/portalbrasil/core/profiles/dependencies/types/Image.xml create mode 100644 backend/src/portalbrasil/core/profiles/dependencies/types/Link.xml create mode 100644 backend/src/portalbrasil/core/profiles/dependencies/types/News_Item.xml create mode 100644 backend/src/portalbrasil/core/profiles/dependencies/types/Plone_Site.xml create mode 100644 backend/src/portalbrasil/core/upgrades/v1002/__init__.py create mode 100644 backend/src/portalbrasil/core/upgrades/v1002/configure.zcml create mode 100644 backend/tests/content_types/conftest.py create mode 100644 backend/tests/content_types/test_ct_collection.py create mode 100644 backend/tests/content_types/test_ct_document.py create mode 100644 backend/tests/content_types/test_ct_event.py create mode 100644 backend/tests/content_types/test_ct_file.py create mode 100644 backend/tests/content_types/test_ct_folder.py create mode 100644 backend/tests/content_types/test_ct_image.py create mode 100644 backend/tests/content_types/test_ct_link.py create mode 100644 backend/tests/content_types/test_ct_news_item.py create mode 100644 backend/tests/setup/test_upgrades.py diff --git a/backend/news/+versions.feature b/backend/news/+versions.feature new file mode 100644 index 0000000..12171f6 --- /dev/null +++ b/backend/news/+versions.feature @@ -0,0 +1 @@ +Adiciona suporte ao versionamento de tipos de conteúdos. @ericof diff --git a/backend/news/7.feature b/backend/news/7.feature new file mode 100644 index 0000000..b2feeb3 --- /dev/null +++ b/backend/news/7.feature @@ -0,0 +1 @@ +Adiciona o comportamento de título de navegação a todos os tipos de conteúdo. @ericof diff --git a/backend/src/portalbrasil/core/profiles/base/metadata.xml b/backend/src/portalbrasil/core/profiles/base/metadata.xml index 9820946..6ba7cc4 100644 --- a/backend/src/portalbrasil/core/profiles/base/metadata.xml +++ b/backend/src/portalbrasil/core/profiles/base/metadata.xml @@ -1,4 +1,4 @@ - 1001 + 1002 diff --git a/backend/src/portalbrasil/core/profiles/dependencies/repositorytool.xml b/backend/src/portalbrasil/core/profiles/dependencies/repositorytool.xml new file mode 100644 index 0000000..cdcb736 --- /dev/null +++ b/backend/src/portalbrasil/core/profiles/dependencies/repositorytool.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/src/portalbrasil/core/profiles/dependencies/types/Collection.xml b/backend/src/portalbrasil/core/profiles/dependencies/types/Collection.xml new file mode 100644 index 0000000..49392c0 --- /dev/null +++ b/backend/src/portalbrasil/core/profiles/dependencies/types/Collection.xml @@ -0,0 +1,11 @@ + + + + + False + + diff --git a/backend/src/portalbrasil/core/profiles/dependencies/types/Document.xml b/backend/src/portalbrasil/core/profiles/dependencies/types/Document.xml new file mode 100644 index 0000000..d822384 --- /dev/null +++ b/backend/src/portalbrasil/core/profiles/dependencies/types/Document.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/src/portalbrasil/core/profiles/dependencies/types/Event.xml b/backend/src/portalbrasil/core/profiles/dependencies/types/Event.xml new file mode 100644 index 0000000..7639d41 --- /dev/null +++ b/backend/src/portalbrasil/core/profiles/dependencies/types/Event.xml @@ -0,0 +1,33 @@ + + + False + plone.volto.content.FolderishEvent + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/src/portalbrasil/core/profiles/dependencies/types/File.xml b/backend/src/portalbrasil/core/profiles/dependencies/types/File.xml new file mode 100644 index 0000000..06bf26f --- /dev/null +++ b/backend/src/portalbrasil/core/profiles/dependencies/types/File.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + diff --git a/backend/src/portalbrasil/core/profiles/dependencies/types/Folder.xml b/backend/src/portalbrasil/core/profiles/dependencies/types/Folder.xml new file mode 100644 index 0000000..fb37351 --- /dev/null +++ b/backend/src/portalbrasil/core/profiles/dependencies/types/Folder.xml @@ -0,0 +1,11 @@ + + + + + False + + diff --git a/backend/src/portalbrasil/core/profiles/dependencies/types/Image.xml b/backend/src/portalbrasil/core/profiles/dependencies/types/Image.xml new file mode 100644 index 0000000..3f6423c --- /dev/null +++ b/backend/src/portalbrasil/core/profiles/dependencies/types/Image.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/backend/src/portalbrasil/core/profiles/dependencies/types/Link.xml b/backend/src/portalbrasil/core/profiles/dependencies/types/Link.xml new file mode 100644 index 0000000..fe5b5e6 --- /dev/null +++ b/backend/src/portalbrasil/core/profiles/dependencies/types/Link.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + diff --git a/backend/src/portalbrasil/core/profiles/dependencies/types/News_Item.xml b/backend/src/portalbrasil/core/profiles/dependencies/types/News_Item.xml new file mode 100644 index 0000000..952e5eb --- /dev/null +++ b/backend/src/portalbrasil/core/profiles/dependencies/types/News_Item.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/backend/src/portalbrasil/core/profiles/dependencies/types/Plone_Site.xml b/backend/src/portalbrasil/core/profiles/dependencies/types/Plone_Site.xml new file mode 100644 index 0000000..f419062 --- /dev/null +++ b/backend/src/portalbrasil/core/profiles/dependencies/types/Plone_Site.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/backend/src/portalbrasil/core/upgrades/configure.zcml b/backend/src/portalbrasil/core/upgrades/configure.zcml index 93e734f..4bbaa3c 100644 --- a/backend/src/portalbrasil/core/upgrades/configure.zcml +++ b/backend/src/portalbrasil/core/upgrades/configure.zcml @@ -4,6 +4,7 @@ > + diff --git a/backend/src/portalbrasil/core/upgrades/v1002/__init__.py b/backend/src/portalbrasil/core/upgrades/v1002/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/src/portalbrasil/core/upgrades/v1002/configure.zcml b/backend/src/portalbrasil/core/upgrades/v1002/configure.zcml new file mode 100644 index 0000000..40c3476 --- /dev/null +++ b/backend/src/portalbrasil/core/upgrades/v1002/configure.zcml @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py index e98f9ee..0dbe1e9 100644 --- a/backend/tests/conftest.py +++ b/backend/tests/conftest.py @@ -32,7 +32,7 @@ def current_versions() -> CurrentVersions: from portalbrasil.core import __version__ return CurrentVersions( - base="1001", + base="1002", dependencies="1000", package=__version__, ) diff --git a/backend/tests/content_types/conftest.py b/backend/tests/content_types/conftest.py new file mode 100644 index 0000000..420a916 --- /dev/null +++ b/backend/tests/content_types/conftest.py @@ -0,0 +1,6 @@ +import pytest + + +@pytest.fixture(scope="class") +def portal(portal_class): + yield portal_class diff --git a/backend/tests/content_types/test_available_ct.py b/backend/tests/content_types/test_available_ct.py index f9a7560..eaedc9f 100644 --- a/backend/tests/content_types/test_available_ct.py +++ b/backend/tests/content_types/test_available_ct.py @@ -5,9 +5,9 @@ class TestCTAvailable: @pytest.fixture(autouse=True) - def _setup(self, portal_class): - self.portal = portal_class - self.types_tool: TypesTool = portal_class.portal_types + def _setup(self, portal): + self.portal = portal + self.types_tool: TypesTool = portal.portal_types @pytest.mark.parametrize( "portal_type,title,klass,addable", diff --git a/backend/tests/content_types/test_ct_collection.py b/backend/tests/content_types/test_ct_collection.py new file mode 100644 index 0000000..bb1cfda --- /dev/null +++ b/backend/tests/content_types/test_ct_collection.py @@ -0,0 +1,26 @@ +from plone.dexterity.fti import DexterityFTI + +import pytest + + +class TestContentTypeFTI: + portal_type: str = "Collection" + + @pytest.fixture(autouse=True) + def _setup(self, portal, get_fti): + self.portal = portal + self.fti: DexterityFTI = get_fti(self.portal_type) + + @pytest.mark.parametrize( + "attr,expected", + [ + ("title", "Collection"), + ("global_allow", False), + ], + ) + def test_fti(self, attr: str, expected): + """Test FTI values.""" + fti = self.fti + + assert isinstance(fti, DexterityFTI) + assert getattr(fti, attr) == expected diff --git a/backend/tests/content_types/test_ct_document.py b/backend/tests/content_types/test_ct_document.py new file mode 100644 index 0000000..9296168 --- /dev/null +++ b/backend/tests/content_types/test_ct_document.py @@ -0,0 +1,55 @@ +from plone.dexterity.fti import DexterityFTI + +import pytest + + +class TestContentTypeFTI: + portal_type: str = "Document" + + @pytest.fixture(autouse=True) + def _setup(self, portal, get_fti): + self.portal = portal + self.fti: DexterityFTI = get_fti(self.portal_type) + + @pytest.mark.parametrize( + "attr,expected", + [ + ("title", "Page"), + ("klass", "plone.volto.content.FolderishDocument"), + ("global_allow", True), + ], + ) + def test_fti(self, attr: str, expected): + """Test FTI values.""" + fti = self.fti + + assert isinstance(fti, DexterityFTI) + assert getattr(fti, attr) == expected + + @pytest.mark.parametrize( + "name,expected", + [ + ("plone.basic", True), + ("volto.preview_image_link", True), + ("plone.categorization", True), + ("plone.publication", True), + ("plone.ownership", True), + ("plone.relateditems", True), + ("plone.shortname", True), + ("volto.navtitle", True), + ("plone.excludefromnavigation", True), + ("plone.allowdiscussion", True), + ("volto.blocks", True), + ("plone.constraintypes", True), + ("plone.locking", True), + ("plone.namefromtitle", True), + ("plone.versioning", True), + ("plone.locking", True), + ("plone.translatable", True), + ], + ) + def test_behavior(self, name: str, expected: bool): + """Test behavior is present or not.""" + fti = self.fti + behaviors = fti.behaviors + assert (name in behaviors) is expected diff --git a/backend/tests/content_types/test_ct_event.py b/backend/tests/content_types/test_ct_event.py new file mode 100644 index 0000000..795fa80 --- /dev/null +++ b/backend/tests/content_types/test_ct_event.py @@ -0,0 +1,61 @@ +from plone.dexterity.fti import DexterityFTI + +import pytest + + +class TestContentTypeFTI: + portal_type: str = "Event" + + @pytest.fixture(autouse=True) + def _setup(self, portal, get_fti): + self.portal = portal + self.fti: DexterityFTI = get_fti(self.portal_type) + + @pytest.mark.parametrize( + "attr,expected", + [ + ("title", "Event"), + ("klass", "plone.volto.content.FolderishEvent"), + ("global_allow", True), + ], + ) + def test_fti(self, attr: str, expected): + """Test FTI values.""" + fti = self.fti + + assert isinstance(fti, DexterityFTI) + assert getattr(fti, attr) == expected + + @pytest.mark.parametrize( + "name,expected", + [ + ("plone.eventbasic", True), + ("plone.eventrecurrence", True), + ("plone.eventlocation", True), + ("plone.eventattendees", True), + ("plone.eventcontact", True), + ("plone.basic", True), + ("volto.preview_image_link", True), + ("plone.categorization", True), + ("plone.publication", True), + ("plone.ownership", True), + ("plone.shortname", True), + ("volto.navtitle", True), + ("plone.excludefromnavigation", True), + ("plone.allowdiscussion", True), + ("plone.relateditems", True), + ("volto.blocks", True), + ("plone.constraintypes", True), + ("plone.locking", True), + ("plone.namefromtitle", True), + ("plone.textindexer", True), + ("plone.versioning", True), + ("plone.locking", True), + ("plone.translatable", True), + ], + ) + def test_behavior(self, name: str, expected: bool): + """Test behavior is present or not.""" + fti = self.fti + behaviors = fti.behaviors + assert (name in behaviors) is expected diff --git a/backend/tests/content_types/test_ct_file.py b/backend/tests/content_types/test_ct_file.py new file mode 100644 index 0000000..6b080e4 --- /dev/null +++ b/backend/tests/content_types/test_ct_file.py @@ -0,0 +1,46 @@ +from plone.dexterity.fti import DexterityFTI + +import pytest + + +class TestContentTypeFTI: + portal_type: str = "File" + + @pytest.fixture(autouse=True) + def _setup(self, portal, get_fti): + self.portal = portal + self.fti: DexterityFTI = get_fti(self.portal_type) + + @pytest.mark.parametrize( + "attr,expected", + [ + ("title", "File"), + ("global_allow", True), + ], + ) + def test_fti(self, attr: str, expected): + """Test FTI values.""" + fti = self.fti + + assert isinstance(fti, DexterityFTI) + assert getattr(fti, attr) == expected + + @pytest.mark.parametrize( + "name,expected", + [ + ("plone.categorization", True), + ("plone.publication", True), + ("plone.ownership", True), + ("volto.preview_image_link", True), + ("plone.shortname", True), + ("plone.relateditems", True), + ("plone.namefromfilename", True), + ("plone.versioning", True), + ("plone.locking", True), + ], + ) + def test_behavior(self, name: str, expected: bool): + """Test behavior is present or not.""" + fti = self.fti + behaviors = fti.behaviors + assert (name in behaviors) is expected diff --git a/backend/tests/content_types/test_ct_folder.py b/backend/tests/content_types/test_ct_folder.py new file mode 100644 index 0000000..365ae3f --- /dev/null +++ b/backend/tests/content_types/test_ct_folder.py @@ -0,0 +1,26 @@ +from plone.dexterity.fti import DexterityFTI + +import pytest + + +class TestContentTypeFTI: + portal_type: str = "Folder" + + @pytest.fixture(autouse=True) + def _setup(self, portal, get_fti): + self.portal = portal + self.fti: DexterityFTI = get_fti(self.portal_type) + + @pytest.mark.parametrize( + "attr,expected", + [ + ("title", "Folder"), + ("global_allow", False), + ], + ) + def test_fti(self, attr: str, expected): + """Test FTI values.""" + fti = self.fti + + assert isinstance(fti, DexterityFTI) + assert getattr(fti, attr) == expected diff --git a/backend/tests/content_types/test_ct_image.py b/backend/tests/content_types/test_ct_image.py new file mode 100644 index 0000000..c82298a --- /dev/null +++ b/backend/tests/content_types/test_ct_image.py @@ -0,0 +1,45 @@ +from plone.dexterity.fti import DexterityFTI + +import pytest + + +class TestContentTypeFTI: + portal_type: str = "Image" + + @pytest.fixture(autouse=True) + def _setup(self, portal, get_fti): + self.portal = portal + self.fti: DexterityFTI = get_fti(self.portal_type) + + @pytest.mark.parametrize( + "attr,expected", + [ + ("title", "Image"), + ("global_allow", True), + ], + ) + def test_fti(self, attr: str, expected): + """Test FTI values.""" + fti = self.fti + + assert isinstance(fti, DexterityFTI) + assert getattr(fti, attr) == expected + + @pytest.mark.parametrize( + "name,expected", + [ + ("plone.categorization", True), + ("plone.publication", True), + ("plone.ownership", True), + ("plone.shortname", True), + ("plone.relateditems", True), + ("plone.namefromfilename", True), + ("plone.versioning", True), + ("plone.locking", True), + ], + ) + def test_behavior(self, name: str, expected: bool): + """Test behavior is present or not.""" + fti = self.fti + behaviors = fti.behaviors + assert (name in behaviors) is expected diff --git a/backend/tests/content_types/test_ct_link.py b/backend/tests/content_types/test_ct_link.py new file mode 100644 index 0000000..cb21e4a --- /dev/null +++ b/backend/tests/content_types/test_ct_link.py @@ -0,0 +1,49 @@ +from plone.dexterity.fti import DexterityFTI + +import pytest + + +class TestContentTypeFTI: + portal_type: str = "Link" + + @pytest.fixture(autouse=True) + def _setup(self, portal, get_fti): + self.portal = portal + self.fti: DexterityFTI = get_fti(self.portal_type) + + @pytest.mark.parametrize( + "attr,expected", + [ + ("title", "Link"), + ("global_allow", True), + ], + ) + def test_fti(self, attr: str, expected): + """Test FTI values.""" + fti = self.fti + + assert isinstance(fti, DexterityFTI) + assert getattr(fti, attr) == expected + + @pytest.mark.parametrize( + "name,expected", + [ + ("plone.basic", True), + ("volto.preview_image_link", True), + ("plone.categorization", True), + ("plone.publication", True), + ("plone.ownership", True), + ("plone.shortname", True), + ("volto.navtitle", True), + ("plone.excludefromnavigation", True), + ("plone.namefromtitle", True), + ("plone.versioning", True), + ("plone.locking", True), + ("plone.translatable", True), + ], + ) + def test_behavior(self, name: str, expected: bool): + """Test behavior is present or not.""" + fti = self.fti + behaviors = fti.behaviors + assert (name in behaviors) is expected diff --git a/backend/tests/content_types/test_ct_news_item.py b/backend/tests/content_types/test_ct_news_item.py new file mode 100644 index 0000000..6bea96d --- /dev/null +++ b/backend/tests/content_types/test_ct_news_item.py @@ -0,0 +1,53 @@ +from plone.dexterity.fti import DexterityFTI + +import pytest + + +class TestContentTypeFTI: + portal_type: str = "News Item" + + @pytest.fixture(autouse=True) + def _setup(self, portal, get_fti): + self.portal = portal + self.fti: DexterityFTI = get_fti(self.portal_type) + + @pytest.mark.parametrize( + "attr,expected", + [ + ("title", "News Item"), + ("klass", "plone.volto.content.FolderishNewsItem"), + ("global_allow", True), + ], + ) + def test_fti(self, attr: str, expected): + """Test FTI values.""" + fti = self.fti + + assert isinstance(fti, DexterityFTI) + assert getattr(fti, attr) == expected + + @pytest.mark.parametrize( + "name,expected", + [ + ("plone.basic", True), + ("volto.preview_image_link", True), + ("plone.categorization", True), + ("plone.publication", True), + ("plone.ownership", True), + ("plone.shortname", True), + ("volto.navtitle", True), + ("plone.excludefromnavigation", True), + ("plone.relateditems", True), + ("volto.blocks", True), + ("plone.constraintypes", True), + ("plone.namefromtitle", True), + ("plone.locking", True), + ("plone.versioning", True), + ("plone.translatable", True), + ], + ) + def test_behavior(self, name: str, expected: bool): + """Test behavior is present or not.""" + fti = self.fti + behaviors = fti.behaviors + assert (name in behaviors) is expected diff --git a/backend/tests/content_types/test_plone_site.py b/backend/tests/content_types/test_plone_site.py index e405892..b377418 100644 --- a/backend/tests/content_types/test_plone_site.py +++ b/backend/tests/content_types/test_plone_site.py @@ -3,11 +3,6 @@ import pytest -@pytest.fixture(scope="class") -def portal(portal_class): - yield portal_class - - class TestCTPloneSite: portal_type: str = "Plone Site" @@ -45,7 +40,7 @@ def test_fti(self, attr: str, expected): ("portalbrasil.social_networks", False), ("plonegovbr.socialmedia", False), ("volto.blocks", True), - ("volto.preview_image", True), + ("volto.preview_image_link", True), ], ) def test_behavior(self, name: str, expected: bool): diff --git a/backend/tests/setup/test_setup_install.py b/backend/tests/setup/test_setup_install.py index 68f88e2..1656c5a 100644 --- a/backend/tests/setup/test_setup_install.py +++ b/backend/tests/setup/test_setup_install.py @@ -12,9 +12,9 @@ def test_browserlayer(self, browser_layers): assert IBrowserLayer in browser_layers - def test_latest_version(self, profile_last_version): + def test_latest_version(self, profile_last_version, current_versions): """Test latest version of default profile.""" - assert profile_last_version(f"{PACKAGE_NAME}:base") == "1001" + assert profile_last_version(f"{PACKAGE_NAME}:base") == current_versions.base def test_base_profile(self, setup_tool): """Test if we have the base profile.""" diff --git a/backend/tests/setup/test_upgrades.py b/backend/tests/setup/test_upgrades.py new file mode 100644 index 0000000..0f53c51 --- /dev/null +++ b/backend/tests/setup/test_upgrades.py @@ -0,0 +1,42 @@ +from portalbrasil.core import PACKAGE_NAME +from Products.GenericSetup.tool import SetupTool + +import pytest + + +@pytest.fixture +def set_profile_version(setup_tool: SetupTool): + """Fixture to set the profile version.""" + + def _set_version(profile_id: str, version: str): + setup_tool.setLastVersionForProfile(profile_id, version) + + return _set_version + + +class TestUpgrades: + profile_name: str = f"{PACKAGE_NAME}:base" + + @pytest.fixture(autouse=True) + def _setup(self, portal, setup_tool): + self.portal = portal + self.tool: SetupTool = setup_tool + + @pytest.mark.parametrize( + "profile_src,profile_dest,steps", + [ + ("1000", "1001", 2), + ("1001", "1002", 2), + ], + ) + def test_upgrade_steps( + self, set_profile_version, profile_src: str, profile_dest: str, steps: int + ): + """Test latest version of default profile.""" + # Set profile to source version + set_profile_version(self.profile_name, profile_src) + # List upgrade steps + steps_list = self.tool.listUpgrades( + self.profile_name, dest=profile_dest, simple=True + ) + assert len(steps_list) == steps From 6545373c7208eb1231da64c74ee4712edaf85a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 4 Jun 2025 15:41:58 -0300 Subject: [PATCH 2/9] =?UTF-8?q?Corrige=20exibi=C3=A7=C3=A3o=20do=20menu=20?= =?UTF-8?q?expandido=20(Fixes=20#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/packages/core/news/8.bugfix | 1 + .../core/src/components/Header/Header.jsx | 71 ------ .../core/src/components/Header/Header.tsx | 102 ++++++++ .../src/components/Navigation/Navigation.tsx | 217 ++++++++++++++++++ .../Header/{Header.jsx => Header.tsx} | 0 .../components/Navigation/Navigation.jsx | 7 + frontend/packages/core/src/messages.ts | 8 + 7 files changed, 335 insertions(+), 71 deletions(-) create mode 100644 frontend/packages/core/news/8.bugfix delete mode 100644 frontend/packages/core/src/components/Header/Header.jsx create mode 100644 frontend/packages/core/src/components/Header/Header.tsx create mode 100644 frontend/packages/core/src/components/Navigation/Navigation.tsx rename frontend/packages/core/src/customizations/@kitconcept/volto-light-theme/components/Header/{Header.jsx => Header.tsx} (100%) create mode 100644 frontend/packages/core/src/customizations/@kitconcept/volto-light-theme/components/Navigation/Navigation.jsx diff --git a/frontend/packages/core/news/8.bugfix b/frontend/packages/core/news/8.bugfix new file mode 100644 index 0000000..6da737e --- /dev/null +++ b/frontend/packages/core/news/8.bugfix @@ -0,0 +1 @@ +Corrige exibição do menu expandido. @ericof diff --git a/frontend/packages/core/src/components/Header/Header.jsx b/frontend/packages/core/src/components/Header/Header.jsx deleted file mode 100644 index 5158f0b..0000000 --- a/frontend/packages/core/src/components/Header/Header.jsx +++ /dev/null @@ -1,71 +0,0 @@ -// SemanticUI-free pre-@plone/components -import { useSelector } from 'react-redux'; -import { Container } from '@plone/components'; -import MobileNavigation from '@kitconcept/volto-light-theme/components/MobileNavigation/MobileNavigation'; -import cx from 'classnames'; -import isEmpty from 'lodash/isEmpty'; - -import LanguageSelector from '@plone/volto/components/theme/LanguageSelector/LanguageSelector'; -import Logo from '@plone/volto/components/theme/Logo/Logo'; -import Navigation from '@plone/volto/components/theme/Navigation/Navigation'; -import SearchWidget from '@plone/volto/components/theme/SearchWidget/SearchWidget'; -import UniversalLink from '@plone/volto/components/manage/UniversalLink/UniversalLink'; - -import SlotRenderer from '@plone/volto/components/theme/SlotRenderer/SlotRenderer'; - -const Header = (props) => { - const { pathname } = props; - const content = useSelector((state) => state.content.data); - const navRoot = useSelector((state) => state.navroot?.data?.navroot); - const headerSettings = useSelector( - (state) => - state.content.data?.['@components']?.inherit?.['portalbrasil.header'] - ?.data, - ); - const formData = useSelector((state) => state.form.global); - const headerActions = - !isEmpty(formData) && formData?.header_actions - ? formData.header_actions - : headerSettings?.header_actions; - return ( - <> - -
- -
-
- - -
- {headerActions && - Array.isArray(headerActions) && - headerActions.map((item) => ( - - {item.title} - - ))} -
-
-
-
- -
- - -
-
- -
-
-
-
-
-
- - ); -}; - -export default Header; diff --git a/frontend/packages/core/src/components/Header/Header.tsx b/frontend/packages/core/src/components/Header/Header.tsx new file mode 100644 index 0000000..c6e7f35 --- /dev/null +++ b/frontend/packages/core/src/components/Header/Header.tsx @@ -0,0 +1,102 @@ +import React from 'react'; +import { useSelector, shallowEqual } from 'react-redux'; +import { Container } from '@plone/components'; +import cx from 'classnames'; + +import LanguageSelector from '@plone/volto/components/theme/LanguageSelector/LanguageSelector'; +import Logo from '@plone/volto/components/theme/Logo/Logo'; +import Navigation from '@plone/volto/components/theme/Navigation/Navigation'; +import SearchWidget from '@plone/volto/components/theme/SearchWidget/SearchWidget'; +import UniversalLink from '@plone/volto/components/manage/UniversalLink/UniversalLink'; +import SlotRenderer from '@plone/volto/components/theme/SlotRenderer/SlotRenderer'; + +import { useLiveData } from '@kitconcept/volto-light-theme/helpers/useLiveData'; + +import MobileNavigation from '@kitconcept/volto-light-theme/components/MobileNavigation/MobileNavigation'; + +import type { SiteHeaderSettings } from '@kitconcept/volto-light-theme/types'; +import type { Content } from '@plone/types'; + +type FormState = { + content: { + data: Content; + }; + navroot: { + data: { + navroot: Content; + }; + }; + form: { + global: Content; + }; +}; + +const InternetHeader = ({ pathname, content }) => { + const header_actions = useLiveData( + content, + 'portalbrasil.header', + 'header_actions', + ); + + return ( + <> +
+
+ + +
+ {header_actions && + Array.isArray(header_actions) && + header_actions.map((item) => ( + + {item.title} + + ))} +
+
+
+
+ +
+ + +
+
+ +
+
+
+
+ + ); +}; + +const Header = (props) => { + const { pathname } = props; + const content = useSelector( + (state) => state.content.data, + shallowEqual, + ); + + const navRoot = useSelector( + (state) => state.navroot?.data?.navroot, + ); + + return ( + <> + +
+ + + +
+ + + ); +}; + +export default Header; diff --git a/frontend/packages/core/src/components/Navigation/Navigation.tsx b/frontend/packages/core/src/components/Navigation/Navigation.tsx new file mode 100644 index 0000000..a09f48d --- /dev/null +++ b/frontend/packages/core/src/components/Navigation/Navigation.tsx @@ -0,0 +1,217 @@ +// SemanticUI-free pre-@plone/components + +import React, { useState, useEffect, useRef } from 'react'; +import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { NavLink } from 'react-router-dom'; +import doesNodeContainClick from '@kitconcept/volto-light-theme/helpers/doesNodeContainClick'; +import { useIntl } from 'react-intl'; +import cx from 'classnames'; +import { getBaseUrl } from '@plone/volto/helpers/Url/Url'; +import { hasApiExpander } from '@plone/volto/helpers/Utils/Utils'; +import config from '@plone/volto/registry'; + +import { getNavigation } from '@plone/volto/actions/navigation/navigation'; +import Icon from '@plone/volto/components/theme/Icon/Icon'; +import clearSVG from '@plone/volto/icons/clear.svg'; +import NavItem from '@plone/volto/components/theme/Navigation/NavItem'; +import { useLiveData } from '@kitconcept/volto-light-theme/helpers/useLiveData'; +import type { SiteHeaderSettings } from '@kitconcept/volto-light-theme/types'; +import type { Content } from '@plone/types'; +import messages from '@portalbrasil/core/messages'; + +type FormState = { + content: { + data: Content; + }; + navroot: { + data: { + navroot: Content; + }; + }; + form: { + global: Content; + }; +}; + +const Navigation = ({ pathname }) => { + const [desktopMenuOpen, setDesktopMenuOpen] = useState(null); + const [currentOpenIndex, setCurrentOpenIndex] = useState(null); + const navigation = useRef(null); + const dispatch = useDispatch(); + const intl = useIntl(); + const content = useSelector( + (state) => state.content.data, + shallowEqual, + ); + const has_fat_menu = useLiveData( + content, + 'portalbrasil.header', + 'has_fat_menu', + ); + const lang = useSelector((state) => state.intl.locale); + const token = useSelector((state) => state.userSession.token, shallowEqual); + const items = useSelector((state) => state.navigation.items, shallowEqual); + + useEffect(() => { + const handleClickOutside = (e) => { + if (navigation.current && doesNodeContainClick(navigation.current, e)) + return; + closeMenu(null); + }; + + document.addEventListener('mousedown', handleClickOutside, false); + + return () => { + document.removeEventListener('mousedown', handleClickOutside, false); + }; + }, []); + + useEffect(() => { + if (!hasApiExpander('navigation', getBaseUrl(pathname))) { + dispatch(getNavigation(getBaseUrl(pathname), config.settings.navDepth)); + } + }, [pathname, token, dispatch]); + + const isActive = (url) => { + return (url === '' && pathname === '/') || (url !== '' && pathname === url); + }; + + const openMenu = (index) => { + if (index === currentOpenIndex) { + setDesktopMenuOpen(null); + setCurrentOpenIndex(null); + } else { + setDesktopMenuOpen(index); + setCurrentOpenIndex(index); + } + }; + + const closeMenu = (index) => { + setDesktopMenuOpen(null); + setCurrentOpenIndex(null); + }; + + useEffect(() => { + const handleEsc = (event) => { + if (event.keyCode === 27) { + closeMenu(null); + } + }; + window.addEventListener('keydown', handleEsc); + + return () => { + window.removeEventListener('keydown', handleEsc); + }; + }, []); + + return ( + + ); +}; + +export default Navigation; diff --git a/frontend/packages/core/src/customizations/@kitconcept/volto-light-theme/components/Header/Header.jsx b/frontend/packages/core/src/customizations/@kitconcept/volto-light-theme/components/Header/Header.tsx similarity index 100% rename from frontend/packages/core/src/customizations/@kitconcept/volto-light-theme/components/Header/Header.jsx rename to frontend/packages/core/src/customizations/@kitconcept/volto-light-theme/components/Header/Header.tsx diff --git a/frontend/packages/core/src/customizations/@kitconcept/volto-light-theme/components/Navigation/Navigation.jsx b/frontend/packages/core/src/customizations/@kitconcept/volto-light-theme/components/Navigation/Navigation.jsx new file mode 100644 index 0000000..e7dcd8b --- /dev/null +++ b/frontend/packages/core/src/customizations/@kitconcept/volto-light-theme/components/Navigation/Navigation.jsx @@ -0,0 +1,7 @@ +/** + * OVERRIDE Navigation.jsx + * REASON: Use portalbrasil.header + */ +import Navigation from '../../../../../components/Navigation/Navigation'; + +export default Navigation; diff --git a/frontend/packages/core/src/messages.ts b/frontend/packages/core/src/messages.ts index 8f542e2..1a17efe 100644 --- a/frontend/packages/core/src/messages.ts +++ b/frontend/packages/core/src/messages.ts @@ -5,6 +5,14 @@ const messages = defineMessages({ id: 'Follow us:', defaultMessage: 'Redes Sociais', }, + closeMenu: { + id: 'Close menu', + defaultMessage: 'Close menu', + }, + openFatMenu: { + id: 'Open menu', + defaultMessage: 'Open menu', + }, }); export default messages; From 0ef94c076f26fd379eb9e449e7ecfab2e19c482a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 4 Jun 2025 15:53:43 -0300 Subject: [PATCH 3/9] =?UTF-8?q?Visualizador=20de=20PDF=20na=20vis=C3=A3o?= =?UTF-8?q?=20padr=C3=A3o=20de=20arquivo=20(Fixes=20#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/packages/core/news/9.feature | 1 + .../core/src/components/Views/FileView.tsx | 48 +++++++++++++++++++ frontend/packages/core/src/config/views.ts | 10 ++++ frontend/packages/core/src/index.ts | 11 +---- 4 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 frontend/packages/core/news/9.feature create mode 100644 frontend/packages/core/src/components/Views/FileView.tsx create mode 100644 frontend/packages/core/src/config/views.ts diff --git a/frontend/packages/core/news/9.feature b/frontend/packages/core/news/9.feature new file mode 100644 index 0000000..568b9d8 --- /dev/null +++ b/frontend/packages/core/news/9.feature @@ -0,0 +1 @@ +Visualizador de PDF na visão padrão de arquivo. @ericof diff --git a/frontend/packages/core/src/components/Views/FileView.tsx b/frontend/packages/core/src/components/Views/FileView.tsx new file mode 100644 index 0000000..21ed576 --- /dev/null +++ b/frontend/packages/core/src/components/Views/FileView.tsx @@ -0,0 +1,48 @@ +/** + * File view component. + * @module components/Views/FileView + */ +import React from 'react'; +import { Container } from '@plone/components'; +import { flattenToAppURL } from '@plone/volto/helpers/Url/Url'; +import PDFBlockView from '@eeacms/volto-pdf-block/components/manage/PDFViewer/BlockView'; +import FileType from '@kitconcept/volto-light-theme/helpers/Filetype'; +import type { Content } from '@plone/types'; + +interface FileViewProps { + content: Content; +} + +const FileView: React.FC = ({ content }) => { + const contentType = content.file['content-type']; + const downloadUrl = + content.file?.download && flattenToAppURL(content.file.download); + return ( + +

+ {content.title} + {content.subtitle && ` - ${content.subtitle}`} +

+ {content.description && ( +

{content.description}

+ )} + {contentType === 'application/pdf' && ( + + )} + {downloadUrl && ( +

+ {content.file.filename}{' '} + + ({FileType(content?.file['content-type'])}/{' '} + {content.file?.size < 1000000 + ? Math.round(content.file.size / 1000) + : Math.round(content.file.size / 1000000)} + {content.file?.size < 1000000 ? 'KB' : 'MB'}) + +

+ )} +
+ ); +}; + +export default FileView; diff --git a/frontend/packages/core/src/config/views.ts b/frontend/packages/core/src/config/views.ts new file mode 100644 index 0000000..d0196a7 --- /dev/null +++ b/frontend/packages/core/src/config/views.ts @@ -0,0 +1,10 @@ +import type { ConfigType } from '@plone/registry'; +import FileView from '@portalbrasil/core/components/Views/FileView'; + +export default function install(config: ConfigType) { + config.views.contentTypesViews = { + ...config.views.contentTypesViews, + File: FileView, + }; + return config; +} diff --git a/frontend/packages/core/src/index.ts b/frontend/packages/core/src/index.ts index 9156e2e..bc5290c 100644 --- a/frontend/packages/core/src/index.ts +++ b/frontend/packages/core/src/index.ts @@ -1,20 +1,13 @@ import type { ConfigType } from '@plone/registry'; -import { defineMessages } from 'react-intl'; - import installSettings from './config/settings'; import installSlots from './config/slots'; - -defineMessages({ - listWithImages: { - id: 'List with images', - defaultMessage: 'List with images', - }, -}); +import installViews from './config/views'; const applyConfig = (config: ConfigType) => { installSettings(config); installSlots(config); + installViews(config); return config; }; From 06b31a39a1415cae0278c04a1be8ad8a8c2dfc0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 4 Jun 2025 16:02:21 -0300 Subject: [PATCH 4/9] =?UTF-8?q?Atualiza=20volto=20light=20theme=20para=20a?= =?UTF-8?q?=20vers=C3=A3o=207.0.0-alpha.7=20(Fixes=20#10)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/packages/core/news/10.feature | 1 + frontend/packages/core/package.json | 2 +- frontend/pnpm-lock.yaml | 72 ++++++++++++++++++++++---- 3 files changed, 65 insertions(+), 10 deletions(-) create mode 100644 frontend/packages/core/news/10.feature diff --git a/frontend/packages/core/news/10.feature b/frontend/packages/core/news/10.feature new file mode 100644 index 0000000..d8dce9b --- /dev/null +++ b/frontend/packages/core/news/10.feature @@ -0,0 +1 @@ +Atualiza @kitconcept/volto-light-theme para versão 7.0.0-alpha.7 @ericof diff --git a/frontend/packages/core/package.json b/frontend/packages/core/package.json index 65a77d9..7a48eda 100644 --- a/frontend/packages/core/package.json +++ b/frontend/packages/core/package.json @@ -44,7 +44,7 @@ "dependencies": { "@plone/components": "workspace:*", "@plone-collective/volto-authomatic": "3.0.0-alpha.2", - "@kitconcept/volto-light-theme": "6.2.0", + "@kitconcept/volto-light-theme": "7.0.0-alpha.7", "@kitconcept/volto-social-blocks": "1.0.0-alpha.8", "@plonegovbr/volto-brwidgets": "1.0.0-alpha.3", "@plonegovbr/volto-social-media": "^2.0.0-alpha.5", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index cc5110a..0ba3031 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -1554,8 +1554,8 @@ importers: specifier: 1.0.12 version: 1.0.12(react@18.2.0)(webpack@5.90.1) '@kitconcept/volto-light-theme': - specifier: 6.2.0 - version: 6.2.0(@eeacms/volto-accordion-block@10.4.6)(@kitconcept/volto-banner-block@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-button-block@3.0.3(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0))(@kitconcept/volto-dsgvo-banner@2.3.2)(@kitconcept/volto-heading-block@2.4.0(react@18.2.0))(@kitconcept/volto-highlight-block@4.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-introduction-block@1.0.0)(@kitconcept/volto-separator-block@4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-slider-block@6.3.1(@plone/volto@18.22.0(@babel/runtime@7.26.10)(@popperjs/core@2.11.8)(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(seamless-immutable@7.1.4))(embla-carousel@8.5.2)(react@18.2.0))(@plonegovbr/volto-social-media@2.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(classnames@2.5.1)(lodash@4.17.21)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router-dom@5.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) + specifier: 7.0.0-alpha.7 + version: 7.0.0-alpha.7(@eeacms/volto-accordion-block@10.4.6)(@kitconcept/volto-banner-block@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-bm3-compat@1.0.0-alpha.1(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-button-block@3.0.3(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0))(@kitconcept/volto-carousel-block@2.0.0-alpha.0(classnames@2.5.1)(embla-carousel@8.5.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-dsgvo-banner@2.3.2)(@kitconcept/volto-heading-block@2.4.0(react@18.2.0))(@kitconcept/volto-highlight-block@4.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-introduction-block@1.0.0)(@kitconcept/volto-logos-block@3.0.0-alpha.0(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-separator-block@4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-slider-block@6.3.1(@plone/volto@18.22.0(@babel/runtime@7.26.10)(@popperjs/core@2.11.8)(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(seamless-immutable@7.1.4))(embla-carousel@8.5.2)(react@18.2.0))(@plonegovbr/volto-social-media@2.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(classnames@2.5.1)(lodash@4.17.21)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router-dom@5.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) '@kitconcept/volto-social-blocks': specifier: 1.0.0-alpha.8 version: 1.0.0-alpha.8(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0) @@ -3063,6 +3063,13 @@ packages: react: 18.2.0 react-dom: 18.2.0 + '@kitconcept/volto-bm3-compat@1.0.0-alpha.1': + resolution: {integrity: sha512-eKEtR1WBvLh9gf9JzCB7THgcYxyJPiw7QVXZ2Bdo6NOYSh05PPMvpN+lUBYj3ottk7oAt9Mvln4FCyfza4abUw==} + peerDependencies: + classnames: ^2.2.6 + react: 18.2.0 + react-dom: 18.2.0 + '@kitconcept/volto-button-block@3.0.3': resolution: {integrity: sha512-H1N3OY1XRxyU9u8Cjkmf5QtdBYB6010nzke9DHU3lJLItGzP84Qg3dw6RFWV0oE/EcKhZHh0tr6kxnYIpIaiFg==} peerDependencies: @@ -3071,6 +3078,12 @@ packages: react-dom: 18.2.0 react-intl: ^3.12.1 + '@kitconcept/volto-carousel-block@2.0.0-alpha.0': + resolution: {integrity: sha512-1IrZugnxBrSlkfKz/XpmM25FCpMj0EcThFbuZe1iIW/Cvj4yZxAe6LCxv5rPRZZlZs/7TtXSTMkQFTEyyLmAnw==} + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + '@kitconcept/volto-dsgvo-banner@2.3.2': resolution: {integrity: sha512-iguCyuy4a7dYi1glWorVY7/0co66Su3+acp2O24GEGyDHvrZJgNkKvIOc9nnmAvR6g9zluMWH5ilLaT1rZuT6w==} @@ -3086,19 +3099,22 @@ packages: '@kitconcept/volto-introduction-block@1.0.0': resolution: {integrity: sha512-17wbBx89zcSQzXbdWvKBDlw0aJfTzjaX3cJUBorHjrJgOcTx7WBahIhBPjnC2z4EYmZ5w9YdHolqdD9HUlpozw==} - '@kitconcept/volto-light-theme@6.2.0': - resolution: {integrity: sha512-//7VS1DxNBkFuZjEHJ2+QeSKhYfezjN4864xx2axt8XmXjuxL8FtIEUjE9ONbN+eMiuwygI/W2ORoLD7WkslPw==} + '@kitconcept/volto-light-theme@7.0.0-alpha.7': + resolution: {integrity: sha512-QL2j8ovJbBHwipGHeeyk1uR3Cnwwqf3eGlEYa2d+xCZbo0IgavVVdGV9CUZGxCIfAbH8GfdOIAokkt3TeNb1BQ==} peerDependencies: '@eeacms/volto-accordion-block': ^10.4.6 '@kitconcept/volto-banner-block': ^1.0.1 - '@kitconcept/volto-button-block': ^3.0.3 - '@kitconcept/volto-dsgvo-banner': ^2.3.2 + '@kitconcept/volto-bm3-compat': ^1.0.0-alpha.1 + '@kitconcept/volto-button-block': ^4.0.0-alpha.0 + '@kitconcept/volto-carousel-block': ^2.0.0-alpha.0 + '@kitconcept/volto-dsgvo-banner': ^2.4.0 '@kitconcept/volto-heading-block': ^2.4.0 '@kitconcept/volto-highlight-block': ^4.1.0 '@kitconcept/volto-introduction-block': ^1.0.0 + '@kitconcept/volto-logos-block': ^3.0.0-alpha.0 '@kitconcept/volto-separator-block': ^4.1.2 '@kitconcept/volto-slider-block': ^6.3.1 - '@plonegovbr/volto-social-media': ^2.0.0-alpha.5 + '@plonegovbr/volto-social-media': ^2.0.0-alpha.6 classnames: ^2.2.6 lodash: 4.17.21 react: 18.2.0 @@ -3107,6 +3123,14 @@ packages: react-redux: ^8.1.2 react-router-dom: ^5.2.0 + '@kitconcept/volto-logos-block@3.0.0-alpha.0': + resolution: {integrity: sha512-4hWNh+7nf8JZ0F1i1oAN2xhuMN+Kzj7uSS63w7StrQMTF6mwhlD7FiRIh0DOASjGwZhIoiRFShkfDsf+YLNasg==} + peerDependencies: + classnames: 2.5.1 + react: 18.2.0 + react-dom: 18.2.0 + react-intl: ^3.12.1 + '@kitconcept/volto-separator-block@4.1.2': resolution: {integrity: sha512-SWgIu7/XmZA0BK0LX+ObM7w1YdFAyRAxQUBt/ICka+KKsIVUpYeBUiJ+Q9d9Z5bneh7Fwv3Oik6CAJ5BhqCn2A==} peerDependencies: @@ -16544,6 +16568,12 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@kitconcept/volto-bm3-compat@1.0.0-alpha.1(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + classnames: 2.5.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + '@kitconcept/volto-button-block@3.0.3(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)': dependencies: classnames: 2.5.1 @@ -16551,6 +16581,17 @@ snapshots: react-dom: 18.2.0(react@18.2.0) react-intl: 3.12.1(react@18.2.0) + '@kitconcept/volto-carousel-block@2.0.0-alpha.0(classnames@2.5.1)(embla-carousel@8.5.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@kitconcept/volto-bm3-compat': 1.0.0-alpha.1(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + embla-carousel-autoplay: 8.5.2(embla-carousel@8.5.2) + embla-carousel-react: 8.5.2(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - classnames + - embla-carousel + '@kitconcept/volto-dsgvo-banner@2.3.2': dependencies: '@datapunt/matomo-tracker-js': 0.5.1 @@ -16569,18 +16610,21 @@ snapshots: '@kitconcept/volto-introduction-block@1.0.0': {} - ? '@kitconcept/volto-light-theme@6.2.0(@eeacms/volto-accordion-block@10.4.6)(@kitconcept/volto-banner-block@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-button-block@3.0.3(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0))(@kitconcept/volto-dsgvo-banner@2.3.2)(@kitconcept/volto-heading-block@2.4.0(react@18.2.0))(@kitconcept/volto-highlight-block@4.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-introduction-block@1.0.0)(@kitconcept/volto-separator-block@4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-slider-block@6.3.1(@plone/volto@18.22.0(@babel/runtime@7.26.10)(@popperjs/core@2.11.8)(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(seamless-immutable@7.1.4))(embla-carousel@8.5.2)(react@18.2.0))(@plonegovbr/volto-social-media@2.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(classnames@2.5.1)(lodash@4.17.21)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router-dom@5.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5))' + ? '@kitconcept/volto-light-theme@7.0.0-alpha.7(@eeacms/volto-accordion-block@10.4.6)(@kitconcept/volto-banner-block@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-bm3-compat@1.0.0-alpha.1(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-button-block@3.0.3(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0))(@kitconcept/volto-carousel-block@2.0.0-alpha.0(classnames@2.5.1)(embla-carousel@8.5.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-dsgvo-banner@2.3.2)(@kitconcept/volto-heading-block@2.4.0(react@18.2.0))(@kitconcept/volto-highlight-block@4.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-introduction-block@1.0.0)(@kitconcept/volto-logos-block@3.0.0-alpha.0(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-separator-block@4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-slider-block@6.3.1(@plone/volto@18.22.0(@babel/runtime@7.26.10)(@popperjs/core@2.11.8)(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(seamless-immutable@7.1.4))(embla-carousel@8.5.2)(react@18.2.0))(@plonegovbr/volto-social-media@2.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(classnames@2.5.1)(lodash@4.17.21)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router-dom@5.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5))' : dependencies: '@dnd-kit/core': 6.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) '@dnd-kit/utilities': 3.2.2(react@18.2.0) '@eeacms/volto-accordion-block': 10.4.6 '@kitconcept/volto-banner-block': 1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@kitconcept/volto-bm3-compat': 1.0.0-alpha.1(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@kitconcept/volto-button-block': 3.0.3(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0) + '@kitconcept/volto-carousel-block': 2.0.0-alpha.0(classnames@2.5.1)(embla-carousel@8.5.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@kitconcept/volto-dsgvo-banner': 2.3.2 '@kitconcept/volto-heading-block': 2.4.0(react@18.2.0) '@kitconcept/volto-highlight-block': 4.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@kitconcept/volto-introduction-block': 1.0.0 + '@kitconcept/volto-logos-block': 3.0.0-alpha.0(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) '@kitconcept/volto-separator-block': 4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) '@kitconcept/volto-slider-block': 6.3.1(@plone/volto@18.22.0(@babel/runtime@7.26.10)(@popperjs/core@2.11.8)(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(seamless-immutable@7.1.4))(embla-carousel@8.5.2)(react@18.2.0) '@plone/components': 3.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) @@ -16599,6 +16643,16 @@ snapshots: transitivePeerDependencies: - storybook + '@kitconcept/volto-logos-block@3.0.0-alpha.0(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5))': + dependencies: + '@plone/components': 3.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) + classnames: 2.5.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-intl: 3.12.1(react@18.2.0) + transitivePeerDependencies: + - storybook + '@kitconcept/volto-separator-block@4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5))': dependencies: '@plone/components': 2.0.0-alpha.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) @@ -19708,7 +19762,7 @@ snapshots: '@types/vinyl@2.0.12': dependencies: '@types/expect': 1.20.4 - '@types/node': 20.17.25 + '@types/node': 22.15.29 '@types/ws@8.18.0': dependencies: From a5097dc770b01b1312567ea8f2737af9f66f2ca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 4 Jun 2025 16:08:51 -0300 Subject: [PATCH 5/9] Atualiza socialmedia (Fixes #12) --- backend/news/12.feature | 1 + backend/pyproject.toml | 2 +- backend/uv.lock | 8 ++++---- frontend/packages/core/news/12.feature | 1 + frontend/packages/core/package.json | 2 +- frontend/pnpm-lock.yaml | 16 ++++++++-------- 6 files changed, 16 insertions(+), 14 deletions(-) create mode 100644 backend/news/12.feature create mode 100644 frontend/packages/core/news/12.feature diff --git a/backend/news/12.feature b/backend/news/12.feature new file mode 100644 index 0000000..16e16e7 --- /dev/null +++ b/backend/news/12.feature @@ -0,0 +1 @@ +Atualiza plonegovbr.socialmedia para versão 2.0.0a6 @ericof diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 425dd00..fec9ac1 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -38,7 +38,7 @@ dependencies = [ "collective.volto.formsupport==3.2.3", "collective.honeypot", "plonegovbr.brfields==1.0.0a3", - "plonegovbr.socialmedia==2.0.0a2", + "plonegovbr.socialmedia==2.0.0a6", ] [project.optional-dependencies] diff --git a/backend/uv.lock b/backend/uv.lock index 85e1c82..bcba510 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -3816,7 +3816,7 @@ wheels = [ [[package]] name = "plonegovbr-socialmedia" -version = "2.0.0a2" +version = "2.0.0a6" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "plone-api" }, @@ -3824,9 +3824,9 @@ dependencies = [ { name = "plone-volto" }, { name = "products-cmfplone" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9a/18/45b7d20abe0eca6005d661d83e067f0404332c313aaa279937c9e522950a/plonegovbr_socialmedia-2.0.0a2.tar.gz", hash = "sha256:7e397361f99c9c302bd2a7696493e13213790238e344b0898ab20f482f875140", size = 27478 } +sdist = { url = "https://files.pythonhosted.org/packages/49/e1/c33db489696cbda39fe3938154a95d08fc933dbc0dd09abe1a05f5787451/plonegovbr_socialmedia-2.0.0a6.tar.gz", hash = "sha256:4853f13f921328d2063b50d58f541e97bafc35cfbfa99422bc29d94072c6e95d", size = 27562 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/cd/ff5966ee141516748854a81d1ce8dabdf2dae5abd7494856444652e7dafc/plonegovbr_socialmedia-2.0.0a2-py3-none-any.whl", hash = "sha256:c1068df8c6eb43fe266aa5090cec7ebc0e072ae51fc5c249fa1ac01916fee0e2", size = 37581 }, + { url = "https://files.pythonhosted.org/packages/4f/0d/4c194f04583aef1fd523af2eb398bed709f9dc7268816b993cda2f35a6b1/plonegovbr_socialmedia-2.0.0a6-py3-none-any.whl", hash = "sha256:4fddbef1304dd08feeaee42b85065ffdb6c4f08588ac35fe8716e80f78ce511a", size = 37595 }, ] [[package]] @@ -3918,7 +3918,7 @@ requires-dist = [ { name = "plone-restapi", extras = ["test"], marker = "extra == 'test'" }, { name = "plone-volto" }, { name = "plonegovbr-brfields", specifier = "==1.0.0a3" }, - { name = "plonegovbr-socialmedia", specifier = "==2.0.0a2" }, + { name = "plonegovbr-socialmedia", specifier = "==2.0.0a6" }, { name = "products-cmfplone", specifier = "==6.1.1" }, { name = "pytest", marker = "extra == 'test'" }, { name = "pytest-cov", marker = "extra == 'test'" }, diff --git a/frontend/packages/core/news/12.feature b/frontend/packages/core/news/12.feature new file mode 100644 index 0000000..13a5dc4 --- /dev/null +++ b/frontend/packages/core/news/12.feature @@ -0,0 +1 @@ +Atualiza @plonegovbr/volto-social-media para versão 2.0.0-alpha.6 @ericof diff --git a/frontend/packages/core/package.json b/frontend/packages/core/package.json index 7a48eda..e3d19e8 100644 --- a/frontend/packages/core/package.json +++ b/frontend/packages/core/package.json @@ -47,7 +47,7 @@ "@kitconcept/volto-light-theme": "7.0.0-alpha.7", "@kitconcept/volto-social-blocks": "1.0.0-alpha.8", "@plonegovbr/volto-brwidgets": "1.0.0-alpha.3", - "@plonegovbr/volto-social-media": "^2.0.0-alpha.5", + "@plonegovbr/volto-social-media": "^2.0.0-alpha.6", "@plonegovbr/volto-vlibras": "0.4.1", "@mbarde/volto-image-crop-widget": "0.5.1", "@eeacms/volto-pdf-block": "1.0.12", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 0ba3031..6ccb42d 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -1555,7 +1555,7 @@ importers: version: 1.0.12(react@18.2.0)(webpack@5.90.1) '@kitconcept/volto-light-theme': specifier: 7.0.0-alpha.7 - version: 7.0.0-alpha.7(@eeacms/volto-accordion-block@10.4.6)(@kitconcept/volto-banner-block@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-bm3-compat@1.0.0-alpha.1(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-button-block@3.0.3(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0))(@kitconcept/volto-carousel-block@2.0.0-alpha.0(classnames@2.5.1)(embla-carousel@8.5.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-dsgvo-banner@2.3.2)(@kitconcept/volto-heading-block@2.4.0(react@18.2.0))(@kitconcept/volto-highlight-block@4.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-introduction-block@1.0.0)(@kitconcept/volto-logos-block@3.0.0-alpha.0(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-separator-block@4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-slider-block@6.3.1(@plone/volto@18.22.0(@babel/runtime@7.26.10)(@popperjs/core@2.11.8)(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(seamless-immutable@7.1.4))(embla-carousel@8.5.2)(react@18.2.0))(@plonegovbr/volto-social-media@2.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(classnames@2.5.1)(lodash@4.17.21)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router-dom@5.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) + version: 7.0.0-alpha.7(@eeacms/volto-accordion-block@10.4.6)(@kitconcept/volto-banner-block@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-bm3-compat@1.0.0-alpha.1(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-button-block@3.0.3(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0))(@kitconcept/volto-carousel-block@2.0.0-alpha.0(classnames@2.5.1)(embla-carousel@8.5.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-dsgvo-banner@2.3.2)(@kitconcept/volto-heading-block@2.4.0(react@18.2.0))(@kitconcept/volto-highlight-block@4.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-introduction-block@1.0.0)(@kitconcept/volto-logos-block@3.0.0-alpha.0(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-separator-block@4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-slider-block@6.3.1(@plone/volto@18.22.0(@babel/runtime@7.26.10)(@popperjs/core@2.11.8)(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(seamless-immutable@7.1.4))(embla-carousel@8.5.2)(react@18.2.0))(@plonegovbr/volto-social-media@2.0.0-alpha.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(classnames@2.5.1)(lodash@4.17.21)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router-dom@5.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) '@kitconcept/volto-social-blocks': specifier: 1.0.0-alpha.8 version: 1.0.0-alpha.8(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0) @@ -1572,8 +1572,8 @@ importers: specifier: 1.0.0-alpha.3 version: 1.0.0-alpha.3(prop-types@15.8.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(semantic-ui-react@2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) '@plonegovbr/volto-social-media': - specifier: ^2.0.0-alpha.5 - version: 2.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) + specifier: ^2.0.0-alpha.6 + version: 2.0.0-alpha.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) '@plonegovbr/volto-vlibras': specifier: 0.4.1 version: 0.4.1(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0) @@ -3630,8 +3630,8 @@ packages: react-dom: 18.2.0 semantic-ui-react: 2.1.5 - '@plonegovbr/volto-social-media@2.0.0-alpha.5': - resolution: {integrity: sha512-bJUtqRUNRZvRN9JHk7jqqrK6qhBgtSmVmMoSZ7yd+lqyys67n25+yyTKq642tzAAJhFBE9fbCT84AI5Q1dUmAg==} + '@plonegovbr/volto-social-media@2.0.0-alpha.6': + resolution: {integrity: sha512-XM49Y64RlYA4reuSDiW7b6OZE33UMEeIMZv9pl6/reBux3Ep5wOvhh6PFsl7eCbYJNUtFAs89bLtyI7gn1THwQ==} peerDependencies: react: 18.2.0 react-dom: 18.2.0 @@ -16610,7 +16610,7 @@ snapshots: '@kitconcept/volto-introduction-block@1.0.0': {} - ? '@kitconcept/volto-light-theme@7.0.0-alpha.7(@eeacms/volto-accordion-block@10.4.6)(@kitconcept/volto-banner-block@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-bm3-compat@1.0.0-alpha.1(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-button-block@3.0.3(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0))(@kitconcept/volto-carousel-block@2.0.0-alpha.0(classnames@2.5.1)(embla-carousel@8.5.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-dsgvo-banner@2.3.2)(@kitconcept/volto-heading-block@2.4.0(react@18.2.0))(@kitconcept/volto-highlight-block@4.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-introduction-block@1.0.0)(@kitconcept/volto-logos-block@3.0.0-alpha.0(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-separator-block@4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-slider-block@6.3.1(@plone/volto@18.22.0(@babel/runtime@7.26.10)(@popperjs/core@2.11.8)(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(seamless-immutable@7.1.4))(embla-carousel@8.5.2)(react@18.2.0))(@plonegovbr/volto-social-media@2.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(classnames@2.5.1)(lodash@4.17.21)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router-dom@5.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5))' + ? '@kitconcept/volto-light-theme@7.0.0-alpha.7(@eeacms/volto-accordion-block@10.4.6)(@kitconcept/volto-banner-block@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-bm3-compat@1.0.0-alpha.1(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-button-block@3.0.3(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0))(@kitconcept/volto-carousel-block@2.0.0-alpha.0(classnames@2.5.1)(embla-carousel@8.5.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-dsgvo-banner@2.3.2)(@kitconcept/volto-heading-block@2.4.0(react@18.2.0))(@kitconcept/volto-highlight-block@4.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@kitconcept/volto-introduction-block@1.0.0)(@kitconcept/volto-logos-block@3.0.0-alpha.0(classnames@2.5.1)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-separator-block@4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(@kitconcept/volto-slider-block@6.3.1(@plone/volto@18.22.0(@babel/runtime@7.26.10)(@popperjs/core@2.11.8)(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(seamless-immutable@7.1.4))(embla-carousel@8.5.2)(react@18.2.0))(@plonegovbr/volto-social-media@2.0.0-alpha.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)))(classnames@2.5.1)(lodash@4.17.21)(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router-dom@5.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5))' : dependencies: '@dnd-kit/core': 6.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) @@ -16628,7 +16628,7 @@ snapshots: '@kitconcept/volto-separator-block': 4.1.2(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) '@kitconcept/volto-slider-block': 6.3.1(@plone/volto@18.22.0(@babel/runtime@7.26.10)(@popperjs/core@2.11.8)(@types/react-dom@18.3.5(@types/react@18.3.19))(@types/react@18.3.19)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(seamless-immutable@7.1.4))(embla-carousel@8.5.2)(react@18.2.0) '@plone/components': 3.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) - '@plonegovbr/volto-social-media': 2.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) + '@plonegovbr/volto-social-media': 2.0.0-alpha.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) classnames: 2.5.1 lodash: 4.17.21 react: 18.2.0 @@ -17528,7 +17528,7 @@ snapshots: react-dom: 18.2.0(react@18.2.0) semantic-ui-react: 2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@plonegovbr/volto-social-media@2.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5))': + '@plonegovbr/volto-social-media@2.0.0-alpha.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5))': dependencies: '@plone/components': 3.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.8(prettier@3.2.5)) react: 18.2.0 From 023d0fd74d927ca61203d7212fadd6f041f7ad9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 4 Jun 2025 16:10:00 -0300 Subject: [PATCH 6/9] =?UTF-8?q?Atualiza=20@plone-collective/volto-authomat?= =?UTF-8?q?ic=20para=20vers=C3=A3o=203.0.0-alpha.3=20(Fixes=20#11)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/packages/core/news/11.feature | 1 + frontend/packages/core/package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 frontend/packages/core/news/11.feature diff --git a/frontend/packages/core/news/11.feature b/frontend/packages/core/news/11.feature new file mode 100644 index 0000000..c03323b --- /dev/null +++ b/frontend/packages/core/news/11.feature @@ -0,0 +1 @@ +Atualiza @plone-collective/volto-authomatic para versão 3.0.0-alpha.3 @ericof diff --git a/frontend/packages/core/package.json b/frontend/packages/core/package.json index e3d19e8..2ce18d2 100644 --- a/frontend/packages/core/package.json +++ b/frontend/packages/core/package.json @@ -43,7 +43,7 @@ ], "dependencies": { "@plone/components": "workspace:*", - "@plone-collective/volto-authomatic": "3.0.0-alpha.2", + "@plone-collective/volto-authomatic": "3.0.0-alpha.3", "@kitconcept/volto-light-theme": "7.0.0-alpha.7", "@kitconcept/volto-social-blocks": "1.0.0-alpha.8", "@plonegovbr/volto-brwidgets": "1.0.0-alpha.3", From 9b2510d0290c09d987c0782e63029ee9cfa10caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 4 Jun 2025 16:12:24 -0300 Subject: [PATCH 7/9] Atualiza lockfile --- frontend/pnpm-lock.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 6ccb42d..c6dba5b 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -1563,8 +1563,8 @@ importers: specifier: 0.5.1 version: 0.5.1(react@18.2.0) '@plone-collective/volto-authomatic': - specifier: 3.0.0-alpha.2 - version: 3.0.0-alpha.2(@plone/components@core+packages+components)(@plone/registry@2.5.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(semantic-ui-react@2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + specifier: 3.0.0-alpha.3 + version: 3.0.0-alpha.3(@plone/components@core+packages+components)(@plone/registry@2.5.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(semantic-ui-react@2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) '@plone/components': specifier: workspace:* version: link:../../core/packages/components @@ -3558,8 +3558,8 @@ packages: resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@plone-collective/volto-authomatic@3.0.0-alpha.2': - resolution: {integrity: sha512-04nsgfwssJHjRdS7/t5IRS7wvvwH86+1HGhpbgA3Nb5xJOmx5s37/dQdgCZrbBhXa5GYjixpuzDjgdqhp61JmA==} + '@plone-collective/volto-authomatic@3.0.0-alpha.3': + resolution: {integrity: sha512-XPVUZUsvhR01bZX7PoR/jOhI+g3NHuGBBRwO94whc19GkXZvrA9VAG7rQJPgs2PYFtjgEut+mwqPulVBLW2aUw==} peerDependencies: '@plone/components': 3.0.2 '@plone/registry': 2.5.2 @@ -17277,7 +17277,7 @@ snapshots: '@pkgr/core@0.1.2': {} - '@plone-collective/volto-authomatic@3.0.0-alpha.2(@plone/components@core+packages+components)(@plone/registry@2.5.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(semantic-ui-react@2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': + '@plone-collective/volto-authomatic@3.0.0-alpha.3(@plone/components@core+packages+components)(@plone/registry@2.5.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react-intl@3.12.1(react@18.2.0))(react@18.2.0)(semantic-ui-react@2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': dependencies: '@plone/components': link:core/packages/components '@plone/registry': 2.5.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -20206,7 +20206,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.12 tinyrainbow: 1.2.0 - vitest: 2.1.9(@types/node@20.17.25)(@vitest/ui@2.1.9)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.29.3)(sass@1.86.0)(terser@5.39.0) + vitest: 2.1.9(@types/node@22.15.29)(@vitest/ui@2.1.9)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.29.3)(sass@1.86.0)(terser@5.39.0) optional: true '@vitest/ui@2.1.9(vitest@3.1.4)': From 9ad8970c9d0cf5138e6feb9c05ba3312d5650290 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 4 Jun 2025 16:13:32 -0300 Subject: [PATCH 8/9] =?UTF-8?q?Atualiza=20tradu=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/locales/pt_BR/LC_MESSAGES/volto.po | 15 ++++++++++----- frontend/packages/core/locales/volto.pot | 17 +++++++++++------ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/frontend/packages/core/locales/pt_BR/LC_MESSAGES/volto.po b/frontend/packages/core/locales/pt_BR/LC_MESSAGES/volto.po index 151251e..ec9ff4c 100644 --- a/frontend/packages/core/locales/pt_BR/LC_MESSAGES/volto.po +++ b/frontend/packages/core/locales/pt_BR/LC_MESSAGES/volto.po @@ -26,6 +26,11 @@ msgstr "Complementos" msgid "Back" msgstr "Voltar" +#. Default: "Close menu" +#: messages +msgid "Close menu" +msgstr "Fechar menu" + #. Default: "Configuration Versions" #: components/Controlpanels/UpgradeControlPanel msgid "Configuration Versions" @@ -61,11 +66,6 @@ msgstr "Capa" msgid "Latest available configuration" msgstr "Última configuração disponível" -#. Default: "List with images" -#: index -msgid "List with images" -msgstr "Lista com imagens" - #. Default: "Logo of" #: components/Logo/Logo msgid "Logo of" @@ -86,6 +86,11 @@ msgstr "Nenhum complemento foi encontrado" msgid "O PortalBrasil é mantido pela comunidade" msgstr "O PortalBrasil é mantido pela comunidade" +#. Default: "Open menu" +#: messages +msgid "Open menu" +msgstr "Abrir menu" + #. Default: "Package Version" #: components/Controlpanels/VersionOverview msgid "Package Version" diff --git a/frontend/packages/core/locales/volto.pot b/frontend/packages/core/locales/volto.pot index fcf7252..fafafcd 100644 --- a/frontend/packages/core/locales/volto.pot +++ b/frontend/packages/core/locales/volto.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Plone\n" -"POT-Creation-Date: 2025-06-02T17:21:03.347Z\n" +"POT-Creation-Date: 2025-06-04T19:12:32.229Z\n" "Last-Translator: Plone i18n \n" "Language-Team: Plone i18n \n" "Content-Type: text/plain; charset=utf-8\n" @@ -23,6 +23,11 @@ msgstr "" msgid "Back" msgstr "" +#. Default: "Close menu" +#: messages +msgid "Close menu" +msgstr "" + #. Default: "Configuration Versions" #: components/Controlpanels/UpgradeControlPanel msgid "Configuration Versions" @@ -58,11 +63,6 @@ msgstr "" msgid "Latest available configuration" msgstr "" -#. Default: "List with images" -#: index -msgid "List with images" -msgstr "" - #. Default: "Logo of" #: components/Logo/Logo msgid "Logo of" @@ -83,6 +83,11 @@ msgstr "" msgid "O PortalBrasil é mantido pela comunidade" msgstr "" +#. Default: "Open menu" +#: messages +msgid "Open menu" +msgstr "" + #. Default: "Package Version" #: components/Controlpanels/VersionOverview msgid "Package Version" From 8befc3778dd55991d2e79028421df0a0e4d71a4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 4 Jun 2025 16:20:53 -0300 Subject: [PATCH 9/9] =?UTF-8?q?Registra=20passos=20de=20atualiza=C3=A7?= =?UTF-8?q?=C3=A3o=20das=20distribui=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/news/+upgrade.internal | 1 + backend/src/portalbrasil/core/factory.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 backend/news/+upgrade.internal diff --git a/backend/news/+upgrade.internal b/backend/news/+upgrade.internal new file mode 100644 index 0000000..e6aa513 --- /dev/null +++ b/backend/news/+upgrade.internal @@ -0,0 +1 @@ +Registra distribuições que dependem deste pacote para serem atualizadas. @ericof diff --git a/backend/src/portalbrasil/core/factory.py b/backend/src/portalbrasil/core/factory.py index 5d41842..135e731 100644 --- a/backend/src/portalbrasil/core/factory.py +++ b/backend/src/portalbrasil/core/factory.py @@ -100,6 +100,11 @@ "plonegovbr.socialmedia:demo", ] +_DISTRIBUTION_PROFILES = [ + "portalbrasil.legislativo:default", + "portalbrasil.intranet:default", +] + @implementer(INonInstallable) class HiddenProfiles: @@ -113,6 +118,7 @@ def getNonInstallableProfiles(self): CMF_DEPENDENCIES_PROFILE, DEPENDENCIES_PROFILE, *_PLONE_PROFILES, + *_DISTRIBUTION_PROFILES, ] @@ -150,6 +156,15 @@ class LocalAddonList: Addon(profile_id="plonegovbr.socialmedia:default"), Addon(profile_id="plonegovbr.brfields:default"), Addon(profile_id="portalbrasil.core:dependencies"), + # Distributions and profiles + Addon( + profile_id="portalbrasil.legislativo:default", + check_module="portalbrasil.legislativo", + ), + Addon( + profile_id="portalbrasil.intranet:default", + check_module="portalbrasil.intranet", + ), ])