From 9cef33f269d7414ba472813cec16a98835f2615b Mon Sep 17 00:00:00 2001 From: Gil Forcada Codinachs Date: Sat, 6 Dec 2025 12:33:22 +0100 Subject: [PATCH 1/7] Configuring with plone.meta --- .github/workflows/meta.yml | 2 -- .meta.toml | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index af8f15b3..bf49c2bc 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -26,8 +26,6 @@ on: jobs: qa: uses: plone/meta/.github/workflows/qa.yml@2.x - test: - uses: plone/meta/.github/workflows/test.yml@2.x coverage: uses: plone/meta/.github/workflows/coverage.yml@2.x dependencies: diff --git a/.meta.toml b/.meta.toml index 1f8349bc..db32940a 100644 --- a/.meta.toml +++ b/.meta.toml @@ -3,7 +3,7 @@ # See the inline comments on how to expand/tweak this configuration file [meta] template = "default" -commit-id = "2.2.0" +commit-id = "2.3.0" [tox] test_matrix = {"6.2" = ["*"]} @@ -11,7 +11,6 @@ test_matrix = {"6.2" = ["*"]} [github] jobs = [ "qa", - "test", "coverage", "dependencies", "release_ready", From 490bb390e514cbdf28bba02c998b64d734f8b21e Mon Sep 17 00:00:00 2001 From: Gil Forcada Codinachs Date: Sun, 17 Aug 2025 11:40:45 +0200 Subject: [PATCH 2/7] fix: use function from plone.base Rather than a CMFPlone script from skins folder. --- src/plone/app/content/browser/content_status_history.py | 4 ++++ .../app/content/browser/templates/content_status_history.pt | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plone/app/content/browser/content_status_history.py b/src/plone/app/content/browser/content_status_history.py index d1810771..b5f23e57 100644 --- a/src/plone/app/content/browser/content_status_history.py +++ b/src/plone/app/content/browser/content_status_history.py @@ -1,4 +1,5 @@ from plone.base import PloneMessageFactory as _ +from plone.base.defaultpage import is_default_page from plone.base.utils import human_readable_size from plone.base.utils import is_expired from Products.CMFCore.utils import getToolByName @@ -135,6 +136,9 @@ def redirect_to_referrer(self): def isExpired(self, content): return is_expired(content) + def is_default_page(self, obj): + return is_default_page(self.context.__parent__, obj) + @deprecate( "This method is deprecated since Plone 6, " "use the @@plone/human_readable_size method instead" diff --git a/src/plone/app/content/browser/templates/content_status_history.pt b/src/plone/app/content/browser/templates/content_status_history.pt index 8bd5a93f..c42567e8 100644 --- a/src/plone/app/content/browser/templates/content_status_history.pt +++ b/src/plone/app/content/browser/templates/content_status_history.pt @@ -169,8 +169,7 @@ item_use_view python:item_type in use_view_action; hasGetUrl python:hasattr(item.aq_explicit, 'getURL'); item_rel_url python:hasGetUrl and item.getURL(relative=1) or getRelativeContentURL(item); - browserDefaultResult context/browserDefault; - isBrowserDefault python:len(browserDefaultResult[1]) == 1 and item.id == context.browserDefault()[1][0]; + isBrowserDefault python:view.is_default_page(item); item_folderish item/is_folderish|nothing; item_has_image python:item.getIcon; " From ddb724ab6f6ad06e5e8dac362ea45a8a5c03d2fc Mon Sep 17 00:00:00 2001 From: Gil Forcada Codinachs Date: Sun, 17 Aug 2025 11:41:29 +0200 Subject: [PATCH 3/7] Add news entry --- news/+ignore.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 news/+ignore.bugfix diff --git a/news/+ignore.bugfix b/news/+ignore.bugfix new file mode 100644 index 00000000..ed12ef80 --- /dev/null +++ b/news/+ignore.bugfix @@ -0,0 +1 @@ +Use `plone.base`'s `is_default_page` rather than a plone skin @gforcada From 1a8dd722bdb53af6c6826b150a16bd8c31a10626 Mon Sep 17 00:00:00 2001 From: Maurits van Rees Date: Fri, 19 Dec 2025 11:02:09 +0100 Subject: [PATCH 4/7] Apply suggestion from @davisagli Co-authored-by: David Glick --- news/+ignore.bugfix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/news/+ignore.bugfix b/news/+ignore.bugfix index ed12ef80..287c91d7 100644 --- a/news/+ignore.bugfix +++ b/news/+ignore.bugfix @@ -1 +1 @@ -Use `plone.base`'s `is_default_page` rather than a plone skin @gforcada +Update content status history viewlet to use `plone.base`'s `is_default_page` rather than a plone skin. @gforcada From f65cd949d5aabab925f06b1b9edb332269659a48 Mon Sep 17 00:00:00 2001 From: Maurits van Rees Date: Fri, 19 Dec 2025 11:48:50 +0100 Subject: [PATCH 5/7] Fix news snippet: content_status_history is not a viewlet, but a page. --- news/+ignore.bugfix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/news/+ignore.bugfix b/news/+ignore.bugfix index 287c91d7..8ee68340 100644 --- a/news/+ignore.bugfix +++ b/news/+ignore.bugfix @@ -1 +1 @@ -Update content status history viewlet to use `plone.base`'s `is_default_page` rather than a plone skin. @gforcada +Update content status history page to use ``is_default_page`` from ``plone.base`` rather than a plone skin. @gforcada From 221c94869dd5273b2853f3fec9ee3454d245b50c Mon Sep 17 00:00:00 2001 From: Maurits van Rees Date: Fri, 19 Dec 2025 11:49:47 +0100 Subject: [PATCH 6/7] content_status_history.py: use aq_parent instead of __parent__. --- src/plone/app/content/browser/content_status_history.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plone/app/content/browser/content_status_history.py b/src/plone/app/content/browser/content_status_history.py index b5f23e57..60e01ab4 100644 --- a/src/plone/app/content/browser/content_status_history.py +++ b/src/plone/app/content/browser/content_status_history.py @@ -1,3 +1,4 @@ +from Acquisition import aq_parent from plone.base import PloneMessageFactory as _ from plone.base.defaultpage import is_default_page from plone.base.utils import human_readable_size @@ -137,7 +138,7 @@ def isExpired(self, content): return is_expired(content) def is_default_page(self, obj): - return is_default_page(self.context.__parent__, obj) + return is_default_page(aq_parent(self.context), obj) @deprecate( "This method is deprecated since Plone 6, " From ebe5b296c9870c376cbf569cb5dd16a17a39e734 Mon Sep 17 00:00:00 2001 From: Maurits van Rees Date: Fri, 19 Dec 2025 11:54:54 +0100 Subject: [PATCH 7/7] Update reviewlist to use ``is_default_page`` from ``plone.base`` rather than the ``plone_utils`` tool. Also, check if an item is a default page in its own container, instead of on the context where we see the reviewlist. --- news/+4c4064a8.bugfix.rst | 3 +++ src/plone/app/content/browser/reviewlist.py | 10 ++++------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 news/+4c4064a8.bugfix.rst diff --git a/news/+4c4064a8.bugfix.rst b/news/+4c4064a8.bugfix.rst new file mode 100644 index 00000000..754165ca --- /dev/null +++ b/news/+4c4064a8.bugfix.rst @@ -0,0 +1,3 @@ +Update reviewlist to use ``is_default_page`` from ``plone.base`` rather than the ``plone_utils`` tool. +Also, check if an item is a default page in its own container, instead of on the context where we see the reviewlist. +@mauritsvanrees diff --git a/src/plone/app/content/browser/reviewlist.py b/src/plone/app/content/browser/reviewlist.py index 0456b993..001e4191 100644 --- a/src/plone/app/content/browser/reviewlist.py +++ b/src/plone/app/content/browser/reviewlist.py @@ -1,6 +1,8 @@ from Acquisition import aq_inner +from Acquisition import aq_parent from plone.app.content.browser.tableview import Table from plone.app.content.browser.tableview import TableBrowserView +from plone.base.defaultpage import is_default_page from plone.base.utils import human_readable_size from plone.base.utils import is_expired from plone.base.utils import safe_text @@ -54,11 +56,8 @@ def items(self): portal_workflow = getToolByName(self.context, "portal_workflow") portal_types = getToolByName(self.context, "portal_types") portal_membership = getToolByName(self.context, "portal_membership") - plone_utils = getToolByName(self.context, "plone_utils") - registry = getUtility(IRegistry) use_view_action = registry.get("plone.types_use_view_action_in_listings", ()) - browser_default = plone_utils.browserDefault(self.context) results = [] if portal_membership.isAnonymousUser(): @@ -117,9 +116,8 @@ def items(self): else: view_url = url - is_browser_default = len(browser_default[1]) == 1 and ( - obj.id == browser_default[1][0] - ) + # Is this object the default page of its container? + is_browser_default = is_default_page(aq_parent(aq_inner(obj)), obj) results.append( dict(