HTML-Widgets-NavMenu

 view release on metacpan or  search on metacpan

lib/HTML/Widgets/NavMenu/Tree/Node.pm  view on Meta::CPAN

use warnings;

use parent 'HTML::Widgets::NavMenu::Object';

__PACKAGE__->mk_acc_ref(
    [
        qw(
            CurrentlyActive expanded hide host li_id role rec_url_type
            separator show_always skip subs text title url url_is_abs url_type
        )
    ]
);

use HTML::Widgets::NavMenu::ExpandVal ();


sub _init
{
    my $self = shift;

    $self->subs( [] );

    return $self;
}


sub expand
{
    my $self = shift;
    my $v =
        @_
        ? ( shift(@_) )
        : HTML::Widgets::NavMenu::ExpandVal->new( { capture => 1 } );

    # Don't set it to something if it's already capture_expanded(),
    # otherwise it can set as a non-capturing expansion.
    if ( !$self->capture_expanded() )
    {
        $self->expanded($v);
    }
    return 0;
}


sub mark_as_current
{
    my $self = shift;
    $self->expand();
    $self->CurrentlyActive(1);
    return 0;
}

sub _process_new_sub
{
    my $self = shift;
    my $sub  = shift;
    $self->update_based_on_sub($sub);
}


sub update_based_on_sub
{
    my $self = shift;
    my $sub  = shift;
    if ( my $expand_val = $sub->expanded() )
    {
        $self->expand($expand_val);
    }
}


sub add_sub
{
    my $self = shift;
    my $sub  = shift;
    push( @{ $self->subs }, $sub );
    $self->_process_new_sub($sub);
    return 0;
}


sub get_nth_sub
{
    my $self = shift;
    my $idx  = shift;
    return $self->subs()->[$idx];
}

sub _num_subs
{
    my $self = shift;
    return scalar( @{ $self->subs() } );
}


sub list_regular_keys
{
    my $self = shift;

    return (
        qw(host li_id rec_url_type role show_always text title url url_type));
}


sub list_boolean_keys
{
    my $self = shift;

    return (qw(hide separator skip url_is_abs));
}


sub set_values_from_hash_ref
{
    my $self         = shift;
    my $sub_contents = shift;

    foreach my $key ( $self->list_regular_keys() )
    {
        if ( exists( $sub_contents->{$key} ) )
        {



( run in 1.383 second using v1.01-cache-2.11-cpan-98e64b0badf )