Customizable secondary navigation
Status: Evaluation
1. Introduction
- customizable secondary navigation (Menu) out of the box apart from the so called bookmarks
- most users won't fiddle with the theme to create their own navigation, see theme section
- there is already the
menu_tag
for this purpose, shorter (usually) version of headline for use in menus - the session contains the general menu and the user menu (also called bookmarks), it is up to the theme how they are used
The table menu determines the menu via the user_id and the language.
The language field was important prior to the use of Unicode, currently it is only used to show the default menu according the supported browser language for guests.
To add the possibility to add more than one menu per user it requires an additional identifier and a descriptor.
- user -> [menu]
- user_id
- system -> [menu_default]
- user_id (system_user_id) + lang
The user can create or select the menu via a drop-down in the menu tab, each menu should given a unique name.
How it should ensure that the user and default bookmarks are always recognized as such.
- reserved keyword as name or predefined flag
menu session identifier
- bookmarks
- custom menu
So only menus used throughout the entire wiki should be put in the session. (?)
2. Implementation
database, functions, actions, handler, session, installer, theme
2.1. Database Changes
Add a unique menu_id for each menu.
- menu
- menu_id
- name (unique tag)
- description (optional, e.g. Introduction Course)
- user_id
- menu_lang
- flag [default bookmarks]
- menu_item
- menu_item_id
- menu_id
- page_id
- menu_title
- menu_position
The menu name tag can be either set individual or set automatically, 'menu' . $++
- e.g.
{{navigation menu="menu5"}}
using cluster and$this->tag
for context - if the menu name should be used as selector it must be unique
Installer
- adapt
Upgrade
- split menu table into
menu
andmenu_item
The custom menu can be used for example as data source for chapter navigation or additional menus.
3. Display
menu as
- list
- dropdown (
<select>
)
4. Future Ideas
5. See also
6. Feedback
- Please provide feedback