Changes between Version 2 and Version 3 of TracNavigation


Ignore:
Timestamp:
Mar 23, 2023, 6:44:37 AM (20 months ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracNavigation

    v2 v3  
    1 = Trac Navigation =
     1= Trac Navigation
    22
    3 Starting with Trac 0.11, it is now possible to customize the main and meta navigation entries in some basic ways.
     3The main and meta navigation entries can be customized in several ways. The `[mainnav]` and `[metanav]` configuration sections can be used to customize the navigation item text and link, change the ordering of the navigation items, disable them and add new ones.
    44
    5 The new `[mainnav]` and `[metanav]` configuration sections can now be used to customize the text and link used for the navigation items, or even to disable them.  The `mainnav` and `metanav` options in the `[trac]` configuration section can also be used to change the order.
     5The primary attributes that can be customized are `href`, `label`, `order` and `permission`.
    66
    77=== `[mainnav]` #mainnav-bar
     
    99
    1010
    11 ** [=#Example Example] ** 
     11** [=#Example Example] **
    1212
    13 In the following example, we rename the link to the Wiki start "Home", and make the "View Tickets" entry link to a specific report.  The second example (below) also hides the "!Help/Guide" link.
    14 
    15 Relevant excerpt from the TracIni:
    16 {{{
     13In the following example we rename the link to WikiStart //Home//, and make the //View Tickets// entry link to a specific report.
     14{{{#!ini
    1715[mainnav]
    1816wiki.label = Home
     
    2018}}}
    2119
     20Note the entries on the main navigation are displayed in uppercase regardless of the casing of the `label`, unless this aspect of the styling is overridden through [TracInterfaceCustomization#SiteAppearance interface customization].
     21
    2222=== `[metanav]` #metanav-bar
    23 `[metanav]` corresponds to the '''meta navigation bar''', by default positioned above the main navigation bar and below the ''Search'' box. It contains the ''Log in'', ''Logout'', ''!Help/Guide'' etc. entries. This navigation bar is meant to access some global information about the Trac project and the current user.
     23`[metanav]` corresponds to the '''meta navigation bar''', by default positioned above the main navigation bar and below the ''Search'' box. It contains the ''Login'', ''Logout'', ''!Help/Guide'' etc. entries. This navigation bar is meant to access some global information about the Trac project and the current user.
    2424
    25 There is one special entry in the  `[metanav]` section: `logout.redirect` is the page the user sees after hitting the logout button.
     25There is one special entry in the  `[metanav]` section: `logout.redirect` is the page the user sees after hitting the logout button.  The ''!Help/Guide'' link is also hidden in the following example.
    2626[[comment(see also #Trac3808)]]
    2727
    28 ** Example ** 
     28** Example **
    2929
    30 {{{
     30{{{#!ini
    3131[metanav]
    3232help = disabled
     
    3434}}}
    3535
     36=== Extra Navigation Entries #nav-extra-entries
    3637
    37 === Notes
    38 Possible URL formats (for `.href` or `.redirect`):
     38New navigation entries can be arbitrarily defined and added
     39to the navigation. A new entry can be defined by providing a name with value `enabled`. At a minimum, the `href` attribute should be specified to define a useful navigation entry. If the `label` attribute is not defined the entry's name will be used for the label.
     40
     41The following example creates two new navigation items, one named //My Reports// and the other named //builds//. //My Reports// is only visible to users with `REPORT_VIEW` permission.
     42{{{#!ini
     43[mainnav]
     44myreports = enabled
     45myreports.href = /report/9
     46myreports.label = My Reports
     47myreports.permission = REPORT_VIEW
     48
     49[metanav]
     50builds = enabled
     51builds.href = https://travis-ci.org/edgewall/trac
     52}}}
     53
     54The entry names are always read as lowercase, as is the case for all keys in the trac.ini file due to the way the configuration parser is configured. If the example above used `BUILDS` rather than `builds` for the name, the entry would still be displayed as `builds`. Use the `label` attribute for case-sensitive customization of the navigation entry text.
     55
     56=== Relocating Entries #nav-relocating-entries
     57
     58Navigation entries provided by Trac and plugins can be moved from the meta navigation bar to the main navigation bar, and vise-versa. The entry should be defined in the desired category as if it was a new entry. For example, to move the //Admin// entry to the metanav and rename it to //Administration//:
     59{{{#!ini
     60[metanav]
     61admin = enabled
     62admin.label = Administration
     63}}}
     64
     65Attributes of the navigation item that are not overridden by the configuration will be preserved.
     66
     67=== URL Formats
     68Possible URL formats for `.href` or `.redirect`:
    3969|| '''config''' || '''redirect to''' ||
    4070|| `wiki/Logout` || `/projects/env/wiki/Logout` ||
     
    4373
    4474
    45 === `[trac]` #nav-order
    46 The `mainnav` and `metanav` options in the `[trac]` configuration section control the order in which the navigation items are displayed (left to right).  This can be useful with plugins that add navigation items.
     75=== Ordering #nav-order
     76The `order` attribute specifies the order in which the navigation items are displayed. This can be particularly useful for plugins that add navigation items.
    4777
    48 ** Example **
     78Non-negative floating point values may be used for the `order` attribute. The navigation items will be arranged from left to right in increasing order. Navigation items without an `order` attribute are sorted alphabetically by name.
    4979
    50 In the following example, we change the order to prioritise the ticket related items further left.
     80The default values are:
     81{{{#!ini
     82[mainnav]
     83browser.order = 4
     84newticket.order = 6
     85roadmap.order = 3
     86search.order = 7
     87tickets.order = 5
     88timeline.order = 2
     89wiki.order = 1
    5190
    52 Relevant excerpt from the TracIni:
    53 {{{
    54 [trac]
    55 mainnav = wiki,tickets,newticket,timeline,roadmap,browser,search,admin
     91[metanav]
     92about.order = 5
     93help.order = 4
     94login.order = 1
     95logout.order = 2
     96prefs.order = 3
    5697}}}
    5798
    58 The default order and item names can be viewed in the [TracIni#trac-section trac section of TracIni].
     99=== Permissions #nav-permissions
     100The `permission` attribute controls the visibility of the navigation item on the navigation bar. This is mainly useful for new entries in the navigation bar. Note that it does not provide access control to the URL that the navigation item directs to, and cannot override permission checks done by Trac and plugins.
     101
     102For example, the //Roadmap// navigation item will only display for users with `ROADMAP_VIEW`. Adding the attribute `roadmap.permission = MILESTONE_VIEW` will require both `ROADMAP_VIEW` and `MILESTONE_VIEW` for the entry to be visible, but as noted will not provide access control for the `/roadmap` path. TracFineGrainedPermissions should be used for access control to modules provided by Trac and plugins.
    59103
    60104=== Context Navigation #ctxtnav-bar
     
    62106Note that it is still not possible to customize the '''contextual navigation bar''', i.e. the one usually placed below the main navigation bar.
    63107
    64 
    65108----
    66 See also: TracInterfaceCustomization, and the [http://trac-hacks.org/wiki/NavAddPlugin TracHacks:NavAddPlugin] or [http://trac-hacks.org/wiki/MenusPlugin TracHacks:MenusPlugin] (still needed for adding entries)
     109See also: TracInterfaceCustomization