Version 33 (modified by 12 years ago) (diff) | ,
---|
Hierarchical navigation menus
Notice: This plugin is unmaintained and available for adoption.
Contents
Description
With release 0.11, Trac allows existing items to be customized on the main and meta navigation bars. This plugin extends that functionality to:
- Add items to navigation menus
- Hierachical organization (using Superfish)
Note: CSS modifications might be needed to fit your Trac theme.
See also: NavAddPlugin, TracTabPlugin.
Demo
See it in action: http://code.optaros.com/trac/oforge/
Bugs/Feature Requests
Existing open bugs and feature requests for MenusPlugin are here. All bugs and feature requests (open and closed) for MenusPlugin are here.
If you have any issues, create a new ticket.
Download, Source
Download the [download:menusplugin zipped source], check out MenusPlugin from here using Subversion, or browse the source with Trac.
Installation
- Install the plugin following the steps in the Trac Documentation.
- Add tracmenus.* = enabled to the
[components]
section of trac.ini or enable via WebAdmin. - Restart the Trac server.
- Proceed to the Configuration section.
Configuration
As usual, configuration takes place in the trac.ini
file. Most interesting things first - they are to be found in the [mainnav]
section: Here you set up your menu items. Syntax is: <item_name>.<property> = <value>
- where <item_name>
is either the already existing handler (e.g. "wiki" for the wiki item, "tickets" for the tickets, "newticket" for the "New Ticket" item, a.s.o.) - or a term which must not exist for a brand new item to be introduced (as e.g. the "Team Tools" in the Examples section). A special case is e.g. top
to make a new item appearing on top level.
Defining your menus in the [mainnav]
and [metanav]
sections
So here come the available properties and their possible values:
Property | Description | Example value |
enabled | Must be set to 1 for self defined items to be shown. Can be set to 0 to (temporarily) disable an item. | 1 |
hide_if_no_children | Don't display this (sub) menu if it has no children (e.g. the current user lacks the privileges for all sub-items) | 1 |
href | Where the item should link to | /report/1 |
label | What should be written on the "button" | Team Tools |
order | Move an item to the left/right. By default, all items have an order of 999 (who will ever reach 999 items must have done something wrong, really!). Use values from 1..999 to define positions. Use a negative value for an item you want to make sure it always comes first - and a value larger than 999 if it sould always come last. | 5 |
parent | Make the item a sub-item to the one mentioned as value | top |
path_info | String to be matched with the request path info to decide whether a menu item should be displayed. Useful for context dependent items (e.g. in the ctxnav) | /wiki |
perm | For items like reports, hide_if_disabled does not work, since this is no component. Though, it should not be displayed if it is not available. So you can handle this by defining the required permission. | REPORT_VIEW |
Menu options
- inherit: Useful when a menu should receive items from another menu
# dummy example - add mainnav items to context menu. [ctxtnav] inherit= mainnav
Defining the behaviour in the [menu-custom]
section
Here you can (re-)define (i.e. customize) the behavior of MenusPlugin. Usually, you won't need that - since the defaults are fine. But in case you need a toy to play with - here we go:
Syntax is quite easy, it's just <option> = <value>
. Available options are:
Option | Description | Default |
managed_menus | Which menus should be maintained by the plugin. | mainnav,metanav |
serve_ui_files | Whether the required UI files (i.e. *.js and *.css files) should be linked into the page. Boolean value. | 1 |
The serve_ui_files
option you will only need to override if you want to apply your own styles and need to suppress the original ones for this. Rare case - but who knows?
Example
Demo config:
[mainnav] tags = disabled search = disabled timeline = disabled home = enabled home.href = / home.label = Home home.parent = top home.order = 10 wiki.label = Wiki wiki.order = 20 wiki_newpage = enabled wiki_newpage.href = /newwikipage wiki_newpage.parent = wiki wiki_newpage.label = New Wiki Page wiki_newpage.order = 1 wiki_titleindex = enabled wiki_titleindex.href = /wiki/TitleIndex wiki_titleindex.label = Wiki Index wiki_titleindex.parent = wiki wiki_titleindex.order = 2 wiki_timeline = enabled wiki_timeline.href = /timeline?wiki=on wiki_timeline.label = Recent Changes wiki_timeline.parent = wiki wiki_timeline.order = 3 ticketgrp = enabled ticketgrp.href = /report ticketgrp.label = Tickets ticketgrp.order = 30 ticketgrp.parent = top tickets.parent = ticketgrp tickets.order = 1 tickets.label = View Reports query = enabled query.href = /query query.label = Custom Query query.parent = ticketgrp query.order = 2 newticket.parent = ticketgrp newticket.order = 3 ticket_defect = enabled ticket_defect.href = /newticket?type=defect ticket_defect.parent = newticket ticket_defect.label = New Defect ticket_defect.order = 1 ticket_enhancement = enabled ticket_enhancement.href = /newticket?type=enhancement ticket_enhancement.parent = newticket ticket_enhancement.label = New Enhancement ticket_enhancement.order = 2 ticket_task = enabled ticket_task.href = /newticket?type=task ticket_task.parent = newticket ticket_task.label = New Task ticket_task.order = 3 ticket_timeline = enabled ticket_timeline.href = /timeline?ticket=on ticket_timeline.label = Recent Changes ticket_timeline.parent = ticketgrp ticket_timeline.order = 4 browsergrp = enabled browsergrp.parent = top browsergrp.href = /browser browsergrp.label = Code browsergrp.order = 40 browser.label = Browse Repository browser.parent = browsergrp browser.order = 10 browser_log = enabled browser_log.label = Revision Log browser_log.href = /log browser_log.parent = browsergrp browser_log.order = 20 browser_timeline = enabled browser_timeline.label = Recent Changes browser_timeline.href = /timeline?changeset=on browser_timeline.parent = browsergrp browser_timeline.order = 30 status.order = 50 tools = enabled tools.href = # tools.label = Team Tools tools.order = 60 tools.parent = top tools.hide_if_no_children = true # tools alfresco.parent = tools continuum.parent = tools irclogs.parent = tools mailarchives.parent = tools pastebin.parent = tools roadmap.parent = status
Screenshots
Recent Changes
- 17580 by rjollos on 2019-11-21 18:23:37
-
TracMenus 0.4.0dev: Bump version after release
Published to pypi:TracMenus.
Fixes #13661.
- 17579 by rjollos on 2019-11-21 18:20:53
-
TracMenus 0.3.0dev: Change name for publishing to PyPI
Refs #13661.
- 17578 by rjollos on 2019-11-21 18:14:13
-
TracMenusPlugin 0.3.0dev: Add
classifiers
metadata
Refs #13661.
(more)
Author/Contributors
Attachments (1)
- menusplugin.png (71.6 KB) - added by 15 years ago.
Download all attachments as: .zip