MenusPlugin
Description
- add items to navigation menus
- hierachical organization(using Superfish - http://users.tpg.com.au/j_birch/plugins/superfish/ )
PS: - CSS work might be needed to fit your trac theme.
Demo
See it in action: http://code.optaros.com/trac/oforge/
Bugs/Feature Requests
Existing bugs and feature requests for MenusPlugin are here.
If you have any issues, create a new ticket.
Download, Source
Download the zipped source, check out MenusPlugin from here using Subversion, or browse the source with Trac.
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] section
So here come the available properties and their possible values:
Property | Description | Example value |
parent | Make the item a sub-item to the one mentioned as value | top |
label | What should be written on the "button" | Team Tools |
href | Where the item should link to | /report/1 |
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 |
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 |
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 |
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 |
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:
... [components] tracmenus.* = enabled [mainnav] # Create a new top-level element for "Team Tools" - make sure to set it to "enabled" or it doesn't show up! teamtools = enabled teamtools.parent = top teamtools.label = Team Tools # Do not display this menu if it has no children (e.g. visitor has no permission to any) teamtools.hide_if_no_children = 1 # Now add the discussion plugin here discussion = enabled discussion.parent = teamtools # Add the worklog here as well worklog.parent = teamtools # Add more things... ... # rename "Browse Source" to "Code" browser.label = Code # Add some entry points to the code browser code_trunk = enabled code_trunk.parent=browser code_trunk.href=/browser/trunk code_trunk.label=Trunk # this is no component - so to hide it if not available, we need a trick code_trunk.perm = BROWSER_VIEW # Add some reports to the ticket item special_report = enabled special_report.parent=tickets special_report.href=/report/7 special_report.label=My Tickets # same trick as above required here special_report.perm=REPORT_VIEW # Some more things wiki.parent=top browser.parent=top # unassigned is a reserved keyword: # - if present, all other items not specified in config section will appear as sub-items under unassigned item. # - if not present, all other items will appear as top items. unassigned = enabled unassigned.href=/wiki unassigned.label=Tools ... # Make sure the Wiki is always the first item - and Admin always the last: wiki.order = -999999 admin.order = 999999
Screenshots
Recent Changes
[5046] by cbalan on 12/22/08 14:13:56
MenusPlugin: - Applied #4264 patch. Thank you Izzy
[5035] by cbalan on 12/20/08 18:45:53
MenusPlugin: - Replaced 'hide_if_disabled' with 'enabled'. Checkout documentation for more details. refs #4280
[5033] by cbalan on 12/19/08 14:35:29
MenusPlugin: - Setting default href='#'. refs #4264
[5021] by cbalan on 12/16/08 19:47:17
MenusPlugin: - More trac-alike look thanks to Izzy. refs #4290 #4264 #4274
Author/Contributors
Attachments
- menusplugin.png (71.6 kB) - added by cbalan on 12/16/08 19:53:03.