diff --git a/software/closeall.cgi b/software/closeall.cgi deleted file mode 100755 index 94ac31348..000000000 --- a/software/closeall.cgi +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/local/bin/perl -# closeall.cgi -# Empty the open list - -require './software-lib.pl'; -&save_heiropen([ ]); -&redirect("tree.cgi"); - diff --git a/software/openall.cgi b/software/openall.cgi deleted file mode 100755 index 39f7f0409..000000000 --- a/software/openall.cgi +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/local/bin/perl -# openall.cgi -# Add all classes to the open list - -require './software-lib.pl'; -$n = &list_packages(); -for($i=0; $i<$n; $i++) { - @w = split(/\//, $packages{$i,'class'}); - for($j=0; $j<@w; $j++) { - push(@list, join('/', @w[0..$j])); - } - } -@list = &unique(@list); -&save_heiropen(\@list); -&redirect("tree.cgi"); - diff --git a/software/tree.cgi b/software/tree.cgi index bc468a3da..041e6a2dc 100755 --- a/software/tree.cgi +++ b/software/tree.cgi @@ -1,14 +1,44 @@ -#!/usr/local/bin/perl +#!/opt/bin/perl # tree.cgi # Display the package tree require './software-lib.pl'; &ui_print_header(undef, $text{'index_tree'}, ""); +&ReadParse(); +$n = &list_packages(); + +# filter array +if ($in{'filter'}) { + for($i=0; $i<$n; $i++) { + if (index($packages{$i, 'name'}, $in{'filter'}) == -1) { + $filter++; + $packages{$i, 'name'}=undef; + $packages{$i, 'version'}=undef; + $packages{$i, 'desc'}=undef; + $packages{$i, 'class'}=undef; + } + } +} + +# prcoess openall / closeall actions +if ( $in{'mode'} eq "closeall" ) { + &save_heiropen([ ]); +} + +if ( $in{'mode'} eq "openall" || $in{'filter'} ) { + for($i=0; $i<$n; $i++) { + @w = split(/\//, $packages{$i,'class'}); + for($j=0; $j<@w; $j++) { + push(@list, join('/', @w[0..$j])); + } + } + local @list = &unique(@list); + &save_heiropen(\@list); +} $spacer = " "x3; # work out the package hierarchy.. -$n = &list_packages(); for($i=0; $i<$n; $i++) { push(@pack, $packages{$i,'name'}); push(@vers, $packages{$i,'version'}); @@ -40,21 +70,32 @@ foreach $c (sort { $a cmp $b } &unique(@class)) { $heiropen{""} = 1; # traverse the hierarchy -if ($hasclasses) { - print &ui_link("closeall.cgi", $text{'index_close'}); - print "\n"; - print &ui_link("openall.cgi", $text{'index_open'}); - print "

\n"; - } -print "\n"; +print &ui_form_start("tree.cgi"); +print &ui_submit($text{'index_filter'}); +print &ui_textbox("filter", $in{'filter'}, 50); +print &ui_form_end(),"

\n"; + +print &ui_link("tree.cgi?mode=closeall", $text{'index_close'}); +print &ui_link("tree.cgi?mode=openall", $text{'index_open'}); +if ($in{'filter'}) { + print &ui_link("tree.cgi", $text{'index_filterclear'}); + print "  ", &text('index_filtered',$n-$filter,$n+1), "\n"; +} +print "

\n"; &traverse("", 0); print "
\n"; -if ($hasclasses) { - print &ui_link("closeall.cgi", $text{'index_close'}); - print "\n"; - print &ui_link("openall.cgi", $text{'index_open'}); - print "

\n"; - } +print &ui_form_start("ipkg-tree.cgi"); +print &ui_submit($text{'index_filter'}); +print &ui_textbox("filter", $in{'filter'}, 50); +print &ui_form_end(),"

\n"; + +print &ui_link("tree.cgi?mode=closeall", $text{'index_close'}); +print &ui_link("tree.cgi?mode=openall", $text{'index_open'}); +if ($in{'filter'}) { + print &ui_link("tree.cgi", $text{'index_filterclear'}); + print "  ", &text('index_filtered',$n-$filter,$n+1), "\n"; +} +print "

\n"; &ui_print_footer("", $text{'index_return'}); @@ -63,11 +104,11 @@ sub traverse local($s, $act, $i); # Show the icon and class name -print " ", $spacer x $_[1]; +print " ", $spacer x $_[1]; if ($_[0]) { print "\n"; $act = $heiropen{$_[0]} ? "close" : "open"; - my $link = "$act.cgi?what=".&urlize($_[0]); + my $link = "$act.cgi?what=".&urlize($_[0]); $_[0] =~ /([^\/]+)$/; print &ui_link($link, ""); print "  $1\n"; @@ -80,7 +121,7 @@ print "
\n"; if ($heiropen{$_[0]}) { # print packages followed by sub-folders foreach $i (@order) { - if ($class[$i] eq $_[0]) { + if ($class[$i] eq $_[0] && $pack[$i] ne "") { print " ", $spacer x ($_[1]+1); print " \n"; print &ui_link("edit_pack.cgi?package=".