HTML-Menu-TreeView

 view release on metacpan or  search on metacpan

lib/HTML/Menu/TreeView.pm  view on Meta::CPAN

    onmousedown => 'Maus wird gedrückt',
    onmousemove => 'Maus wird bewegt',
    onmouseout  => 'Maus verlässt den Anker',
    onmouseover => 'Maus betritt den Anker',
    onmouseup   => 'Maus wird losgelassen',
    rel => 'Logische Vorw&#228;rtsbeziehung <a href="http://de.selfhtml.org/html/verweise/typisierte.htm#sprache_zeichenkodierug">siehe selfhtml</a>',
    rev => 'Logische R&#252;ckw&#228;rtsbeziehung',
    shape    => 'Imagemaps',
    style    => 'Formatierungs Informationen',
    tabindex => 'Tabstopp position',
    target   => 'Ziel Frame Angabe',
    type     => 'Content-type',
    title    => 'Titel',
    id       => 'Identifikator. Muss einmalig im Dokument sein',
);

=head1 NAME

HTML::Menu::TreeView - Create a HTML TreeView from scratch

=head1 SYNOPSIS

     use HTML::Menu::TreeView qw(Tree);

     my @tree =( {

     text => 'Folder',

     subtree => [

          {

          text => 'treeview Homepage',

          href => 'http://lindnerei.sourceforge.net'

          }

            ],

     },);

     Tree(\@tree);

=head2 OO Syntax

     use HTML::Menu::TreeView;

     use strict;

     my @tree =(

          {

               image => 'tar.png',

               text => 'Node'
          },
     );

     my $Treeview = new HTML::Menu::TreeView();

     print $Treeview->css("/srv/www/httpdocs");

     print $Treeview->jscript();

     print $Treeview->preload();

     print $Treeview->Tree(\@tree);

=head2 FO Syntax

     use HTML::Menu::TreeView qw(css jscript preload Tree);

     print css();

     print jscript();

     print preload();

     print Tree(\@tree,"Crystal");


=head2 function sets

Here is a list of the function sets you can import:

:all

Tree css jscript clasic preload help folderFirst size documentRoot loadTree saveTree sortTree orderBy prefix Style orderByColumn border desc language

:recommend

Tree css jscript clasic preload folderFirst size Style documentRoot loadTree saveTree sortTree prefix desc

:standart

Tree css jscript preload size Style documentRoot clasic,

:backward

setDocumentRoot getDocumentRoot setSize setClasic setStyle style setModern

:columns

border columns orderByColumn orderBy

=head1 DESCRIPTION

HTML::Menu::TreeView is a Modul to build an Html TreeView.

=head1 Changes

1.19
    required perl Version Build.pm and css img class 

1.18
    like 1.17 but at some other places
    
1.17
    #defined @{@$tree[$i]->{subtree}} don't works with perl > 5.20
    
    so try test it with ref @$tree[$i]->{subtree}[0].

1.14
    after a few years there a only a few bugfixes.

1.13

lib/HTML/Menu/TreeView.pm  view on Meta::CPAN

    $self->documentRoot( $p[0] ) if ( defined $p[0] );
    my $fh   = gensym;
    my $file = "$path/style/$style/$size/html-menu-treeview/preload.js";
    open $fh, $file or warn "HTML::Menu::TreeView::preload $/ $! $/";
    seek $fh, 0, 0;
    my @lines = <$fh>;
    close $fh;
    my $preload;

    foreach my $l (@lines) {
        $l =~ s?/style/?style/?g;
        $preload .= $l;
    } ## end foreach my $l (@lines)
    return $preload;
} ## end sub preload

=head2 size

only for Crystal styles

set or get the size.

16,32,48,64 and 128 are possible values.

=cut

sub size {
    my ( $self, @p ) = getSelf(@_);
    if ( defined $p[0] && $p[0] =~ /(16|22|32|48|64|128)/ ) { $size = $1; }
    else                                                    { return $size; }
} ## end sub size

=head2 Style

set the style in scalar context or get in void context.

     Style('simple');

simple = redmond like style.

Crystal = Crystal style (default).

=cut

sub Style {
    my ( $self, @p ) = getSelf(@_);
    if ( defined $p[0] ) {
        if ( -e $path . '/style/' . $p[0] ) { $style = $p[0]; }
        else {
            warn "HTML::Menu::TreeView::Style $/ $path/style/$p[0] not found $/ $! $/";
        } ## end else [ if ( -e $path . '/style/'...)]
    } else {
        return $style;
    } ## end else [ if ( defined $p[0] ) ]
} ## end sub Style

=head2 Tree

     Tree(\@tree,optional $style);

Returns the html part of the Treeview without javasript and css.

=cut

sub Tree {
    my ( $self, @p ) = getSelf(@_);
    $style = $p[1] if ( defined $p[1] );
    @TreeView = @p ? @p : @TreeView;
    $self->initTree(@TreeView) if (@TreeView);
    my $r;
    if ( defined $self->{subtree} ) {
        $r .= qq(<script type="text/javascript">\n//<!-- \nwindow.folders = new Array();\n);
        foreach my $key ( keys %{ $self->{js} } ) {
            $r .= "folders['$key']= new Array(";
            for ( my $i = 0 ; $i < @{ $self->{js}{$key} } ; $i++ ) {
                $r .= '"' . $self->{js}{$key}[$i] . '"';
                $r .= ',' if ( $i + 1 != @{ $self->{js}{$key} } );
            } ## end for ( my $i = 0 ; $i < ...)
            $r .= ");\n";
        } ## end foreach my $key ( keys %{ $self...})
        $r .= "//-->\n</script>";
    } ## end if ( defined $self->{subtree...})
    $r .=
qq(<table border="0" cellpadding="0" cellspacing="0" summary="Tree" width="100%"><tr><td class="subtree"><table cellpadding="0" cellspacing="0"  align="left" border="0" summary="Tree" width="100%" class="treeview$size"><colgroup><col width="$size"/><...
    if (@caption) {    #defined
        my $class = $border ? "captionBorder$size" : "caption$size";
        $r .= qq(<tr><td class="$class"></td><td class="$class">$caption[0]</td></tr>);
    } ## end if (@caption)
    $r .= $self->{tree} . '</table></td>';
    if ( defined $self->{subtree} ) {
        $r .= '<td class="subtree"><table align="left" border="0" cellpadding="0" cellspacing="0" summary="subTree" width="100%">';
        if (@caption) {    #defined
            my $class = $border ? "captionBorder$size" : "caption$size";
            $r .= '<tr>';
            for ( my $i = 1 ; $i <= $#caption ; $i++ ) {
                $r .= qq(<td class="$class">$caption[$i]</td>);
            } ## end for ( my $i = 1 ; $i <=...)
            $r .= '</tr>';
        } ## end if (@caption)
        undef @caption;
        $r .= $self->{subtree} . '</table></td>';
    } ## end if ( defined $self->{subtree...})
    $r .= '</tr></table>';
    return $r;
} ## end sub Tree

=head2 clasic

enable clasic node decoration:

     clasic(1);

disable clasic node decoration:

     clasic(0);

return the status in void context.

     $status = clasic();

=cut



( run in 0.515 second using v1.01-cache-2.11-cpan-7e98afdb40f )