= Hierarchical navigation menus = [[PageOutline(2-5,Contents,pullout)]] == Description == With release 0.11, Trac allows existing items to be [http://trac.edgewall.org/wiki/TracNavigation customized] on the main and meta navigation bars. This plugin extends that functionality to: * Add items to navigation menus * Hierachical organization (using [http://users.tpg.com.au/j_birch/plugins/superfish/ 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 [query:status!=closed&component=MenusPlugin&order=priority here]. All bugs and feature requests (open and closed) for MenusPlugin are [query:component=MenusPlugin&order=priority here]. If you have any issues, create a [/newticket?component=MenusPlugin&owner=cbalan new ticket]. == Download, Source == Download the [download:menusplugin zipped source], check out MenusPlugin [/svn/menusplugin from here using Subversion], or [source:menusplugin browse the source] with Trac. == Installation == 1. Install the plugin following the steps in the [http://trac.edgewall.org/wiki/TracPlugins#InstallingaTracPlugin Trac Documentation]. 1. Add '''tracmenus.* = enabled''' to the `[components]` section of ''trac.ini'' or enable via !WebAdmin. 1. Restart the Trac server. 1. Proceed to the [#Configuration 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 [#Example 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 == [http://code.optaros.com/trac/oforge/ 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 == [[Image(menusplugin.png, width=500)]] == Recent Changes == [[ChangeLog(menusplugin, 3)]] == Author/Contributors == '''Author:''' [wiki:cbalan] [[BR]] '''Maintainer:''' [wiki:cbalan] [[BR]] '''Contributors:''' [wiki:izzy]
E-mail address and name can be saved in the Preferences.
Download all attachments as: .zip