sub makenavbar()

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