diff --git a/.meta.toml b/.meta.toml
index 28cf099..8016d6e 100644
--- a/.meta.toml
+++ b/.meta.toml
@@ -7,3 +7,6 @@ commit-id = "2.8.1.dev0"
[tox]
test_matrix = {"6.2" = ["*"]}
+
+[pyproject]
+dependencies_ignores = "['z3c.jbot']"
diff --git a/pyproject.toml b/pyproject.toml
index d6d4b32..3ab6c9a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -122,6 +122,7 @@ Zope = [
]
python-dateutil = ['dateutil']
pytest-plone = ['pytest', 'zope.pytestlayer', 'plone.testing', 'plone.app.testing']
+ignore-packages = ['z3c.jbot']
##
# Add extra configuration options in .meta.toml:
diff --git a/src/plone/app/linkintegrity/__init__.py b/src/plone/app/linkintegrity/__init__.py
index e69de29..4342339 100644
--- a/src/plone/app/linkintegrity/__init__.py
+++ b/src/plone/app/linkintegrity/__init__.py
@@ -0,0 +1,13 @@
+import zope.deferredimport
+
+zope.deferredimport.initialize()
+
+
+jbot_deprecations = {
+ "plone.app.linkintegrity.browser.delete_confirmation_info.pt": "plone.app.layout.controlpanels.templates.linkintegrity_delete_confirmation_info.pt", # noqa: E501
+ "plone.app.linkintegrity.browser.update.pt": "plone.app.layout.controlpanels.templates.linkintegrity_update.pt", # noqa: E501
+}
+zope.deferredimport.deprecated(
+ "Please use from plone.app.layout.controlpanels.linkintegrity import UpdateView", # noqa: E501
+ UpdateView="plone.app.layout:controlpanels.linkintegrity.UpdateView",
+)
diff --git a/src/plone/app/linkintegrity/browser/info.py b/src/plone/app/linkintegrity/browser/info.py
index 73fe0c7..8ae44c5 100644
--- a/src/plone/app/linkintegrity/browser/info.py
+++ b/src/plone/app/linkintegrity/browser/info.py
@@ -1,6 +1,9 @@
from Acquisition import aq_inner
from OFS.interfaces import IFolder
from plone.app.linkintegrity.utils import getIncomingLinks
+from plone.app.linkintegrity.utils import linkintegrity_enabled
+from plone.base import PloneMessageFactory as _
+from plone.base.interfaces import IPloneSiteRoot
from plone.uuid.interfaces import IUUID
from Products.CMFCore.permissions import AccessContentsInformation
from Products.CMFCore.utils import _checkPermission
@@ -16,13 +19,25 @@
class DeleteConfirmationInfo(BrowserView):
template = None
+ breach_count = {}
+
+ def __init__(self, context, request):
+ self.linkintegrity_enabled = linkintegrity_enabled()
+ self.context = context
+ self.request = request
def __call__(self, items=None):
- # Base implementation returns an empty string so the view is safe
- # to call from templates (plone.app.content) even when
- # plone.app.layout is not installed (e.g. Volto / API-only setups).
- # plone.app.layout registers an IPloneAppLayoutLayer-scoped override
- # that renders the full HTML confirmation snippet.
+ if not self.linkintegrity_enabled:
+ return
+ if items is None:
+ if IPloneSiteRoot.providedBy(self.context):
+ # Checking the portal for breaches makes no sense.
+ return
+ else:
+ items = [self.context]
+ self.breaches = self.get_breaches(items)
+ if self.template:
+ return self.template()
return ""
def get_breaches(self, items=None):
@@ -164,3 +179,6 @@ def get_portal_type_title(self, obj):
def is_accessible(self, obj):
return _checkPermission(AccessContentsInformation, obj)
+
+ def objects(self):
+ return [_("Objects in all"), _("Folders"), _("Published objects")]
diff --git a/src/plone/app/linkintegrity/configure.zcml b/src/plone/app/linkintegrity/configure.zcml
index e3fa781..566b4c2 100644
--- a/src/plone/app/linkintegrity/configure.zcml
+++ b/src/plone/app/linkintegrity/configure.zcml
@@ -2,6 +2,7 @@
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
+ xmlns:zcml="http://namespaces.zope.org/zcml"
>
@@ -11,6 +12,17 @@
file="permissions.zcml"
/>
+
+
+
+