NAME

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

SYNOPSIS

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

my @tree =( {

text => 'Folder',

subtree => [

     {

     text => 'treeview Homepage',

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

     }

       ],

},);

Tree(\@tree);

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);

FO Syntax

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

print css();

print jscript();

print preload();

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

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

DESCRIPTION

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

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

Sorting of closed folders will work now.

1.12

some fixes (German umlaute help())

1.10

Overwrought

1.08

delete one unnessesary file.

1.07

Drag & drop example edit.pl

new css class dropzone

Overwrought Documentation

Overwrought Images

1.06

svn moved to http://lindnerei.svn.sourceforge.net/viewvc/lindnerei/treeview/

new Images, german Help

language function set it to "de" for german help

german documentation droped

Build install_examples

Public

new

if you use the oo interface you can say:

my $TreeView = new HTML::Menu::TreeView(\@tree, optional style);

and then call Tree without arguments.

print $TreeView->Tree();

css

return the necessary css part without <style></style> tag.

you can set the DocumentRoot if you pass a parameter

css('/document/root/');

you can also include it with:

<link href="/style/Crystal/16/html-menu-treeview/Crystal.css" rel="stylesheet" type="text/css">

for example.

documentRoot

set or get the Document Root.

default: this variable is set during make.

jscript

return the necessary javascript without <script> tag.

you can also include it with:

<script language="JavaScript" type="text/javascript" src="/style/treeview.js"></script>

you can set the Document Root if you pass a parameter

preload

return the necessary javascript for preloading images without <script> tag.

you can also include it with:

<script language="JavaScript" type="text/javascript" src="/style/Crystal/16/html-menu-treeview/preload.js"></script>

or

<script language="JavaScript" type="text/javascript" src="/style/Crystal/preload.js"></script>

if you use different images sizes.

you can set the DocumentRoot if you pass a parameter

size

only for Crystal styles

set or get the size.

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

Style

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

Style('simple');

simple = redmond like style.

Crystal = Crystal style (default).

Tree

Tree(\@tree,optional $style);

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

clasic

enable clasic node decoration:

clasic(1);

disable clasic node decoration:

clasic(0);

return the status in void context.

$status = clasic();

columns

set number of columns

columns(3);

return the count in void context.

$count = columns();

or set the captions for the columns

columns("Name","Column 1","Column 2","Column 3");

border

enable border for columns :

border(1);

disable border for columns :

border(0);

return the status in void context.

$status = border();

desc

reverse sorting

enable desc :

desc(1);

disable border:

desc(0);

return the status in void context.

$status = desc();

sortTree

set or unset sorting treeview Items.

default is false.

enable sorting:

sortTree(1);

disable sorting:

sortTree(0);

return the status in void context.

$status = sortTree();

orderBy

set the attribute which is used by sortTree and folderFirst.

orderByColumn

sort the TreeView by Column

orderByColumn(i);

-1 to disable;

folderFirst

set or unset show folders first ?

default is false.

enable show folders first:

folderFirst(1);

disable show folders first:

folderFirst(0);

return the status of this property in void context.

$status = folderFirst();

prefix

prefix used by css.

use this if you want build a offline website

for example:

prefix('.');

return the prefix in void context.

TrOver

enable mouseover

tr.trOver{}

saveTree

saveTree('filename',\@ref); # or saveTree()

default: ./TreeViewDump.pl

loadTree

loadTree('filename') or loadTree()

default: ./TreeViewDump.pl

help

help for link attributes.

return a hashref in void context,

my $hashref =  help();

foreach my $key (sort(keys %{$hashref})){

     print "$key : ", $hashref->{$key} ,$/;

}

or a help Message.

print help('href'),$/;

if you want german help try

language('de')

reserved attributes:

href

URI for linked resource.

accesskey

accessibility key character.

charset

char encoding of linked resource.

class

class name or set of class names to an element.

coords

for use with client-side image maps.

dir

the base direction of directionally neutral text.

hreflang

language code.

lang

the base language of an elements attribute values and text content.

onblur

the element lost the focus.

ondblclick

event occurs when the pointing device button is double clicked

onclick

event occurs when the pointing device button is clicked over an element.

onfocus

the element got the focus.

onkeydown

event occurs when a key is pressed down over an element.

onkeypress

event occurs when a key is pressed and released over an element.

onkeyup

event occurs when a key is released over an element.

onmousedown

event occurs when the pointing device button is pressed over an element.

onmousemove

event occurs when the pointing device is moved while it is over an element.

onmouseout

event occurs when the pointing device is moved away from an element.

onmouseover

event occurs when the pointing device is moved onto an element.

onmouseup

event occurs when the pointing device button is released over an element.

rel

forward link types.

rev

reverse link types.

shape

for use with client-side image maps.

style

specifies style information for the current element.

tabindex

position in tabbing order.

target

target frame information.

type

advisory content type.

title

element title.

id

This attribute assigns a name to an element. This name must be unique in a document.

addition

additional text behind the link

subtree

an array of TreeView Items

subtree => [{
     text => 'Fo'},
     {text => 'Bar'}
]
image.

a image name, must be placed into /style/mimetypes directory.

folderclass :

only for Crystal styles

possible values:

folderMan, folderVideo,folderCrystal,

folderLocked , folderText, folderFavorite,

folderPrint,folderHtml,

folderImage,folderSound,folderImportant,

folderTar,folderYellow ,folderGray,

folderGreen and folderRed

see http://lindnerei.sourceforge.net/cgi-bin/crystal.pl for a complete list of possible values for folderclass.

columns

an array of columns

columns => [ 1,2,3,4,5]

empty.

set it true if you ant a closed Folder,

which load a location onclick, you must additional set the href attribute.

backward compatibility

getDocumentRoot

for backward compatibility.

use documentRoot instead.

setClasic

use clasic() instead.

for backward compatibility.

use a classic node decoration

setDocumentRoot

for backward compatibility.

use documentRoot instead.

set the local path to the style folder.

should be the Document Root of your webserver.

example:

setDocumentRoot('/sv/www/htdocs/');

default: this property is set during make

setModern

use clasic() instead.

for backward compatibility.

use a modern node decoration

setSize

for backward compatibility.

use size instead.

only for Crystal styles

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

setStyle

for backward compatibility.

use style instead.

setStyle('style');

simple = redmond like style

Crystal = Crystal style

style

set the style.

style('simple');

simple = redmond like style.

Crystal = Crystal style (default).

language

set the language in scalar context, or get in void context.

language('de');

simple = redmond like style.

Crystal = Crystal style (default).

Private

initTree

construct the TreeView called by Tree, new or recursive by appendFolder.

_ffolderFirst

this function is used within initTree for sorting the TreeView if folderFirst(1) is set.

getSelf

this module use of a Lincoln loader like class system.

if the first parameter is a HTML::Menu::TreeView object (oo syntax ) this function returns the given parameters.

or the first parameter it is not a object referenz (fo syntax) it create a new HTML::Menu::TreeView object,

return it as first value and @_ as the second value .

my ($self, @p) = getSelf(@_);

appendFolder

called by initTree(), append a Folder to the treeView()

appendLastFolder

$self->appendLastFolder(\@tree);

called by initTree() if the last item of the (sub)Tree is a folder.

appendEmptyFolder

called by initTree(), append a empty Folder.

appendLastEmptyFolder

$self->appendLastEmptyFolder($node);

called by initTree() if the last item of the (sub)Tree is a folder.

appendNode

$self->appendNode(\$node);

called by initTree() if the current item of the (sub)Tree is a node.

appendLastNode

$self->appendLastNode(\$node);

called by initTree() if the last item of the current (sub)Tree is a node.

SEE ALSO

http://lindnerei.sourceforge.net

AUTHOR

Dirk Lindner <lze@cpan.org>

LICENSE

LGPL

Copyright (C) 2018 by Hr. Dirk Lindner

This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.