X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=machines.cgi;h=4cfe3a868f6a0507cd6b567624c7c0b336a60150;hb=be8fd4aac4624ffe3c42a869d3a8b6c0f633a7d5;hp=8fe4bfa8110b87308962f7eb61e0431315f85ca8;hpb=d921fe3e7a4b661efe13cd0ee636754fe53831a7;p=mirror%2Fuserdir-ldap-cgi.git diff --git a/machines.cgi b/machines.cgi index 8fe4bfa..4cfe3a8 100755 --- a/machines.cgi +++ b/machines.cgi @@ -4,6 +4,7 @@ # (c) 1999 Randolph Chung. Licensed under the GPL. # (c) 2004 Martin Schulze. Licensed under the GPL. # (c) 2006 Ryan Murray. Licensed under the GPL. +# (c) 2008 Martin Zobel-Helas. Licensed under the GPL. use lib '.'; use strict vars; @@ -82,13 +83,38 @@ sub sshfingerprint { return $hrfpr; } +sub wiki_link($) { + my ($in) = @_; + $in =~ s#\[\[(.*?)\|(.*?)\]\]#$2#g; + $in =~ s#\[\[(.*?)\]\]#$1#g; + return $in; +} + +sub purposes_uplist($) { + my ($purposes) = @_; + my $out = undef; + + if (scalar @$purposes >= 1) { + $out = "
    ". + join("", map { + "
  • ".wiki_link($_)."
  • \n"; + } sort {my $A=$a; my $B=$b; $A =~ s/[\[\]]//g; $B =~ s/[\[\]]//g; $A cmp $B} @{$data->{purpose}} + ). + "
"; + } + return $out; +} + $SIG{__DIE__} = \&DieHandler; my $query = new CGI; my $host = lc($query->param('host')); +my $sortby = lc($query->param('sortby')) || "host"; +my $sortorder = lc($query->param('sortorder')) || "asc"; &Util::HTMLSendHeader; $ldap = Net::LDAP->new($config{ldaphost}) || &Util::HTMLError($!); +&Util::UpgradeConnection($ldap) unless $config{usessl} eq 'False'; $mesg; $ldap->bind; @@ -146,9 +172,9 @@ foreach $dn (sort {$entries->{$a}->{host}->[0] cmp $entries->{$b}->{host}->[0]} } } - #Reformat purposes to be pleasing for the human eye: - $output{purpose} = join(",", @{$data->{purpose}}); - + my $purpose = purposes_uplist($data->{purpose}); + $output{purpose} = $purpose if defined $purpose; + $selected = " selected "; } @@ -180,11 +206,25 @@ if ($output{havehostdata}) { $hostdetails = "

Summary

\n"; $hostdetails .= "\n"; foreach $key (@summaryorder) { - $hostdetails .= ""; + if ($sortby ne $key) { + $hostdetails .= ""; + } else { + if ($sortorder ne "dsc") { + $hostdetails .= ""; + } else { + $hostdetails .= ""; + } + } } $hostdetails .= "\n"; - foreach $host (sort(keys(%summary))) { + my @sorted; + if ($sortorder eq "asc") { + @sorted = sort {($summary{$a}->{$sortby} cmp $summary{$b}->{$sortby}) || ($summary{$a}->{'host'} cmp $summary{$b}->{'host'})} keys(%summary) + } else { + @sorted = sort {($summary{$b}->{$sortby} cmp $summary{$a}->{$sortby}) || ($summary{$a}->{'host'} cmp $summary{$b}->{'host'})} keys(%summary) + } + foreach $host (@sorted) { $hostdetails .= ""; foreach $key (@summaryorder) { $hostdetails .= "";
$summaryattrs{$key}$summaryattrs{$key}$summaryattrs{$key}$summaryattrs{$key}
$summary{$host}{$key}