====== Index Menu Plugin ====== This plugin allows you to insert a customizable index or a list of pages starting from a specified namespace. It should be useful in DokuWiki sites where pages are organized by namespaces. ====== Syntax ====== Arguments inside "[]" parenthesis are optional: ^Main ^Options | |**%%{{%%indexmenu>ns[#n]** [ns1[#n] ns2[#n] ...] |**%%|%%** //[js[#theme]] [tsort] ... //**%%}}%%**| Settings before the "|" separator: ^Main ^Action ^Note| ^ //''ns''// | //**Main namespace**// name. Index starts from it. | "**.**" refers to the namespace of the indexmenu page (**not the current page displayed by a user who is navigating your site**); ".." or an empty value shows the root site namespace; ".:myns" is the myns namespace inside current namespace of the indexmenu page. | ^ //''n''// | It's a number which specifies how many subnamespaces to display. With the //**js**// option it means at which level the tree has to be open| Optional; it can be used together with //**nons**//. If it's not defined then all namespaces are open, if ''0'' or ''1'' they are closed.| ^ //''ns1[#n] %%...%% nsn[#n]''// | A list of optional namespaces inside the //**main namespace**//. Every namespace will be opened or closed at the specified //**n**// level. | Optional. It can be used together with //**nons**//. If **n** is not defined then all namespaces are open, if ''0'' they are closed.| Settings after the "|" separator: ^Option ^Action ^Note| ^ ''js'' | JavaScript render method: the index is an expandable tree menu. | Optional; without //**n**//, all nodes are open, with it, nodes are open till //**n**// level.| ^ ''navbar'' | The tree opens itself automatically at the current page namespace. Useful in a navigation sidebar.| It works with or without //**js**// option. Without //**js**// option, the indexmenu page is never cached (just like as the default DokuWiki index page) so the dokuwiki loading could be slower depending on the amount of child nodes displayed. | ^ ''tsort'' | Sort (only) pages by title. | Useful when [[config:useheading]] is on. See the ''nsort'' option for namespaces sorting. Optional.| ^ ''dsort'' | Sort (only) pages by date creation. | See the ''nsort'' option for namespaces sorting. Optional.| ^ ''msort[#meta]'' | Sort (only) pages by a custom [[:devel:metadata]] information. Without the optional **meta** parameter, it will use the custom sorting number specified with the %%{{indexmenu_n>N}}%% syntax (read below for more info). **meta** should refer to the [[:devel:metadata#data structure]] (Array values are managed through the ":" separator, for example: "msort#date:modified). |You can use the tsort/dsort option together with msort in order to sort pages without metadata tag in a different way from the default DokuWiki one (sorted by page name). See the ''nsort'' option for namespaces sorting. Optional.| ^ ''rsort'' | Reverse the sorting of pages. | Optional.| ^ ''nsort'' | Sort also namespaces according to the previous sort options. | Optional.| ^ ''nons'' | Exclude namespaces nodes from index. It shows only the pages. | Optional. | ^ ''nopg'' | Exclude pages nodes from index. It shows only the namespaces. | Optional. | ^ ''max#n//[#m]//'' | The node at //**n**// level will retrieve all its child nodes through the Ajax mechanism. Optionally, instead of retrieve them in one time, it can retrieve them with Ajax every //**m**// sublevels.| Optional. Cookie are automatically disabled, just like with //**noocookie**//. It affects the server loading and speeds up the loading of page in DokuWiki's with an high amount of pages. It works only in //**js**// | ^ //''theme''// | Theme name for indexmenu icons | A theme is a set of icons inside ''images'' directory as described in [[.:indexmenu#Theme tutorial]]. Admins can download and share themes in admin panel. It works only in //**js**// | ^ ''id[#random|//n//]'' | Cookie id for a js indexmenu. By default is ''random'', but you can force it to be a //**n**// fixed number ( i.e ''id#20'' ).| Useful only when you need two or more navbar tree or when a page is uncached and you don't use the //**nocookie**// option. Read the [[.:indexmenu#Js does not remember its previous state]] section. **ATTENTION:** id must be unique for every indexmenu in your DokuWiki site or you'll get strange js behaviors. It works only in //**js**// | ^ ''maxjs#//n//'' | It sets how many js tree levels to render when page loads. Remaining nodes are rendered (slightly slower) only when they are open by users, by //**optional namespaces**// option, by cookies or by //**navbar**// option. | Default //**n**// is 1 so that it will speed up the page loading, above all with an high amount of pages. It affects only the user-client CPU speed, not the webserver load. It works only in //**js**// | ^ ''nocookie'' | By default js indexmenu remember selected,open and closed nodes by user during navigation. With this option it doesn't remember them and the tree is blocked to its start status. | It works only in //**js**//| ^ ''noscroll'' | Disable the JavaScript scrolling feature. It could solve visualization problems. | It works only in //**js**//| ^ ''notoc'' | Disable the TOC-preview feature. | It works only in //**js**//| ===== Metadata tag syntax ===== By default nodes are sorted by page name (or by title/date if you use the tsort/dsort syntax), but you can also specify a custom sort number for every page inserting a metadata tag in the pages with this syntax: {{indexmenu_n>N}} Where N is a number. Then you need to use the "msort" option in your indexmenu tree syntax. For example you can change the order of this tree: -Root |_Don |_Van |_Vliet in this way: -Root |_Vliet {{indexmenu_n>1}} |_Van {{indexmenu_n>2}} |_Don {{indexmenu_n>3}} Pages without metadata information are sorted by page name if you don't use the tsort or dsort option in this way: {{indexmenu>..#1|tsort msort}} ===== Examples ===== A sample of an indexmenu that could be used inside a navigation sidebar. Its initial status is blocked by the nocookie option, so, when the page is reloaded, it doesn't remember the open and closed nodes by the user.: {{indexmenu>..#1|js navbar nocookie}} Sample navigation bar where nodes after the third level are retrieved with Ajax every 2 sublevels: {{indexmenu>..#1|js navbar max#3#2}} Standard DokuWiki index showing only pages inside wiki:plugins and lower namespaces (max two levels): {{indexmenu>wiki:plugins#2|nons}} For more details, please see [[http://www.dokuwiki.org/plugin:indexmenu|here]]. Please note: customizable javascript themes are not available on our site.