
HTML::Widgets::Index::Format - Formatting for rendering HTML::Widgets::Menu

use HTML::Widgets::Index::Format;
my $format = HTML::Widgets::Index::Format(
default => {
active_item_start => '',
active_item_end => "\n",
inactive_item_start => '',
inactive_item_end => "\n",
active_text_start => '<b>',
active_text_end => '</b>',
inactive_text_start => '',
inactive_text_end => '',
inactive_text_placeholder => '<text>',
active_text_placeholder=>'<text>',
link_args=>'',
indent_active => '*',
indent_inactive => ' ',
javascript => 0,
no_javascript => '',
},
1 => {
active_text_placeholder => '<span class="menu1"><text></span>',
indent => ' ',
}
);

With this object you can alter the format of the output. Each level of the Index can have different formatting. The levels are numbered starting from 1, and there is a default level. Undefined formatting applies default options.
Remember that since Format.pm version 0.02, indent attributes are recursively checked in descendant order, so a level 3 inactive menu item would have level 1, 2 and 3 indentation in this order. When an item is rendered active, his active_indent attribute will be used, along with recursed inactive indents. In case recursing leads to an image indent, the remaining levels will be indented using that image, correctly resized horizontally to fill those levels, while keeping the higher levels active and inactive indents.
In the placeholders you can use the special tags: <text> and <url> that are replaced with the text and url items when rendered.
Example for menu with tables and image items in the first level. Notice:
my $format = {
default => {
link_args => 'class="menu"',
active_item_start =>
'<tr><td bgcolor="white">'.
'<img src="/img/point.gif" height="1">'.
'</td></tr>'.
"<tr><td>\n",
active_item_end => "</td></tr>\n",
inactive_item_start =>
'<tr><td bgcolor="white">'.
'<img src="/img/point.gif" width="15" height="1">'.
"</td></tr><tr><td>\n",
inactive_item_end => "</td></tr>\n",
active_text_placeholder =>
'<span class="menu_active"><text></span>',
indent_inactive =>
'<img src="/img/point.gif" width="4" height="1">',
indent_active =>
'<img src="/img/point.gif" width="4" height="1">',
},
1=> {
indent_active => '',
indent_inactive => '',
inactive_text_placeholder =>
'<img src="/img/icon/<url>.gif" alt="<text>" border="0">',
active_text_placeholder =>
'<img src="/img/icon/<url>.gif" alt="<text>" border="0">',
}
};
For this menu to be rendered you should print the table html tags before and after:
my $menu = HTML::Widgets::Index->open(
dbh => $dbh,
format => $format,
);
print '<table border="0">', $menu->get_html , '</table>';


The methods of this module are used from the html renderer. The end use should just check the DESCRIPTION of the items.
Applies the format to an URI
$format->uri($item,$level,$active);
Intents depending of the level and if it's active or not
$format->indent($level , $active );
Applies format to the text
$format->text($item,$level,$active);

A. U. Thor, <a.u.thor@a.galaxy.far.far.away>

perl.