Tree Browser Plugin

Renders a bulleted or numbered list as a collapsible/expandable tree of nodes.

Tags:

create new tag

Table of Contents

Acknowledgment

This plugin leverages the dTree JavaScript tree menu by Geir Landrö as well as code borrowed from TWiki:Plugins.RenderListPlugin.

Syntax Rules

Place the tag %TREEBROWSER{ parameters }% immediately before a bulleted or numbered list. The lists can be handcrafted, generated by another Plugin, a %TOC%, or the result of a FormattedSearch. The list will be rendered in a tree-like fashion (similar to the explorer folder list). Whenever a new indentation level is started, the subsequent nodes at this or a lower indentation level are shown as descendents of the preceding node. The following parameters can be used to configure the appearance of the tree:

Parameter Description Default
"name" or
theme="name"
Select a rendering theme none
title Required. This text serves as the root of the tree none
openAll If on, the tree is shown fully expanded. off
openTo Must be an integer. If present, the tree is expanded to the given node, as numbered from the root. 0
shared Must be a string. If present, the state of the tree is shared across all trees using this string. For example, if the tree is used in the WebLeftBar, the state will hold at all topics with this WebLeftBar. It's basically the name of the JavaScript? object representing your tree. none
uselines Set to false if you don't want to show lines linking nodes and leafs in the tree true
useplusminus Set to false if you don't want to show '-' and '+' signs. One can use something like onclick='javascript: tree.o($index);' in the tree item to trigger opening/closing of a node. true
noindent Set to true to show children at the level of their parent. It suppresses children indentation. Enabling noindent will disable uselines and useplusminus. false
nocss Set to true to prevent inclusion of dtree.css. false
closesamelevel If true only one node within a parent can be expanded at the same time. openAll() and closeAll() functions do not work when this is enabled. false
noroot Prevents rendering of the title line. Useful if you don't want to show any title. false
warn Text to be displayed if no tree was found. none
style Name of the CSS file to include without the .css extension. The CSS file must be attached to this topic. dtree
autotoggle Set to on will enable node open/close when clicking the node item. Typically used for menu style tree along with noindent. off
nodeactions Defines node functionality in a comma separated list of HTML event and dTree function. Typically used for menu style tree along with noindent. Format:
<event> <function>[,...]
event is an HTML event e.g. onclick, ondblclick, onmouseover, onmouseout...
function is one of the three dTree functions: open, close, toggle
none
popup Set to on to enable pop-up menu mode. Typically used with closesamelevel. See pop-up menu example. off
closepopupdelay Pop-up mode only. Delay in millisecond before all popup close once the mouse cursor has left the menu structure. 1000
popupoffset Provides x and y offset from parent node for pop-up menus. Allows for fine tunning of pop-up position. 0,0
firstpopupoffset Provides x and y offset for first level pop-up menus. Introduce as a workaround for PatternSkin issues. 0,0
useopacity Used to generate extra dtreeTransluscentBackground div. Enables popup with translucent background and opaque text. off

Rendering themes can be defined by <name>_THEME Plugin settings

  • Each theme is defined by a comma separated list containing the render type and parameters required by that render type
  • There are different render types; currently this Plugin supports tree and icon render types
  • Format of the tree render type:
    • Set < name >_THEME = tree
  • Format of the icon render type:
    • Set < name >_THEME = icon, [< root icon image >], [< icon image >], [< folder icon image >], [< open folder icon image >]
    • The root icon image is shown at the root of the tree, the icon image is shown at every leaf node, the folder icon image is shown at every collapsed internal node, and the open folder icon image is shown at every expanded internal node. The icon images point to files attached to TWiki topics and are referenced in the standard manner. If no path is given, the images are taken from TWikiDocGraphics.
    • If an icon image is omitted, the following defaults are chosen: /twiki420/pub/TWiki/TreeBrowserPlugin/empty.gif, /twiki420/pub/TWiki/TreeBrowserPlugin/page.gif, /twiki420/pub/TWiki/TreeBrowserPlugin/folder.gif, folderopen.gif

If JavaScript is not enabled, the list is rendered as usual, and the =%TREEBROWSER% tag is omitted.

Bullets

  • Use regular * bullets
  • Start with level one
    • Increase indentation only one level at a time
      • Like this
  • Decreasing indentation many levels at a time is fine
  • Keep labels short as text does not wrap.
  • You can specify an icon for a bullet of render type tree or icon:
    • Attach the icon to a topic, e.g. myicon.gif, or
    • Refer to an attached icon at the beginning of the bullet with:
      • icon:myicon.gif Followed by normal bullet text
    • Refer to any icon at the beginning of the bullet using a full path or URL:
      • icon:http://www.wikioraapps.com/twiki420/pub/TWiki/TWikiDocGraphics/xls.gif Followed by normal bullet text

Examples

Basic

%TREEBROWSER{"file" title="[[%HOMETOPIC%][%INCLUDINGWEB% Web Home]]" shared="left"}%
   * [[WebChanges][Changes]] 
   * [[WebIndex][Index]]
   * [[WebSearch][Search]]
   * this is a very very very long text
   * *Webs*
%WEBLIST{"      * [[$name.%HOMETOPIC%][$name]]"}%
generates
If installedSimulated

open all | close all

This tree could be used in the WebLeftBar, for example. Clicking on the plus icon next to Webs will expand the subtree below that node.

To add "collapse/expand all nodes" functionalities do something like:

<a href="javascript: tree.openAll();">open all</a> | <a href="javascript: tree.closeAll();">close all</a>
%TREEBROWSER{"file" title="[[%HOMETOPIC%][%INCLUDINGWEB% Web Home]]" shared="tree"}%
...

Menu

autotoggle example

Code

%TREEBROWSER{"thread" noroot="on" shared="menudemo" noindent="on" autotoggle="on" style="dmenu"}%
   * Vegetables
      * Carot
      * Leek
      * Tomato
      * Potato 
   * Fruits
      * Banana 
      * Grape fruit       
         * Pink
         * Yellow 
      * Peach

If installedSimulated

nodeactions example

Code

%TREEBROWSER{"thread" noroot="on" shared="memenudemo" noindent="on" style="dmenu" nodeactions="onmouseover open, onclick close"}%
   * Vegetables
      * Carot
      * Leek
      * Tomato
      * Potato 
   * Fruits
      * Banana
      * Grape fruit       
         * Pink
         * Yellow 
      * Peach

Pop-up example

Code

%TREEBROWSER{"thread" noroot="on" shared="memenudemo" noindent="on" style="dmenu" nodeactions="onmouseover open, onclick close", closesamelevel="on" popup="on" popupoffset="-10,-4" }%
   * Vegetables
      * Carot
      * Leek
      * Tomato
      * Potato 
   * Fruits
      * Banana
      * Grape fruit       
         * Pink
         * Yellow 
      * Peach

Simulated

Pop-up menu opacity example

Code

%TREEBROWSER{"thread" noroot="on" shared="opacitynotabledemo" noindent="on" style="smenu" nodeactions="onmouseover open, onclick close" popup="on" closesamelevel="on" closepopupdelay="100" firstpopupoffset="-60,0" popupoffset="-20,0" useopacity="on"}%
   * <a>Vegetables</a>
      * <a>Carot</a>
      * <a>Leek</a>
      * <a>Tomato</a>
      * <a>Potato</a>
   * <a>Fruits</a>
      * <a>Banana</a>
         * <a>Green</a>
         * <a>Yellow</a> 
      * <a>Grape fruit</a>       
         * <a>Pink</a>
         * <a>Yellow</a> 
      * <a>Peach</a>

Simulated

This Topic Is Referenced By These Topics:
Related Links: HelpIndex



Was This Topic Useful to You?

Others rated this topic as shown. Please include your rating.
Choice  

-- JimCrum - 21 Feb 2008

Topic revision: r2 - 06 Apr 2008 - 02:38:49 - JimCrum
 
This site is powered by the TWiki collaboration platformCopyright © 2012 by the contributing authors. All material on this collaboration platform is the property of the contributing authors. Permission to copy, distribute and/or modify is granted for this document under the GNU Free Documentation License.
Ideas, requests, problems regarding WikiOraApps? Send feedback