\n";
} else {
print "
\n";
}
print "
Samfundet
\n";
print_tree_element($dbh, undef, 0, [], $fulltree, $boldelem);
print "
\n";
}
sub print_tree_element {
my ($dbh, $curr_obj, $level, $vbars, $fulltree, $boldelem) = @_;
my $refs;
if (defined($curr_obj)) {
$refs = $dbh->selectall_arrayref('SELECT id,name,description FROM objects WHERE parent=? ORDER BY name', undef, $curr_obj);
} else {
$refs = $dbh->selectall_arrayref('SELECT id,name,description FROM objects WHERE parent IS NULL ORDER BY name');
}
my $i = 0;
my $count = (scalar @{$refs}) - 1;
for my $ref (@{$refs}) {
# More siblings?
my $msb;
my @vbarscopy = @{$vbars};
if ($i == $count) {
$msb = "";
push @vbarscopy, 0;
} else {
$msb = "-moresiblings";
push @vbarscopy, 1;
}
print "
";
# Stuff to the left of folder
for my $i (1..$level) {
if ($vbars->[$i - 1]) {
print '';
} else {
print '';
}
}
# The folder itself
my $countref = $dbh->selectrow_hashref('SELECT COUNT(*) AS num FROM objects WHERE parent=?', undef, $ref->[0]);
if ($countref->{'num'} == 0) {
if ($i == $count) {
print "";
} else {
print "";
}
} else {
my $url = $cgi->url(-absolute=>1) . "?";
my @params = ();
for my $p ($cgi->param()) {
next if ($p eq 'open');
next if ($p eq 'close');
push @params, "$p=" . $cgi->param($p);
}
if (scalar @params > 0) {
$url .= join('&', @params) . "&";
}
if (defined($session{$ref->[0]})) {
print "[0]\">";
} else {
print "[0]\">";
}
}
if (defined($boldelem) && $boldelem == $ref->[0]) {
print "";
}
my $e_entity = HTML::Entities::encode_entities($ref->[1]);
my $e_description = HTML::Entities::encode_entities($ref->[2]);
if ($fulltree) {
print "[0]\">$e_entity: $e_description";
} else {
print "[0]\" title=\"$e_description\">$e_entity";
}
if (defined($boldelem) && $boldelem == $ref->[0]) {
print "";
}
print "
\n";
if ($countref->{'num'} > 0 && defined($session{$ref->[0]})) {
print_tree_element($dbh, $ref->[0], $level + 1, \@vbarscopy, $fulltree, $boldelem);
}
++$i;
}
}
1;