{% ckan_extends %} {# Adds Actors/Contact points as proper tabs inside CKAN's own Administration area (/ckan-admin), alongside core's Sysadmins/Config/ Trash tabs -- the current (CKAN 2.11+) recommended pattern for a plugin to integrate with /ckan-admin (the older, programmatic toolkit.add_ckan_admin_tab() helper was removed in 2.11). See docs/I18N_PLAN.md for the research/sources behind this. {{ super() }} + append is the safe case of the {{ super() }} CSS-scoping fallgrop documented in claude-session-konventioner.md: core's content_primary_nav block is a flat list of build_nav_icon() calls, nothing nested to land inside of. The main site header (ckanext-skelleftea's header.html) still has its own shortcuts to these same pages too, deliberately, for now -- Björn asked to keep both in parallel while testing, so they're already both in place and either can be removed independently whenever ready. #} {# 2026-10-04: the registry's public pages (a publisher, a contact point) also use this layout, so core's tabs (Sysadmins, Config, Trash) are shown only to sysadmins, and the registry's own tabs only to logged-in users; a visitor who is not logged in sees no tabs at all. #} {% block page_header %}{% if c.userobj %}{{ super() }}{% endif %}{% endblock %} {% block content_primary_nav %} {% if c.userobj and c.userobj.sysadmin %}{{ super() }}{% endif %} {% if c.userobj %} {{ h.build_nav_icon('actor_registry.actors_index', _('Publishers'), icon='building') }} {{ h.build_nav_icon('actor_registry.contactpoints_index', _('Contact points'), icon='address-book') }} {% if h.actor_registry_can_migrate() %}{{ h.build_nav_icon('actor_registry.migrate_index', _('Migration'), icon='right-left') }}{{ h.build_nav_icon('actor_registry.cleanup_index', _('Cleanup'), icon='broom') }}{% endif %} {% endif %} {% endblock %}