mod_admin_frontend
Adds editing of resources, menu-trees and collections for non-admin users.
With many sites it is needed to let “normal” users edit content. For those users the /admin
interface is
overwhelming and also gives too many options that only administrators should be using.
For this use-case the mod_admin_frontend is created. It reuses some templates and parts of the normal admin, but in such a way that only the most needed options and fields are present. It also enables editing a menu-tree or collection, side-by-side with the content in the menu-tree.
Interface and dispatching
The interface is a one-page interface which uses postbacks to update the currently edited resource and forms. The editing history is maintained by using hashes in the url.
The URL of the edit page is generated by the dispatch rule admin_frontend_edit
:
[
{admin_frontend_edit, ["edit"], controller_page, [{acl, is_auth}, {template, "page_admin_frontend_edit.tpl"}]},
{admin_frontend_edit, ["edit", id], controller_page, [{acl_action, edit}, {template, {cat, "page_admin_frontend_edit.tpl"}}]}
].
The template uses the menu_rsc
filter to find the contextual menu for the resource being edited. Per default the menu_rsc
filter will fallback to the resource with the name main_menu
. Hook into the #menu_rsc{}
notification to change this behavior.
To edit a specific resource in the context of a menu that is non-standard for the resource, use the following code:
<a href="{% url admin_frontend_edit id=my_menu %}#edit_id={{ id }}">Click to edit {{ id.title }}</a>
Customizing and templates
The mod_admin_frontend
makes heavy use of catinclude
to find the correct templates.
The column with the menu is rendered using {% catinclude "_admin_menu_menu_view.tpl" tree_id ... %}
.
The resource-column with the main editing form is rendered using {% catinclude "_admin_frontend_edit.tpl" id ... %}
. This column is loaded lazily via a postback.
Customizing the menu column
Extra content can be added above or below the menu view by overruling the blocks above_menu
and below_menu
.
Customizing the main edit column
The main edit template _admin_frontend_edit.tpl
provides the main edit-form, javascript initializations and fields for basic publication status editing.
The main edit block edit_blocks
is defined as follows and can be overruled for specific categories:
{% block edit_blocks %}
{% catinclude "_admin_edit_basics.tpl" id is_editable=is_editable languages=languages %}
{% if id.category_id.feature_show_address %}
{% catinclude "_admin_edit_content_address.tpl" id is_editable=is_editable languages=languages %}
{% endif %}
{% all catinclude "_admin_edit_content.tpl" id is_editable=is_editable languages=languages %}
{% if id.is_a.media or id.medium %}
{% include "_admin_edit_content_media.tpl" %}
{% endif %}
{% catinclude "_admin_edit_body.tpl" id is_editable=is_editable languages=languages %}
{% catinclude "_admin_edit_blocks.tpl" id is_editable=is_editable languages=languages %}
{% catinclude "_admin_edit_depiction.tpl" id is_editable=is_editable languages=languages %}
{% endblock %}
If any content needs to be added on top of the page, between the publication checkbox and the main edit fields, then overrule the block meta_data_after
.
If you click on the cog icon on the right, then a meta data panel is shown (for access-control options and language settings).
This panel can be extended with extra tabs using the blocks meta_tabs
and meta_panels
.