package HTML::Widgets::NavMenu::Iterator::Html::Item;
use strict;
use warnings;
use base qw(HTML::Widgets::NavMenu::Tree::Iterator::Item);
sub get_url_type
{
my $item = shift;
return
($item->_node()->url_type() ||
$item->_accum_state()->{'rec_url_type'} ||
"rel");
}
package HTML::Widgets::NavMenu::Iterator::Html;
=head1 NAME
HTML::Widgets::NavMenu::Iterator::Html - an iterator for HTML.
=head1 SYNOPSIS
For internal use only.
=head1 METHODS
=cut
use base qw(HTML::Widgets::NavMenu::Iterator::Base);
use HTML::Widgets::NavMenu::EscapeHtml;
sub _construct_new_item
{
my $self = shift;
return HTML::Widgets::NavMenu::Iterator::Html::Item->new(
@_
);
}
=head2 $self->node_start()
Gets called upon node start.
=cut
sub node_start
{
my $self = shift;
if ($self->_is_root())
{
return $self->_start_root();
}
elsif ($self->_is_top_separator())
{
# _start_sep() is short for start_separator().
return $self->_start_sep();
}
else
{
return $self->_start_regular();
}
}
=head2 $self->node_end()
Gets called upon node end.
=cut
sub node_end
{
my $self = shift;
if ($self->_is_root())
{
return $self->end_root();
}
elsif ($self->_is_top_separator())
{
return $self->_end_sep();
}
else
{
return $self->_end_regular();
}
}
=head2 $self->end_root()
End-root event.
=cut
sub end_root
{
my $self = shift;
$self->_add_tags("");
}
sub _end_regular
{
my $self = shift;
if ($self->top()->_num_subs() && $self->_is_expanded())
{
$self->_add_tags("");
}
$self->_add_tags("");
}
=head2 $self->node_should_recurse()
Override to determine when one should recurse to the node.
=cut
sub node_should_recurse
{
my $self = shift;
return $self->_is_expanded();
}
=head2 $self->get_a_tag()
Renders the HTML for the opening a-tag.
=cut
# Get the HTML tag.
#
sub get_a_tag
{
my $self = shift;
my $item = $self->top();
my $node = $item->_node;
my $tag ="title;
$tag .= " href=\"" .
escape_html(
$self->nav_menu()->_get_url_to_item(
'item' => $item,
)
). "\"";
if (defined($title))
{
$tag .= " title=\"$title\"";
}
$tag .= ">" . $node->text() . "";
return $tag;
}
=head1 COPYRIGHT & LICENSE
Copyright 2006 Shlomi Fish, all rights reserved.
This program is released under the following license: MIT X11.
=cut
1;