From 8b72e77dbe287e09dba3cf265f7b7237fc81ac69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Tue, 21 Jan 2025 17:58:54 -0300 Subject: [PATCH 1/6] Implement a specific robots.txt for Volto sites (Fixes #178) --- news/178.feature | 1 + src/plone/volto/profiles/default/metadata.xml | 2 +- src/plone/volto/profiles/default/registry.xml | 60 ------------------- ...interfaces.controlpanel.IImagingSchema.xml | 24 ++++++++ ...erfaces.controlpanel.INavigationSchema.xml | 11 ++++ ....interfaces.controlpanel.ISearchSchema.xml | 12 ++++ ...se.interfaces.controlpanel.ISiteSchema.xml | 28 +++++++++ ...e.interfaces.controlpanel.ITypesSchema.xml | 10 ++++ .../plone.volto.interfaces.IVoltoSettings.xml | 8 +++ .../profiles/default/registry/registry.xml | 11 ++++ src/plone/volto/upgrades.py | 34 +++++++++++ src/plone/volto/upgrades.zcml | 10 ++++ 12 files changed, 150 insertions(+), 61 deletions(-) create mode 100644 news/178.feature delete mode 100644 src/plone/volto/profiles/default/registry.xml create mode 100644 src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.IImagingSchema.xml create mode 100644 src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.INavigationSchema.xml create mode 100644 src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISearchSchema.xml create mode 100644 src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml create mode 100644 src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ITypesSchema.xml create mode 100644 src/plone/volto/profiles/default/registry/plone.volto.interfaces.IVoltoSettings.xml create mode 100644 src/plone/volto/profiles/default/registry/registry.xml diff --git a/news/178.feature b/news/178.feature new file mode 100644 index 0000000..0fde902 --- /dev/null +++ b/news/178.feature @@ -0,0 +1 @@ +Implement a specific robots.txt for Volto sites [@ericof] diff --git a/src/plone/volto/profiles/default/metadata.xml b/src/plone/volto/profiles/default/metadata.xml index d08f418..b4653f2 100644 --- a/src/plone/volto/profiles/default/metadata.xml +++ b/src/plone/volto/profiles/default/metadata.xml @@ -1,6 +1,6 @@ - 1018 + 1019 profile-plone.restapi:blocks diff --git a/src/plone/volto/profiles/default/registry.xml b/src/plone/volto/profiles/default/registry.xml deleted file mode 100644 index aa8d206..0000000 --- a/src/plone/volto/profiles/default/registry.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - False - - - - - - - - - - - - - - icon 32:32 - tile 64:64 - thumb 128:128 - mini 200:65536 - preview 400:65536 - teaser 600:65536 - large 800:65536 - larger 1000:65536 - great 1200:65536 - huge 1600:65536 - - - - - - Plone Icon Volto Control Panel - - ++plone++plone.volto/volto.svg - - - - - - - diff --git a/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.IImagingSchema.xml b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.IImagingSchema.xml new file mode 100644 index 0000000..4d487bb --- /dev/null +++ b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.IImagingSchema.xml @@ -0,0 +1,24 @@ + + + + + + + + icon 32:32 + tile 64:64 + thumb 128:128 + mini 200:65536 + preview 400:65536 + teaser 600:65536 + large 800:65536 + larger 1000:65536 + great 1200:65536 + huge 1600:65536 + + + diff --git a/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.INavigationSchema.xml b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.INavigationSchema.xml new file mode 100644 index 0000000..c4f997d --- /dev/null +++ b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.INavigationSchema.xml @@ -0,0 +1,11 @@ + + + + + False + + + diff --git a/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISearchSchema.xml b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISearchSchema.xml new file mode 100644 index 0000000..d66c885 --- /dev/null +++ b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISearchSchema.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml new file mode 100644 index 0000000..6ca5b86 --- /dev/null +++ b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml @@ -0,0 +1,28 @@ + + + + Sitemap: {portal_url}/sitemap.xml.gz + +# Define access-restrictions for robots/spiders +# http://www.robotstxt.org/wc/norobots.html + +User-agent: * +Disallow: /search +Disallow: /login + +# Add Googlebot-specific syntax extension to exclude forms +# that are repeated for each piece of content in the site +# the wildcard is only supported by Googlebot +# http://www.google.com/support/webmasters/bin/answer.py?answer=40367&ctx=sibling + +User-Agent: Googlebot +Disallow: /*login +Disallow: /*search +Disallow: /*edit + + + diff --git a/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ITypesSchema.xml b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ITypesSchema.xml new file mode 100644 index 0000000..a4fb108 --- /dev/null +++ b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ITypesSchema.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/src/plone/volto/profiles/default/registry/plone.volto.interfaces.IVoltoSettings.xml b/src/plone/volto/profiles/default/registry/plone.volto.interfaces.IVoltoSettings.xml new file mode 100644 index 0000000..ae44de1 --- /dev/null +++ b/src/plone/volto/profiles/default/registry/plone.volto.interfaces.IVoltoSettings.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/src/plone/volto/profiles/default/registry/registry.xml b/src/plone/volto/profiles/default/registry/registry.xml new file mode 100644 index 0000000..d2d96e0 --- /dev/null +++ b/src/plone/volto/profiles/default/registry/registry.xml @@ -0,0 +1,11 @@ + + + + + + Plone Icon Volto Control Panel + + ++plone++plone.volto/volto.svg + + + diff --git a/src/plone/volto/upgrades.py b/src/plone/volto/upgrades.py index 703a18c..aa88720 100644 --- a/src/plone/volto/upgrades.py +++ b/src/plone/volto/upgrades.py @@ -156,3 +156,37 @@ def rename_distribution(context): report.name = "volto" if report.answers.get("distribution") == "default": report.answers["distribution"] = "volto" + + +ROBOTS_TXT = """Sitemap: {portal_url}/sitemap.xml.gz + +# Define access-restrictions for robots/spiders +# http://www.robotstxt.org/wc/norobots.html + +User-agent: * +Disallow: /search +Disallow: /login + +# Add Googlebot-specific syntax extension to exclude forms +# that are repeated for each piece of content in the site +# the wildcard is only supported by Googlebot +# http://www.google.com/support/webmasters/bin/answer.py?answer=40367&ctx=sibling + +User-Agent: Googlebot +Disallow: /*login +Disallow: /*search +Disallow: /*edit +""" + + +def update_robots_txt(context): + from plone.base.interfaces.controlpanel import ROBOTS_TXT as CLASSIC_ROBOTS + + current_value = api.portal.get_registry_record("plone.robots_txt") + if current_value == CLASSIC_ROBOTS: + api.portal.set_registry_record("plone.robots_txt", ROBOTS_TXT) + logger.info("Updated plone.robots_txt registry with sane value.") + else: + logger.info( + "Ignoring plone.robots_txt registry as it was modified in this portal." + ) diff --git a/src/plone/volto/upgrades.zcml b/src/plone/volto/upgrades.zcml index b5da40c..0531c6b 100644 --- a/src/plone/volto/upgrades.zcml +++ b/src/plone/volto/upgrades.zcml @@ -86,4 +86,14 @@ /> + + + From 3ae181f9d6a94eb8004c8c08fe95685c11eb990a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 22 Jan 2025 09:24:15 -0300 Subject: [PATCH 2/6] Rename Changelog entry --- news/{178.feature => 178.bugfix} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename news/{178.feature => 178.bugfix} (100%) diff --git a/news/178.feature b/news/178.bugfix similarity index 100% rename from news/178.feature rename to news/178.bugfix From 02479bd6fc84818a260ef3c1a001219684058f36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 22 Jan 2025 09:27:03 -0300 Subject: [PATCH 3/6] Fix volto sitemap location --- .../registry/plone.base.interfaces.controlpanel.ISiteSchema.xml | 2 +- src/plone/volto/upgrades.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml index 6ca5b86..f643ef6 100644 --- a/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml +++ b/src/plone/volto/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml @@ -5,7 +5,7 @@ name="plone.robots_txt" purge="true" > - Sitemap: {portal_url}/sitemap.xml.gz + Sitemap: {portal_url}/sitemap-index.xml # Define access-restrictions for robots/spiders # http://www.robotstxt.org/wc/norobots.html diff --git a/src/plone/volto/upgrades.py b/src/plone/volto/upgrades.py index aa88720..bdf4d78 100644 --- a/src/plone/volto/upgrades.py +++ b/src/plone/volto/upgrades.py @@ -158,7 +158,7 @@ def rename_distribution(context): report.answers["distribution"] = "volto" -ROBOTS_TXT = """Sitemap: {portal_url}/sitemap.xml.gz +ROBOTS_TXT = """Sitemap: {portal_url}/sitemap-index.xml # Define access-restrictions for robots/spiders # http://www.robotstxt.org/wc/norobots.html From dac150ca99b987598217105aac687bbfecdac9dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 22 Jan 2025 09:27:33 -0300 Subject: [PATCH 4/6] Update Changelog entry --- news/178.bugfix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/news/178.bugfix b/news/178.bugfix index 0fde902..0df4fbd 100644 --- a/news/178.bugfix +++ b/news/178.bugfix @@ -1 +1,3 @@ -Implement a specific robots.txt for Volto sites [@ericof] +Implement a specific robots.txt for Volto sites. +There is an upgrade step which will update the existing plone.robots_txt registry setting unless it has been customized. +@ericof From 91cb7e7e754fd2ed7cc1cb3e23af3780d169aa0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 22 Jan 2025 09:28:35 -0300 Subject: [PATCH 5/6] Update upgrade step title --- src/plone/volto/upgrades.zcml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plone/volto/upgrades.zcml b/src/plone/volto/upgrades.zcml index 0531c6b..b030682 100644 --- a/src/plone/volto/upgrades.zcml +++ b/src/plone/volto/upgrades.zcml @@ -92,7 +92,7 @@ destination="1019" > From 3aaa3387f72fc4616631641b6453af1e6bb528fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 22 Jan 2025 09:30:13 -0300 Subject: [PATCH 6/6] Fix tests --- tests/setup/test_setup_install.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/setup/test_setup_install.py b/tests/setup/test_setup_install.py index b2ac0bf..ee7c05a 100644 --- a/tests/setup/test_setup_install.py +++ b/tests/setup/test_setup_install.py @@ -16,7 +16,7 @@ def test_browserlayer(self, browser_layers): def test_latest_version(self, profile_last_version): """Test latest version of default profile.""" - assert profile_last_version(f"{PACKAGE_NAME}:default") == "1018" + assert profile_last_version(f"{PACKAGE_NAME}:default") == "1019" @pytest.mark.parametrize( "portal_type,behavior",