Murcia has asked for the wisdom of the Perl Monks concerning the following question:


I search a module to build a tree from a data structure in a webbrowser. The main feature should be that I can expand and close children nodes. I looked thru CPAN but I did not find the right thing.

Thanks for help

Replies are listed 'Best First'.
Re: html tree
by perrin (Chancellor) on Jul 13, 2004 at 20:26 UTC
Re: html tree
by maverick (Curate) on Jul 13, 2004 at 20:50 UTC
    Sam's module is pretty sharp :)

    Here's the basic HTML+JS+CSS way to make them if your original structure is or can be UL / LI lists. Just in case you wanted to know HOW one worked.

    <script> function toggle(obj) { obj.parentNode.className = (obj.parentNode.className=='li-open') ? + 'li-closed' : 'li-open'; return false; } </script> <style type="text/css"> ul.dtree ul { display: block; } ul.dtree ul { display: none; } </style> <ul class=dtree> <li class=li-closed> <div class="leaf" onClick="toggle(this)">Item</div> <ul> <li>Item 2</li> <li>Item 3</li> </ul> </li> </ul>
    The kinda nice thing about this technique is you can go back to vanilla UL/LI lists just by removing those CSS classes.

    BTW, I make my ul/li lists in perl and HTML::Template so nyaaah! ;)


Re: html tree
by ccn (Vicar) on Jul 13, 2004 at 20:16 UTC

    This is task for javascript + CSS, not for perl
    Upd: but HTML-PopupTreeSelect makes it

Re: html tree
by stvn (Monsignor) on Jul 22, 2004 at 16:43 UTC

    Tree::Simple::View should give you want you are looking for, the only thing is that you need to use Tree::Simple objects. This page contains a number of examples of the DHTML output, as well as the code used to create that output.

    I just commented in your more recent node regarding this as well. I think you might find many of my Tree modules useful. Let me know if you are interested and have any questions.