in archive/assets/de/Archive/dev/makemap.pl [763:908]
sub makenavbar {
sub writenavgroup {
my ($agroup,$level,$auswahl) = @_;
my $intro = "";
# soll die Gruppe ueberhaupt ausgegeben werden?
if ($agroup->{'Level'}<=$navbarlevel) {
for ($i=1;$i<$level;$i++) { $intro .= " " };
# die liste oeffnen
if ($level == 1) {
print OUTFILE "$intro<ul id=\"$navbarstil\">\n";
#Ueberschrift der gesamten Navbar
print OUTFILE "$intro <li><div >de-links</div></li>\n";
}
elsif ($level > 2 ) {
# Fuer jede Gruppe eine Ueberschrift,
# In Level=2 ist es eine Pseudokategorie,
# die nur eine Auswahl aus einer Kategorie darstellen
if ($agroup->{'Text'} ne '') {
printf OUTFILE "$intro<li>%s\n", $agroup->{'Text'};
}
print OUTFILE "$intro <ul>\n";
}
# und jetzt eine Liste
if ($agroup->{'Link'} ne '') {
foreach $adata (@{$data{$agroup->{'Link'}}}){
if ($adata->{'Level'}<=$navbarlevel){
# Eine Gruppe als Link -> Untergruppe
if ($adata->{'Link'} !~ /^http|\./) {
# Es gibt zwei Moeglichkeiten
# entweder soll wirklich die gesamte Gruppe ausgegeben
# werden oder es soll nur ein element der Gruppe
# ausgegeben werden, der Rest nur mit einem Link auf
# eine UEbersichtsseite
if ($auswahl eq '') {
# 1a) gesamte Gruppe, keine 2.Ebene ausgewaehlt, deshalb alle
&writenavgroup ($adata,$level+1,$adata->{'Stil'});
}
elsif ($auswahl eq $adata->{'Link'} ) {
# 1b) gesamte Gruppe die der gewaehlen 2. Ebene entspricht
&writenavgroup ($adata,$level+1,$adata->{'Stil'});
} else {
# 2)
# Ausgabe als Ueberschrift mit
# dem ersten Link mit passendem Level in der Gruppe
foreach $bdata (@{$data{$adata->{'Link'}}}){
if (($bdata->{'Link'} =~ /^http|\./) and
($bdata->{'Level'}<=$navbarlevel)) {
printf OUTFILE
"$intro <li> <a href=\"%s\" title=\"%s\"> %s </a></li>\n",
$bdata->{'Link'},
(($adata->{'Beschreibung'} eq "") or
($adata->{'Beschreibung'} eq $noshow))
? " ": $adata->{'Beschreibung'},
# wenn kein Text definiert ist, wird Ein Dummy verwendet
($adata->{'Text'} ne "")? $adata->{'Text'}:'?????';
last;
}
}
}
}
# Keine Untergruppe als Link, es ist eine Datei oder URL angegeben
else {
printf OUTFILE
"$intro <li> <a href=\"%s\" title=\"%s\"> %s </a></li>\n",
$adata->{'Link'},
(($adata->{'Beschreibung'} eq "") or
($adata->{'Beschreibung'} eq $noshow))
? " ": $adata->{'Beschreibung'},
# wenn kein Text definiert ist, wird Ein Dummy verwendet
($adata->{'Text'} ne "")? $adata->{'Text'}:'?????';
}
}
} # foreach adata
}
# die liste schliessen
if ($level == 1) {
printf OUTFILE "$intro</ul>\n";
}
elsif ($level > 2 ) {
# Fuer jede Gruppe eine Ueberschrift
print OUTFILE "$intro </ul>\n";
if ($agroup->{'Text'} ne '') {
printf OUTFILE "$intro</li>\n";
}
}
} # navbarlevel
} # sub writenavgroup
print VERBOSEOUT "Die Navbars werden erzeugt und gespeichert:\n" if $verbose;
foreach $atype (@{$data{'perl-navbar'}}) {
$outfile = $atype->{'Text'};
print VERBOSEOUT $outfile if $verbose;
$navbarstil = $atype->{'Stil'};
# hack: urspr�nglich sollten die Navbars mal unterschieden werden
# dies sollte sich im Stil ausdruecken
$navbarstil = 'navbar_de';
# hack:ende
$navbarlevel = $atype->{'Level'};
$navbartitle = $atype->{'Beschreibung'};
$kato = $atype->{'Link'};
open (OUTFILE, '>:utf8', $outfile) or die "Kann $outfile nicht oeffnen";
$Datum = strftime "%A, %d. %B %Y %H:%M:%S", localtime( time);
$navbarkopf = <<EOT;
<!-- >
Kommentare zur Navbar $navbartitle
Makemapversion:
\$Id: makemap.pl,v 1.8 2006/08/15 06:52:27 markomlm Exp $
Navbar:
$outfile ,V $Version $Datum $ENV{'USERNAME'}
< -->
EOT
$navbarfuss = <<EOT;
EOT
print OUTFILE $navbarkopf;
&writenavgroup ($atype,1,'');
print OUTFILE $navbarfuss;
close OUTFILE;
print VERBOSEOUT ", " if $verbose;
} # foreach perl-navbar
print VERBOSEOUT ".\n" if $verbose;
} #makenavbar