indexmenu2 plugin by Ilya Lebedev
Show a tree menu for a namespace
Last updated on 2007-05-07. Provides Syntax.
No compatibility info given!
Conflicts with indexmenu, lightboxv2!
Requires remotescript.
Similar to alphaindex, indexmenu.
| Updated - 7 May, 2007 | Indexmenu2 v2.1.1 (82Kb, zip) Indexmenu2 v2.1.1 (55Kb, tar.gz) Indexmenu2 v2.1.1 (42Kb, 7z) SVN repository, v2.1.1 |
|---|
This plugin shows the index menu for a namespace. Its core features:
Values in square brackets are optional.
{{indexmenu>namespace[#[n][+nons]][#sort+[!]<sort_type>] [|js[#[theme][+ajax]]]}}
| Option | Description | Comments | Req/Opt |
|---|---|---|---|
| namespace | Namespace name from which the index starts. | Take a look at namespaces for the complete reference. | required |
| n | Number that specifies the max level of the tree index nodes. | With nons means the max depth of the pages to put in list. | optional |
| nons | Exclude namespaces nodes from index. | When set, only pages are included in the index. | optional |
| sort | Enable sorting | Indicates that menu should be sorted by the sort_type parameters | optional |
| sort_type | One of the following: | fn - filename title - page heading date file creation date. ! - exclamation mark in front of the sorting mode means reversed sort. | optional |
| js | Use JavaScript to add fancy dynamic stuff to the menu | [n] keeps its meaning | optional |
| theme | Skin name for indexmenu2, when in js mode. | a theme is a set of CSS files and icons inside plugins/indexmenu/templates/DokuWiki/<skin> | optional |
| ajax | Enables Ajax-driven index | When set, submenus below [n] level will be taken from the server using Ajax | optional |
Example that display a javascript Index tree menu with nodes open till second level:
{{indexmenu>wiki:plugins#2|js}}
The same, when used on the wiki page
{{indexmenu>:plugins#2|js}}
Wiki theme for js option.
{{indexmenu>wiki:plugins|js#DokuWiki}}
Standard Dokuwiki index showing only pages inside wiki:plugins and lower namespaces (max two levels):
{{indexmenu>wiki:plugins#2|nons}}
Use 'IndexMenu' theme and build submenus below 2nd level using Ajax calls.
{{indexmenu>wiki:plugins#2|js#IndexMenu+ajax}}
Use 'IndexMenu' theme and build submenus below 2nd level using Ajax calls. Sort it by the page title in reversed order.
{{indexmenu>wiki:plugins#2#sort+!title|js#IndexMenu+ajax}}
In general, options are equal to syntax_for_indexmenu, but it use only js, theme and ajax.
Note:
This example shows the general usage:
<navigation |js#IndexMenu+ajax>
this text will be removed, because it stay outside the menu
* [[http://somesite| Some internet site]]
* [[http://somesite/someurl| Interesting url on some site]]
* [[http://somesite/someimage| {{http://somesite/someimage}}]] - image from some site
* just a text, it won't act as a link
* [[here should be a link to make submenu collapsible]]
* no need to put anchors here
* but, does it make a sense to create submenu without a links?
* {{indexmenu>:#2#sort+title+rev|js}}
</navigation>
In this release, Indexmenu2 utilizes the global $conf['plugin_indexmenu'] options array.
Array keys: hide_headpage - is kept as is. skip_index - new option. It is regular expression, describes what pages and namespaces will be removed from the index. Suggested option is:
#\/(discussion|wiki|playground)(\.\w+)?$#i
empty_message - message that will be printed, when no index is available
Use the built-in configuration manager.
Showing the namespace title is controlled by global DokuWiki's option useheading.
Javascript menu is implemented using The Complete Menu Solution code, adapted to DokuWiki standards.
Creation of new themes is slightly harder than in original indexmenu, but much more flexible.
To create new skin follow next steps:
indexmenu/templates/DokuWiki/, f.e. NewSkinindexmenu/templates/DokuWiki/NewSkin folderOk, new skin is done. Now you can update images or alter CSS definitions for your skin.
For more detailed info check the datasheet.
Use your skin with js#NewSkin syntax, remember - skin name is case sensitive.
Distribution contain 3 themes:
Download the indexmenu2.zip file (82Kb) or indexmenu2.tar.gz (55Kb) and unpack it into lib/plugins folder or use the plugin manager.
You have to cleanup DokuWiki cache after plugin install - remove all cached .js files. Otherwise you could receive javascript errors because of missing JS plugin part.
Bugs are moved to bugs
The index menu doesn't show the title of the pages. It shows the wiki name (with underscores). Is there any configuration parameter to force this behaviour? — Jorge 2006-12-26 10:31This behaviour is controlled by DokuWiki's config option useheading — Ilya Lebedev 2006-12-26 10:54
Great! Worked like a charm. Thank you very much! — Jorge 2006-12-27 10:59
I've noticed this plugin has a dependency on the RemoteScript plugin (for the AJAX stuff), which I feel should be documented here. Also when I try to use this feature, all I get is the “Loading…” message and nothing else happens. Any Ideas? — Martin Gill 2007-02-22 09:31I have the same bug! version of dokuwiki 2006-11-06, indexmenu2 2.0.3 (13 February, 2007), remotescript 0.8.3 (13 February, 2007) — Bukhalenkov Alexander 2007-04-04 13:54
I can confirm that bug as well. I'm running the same versions as Bukhalenkov. — Huri 2007-04-05 20:57
Hello, Sorry for the long delay. Author of the plugin backend has released new library, that has no such a bug. Please, update RemoteScript with the 0.9 release, this bug should be solved.
Bugtracker is available.
Would it be possible for the menu to be initially collapsed?
I had no need in this, but it might be implemented. — Ilya Lebedev 2006-10-01 00:08
Please add alphabetic soring entries in the menu! (i hope with utf-8 and standard php functions it`s simple) — Bukhalenkov Alexander 2006-10-26 22:06 Done, please refer the changelog and check the new options. — Ilya Lebedev 2006-11-13 18:23
Would it be possible to integrate this with @NS@ from Variable plugin? Then one could generate context sensitive index menus like:
{{indexmenu>@NS@#2|js#IndexMenu+ajax}}It would be very useful for sidebars. — Vlad 2007-01-17
Will
{{indexmenu>.#2|js#IndexMenu+ajax}}do the job? It refers to the namespace of the current page.
If this will not work for you, replace$id = resolve_pageid(getNS($ID),$ns,$exists);with
$id = resolve_pageid(getNS(getID()),$ns,$exists);in the syntax.php or syntax/indexmenu.php. — Ilya Lebedev 2007-01-18 23:56
Actually it doesn't but my proposal wouldn't also. I imagined using this in the sidebar and I often don't have the sidebar in the same namespace as the pages. So neither
.nor@NS@would work - they would just display the menu from to the sidebar's namespace not the page's namespace. Thanks for your answer though. –Vlad 2007-01-31
Actually, i've fixed this in the latest beta release, you can try it at
hxxp://pg.debugger.ru/dw
, take a look at sidebar, when browsing the pages — Ilya Lebedev 2007-01-31 23:42
Could you provide some more notes on use of navigation module. Is <navigation> </navigation> functionality provided by indexmenu2 plugin? If couldn't get above example to work. — Green Box 2007-02-01 10:31
Navigation functionality is implemented in the indexmenu-beta release, you can test it at
hxxp://pg.debugger.ru/dw/articles
Example:
<navigation |js#IndexMenu+ajax>
* {{indexmenu>:articles#1}}
* {{indexmenu>:projects#1}}
</navigation>
— Ilya Lebedev 2007-02-01 13:15
Hi Ilya, is it possible to have the same feature (or is it there already and I missed it?) as with the plugin:indexmenu plugin with the navbar option to have the current namespace expanded and the current page highlighted. That would be very useful for navigation sidebars.
— Stephane Chazelas 2007/02/06 12:34
Hi Stephane, Yes, this is possible, but it should be done carefully. As far, as javascript engine does support the different CSS templates, it's possible to have not only the tree menu, but any kind of dropdown ones (for example), which should not be autoextended on page load. I'll take a look, how this could be implemented in a good way. — Ilya Lebedev 2007-02-06 21:28
Is it possible to do the following? I insert the indexmenu tag into a page let's say indexpage to list all elements of a namespace alphabetically. When I create a new page in that namespace and chack the indexpage nothing will change. I have to edit and save the indexpage to see the new element in the list. Would be much comfortable to do this automatically. Thanks! — Zorden 2007-02-20 13:34 CET
Hello Zorden, Sorry for the long delay, but currently i have no idea, how to catch the change in the namespace. I'll take a look, and implement this, if it will be possible. — Ilya Lebedev 2007-04-09 14:40
Sorry, I am quite new to here, and just trying to remove the static message under INDEX menu.
“This is an index over all available pages ordered by namespaces”.
Is it possible through indexmen2? Or I am just barking at the wrong tree?
Thanks in advace.
Please, try the current (2.1.1) release, it allows to replace built-in index page and suppress the default message. — Ilya Lebedev 2007-05-07 14:46
Hi. I wanted to hide 'archived' pages. But I don't like to rename or move pages. So I added the following code in syntax.php:
//Set title and link if (!$conf['useheading'] || !$title=p_get_metadata($id,'title')) $title=noNS($id); // hide titles starting with an # ... if( $title[0] == '#' ) return false; // $title=htmlspecialchars($title,ENT_QUOTES); $link=wl($id);
So, I can hide a page by editing the first heading. – Christoph Purrucker, 2007-06-26