eea.volto.policy 5.0__zip → 5.2__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {eea.volto.policy-5.0/eea.volto.policy.egg-info → eea.volto.policy-5.2}/PKG-INFO +15 -1
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/docs/HISTORY.txt +14 -0
- eea.volto.policy-5.2/eea/volto/policy/behaviors/configure.zcml +15 -0
- eea.volto.policy-5.2/eea/volto/policy/behaviors/sidenavigation.py +13 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/configure.zcml +1 -0
- eea.volto.policy-5.2/eea/volto/policy/permissions.zcml +12 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/profiles/default/catalog.xml +1 -0
- eea.volto.policy-5.2/eea/volto/policy/profiles/default/registry/side_nav_types.xml +11 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/profiles/default/registry.xml +3 -0
- eea.volto.policy-5.2/eea/volto/policy/restapi/blocks.py +32 -0
- eea.volto.policy-5.2/eea/volto/policy/restapi/configure.zcml +13 -0
- eea.volto.policy-5.2/eea/volto/policy/restapi/serializer/__init__.py +1 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/restapi/serializer/configure.zcml +2 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/restapi/serializer/dxfields.py +12 -0
- eea.volto.policy-5.2/eea/volto/policy/restapi/services/__init__.py +1 -0
- eea.volto.policy-5.2/eea/volto/policy/restapi/services/configure.zcml +6 -0
- eea.volto.policy-5.2/eea/volto/policy/restapi/services/contextnavigation/__init__.py +1 -0
- eea.volto.policy-5.2/eea/volto/policy/restapi/services/contextnavigation/configure.zcml +20 -0
- eea.volto.policy-5.2/eea/volto/policy/restapi/services/contextnavigation/get.py +298 -0
- eea.volto.policy-5.2/eea/volto/policy/version.txt +1 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2/eea.volto.policy.egg-info}/PKG-INFO +15 -1
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea.volto.policy.egg-info/SOURCES.txt +9 -0
- eea.volto.policy-5.0/eea/volto/policy/behaviors/configure.zcml +0 -7
- eea.volto.policy-5.0/eea/volto/policy/restapi/configure.zcml +0 -6
- eea.volto.policy-5.0/eea/volto/policy/restapi/serializer/__init__.py +0 -2
- eea.volto.policy-5.0/eea/volto/policy/version.txt +0 -1
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/CONTRIBUTING.md +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/MANIFEST.in +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/README.rst +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/docs/LICENSE.GPL +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/docs/LICENSE.txt +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/README.txt +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/behaviors/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/browser/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/browser/configure.zcml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/browser/teaser.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/contentrules/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/contentrules/actions.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/contentrules/configure.zcml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/image_scales/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/image_scales/adapters.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/image_scales/configure.zcml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/image_scales/indexer.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/image_scales/interfaces.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/interfaces.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/bg/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/bg/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/bg/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/bg/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/cs/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/cs/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/cs/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/cs/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/da/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/da/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/da/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/da/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/de/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/de/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/de/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/de/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/eea.pot +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/el/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/el/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/el/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/el/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/en/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/en/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/en/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/en/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/es/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/es/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/es/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/es/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/et/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/et/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/et/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/et/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/eu/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/eu/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/eu/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/eu/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/fi/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/fi/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/fi/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/fi/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/fr/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/fr/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/fr/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/fr/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/hr/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/hr/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/hr/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/hr/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/hu/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/hu/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/hu/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/hu/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/is/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/is/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/is/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/is/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/it/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/it/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/it/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/it/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/kl/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/kl/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/kl/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/kl/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/lt/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/lt/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/lt/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/lt/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/lv/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/lv/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/lv/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/lv/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/mt/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/mt/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/mt/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/mt/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/nl/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/nl/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/nl/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/nl/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/no/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/no/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/no/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/no/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pl/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pl/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pl/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pl/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/plone-manual.pot +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pt/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pt/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pt/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pt/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pt_BR/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pt_BR/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pt_BR/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/pt_BR/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/ro/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/ro/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/ro/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/ro/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/ru/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/ru/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/ru/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/ru/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sk/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sk/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sk/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sk/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sl/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sl/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sl/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sl/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sv/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sv/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sv/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/sv/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/tr/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/tr/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/tr/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/tr/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/update.sh +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/zh_TW/LC_MESSAGES/eea.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/zh_TW/LC_MESSAGES/eea.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/zh_TW/LC_MESSAGES/plone.mo +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/locales/zh_TW/LC_MESSAGES/plone.po +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/overrides.zcml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/profiles/default/browserlayer.xml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/profiles/default/contentrules.xml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/profiles/default/metadata.xml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/profiles/uninstall/browserlayer.xml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/profiles.zcml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/restapi/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/restapi/deserializer/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/restapi/deserializer/configure.zcml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/restapi/deserializer/dxfields.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/restapi/navigation/configure.zcml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/restapi/navigation/navigation.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/restapi/serializer/summary.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/setuphandlers.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/tests/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/tests/base.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/tests/test_doctests.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/upgrades/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/upgrades/configure.zcml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/vocabularies/__init__.py +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/vocabularies/configure.zcml +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea.volto.policy.egg-info/dependency_links.txt +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea.volto.policy.egg-info/entry_points.txt +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea.volto.policy.egg-info/namespace_packages.txt +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea.volto.policy.egg-info/not-zip-safe +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea.volto.policy.egg-info/requires.txt +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea.volto.policy.egg-info/top_level.txt +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/setup.cfg +0 -0
- {eea.volto.policy-5.0 → eea.volto.policy-5.2}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: eea.volto.policy
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.2
|
|
4
4
|
Summary: An add-on for Plone
|
|
5
5
|
Home-page: https://github.com/eea/eea.volto.policy
|
|
6
6
|
Author: European Environment Agency: IDM2 A-Team
|
|
@@ -128,6 +128,20 @@ EEA_ - European Environment Agency (EU)
|
|
|
128
128
|
Changelog
|
|
129
129
|
=========
|
|
130
130
|
|
|
131
|
+
5.2 - (2024-08-19)
|
|
132
|
+
---------------------------
|
|
133
|
+
* Feature: Check for permissions when serializing restricted blocks
|
|
134
|
+
[razvanMiu - refs #273963]
|
|
135
|
+
* Feature: Customized context navigation endpoint to filter portal_type
|
|
136
|
+
[ichim-david - refs #270999]
|
|
137
|
+
* Fix: Depth of context navigation endpoint by passing depth parameter
|
|
138
|
+
[ichim-david - refs #270999]
|
|
139
|
+
|
|
140
|
+
5.1 - (2024-07-22)
|
|
141
|
+
---------------------------
|
|
142
|
+
* Change: Release
|
|
143
|
+
[avoinea]
|
|
144
|
+
|
|
131
145
|
5.0 - (2024-06-11)
|
|
132
146
|
---------------------------
|
|
133
147
|
* Breaking: Requires `plone.volto >= 4.1.0`
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
5.2 - (2024-08-19)
|
|
5
|
+
---------------------------
|
|
6
|
+
* Feature: Check for permissions when serializing restricted blocks
|
|
7
|
+
[razvanMiu - refs #273963]
|
|
8
|
+
* Feature: Customized context navigation endpoint to filter portal_type
|
|
9
|
+
[ichim-david - refs #270999]
|
|
10
|
+
* Fix: Depth of context navigation endpoint by passing depth parameter
|
|
11
|
+
[ichim-david - refs #270999]
|
|
12
|
+
|
|
13
|
+
5.1 - (2024-07-22)
|
|
14
|
+
---------------------------
|
|
15
|
+
* Change: Release
|
|
16
|
+
[avoinea]
|
|
17
|
+
|
|
4
18
|
5.0 - (2024-06-11)
|
|
5
19
|
---------------------------
|
|
6
20
|
* Breaking: Requires `plone.volto >= 4.1.0`
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<configure
|
|
2
|
+
xmlns="http://namespaces.zope.org/zope"
|
|
3
|
+
xmlns:plone="http://namespaces.plone.org/plone"
|
|
4
|
+
i18n_domain="eea">
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
<plone:behavior
|
|
8
|
+
name="eea.side_nav_title"
|
|
9
|
+
title="EEA Side Navigation title"
|
|
10
|
+
description="Used by the side navigation block"
|
|
11
|
+
provides=".sidenavigation.IEEASideNavTitle"
|
|
12
|
+
/>
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
</configure>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""Side navigation behaviors"""
|
|
2
|
+
from plone.app.dexterity import _
|
|
3
|
+
from plone.autoform.interfaces import IFormFieldProvider
|
|
4
|
+
from plone.supermodel import model
|
|
5
|
+
from zope.interface import provider
|
|
6
|
+
from zope.schema import TextLine
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@provider(IFormFieldProvider)
|
|
10
|
+
class IEEASideNavTitle(model.Schema):
|
|
11
|
+
"""Behavior interface to set a title for the side navigation."""
|
|
12
|
+
|
|
13
|
+
side_nav_title = TextLine(title=_("Side Navigation title"), required=False)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<configure
|
|
2
|
+
xmlns="http://namespaces.zope.org/zope"
|
|
3
|
+
xmlns:zcml="http://namespaces.zope.org/zcml"
|
|
4
|
+
>
|
|
5
|
+
<configure zcml:condition="installed AccessControl.security">
|
|
6
|
+
<permission
|
|
7
|
+
id="eea.blocks.manageRestrictedBlocks"
|
|
8
|
+
title="EEA: Manage restricted blocks"
|
|
9
|
+
/>
|
|
10
|
+
</configure>
|
|
11
|
+
|
|
12
|
+
</configure>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
""" block-related utils """
|
|
2
|
+
|
|
3
|
+
from plone import api
|
|
4
|
+
from plone.restapi.behaviors import IBlocks
|
|
5
|
+
from plone.restapi.interfaces import IBlockFieldSerializationTransformer
|
|
6
|
+
from zope.component import adapter
|
|
7
|
+
from zope.interface import implementer
|
|
8
|
+
from zope.publisher.interfaces.browser import IBrowserRequest
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@implementer(IBlockFieldSerializationTransformer)
|
|
12
|
+
@adapter(IBlocks, IBrowserRequest)
|
|
13
|
+
class RestrictedBlockSerializationTransformer:
|
|
14
|
+
"""Restricted Block serialization"""
|
|
15
|
+
|
|
16
|
+
order = 9999
|
|
17
|
+
block_type = None
|
|
18
|
+
|
|
19
|
+
def __init__(self, context, request):
|
|
20
|
+
self.context = context
|
|
21
|
+
self.request = request
|
|
22
|
+
|
|
23
|
+
def __call__(self, value):
|
|
24
|
+
restrictedBlock = value.get("restrictedBlock", False)
|
|
25
|
+
if not restrictedBlock:
|
|
26
|
+
return value
|
|
27
|
+
if restrictedBlock and api.user.has_permission(
|
|
28
|
+
'EEA: Manage restricted blocks', obj=self.context):
|
|
29
|
+
return value
|
|
30
|
+
return {
|
|
31
|
+
"@type": "empty"
|
|
32
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<configure xmlns="http://namespaces.zope.org/zope" xmlns:plone="http://namespaces.plone.org/plone">
|
|
2
|
+
<include package="plone.restapi" />
|
|
3
|
+
<include package=".deserializer" />
|
|
4
|
+
<include package=".navigation" />
|
|
5
|
+
<include package=".serializer" />
|
|
6
|
+
<include package=".services" />
|
|
7
|
+
|
|
8
|
+
<!-- Serializations -->
|
|
9
|
+
<subscriber
|
|
10
|
+
provides="plone.restapi.interfaces.IBlockFieldSerializationTransformer"
|
|
11
|
+
factory=".blocks.RestrictedBlockSerializationTransformer" />
|
|
12
|
+
|
|
13
|
+
</configure>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""RestAPI serializer"""
|
{eea.volto.policy-5.0 → eea.volto.policy-5.2}/eea/volto/policy/restapi/serializer/dxfields.py
RENAMED
|
@@ -4,10 +4,13 @@ from plone.app.dexterity.behaviors.metadata import IPublication
|
|
|
4
4
|
from plone.dexterity.interfaces import IDexterityContent
|
|
5
5
|
from plone.restapi.interfaces import IFieldSerializer
|
|
6
6
|
from plone.restapi.serializer.dxfields import DefaultFieldSerializer
|
|
7
|
+
from plone.restapi.serializer.dxfields import DefaultPrimaryFieldTarget
|
|
8
|
+
from plone.namedfile.interfaces import INamedFileField
|
|
7
9
|
from zope.component import adapter
|
|
8
10
|
from zope.interface import implementer
|
|
9
11
|
from zope.schema.interfaces import IDatetime
|
|
10
12
|
|
|
13
|
+
|
|
11
14
|
from eea.volto.policy.interfaces import IEeaVoltoPolicyLayer
|
|
12
15
|
try:
|
|
13
16
|
from eea.coremetadata.metadata import ICoreMetadata
|
|
@@ -34,3 +37,12 @@ class DateTimeFieldSerializer(DefaultFieldSerializer):
|
|
|
34
37
|
# timezone
|
|
35
38
|
return getattr(self.context, self.field.__name__)()
|
|
36
39
|
return value
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@adapter(INamedFileField, IDexterityContent, IEeaVoltoPolicyLayer)
|
|
43
|
+
class EEAPrimaryFileFieldTarget(DefaultPrimaryFieldTarget):
|
|
44
|
+
""" EEAPrimaryFileFieldTarget adapter of PrimaryFileFieldTarget
|
|
45
|
+
"""
|
|
46
|
+
def __call__(self):
|
|
47
|
+
if self.field.__name__ == 'file':
|
|
48
|
+
return
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""RestAPI services"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
""" RestAPI context navigation services """
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<configure
|
|
2
|
+
xmlns="http://namespaces.zope.org/zope"
|
|
3
|
+
xmlns:plone="http://namespaces.plone.org/plone"
|
|
4
|
+
>
|
|
5
|
+
|
|
6
|
+
<adapter
|
|
7
|
+
factory=".get.EEAContextNavigation"
|
|
8
|
+
name="contextnavigation"
|
|
9
|
+
/>
|
|
10
|
+
|
|
11
|
+
<plone:service
|
|
12
|
+
method="GET"
|
|
13
|
+
factory=".get.EEAContextNavigationGet"
|
|
14
|
+
for="zope.interface.Interface"
|
|
15
|
+
permission="zope2.View"
|
|
16
|
+
name="@contextnavigation"
|
|
17
|
+
layer="plone.restapi.interfaces.IPloneRestapiLayer"
|
|
18
|
+
/>
|
|
19
|
+
|
|
20
|
+
</configure>
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
"""EEA Context Navigation"""
|
|
2
|
+
|
|
3
|
+
from zope.component import getUtility
|
|
4
|
+
from zope.component import adapter
|
|
5
|
+
from zope.schema.interfaces import IFromUnicode
|
|
6
|
+
from zope.interface import implementer
|
|
7
|
+
from zope.interface import Interface
|
|
8
|
+
from Products.CMFPlone.utils import normalizeString
|
|
9
|
+
from plone.app.layout.navigation.root import getNavigationRoot
|
|
10
|
+
from plone.app.dexterity import _
|
|
11
|
+
from plone.restapi.services.contextnavigation import get as original_get
|
|
12
|
+
from plone.restapi.interfaces import IExpandableElement, IPloneRestapiLayer
|
|
13
|
+
from plone.registry.interfaces import IRegistry
|
|
14
|
+
from plone.restapi import bbb as restapi_bbb
|
|
15
|
+
from plone.restapi.bbb import safe_hasattr
|
|
16
|
+
from plone import schema
|
|
17
|
+
from plone import api
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class IEEANavigationPortlet(original_get.INavigationPortlet):
|
|
21
|
+
"""Custom schema for navigation portlet"""
|
|
22
|
+
|
|
23
|
+
portal_type = schema.Tuple(
|
|
24
|
+
title=_("Displayed content types"),
|
|
25
|
+
description=_("The content types that should be shown in the navigati"
|
|
26
|
+
"on"),
|
|
27
|
+
required=False,
|
|
28
|
+
default=(),
|
|
29
|
+
missing_value=(),
|
|
30
|
+
value_type=schema.Choice(
|
|
31
|
+
source="plone.app.vocabularies.ReallyUserFriendlyTypes"
|
|
32
|
+
),
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class IEEAContextNavigationSchema(restapi_bbb.INavigationSchema):
|
|
37
|
+
"""Custom schema for context navigation"""
|
|
38
|
+
|
|
39
|
+
side_nav_types = schema.Tuple(
|
|
40
|
+
title=_("Displayed content types within the side navigation"),
|
|
41
|
+
description=_("The content types that should be shown in the "
|
|
42
|
+
"side navigation"),
|
|
43
|
+
required=False,
|
|
44
|
+
default=("Document",),
|
|
45
|
+
missing_value=(),
|
|
46
|
+
value_type=schema.Choice(
|
|
47
|
+
source="plone.app.vocabularies.ReallyUserFriendlyTypes"
|
|
48
|
+
),
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
restapi_bbb.INavigationSchema = IEEAContextNavigationSchema
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def eea_extract_data(_obj_schema, raw_data, prefix):
|
|
56
|
+
"""Custom extract data function for navigation portlet"""
|
|
57
|
+
obj_schema = IEEANavigationPortlet
|
|
58
|
+
obj_schema_names = list(obj_schema)
|
|
59
|
+
data = original_get.Data({})
|
|
60
|
+
for name in obj_schema_names:
|
|
61
|
+
field = obj_schema[name]
|
|
62
|
+
raw_value = raw_data.get(prefix + name, field.default)
|
|
63
|
+
|
|
64
|
+
if isinstance(field, schema.Tuple):
|
|
65
|
+
value = raw_value.split(',') if ',' in raw_value else raw_value
|
|
66
|
+
else:
|
|
67
|
+
value = IFromUnicode(field).fromUnicode(raw_value)
|
|
68
|
+
|
|
69
|
+
data[name] = value
|
|
70
|
+
|
|
71
|
+
return data
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class EEAContextNavigationQueryBuilder(original_get.QueryBuilder):
|
|
75
|
+
"""Custom QueryBuilder for context navigation"""
|
|
76
|
+
|
|
77
|
+
def getSideNavTypes(self, context):
|
|
78
|
+
"""Get the side navigation types"""
|
|
79
|
+
registry = getUtility(IRegistry)
|
|
80
|
+
return registry.get("plone.side_nav_types", ())
|
|
81
|
+
|
|
82
|
+
def __init__(self, context, data):
|
|
83
|
+
super().__init__(context, data)
|
|
84
|
+
|
|
85
|
+
depth = data.bottomLevel
|
|
86
|
+
|
|
87
|
+
if depth == 0:
|
|
88
|
+
depth = 999
|
|
89
|
+
|
|
90
|
+
root = original_get.get_root(context, data.root_path)
|
|
91
|
+
if root is not None:
|
|
92
|
+
rootPath = "/".join(root.getPhysicalPath())
|
|
93
|
+
else:
|
|
94
|
+
rootPath = getNavigationRoot(context)
|
|
95
|
+
|
|
96
|
+
# EEA modification to always use the rootPath for query
|
|
97
|
+
self.query["path"] = {"query": rootPath, "depth": depth,
|
|
98
|
+
"navtree": 1}
|
|
99
|
+
|
|
100
|
+
self.query["portal_type"] = data.portal_type or self.getSideNavTypes(
|
|
101
|
+
context)
|
|
102
|
+
|
|
103
|
+
topLevel = data.topLevel
|
|
104
|
+
if topLevel and topLevel > 0:
|
|
105
|
+
# EEA modification to use bottomLevel for depth of navtree_start
|
|
106
|
+
self.query["path"]["navtree_start"] = depth
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
original_get.QueryBuilder = EEAContextNavigationQueryBuilder
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class EEANavigationPortletRenderer(original_get.NavigationPortletRenderer):
|
|
113
|
+
"""Custom NavigationPortletRenderer for context navigation"""
|
|
114
|
+
|
|
115
|
+
def render(self):
|
|
116
|
+
"""Render the navigation portlet"""
|
|
117
|
+
res = {
|
|
118
|
+
"title": self.title(),
|
|
119
|
+
"url": self.heading_link_target(),
|
|
120
|
+
"has_custom_name": bool(self.hasName()),
|
|
121
|
+
"items": [],
|
|
122
|
+
"available": self.available,
|
|
123
|
+
}
|
|
124
|
+
if not res["available"]:
|
|
125
|
+
return res
|
|
126
|
+
|
|
127
|
+
if self.include_top():
|
|
128
|
+
root = self.navigation_root()
|
|
129
|
+
root_is_portal = self.root_is_portal()
|
|
130
|
+
|
|
131
|
+
if root is None:
|
|
132
|
+
root = self.urltool.getPortalObject()
|
|
133
|
+
root_is_portal = True
|
|
134
|
+
|
|
135
|
+
if safe_hasattr(self.context, "getRemoteUrl"):
|
|
136
|
+
root_url = root.getRemoteUrl()
|
|
137
|
+
else:
|
|
138
|
+
root_url = original_get.get_url(root)
|
|
139
|
+
|
|
140
|
+
root_title = "Home" if root_is_portal else \
|
|
141
|
+
root.pretty_title_or_id()
|
|
142
|
+
root_type = (
|
|
143
|
+
"plone-site"
|
|
144
|
+
if root_is_portal
|
|
145
|
+
else normalizeString(root.portal_type, context=root)
|
|
146
|
+
)
|
|
147
|
+
normalized_id = normalizeString(root.Title(), context=root)
|
|
148
|
+
|
|
149
|
+
if root_is_portal:
|
|
150
|
+
state = ""
|
|
151
|
+
else:
|
|
152
|
+
state = api.content.get_state(root)
|
|
153
|
+
|
|
154
|
+
res["items"].append(
|
|
155
|
+
{
|
|
156
|
+
"@id": root.absolute_url(),
|
|
157
|
+
"description": root.Description() or "",
|
|
158
|
+
"href": root_url,
|
|
159
|
+
"icon": "",
|
|
160
|
+
"is_current": bool(self.root_item_class()),
|
|
161
|
+
"is_folderish": True,
|
|
162
|
+
"is_in_path": True,
|
|
163
|
+
"items": [],
|
|
164
|
+
"normalized_id": normalized_id,
|
|
165
|
+
"thumb": "",
|
|
166
|
+
# set title to side_nav_title if available
|
|
167
|
+
"title": getattr(root, "side_nav_title", root_title),
|
|
168
|
+
"type": root_type,
|
|
169
|
+
"review_state": state,
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
res["items"].extend(self.createNavTree())
|
|
174
|
+
|
|
175
|
+
return res
|
|
176
|
+
|
|
177
|
+
def recurse(self, children, level, bottomLevel):
|
|
178
|
+
"""Recurse through the navigation tree"""
|
|
179
|
+
res = []
|
|
180
|
+
|
|
181
|
+
show_thumbs = not self.data.no_thumbs
|
|
182
|
+
show_icons = not self.data.no_icons
|
|
183
|
+
|
|
184
|
+
thumb_scale = self.thumb_scale()
|
|
185
|
+
|
|
186
|
+
for node in children:
|
|
187
|
+
brain = node["item"]
|
|
188
|
+
|
|
189
|
+
icon = ""
|
|
190
|
+
|
|
191
|
+
if show_icons:
|
|
192
|
+
if node["portal_type"] == "File":
|
|
193
|
+
icon = self.getMimeTypeIcon(node)
|
|
194
|
+
|
|
195
|
+
has_thumb = brain.getIcon
|
|
196
|
+
thumb = ""
|
|
197
|
+
|
|
198
|
+
if show_thumbs and has_thumb and thumb_scale:
|
|
199
|
+
thumb = "{}/@@images/image/{}".format(
|
|
200
|
+
node["item"].getURL(), thumb_scale
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
show_children = node["show_children"]
|
|
204
|
+
item_remote_url = node["getRemoteUrl"]
|
|
205
|
+
use_remote_url = node["useRemoteUrl"]
|
|
206
|
+
item_url = node["getURL"]
|
|
207
|
+
item = {
|
|
208
|
+
"@id": item_url,
|
|
209
|
+
"description": node["Description"],
|
|
210
|
+
"href": item_remote_url if use_remote_url else item_url,
|
|
211
|
+
"icon": icon,
|
|
212
|
+
"is_current": node["currentItem"],
|
|
213
|
+
"is_folderish": node["show_children"],
|
|
214
|
+
"is_in_path": node["currentParent"],
|
|
215
|
+
"items": [],
|
|
216
|
+
"normalized_id": node["normalized_id"],
|
|
217
|
+
"review_state": node["review_state"] or "",
|
|
218
|
+
"thumb": thumb,
|
|
219
|
+
"title": node.get("side_nav_title", node["Title"]),
|
|
220
|
+
"type": node["normalized_portal_type"],
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if node.get("nav_title", False):
|
|
224
|
+
item.update({"title": node["nav_title"]})
|
|
225
|
+
|
|
226
|
+
if node.get("side_nav_title", False):
|
|
227
|
+
item.update({"side_nav_title": node["side_nav_title"]})
|
|
228
|
+
|
|
229
|
+
nodechildren = node["children"]
|
|
230
|
+
|
|
231
|
+
if (nodechildren and show_children and
|
|
232
|
+
((level <= bottomLevel) or (bottomLevel == 0))):
|
|
233
|
+
item["items"] = self.recurse(
|
|
234
|
+
nodechildren, level=level + 1, bottomLevel=bottomLevel
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
res.append(item)
|
|
238
|
+
|
|
239
|
+
return res
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
@implementer(IExpandableElement)
|
|
243
|
+
@adapter(Interface, IPloneRestapiLayer)
|
|
244
|
+
class EEAContextNavigation:
|
|
245
|
+
"""Custom context navigation"""
|
|
246
|
+
def __init__(self, context, request):
|
|
247
|
+
self.context = context
|
|
248
|
+
self.request = request
|
|
249
|
+
|
|
250
|
+
def __call__(self, expand=False, prefix="expand.contextnavigation."):
|
|
251
|
+
result = {
|
|
252
|
+
"contextnavigation": {
|
|
253
|
+
"@id": f"{self.context.absolute_url()}/@contextnavigation"
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
if not expand:
|
|
257
|
+
return result
|
|
258
|
+
print("REQUEST FORM", self.request.form)
|
|
259
|
+
data = eea_extract_data(
|
|
260
|
+
IEEANavigationPortlet,
|
|
261
|
+
self.request.form,
|
|
262
|
+
prefix)
|
|
263
|
+
renderer = EEANavigationPortletRenderer(
|
|
264
|
+
self.context, self.request, data)
|
|
265
|
+
res = renderer.render()
|
|
266
|
+
result["contextnavigation"].update(res)
|
|
267
|
+
return result
|
|
268
|
+
|
|
269
|
+
def getNavTree(self):
|
|
270
|
+
""" getNavTree"""
|
|
271
|
+
# compatibility method with NavigationPortletRenderer, only for tests
|
|
272
|
+
return self.__call__(expand=True)["contextnavigation"]
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
class EEAContextNavigationGet(original_get.ContextNavigationGet):
|
|
276
|
+
"""Custom ContextNavigationGet for context navigation"""
|
|
277
|
+
|
|
278
|
+
def reply(self):
|
|
279
|
+
"""Reply with context navigation"""
|
|
280
|
+
navigation = EEAContextNavigation(self.context, self.request)
|
|
281
|
+
return navigation(expand=True, prefix="expand.contextnavigation.")[
|
|
282
|
+
"contextnavigation"
|
|
283
|
+
]
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
class EEANavtreeStrategy(original_get.NavtreeStrategy):
|
|
287
|
+
"""Custom NavtreeStrategy for context navigation"""
|
|
288
|
+
|
|
289
|
+
def decoratorFactory(self, node):
|
|
290
|
+
"""Decorate the navigation tree"""
|
|
291
|
+
new_node = super().decoratorFactory(node)
|
|
292
|
+
if getattr(new_node["item"], "side_nav_title", False):
|
|
293
|
+
new_node["side_nav_title"] = new_node["item"].side_nav_title
|
|
294
|
+
return new_node
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
# Monkey patch the original NavtreeStrategy
|
|
298
|
+
original_get.NavtreeStrategy = EEANavtreeStrategy
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5.2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: eea.volto.policy
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.2
|
|
4
4
|
Summary: An add-on for Plone
|
|
5
5
|
Home-page: https://github.com/eea/eea.volto.policy
|
|
6
6
|
Author: European Environment Agency: IDM2 A-Team
|
|
@@ -128,6 +128,20 @@ EEA_ - European Environment Agency (EU)
|
|
|
128
128
|
Changelog
|
|
129
129
|
=========
|
|
130
130
|
|
|
131
|
+
5.2 - (2024-08-19)
|
|
132
|
+
---------------------------
|
|
133
|
+
* Feature: Check for permissions when serializing restricted blocks
|
|
134
|
+
[razvanMiu - refs #273963]
|
|
135
|
+
* Feature: Customized context navigation endpoint to filter portal_type
|
|
136
|
+
[ichim-david - refs #270999]
|
|
137
|
+
* Fix: Depth of context navigation endpoint by passing depth parameter
|
|
138
|
+
[ichim-david - refs #270999]
|
|
139
|
+
|
|
140
|
+
5.1 - (2024-07-22)
|
|
141
|
+
---------------------------
|
|
142
|
+
* Change: Release
|
|
143
|
+
[avoinea]
|
|
144
|
+
|
|
131
145
|
5.0 - (2024-06-11)
|
|
132
146
|
---------------------------
|
|
133
147
|
* Breaking: Requires `plone.volto >= 4.1.0`
|
|
@@ -20,11 +20,13 @@ eea/volto/policy/__init__.py
|
|
|
20
20
|
eea/volto/policy/configure.zcml
|
|
21
21
|
eea/volto/policy/interfaces.py
|
|
22
22
|
eea/volto/policy/overrides.zcml
|
|
23
|
+
eea/volto/policy/permissions.zcml
|
|
23
24
|
eea/volto/policy/profiles.zcml
|
|
24
25
|
eea/volto/policy/setuphandlers.py
|
|
25
26
|
eea/volto/policy/version.txt
|
|
26
27
|
eea/volto/policy/behaviors/__init__.py
|
|
27
28
|
eea/volto/policy/behaviors/configure.zcml
|
|
29
|
+
eea/volto/policy/behaviors/sidenavigation.py
|
|
28
30
|
eea/volto/policy/browser/__init__.py
|
|
29
31
|
eea/volto/policy/browser/configure.zcml
|
|
30
32
|
eea/volto/policy/browser/teaser.py
|
|
@@ -169,8 +171,10 @@ eea/volto/policy/profiles/default/catalog.xml
|
|
|
169
171
|
eea/volto/policy/profiles/default/contentrules.xml
|
|
170
172
|
eea/volto/policy/profiles/default/metadata.xml
|
|
171
173
|
eea/volto/policy/profiles/default/registry.xml
|
|
174
|
+
eea/volto/policy/profiles/default/registry/side_nav_types.xml
|
|
172
175
|
eea/volto/policy/profiles/uninstall/browserlayer.xml
|
|
173
176
|
eea/volto/policy/restapi/__init__.py
|
|
177
|
+
eea/volto/policy/restapi/blocks.py
|
|
174
178
|
eea/volto/policy/restapi/configure.zcml
|
|
175
179
|
eea/volto/policy/restapi/deserializer/__init__.py
|
|
176
180
|
eea/volto/policy/restapi/deserializer/configure.zcml
|
|
@@ -181,6 +185,11 @@ eea/volto/policy/restapi/serializer/__init__.py
|
|
|
181
185
|
eea/volto/policy/restapi/serializer/configure.zcml
|
|
182
186
|
eea/volto/policy/restapi/serializer/dxfields.py
|
|
183
187
|
eea/volto/policy/restapi/serializer/summary.py
|
|
188
|
+
eea/volto/policy/restapi/services/__init__.py
|
|
189
|
+
eea/volto/policy/restapi/services/configure.zcml
|
|
190
|
+
eea/volto/policy/restapi/services/contextnavigation/__init__.py
|
|
191
|
+
eea/volto/policy/restapi/services/contextnavigation/configure.zcml
|
|
192
|
+
eea/volto/policy/restapi/services/contextnavigation/get.py
|
|
184
193
|
eea/volto/policy/tests/__init__.py
|
|
185
194
|
eea/volto/policy/tests/base.py
|
|
186
195
|
eea/volto/policy/tests/test_doctests.py
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
5.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|