#!/usr/bin/perl -Tw use strict; package Pos::Webtop::Web::TreeNode; sub new { my $this = shift; my $class = ref($this) || $this; my ($text, $appendFrontText, $appendBackText, $js) = @{{@_}}{qw/text appendFrontText appendBackText js/}; my $self = {}; bless($self,$class); $self->{'nodes'} = []; $self->{'text'} = $text; $self->{'appendFrontText'} = $appendFrontText; $self->{'appendBackText'} = $appendBackText; $self->{'js'} = $js; return $self; } sub pushNode { my $self = shift; my ($new) = @{{@_}}{qw/node/}; foreach my $node ( @{ $self->{'nodes'} }) { if ($node->{'text'} eq $new->{'text'}) { return $node; } } push @{ $self->{'nodes'} }, $new; return $new; } sub sprout { my $self = shift; my $id = shift; my $printLib = shift; $id = 1 unless defined $printLib; $printLib = 1 unless defined $printLib; my $ret = ""; my $text = $self->{'text'}; my $appendFrontText = defined($self->{'appendFrontText'}) ? $self->{'appendFrontText'} : ""; my $appendBackText = defined($self->{'appendBackText'}) ? $self->{'appendBackText'} : ""; my $js = $self->{'js'}; if ( $printLib ) { $ret .= " "; } my $spacing = '0px'; my $display = ''; my $image = 'LocalWebLib/plusSign.gif'; scalar( @{ $self->{'nodes'} } ) or $image = 'LocalWebLib/space.gif'; if ( defined $text ) { $spacing = '15px'; $display = 'none'; $text = HTML::Entities::encode($text); $js = "" unless defined $js; my $string = ((defined($appendFrontText))?"$appendFrontText ":"") . "$text" . ((defined($appendBackText))?" $appendBackText":""); $ret .= " $string
\n"; } if ( scalar( @{ $self->{'nodes'} } ) ) { $ret .= "
\n"; my $cnt = 0; foreach ( @{ $self->{'nodes'} } ) { $cnt++; my $yourId = $id . "." . $cnt; $ret .= $_->sprout($yourId,0); } $ret .= "
\n"; } $ret .= " "; return $ret; } 1;