345935dcb506c592f70ac2c5efb7f4f5bc99ceb2
[infodrom.org/www.infodrom.org] / src / index-tools.pl
1 <:
2
3 # Hauptmenü generieren
4
5 sub main_menu {
6     my @dirs = @_;
7     my $width = 100/($#dirs+1);
8
9     print "<center><table border=0 cellpadding=2 cellspacing=10 width=90%><tr>";
10     foreach $rubrik (@dirs) {
11         if ("<get-var WML_SRC_DIRNAME>" =~ /src\/$rubrik/) {
12             $color="<menu-bgcolorsel>";
13             if ("<get-var WML_SRC_BASENAME>" eq "index") {
14                 printf "<th align=center width=%d%% bgcolor=#%s>", $width, $color;
15                 print "<font size-=5 color=\"#<menu-bgcolor>\"> · </font>"
16                     if ($rubrik ne $dirs[0]);
17                 printf "<font face=\"Helvetica,Arial\" color=\"#<menu-fgcolor>\">%s</font></th>\n", $rubrik;
18             } else {
19                 printf "<th align=center width=%d%% bgcolor=#%s>", $width, $color;
20                 print "<font size-=5 color=\"#<menu-bgcolor>\"> · </font>"
21                     if ($rubrik ne $dirs[0]);
22                 printf "<font face=\"Helvetica,Arial\" color=\"#<menu-fgcolor>\"><a href=%s%s/>%s</a></font></th>\n",
23                         $root_prefix, $rubrik, $rubrik;
24             }
25         } else {
26             $color="<menu-bgcolor>";
27             printf "<th align=center width=%d%% bgcolor=#%s>", $width, $color;
28             print "<font size-=5 color=\"#<menu-bgcolor>\"> · </font>"
29                 if ($rubrik ne $dirs[0]);
30             printf "<font face=\"Helvetica,Arial\" color=\"#<menu-fgcolor>\"><a href=%s%s/>%s</a></font></th>\n",
31                 $root_prefix, $rubrik, $rubrik;
32         }
33     }
34     print "</tr></table></center>\n";
35 }
36
37 # @_ ist ein Array, dessen *letztes* Element die Anzahl
38 # der Elemente enthaelt
39 #
40 sub web_calc_table_width
41 {
42     my $count = pop(@_);
43     my @widths = @_;
44     my $i;
45     my $mod;
46     my $tabwidth = 0;
47
48     foreach $i (@widths) {
49         $tabwidth = $i if ((($count) % $i) == 0);
50     }
51     if (!$tabwidth) {
52         foreach $i (@widths) {
53             $tabwidth = $i if ((($count) % $i) > $mod);
54             $mod = ($count) % $i;
55         }
56     }
57     return $tabwidth;
58 }
59
60 sub specials_menu
61 {
62     my $tabwidth = 0;
63     my $i;
64     my $elems = shift;
65     my %elems = %$elems;
66     my @keys;
67     my $width;
68     my $foo;
69
70     if (%elems) {
71         @keys = keys %elems;
72         $tabwidth = &web_calc_table_width(6,5,4,3,$#keys+1);
73         $width = 100/$tabwidth;
74  
75         print "<center><table border=0 cellpadding=2 cellspacing=10 width=90%><tr>";
76         $i=0;
77         while ($i <= $#keys) {
78             print "<tr>" if (! ($i % $tabwidth));
79
80             $foo = sprintf ("<font face=\"Helvetica,Arial\" color=\"#<menu-fgcolor>\"><a href=\"%s\">%s</a></font>"
81                             , $keys[$i], $elems{$keys[$i]});
82             printf "<td align=center width=%d%% bgcolor=#<menu-bgcolor>>%s\n",
83                 $width, $foo;
84
85             $i++;
86             if (! ($i % $tabwidth)) {
87                 print "</td></tr><p>\n";
88             } else {
89                 print "<font size-=5 color=\"#<menu-bgcolor>\"> · </font></td>";
90             }
91         }
92         if ($i % $tabwidth) {
93             do {
94                 print "<td bgcolor=#<menu-bgcolor>>&nbsp;</td>";
95                 $i++;
96                 print "</tr><p>" if (! ($i % $tabwidth));
97             } until (!($i % $tabwidth));
98         }
99         print "</table></center>\n";
100     }
101 }
102
103 :>