sub makesitemap()

in archive/assets/de/Archive/dev/makemap.pl [578:759]


sub makesitemap { 

sub writemapgroup {

my ($agroup,$level) = @_;

my $intro = "";
		

# soll die Gruppe ueberhaupt ausgegeben werden?
if (($agroup->{'Level'}<=$sitemaplevel)and ($agroup->{'Beschreibung'} ne $noshow)) {
	for ($i=2;$i<$level;$i++) { $intro .= "\t" };

	# Fuer jede Gruppe einen Link, wenn es das oberste Level ist
	if ($level == 2) {
		printf OUTFILE "\n$intro<a name=\"%s\"></a>\n",$agroup->{'Link'};
	}
			
	# Fuer jede Gruppe eine Ueberschrift, wenn nicht leer
	if ($agroup->{'Text'} ne '') {
		printf OUTFILE "\n$intro<h$level>%s ",
				$agroup->{'Text'};
		if ($level == 2) { printf OUTFILE "<a href='#Top'>^</a>"; }
		printf OUTFILE "</h$level>\n";
	}
			
	# Fuer jede Gruppe einen Beschreibungstext
	if ($agroup->{'Beschreibung'} ne '') {
		printf OUTFILE "$intro%s\n", $agroup->{'Beschreibung'};
	}

	
	# und jetzt eine Liste
	if ($agroup->{'Link'} ne '') {
		print OUTFILE "$intro<ul>\n";
		# und jetzt die Elemente der Gruppe
		foreach $adata (@{$data{$agroup->{'Link'}}}){
			if (($adata->{'Level'}<=$sitemaplevel) 
					and ($adata->{'Beschreibung'} ne $noshow)) {
					
				# Eine Gruppe als Link -> Untergruppe
				if ($adata->{'Link'} !~ /^http|\./) {
					printf OUTFILE "$intro<li> ";
					&writemapgroup ($adata,$level+1);
					printf OUTFILE "$intro</li>\n",
				}
				# Keine Untergruppe 
				else {
					# wenn kein Text definiert ist, wird Pfad+Datei verwendet
					printf OUTFILE "$intro<li> <a href=\"%s\"> %s </a>\n$intro\t%s </li>\n",
				       	$adata->{'Link'},
				       	($adata->{'Text'} ne "")? $adata->{'Text'}:$adata->{'Link'},
				       	($adata->{'Beschreibung'} ne "")?
								$adata->{'Beschreibung'}:" ";
				}
			}
		} # foreach adata
		printf OUTFILE "$intro</ul>";
	}

	

} # sitemaplevel

} # sub writemapgroup

		
print VERBOSEOUT "Die Sitemap(s) werden geschrieben: " if $verbose;
# Nun werden die Ausgabe-html Dateien geschrieben.
foreach $atype (@{$data{'perl-sitemap'}}) {
	$outfile = $atype->{'Text'};
	#$sitemapstil = $atype->{'Stil'};
	$sitemaplevel = $atype->{'Level'};
	$sitemaptitle = $atype->{'Beschreibung'};
	$kato = $atype->{'Link'};
    print VERBOSEOUT $outfile if $verbose;
	open (OUTFILE, '>:utf8',$outfile) or die "Kann $outfile nicht oeffnen";
	$Datum = strftime "%A, %d. %B %Y %H:%M:%S", localtime( time);

	$sitemapkopf = <<EOT;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="de">
<head>
	<title>$sitemaptitle</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<link rel="stylesheet" href="styles/de.css" media="screen" type="text/css" />
	<link rel="stylesheet" href="styles/de_print.css" media="print" type="text/css" />
	<link rel="stylesheet" title="mit Navbar" href="styles/de_navbar.css" media="screen" type="text/css" />
	<link rel="alternate stylesheet" title="ohne Navbar" media="screen" href="styles/de_nonavbar.css" type="text/css" />
	<meta http-equiv="Content-Style-Type" content="text/css" />
	<meta name="version" content="$outfile,V$Version $Datum $ENV{'USERNAME'}" />
	<meta name="author" content="$ENV{'USERNAME'}" />
	<style type="text/css">
        	/*<![CDATA[*/
        	<!--
        	\@import url("styles/inst_de.css");
        	-->
        	/*]]>*/
        </style>
     <link rel="stylesheet" type="text/css" href="http://www.openoffice.org/branding/css/print.css" media="print" />
     <link rel="shortcut icon" href="http://www.openoffice.org/favicon.ico" />

	<meta name="keywords" content="OpenOffice.org, Open Office, OpenOffice, openoffice, StarOffice, Star Office, OOo, ooo, xml, open source, developer, UNO" />
	<meta name="description" content="de.OpenOffice.org: Sitemap" />

<!-- >
	Kommentare zur Seite
	Achtung: Diese Seite wird automatisch mit dem Skript makemap.pl erzeugt.
	Sie kann zwar direkt ver�ndert und korrigiert werden, allerdings gehen
	�nderungen, die	nicht auch in der Flattext Datenbank site.data eingepflegt
	werden, beim n�chsten �berschreiben verloren. Im Zweifelsfall bitte auf
	devde um die �nderung bitten.
	\$Id: makemap.pl,v 1.8 2006/08/15 06:52:27 markomlm Exp $
< -->



</head>
<body>


<a name="Top"></a>
<div id="body2">
<table id="main2" summary="body2">
<tr>
<td id="body2td">
<div id="body2col">

<div id="toptabs2">

EOT

$sitemapfuss = <<EOT2;


<p>
    <a href="http://validator.w3.org/check?uri=referer"><img
        src="http://www.w3.org/Icons/valid-xhtml10"
        alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
</p>
</div>
</body>
</html>
EOT2

	print OUTFILE $sitemapkopf;
	# ueber alle Gruppen in der Kategorie
	# Eine Linkliste zu den Gruppen steht am Anfang.
	print OUTFILE "\n<ul>";
	foreach $agroup (@{$data{$kato}}) {
		if (($agroup->{'Level'}<=$sitemaplevel) 
					and ($agroup->{'Beschreibung'} ne $noshow)){
			printf OUTFILE "\n<li><a href=\"#%s\">%s</a></li>",
					$agroup->{'Link'},
					$agroup->{'Text'};
		}
	}
	print OUTFILE "\n</ul>\n</div>\n<br /><br />";
	print OUTFILE '<hr noshade="noshade" size="1" />';
	print OUTFILE "\n</div>\n</td>\n</tr>\n</table>";



	# Dann folgt die Seitenueberschrift
	print OUTFILE "\n<h1>$sitemaptitle</h1>\n";


	
	# Jetzt wird Gruppenweise geschrieben
	# wobei jeder Gruppe von einer Zeile mit der
	# Richtigen Kategorie referenziert wird
	foreach $agroup (@{$data{$kato}}) {
    	&writemapgroup ($agroup,2);
	} 

	print OUTFILE $sitemapfuss;
	close OUTFILE;
    print VERBOSEOUT ", " if $verbose;
} # foreach perl-sitemap

print VERBOSEOUT ".\n" if $verbose;
} #makesitemap