#!/usr/local/bin/perl # list_aliases.cgi # Displays a list of all aliases # XXX .qmail-default and .qmail-foo-default alias support require './qmail-lib.pl'; &ReadParse(); &ui_print_header(undef, $text{'aliases_title'}, ""); @aliases = &list_aliases(); &alias_form(); if ($in{'search'}) { # Restrict to search results @aliases = grep { $_ =~ /$in{'search'}/ } @aliases; } elsif ($config{'max_records'} && @aliases > $config{'max_records'}) { # Show search form print $text{'aliases_toomany'},"
\n"; print "
\n"; print "\n"; print "
\n"; undef(@aliases); } if (@aliases) { # sort if needed if ($config{'sort_mode'} == 1) { @aliases = sort { lc($a) cmp lc($b) } @aliases; } @aliases = map { &get_alias($_) } @aliases; # find a good place to split $lines = 0; for($i=0; $i<@aliases; $i++) { $aline[$i] = $lines; $al = scalar(@{$aliases[$i]->{'values'}}); $lines += ($al ? $al : 1); } $midline = int(($lines+1) / 2); for($mid=0; $mid<@aliases && $aline[$mid] < $midline; $mid++) { } # render tables print &ui_form_start("delete_aliases.cgi", "post"); print &select_all_link("d", 1),"\n"; print &select_invert_link("d", 1),"
\n"; if ($config{'columns'} == 2) { print "
\n"; &aliases_table(@aliases[0..$mid-1]); print "\n"; if ($mid < @aliases) { &aliases_table(@aliases[$mid..$#aliases]); } print "

\n"; } else { &aliases_table(@aliases); } print &select_all_link("d", 1),"\n"; print &select_invert_link("d", 1),"
\n"; print &ui_form_end([ [ "delete", $text{'aliases_delete'} ] ]); } &ui_print_footer("", $text{'index_return'}); sub aliases_table { print "\n"; print " ", "\n"; foreach $a (@_) { local $n = $a->{'name'}; $n =~ s/:/\./g; print "\n"; print "\n"; print "\n"; print "\n"; } print "

$text{'aliases_addr'}$text{'aliases_to'}
",&ui_checkbox("d", $a->{'name'}),"{'name'}\">", &html_escape($n),"\n"; foreach $v (@{$a->{'values'}}) { ($anum, $astr) = &alias_type($v); print &text("aliases_type$anum", "".&html_escape($astr).""),"
\n"; } if (!@{$a->{'values'}}) { print "$text{'aliases_none'}\n"; } print "
\n"; }