User: mkirchner
Date: 05/11/16 08:06:35

Modified:
 /de/www/dev/
  makemap.pl

Log:
 Neue Version 0.51 mit neuer, besserer Dokumentation und Steuerung.

File Changes:

Directory: /de/www/dev/
=======================

File [changed]: makemap.pl
Url: http://de.openoffice.org/source/browse/de/www/dev/makemap.pl?r1=1.2&r2=1.3
Delta lines:  +526 -71
----------------------
--- makemap.pl  28 Aug 2005 12:15:21 -0000      1.2
+++ makemap.pl  16 Nov 2005 16:06:28 -0000      1.3
@@ -1,58 +1,327 @@
-# Auf neue Navtabs angepasst, Navigationshilfe und w3c eingepflegt M. Moeller 
08.2005
- use File::Find;
- require HTML::HeadParser;
- use POSIX qw(strftime);
- POSIX::setlocale(LC_TIME, "De");
+#!/usr/bin/perl
+=head1 NAME
 
+Makemap
 
+=head1 SYNOPSIS
 
- use warnings;
- $outfile = 'woistwas.html';     # Dateiname des Ausgabefile
- $datafile = 'site.data';        # Dateiname der Flattext Datenbank
- $unsorted = 'Nicht zugeordnet'; # Gruppe, mit noch nicht zugeordneten 
Elementen
- $noshow = 'Nicht anzeigen';     # Gruppe, mit nicht anzuzeigenden Elementen
- $urlmatch = qr/^\./;            # Wird in der Ausgabe
- $urlreplace = '.';              # in jedem relativen Link ersetzt
- $newdir = '..';                 #Zielverzeichnis fuer Start
- #$position = 'Position';      # Einstellung der Position der Gruppe
- $Version = '0.4a';
+ zur Erzeugung von Sitemap und Navigationsleisten
+
+ Syntax:   makemap.pl Aufgabe [Optionen]
+ Beispiel: makemap.pl mn -v
+   
+ mit --hilfe Abschnitt erhaelt man weitere Hilfe. Abschnitte sind:
+ OPTIONEN, AUFGABEN, BESCHREIBUNG, SITEMAP, NAVBAR, DATENBANK,
+ VERSION, HISTORY, BUGS, TODO.
+
+=head1 AUFGABEN
+
+=over 4
+
+=item B<a>
+
+Aktualisieren der Informationen in der Datenbank site.data
+
+=item B<m>
+
+Maps erstellen
+
+=item B<n>
+
+Navbars erstellen, in eigene Dateien schreiben
+aber nicht in die html-Dateien einpflegen
+
+=item B<w>
+
+erstellte Navbars in alle html Dateien schreiben
+
+=back
+
+
+=head1 OPTIONEN
+ 
+=over 12
+
+=item B<--verbose>
+
+Ausgaben zur Bearbeitung der Einzelschritte
+
+=item B<--verbosefile=s>
+
+Ausgabe in Datei umlenken
+
+=item B<--debug>
+
+zur Ausgabe von Debug infos. Die Angabe kann mehrfach erfolgen, 
+dann werden evtl. entsprechend mehr Informationen gegeben.
+
+=item B<--debugfile=s>
+
+Ausgabe in Datei umlenken
+
+
+=item B<--hilfe>
+
+Hilfe finden
+
+mit --hilfe Abschnitt erhaelt man weitere Hilfe. 
+Abschnitte sind: OPTIONEN, AUFGABEN, BESCHREIBUNG, SITEMAP, NAVBAR, DATENBANK,
+VERSION, HISTORY, BUGS, TODO.
+
+=back
+
+
+=head1 BESCHREIBUNG
+
+Die Idee des Programms besteht darin, die Erstellung der Sitemap
+und der Navigationsleisten von Webseiten des deutsprachigen 
+OpenOffice.org Projektes zu erleichtern. Im Zusammenspiel mit 
+der Datenbankdatei site.data erledigt das Skript dabei vier
+zentrale Aufgaben auf dem Datenbestand im lokalen CVS.
+Die in der Datenbank gespeicherten Links werden mit den vorhandenen
+html (htm/pdf/odt/...) Dateien verglichen und evtl. abgeglichen.
+Aus der Datenbank wird die Sitemap erstellt.
+Ebenso werden aus der Datenbank die Navigationsleisten erstellt.
+Und schliesslich koennen die Navigationsleisten in die einzelnen
+html Dateien geschrieben werden, wenn sie sich geaendert haben.
+Nachdem das Skript die lokalen Dateien aktualisiert hat, muessen
+die neuen Dateien per CVS neu commited werden.
+
+=head1 SITEMAP
+
+to write
+
+=head1 NAVBAR
+
+to write
+
+=head1 DATENBANK
+
+to write
+
+=head1 VERSION
+
+ Version 0.5.1 16.11.2005 Michael Kirchner
+ Copyright (c) 2005 Michael Kirchner, Marko Moeller
+ Bei Fragen, Wünschen, Anregungen mail to: [EMAIL PROTECTED]
+ This program is free software; you can redistribute it and/or
+ modify it under the same terms as Perl itself.
+    I AM NOT RESPOSIBLE FOR ANY PROBLEMS THAT
+         THIS MAY CAUSE WHATSOEVER.
+
+
+=head1 HISTORY
+
+=over
+
+=item 0508280000
+
+M. Moeller: Auf neue Navtabs angepasst, Navigationshilfe und w3c eingepflegt
+
+=item 0511160000
+
+M. Kirchner: viel Aenderungen, UTF-8, Dokumentation, Aufgaben statt Durchlauf
+
+=back
+
+=head1 TODO
+
+=over
+
+=item 
+Schreiben der Dokumention zu Sitemap, Navbar und Datenbank
+
+=item 
+Verbessern der Aktualisierung, Anzeige von fehlenden Dateien
+Ausgabe von neuen Dateien
+
+=item 
+Einbinden von pdf und sonstigen Dokumentformaten in die Sitemap
+
+=item 
+Einbinden von Joachims Navbar-ersetzungs-skript und 
+verwendung desselben mit zusaetzlichen Spalte in
+site.data um spezifisch jede html-Datei mit einer
+eigenen Navbar auszustatten. Hierzu muss besonders
+ein Mechanismus erdacht werden, der es erlaubt nur die
+geaenderten Navbars auszutauschen.
+
+=item
+Pflege der site.data erleichtern, indem fuer neue Seiten gleich
+eine Eingabemaske bereitgestellt wird, in der neue Seiten
+plaziert werden koennen.
+
+=back
+
+=head1 BUGS
+
+Bugs? Welche Bugs? Bei mir gibt es keine Felher!
+Ansonsten: [EMAIL PROTECTED]
+                
+=cut
+
+
+
+use File::Find;
+require HTML::HeadParser;
+use POSIX qw(strftime);
+POSIX::setlocale(LC_TIME, "De");
+use Getopt::Long;
+use Pod::Usage;
+use warnings;
+
+my $verbose = 0;                    # frequently referred
+my $debug = 0;                      # frequently referred
+my %options = ('verbose' => \$verbose, 'debug' => \$debug );
+Getopt::Long::Configure ("bundling");
+GetOptions (
+               \%options, 
+               'verbose|v', 
+               'verbosefile=s',
+               'debug|d+',
+               'debugfile=s',
+               'hilfe|help|h|?:s'
+               ) or Pod::Usage->pod2usage(1)
+               ;
+
+
+ 
+$datafile = 'site.data';        # Dateiname der Flattext Datenbank
+$unsorted = 'Nicht zugeordnet'; # Gruppe, mit noch nicht zugeordneten Elementen
+$noshow = 'Nicht anzeigen';     # Gruppe, mit nicht anzuzeigenden Elementen
+$urlmatch = qr/^\./;            # Wird in der Ausgabe
+$urlreplace = '.';              # in jedem relativen Link ersetzt
+$newdir = '..';                 #Zielverzeichnis fuer Start
+$Version = '0.5';
 
 
 
 my @files;    # Enthaelt die gefundenen *.html/*.htm Dateinamen mit Pfad von ./
-my @datafiles;# Enthaelt die Dateinamen im datafile ./
-my %settings; # Enthaelt alle Eintraege von $datafile, die mit _ anfangen
-my %data;     # Enthaelt alle restlichen Eintraege von $datafile, jeweils
-              #  pfad+datei, gruppe, position in gruppe und text.
-my %groups;   # alle Gruppen mit einem Array, der zugeordneten pfad+dateien
+my @pdffiles; # Enthaelt die gefundenen *.pdf Dateinamen mit Pfad von ./
+my %navbar;   # Enthaelt die erzeugeten Navbars als Hash of Lists
+my %datafiles;# Enthaelt die Dateinamen im datafile ./
+my %data;     # Enthaelt die Eintraege von $datafile als Hash of Lists
 
 
+if (exists $options{'hilfe'}) {
+       if ($options{'hilfe'} eq '' ) {
+               pod2usage(1);
+       }
+       else {
+               pod2usage( { -verbose => 99,
+                               -exitval => 1,
+                               -sections => "$options{'hilfe'}", });
+       }
+}
 
-sub wanted {
-# Wird fuer die Suche mit file::find benoetigt und gibt die gewuenschten 
Dateien an.
-if (/\.html?$/) {push @files, $File::Find::name};
+
+if (@ARGV < 1 ) {
+       Pod::Usage->pod2usage(0);
+}
+
+
+
+if ($verbose) {
+       if (exists($options{'verbosefile'})) {
+               open VERBOSEOUT, ">$options{'verbosefile'}" 
+                               or die "Cannot open verbose output %s", 
$options{'verbosefile'};
+       }
+       else { open VERBOSEOUT, ">-" or die "Cannot open verbose output to 
console.";}
 }
+if ($debug) {
+       if (exists($options{'debugfile'})) {
+               open DEBUGOUT, ">$options{'debugfile'}" 
+                               or die "Cannot open debug output %s", 
$options{'debugfile'};
+       }
+       else { open DEBUGOUT, ">-" or die "Cannot open debug output to 
console.";}
+}
+
 
+my $Aufgabe = shift @ARGV;
+unless (defined ($Aufgabe)) {
+               die ('Keine Aufgabe angegeben');
+};
+
+# Main
 
 #Zielverzeichnis zum aktuellen Verzeichnis machen
 chdir ($newdir);
+
+# amn = aktualisieren, map erstellen, navbar erstellen
+# => es muss die site.data eingelesen werden
+if ($Aufgabe =~ /[amn]/i) {
+       &readsite;
+       &crawl;
+}
+
+# a = aktualisieren
+# => es werden die vorhandenen Daten abgesucht und neu in site.data geschrieben
+if ($Aufgabe =~ /a/i) {
+       &validatesite;
+       &writesite;
+}
+
+# amn = aktualisieren, map erstellen, navbar erstellen
+# => links relativ zur sitemap setzen
+# aus dem Header der HTML evtl. Titel nachlesen
+if ($Aufgabe =~ /[mn]/i) {
+       &baselinks;
+       &readheader;
+}
+
+# m = map erstellen
+if ($Aufgabe =~ /m/i) {
+       &makesitemap;
+}
+
+# n = navbar erstellen
+if ($Aufgabe =~ /n/i) {
+       &makenavbar;
+}
+
+# w = navbar einlesen und einpflegen
+if ($Aufgabe =~ /n/i) {
+       &readnavbar;
+       &writenavbar;
+}
+
+close VERBOSEOUT if $verbose;
+close DEBUGOUT if $debug;
+
+# Ende von Main
+
+
+sub wanted {
+# Wird fuer die Suche mit file::find benoetigt und gibt die gewuenschten 
Dateien an.
+if (/\.html?$/) {push @files, $File::Find::name};
+if (/\.pdf$/) {push @pdffiles, $File::Find::name};
+}
+
+sub crawl {
 # sucht im aktuellen Verzeichnis und darunter nach Dateien, fuer jede wird 
Wanted
 # aufgerufen
+print VERBOSEOUT "Suche nach Dateien mit passenden Endungen" if $verbose;
 find(\&wanted, '.');
+print VERBOSEOUT ".\n" if $verbose;
+}
 
+sub readsite {
+# Einlesen des Datafiles
 
-# Einlesen der Datenbank
-open (DATAFILE, $datafile) or die "Kann $datafile nicht oeffnen";
+print VERBOSEOUT "Lese Flattext Datenbank der Site" if $verbose;
+
+open (DATAFILE, "<:utf8",$datafile) or die "Kann $datafile nicht oeffnen";
 BASE: while (<DATAFILE>) {
 # Wenn es eine Kommentarzeile ist
 if (/^\s*#/) {
        push @Lines, $_;
        next BASE;
 }
-$adata = {};
 
-# Es sind entweder Eintraege, wo Dateien zu Gruppen geordnet werden
+# Wenn es ein Eintrag ist, wo Dateien zu Gruppen geordnet werden
+# Bzw die Kategorien und Ausgaben definiert werden
 if (/^([^#].*)\t(.*)\t(.*)\t(.*)\t(.*)\t(.*)$/) {
+       $adata = {};
        $adata->{'Gruppe'}=$1;
        if ($2 eq '' or $2 == 0 ) { $adata->{'Level'}='99' }
        else { $adata->{'Level'}=$2 ; }
@@ -61,25 +330,36 @@
        $adata->{'Link'}=$5;
        $adata->{'Beschreibung'}=$6;
        $adata->{'Position'}=$.;
+       # Kommentarzeilen werden zum folgenden Eintrag dazugerechnet
        @{$adata->{'Kommentar'[EMAIL PROTECTED];
        @Lines = ();
        push @{$data{$1}}, $adata;
+       # In Datafiles werden alle Dateinamen aus dem Datafile geschrieben
+       # Dies ist notwendig, um nachher mit den gescannten Dateien zu 
vergleichen
        if ( not $adata->{'Link'} =~ /^http/i  ) {
-               push @{$datafiles{$5}{'Ref'}} , $adata };
+               push @{$datafiles{$adata->{'Link'}}{'Ref'}} , $adata };
        }
 }
 close DATAFILE;
 
+print VERBOSEOUT ".\n" if $verbose;
+} # readsite
+
+
+sub validatesite {
+# Die Liste der gescannten Dateien wird durchgesehen und mit
+# den Dateien im Datafile verglichen um geloeschte und neue zu identifizieren
+print VERBOSEOUT "Vergleiche Datenbank mit aktuellen html-Dateien" if $verbose;
 
-# Der Index Groups wird aufgebaut, um die Ausgabe vorzubereiten
 foreach $file (@files) {
-# Wenn die Datein in der Datenbank schon bekannt war,
-# wird sie ihr eintrag in den datafiles geloescht
+# Wenn die Datein im Datafile schon bekannt war,
+# wird sie ihr eintrag in den datafiles markiert
 if (exists $datafiles{$file} ) {
        $datafiles{$file}{'Nochda'} = 1;
+       # hier kann auf Doppelte Eintraege gepfrueft werden
 }
 # neue Dateien werden in die Gruppe $unsorted genommen
-# und ein Datenbankeintrag angelegt
+# und ein Datafileeintrag angelegt
 # Spaeter sollte dies interaktiv erfolgen
 else {
        $adata = {};
@@ -90,19 +370,95 @@
        $adata->{'Link'}=$file;
        $adata->{'Beschreibung'}='';
        push @{$data{$unsorted}}, $adata;
+       $datafiles{$file}{'Nochda'} = 1;
        push @{$datafiles{$file}{'Ref'}} , $adata ;
 } #else exists
 } # foreach file
+print VERBOSEOUT ".\n" if $verbose;
 
-# Jetzt koennte geprueft werden, ob in $datafiles noch links
+print VERBOSEOUT "Vergleiche Datenbank mit aktuellen pdf-Dateien" if $verbose;
+foreach $pdffile (@pdffiles) {
+# Wenn die Pdf-Datei im Datafile schon bekannt war,
+# wird sie ihr eintrag in den datafiles markiert
+if (exists $datafiles{$pdffile} ) {
+       $datafiles{$pdffile}{'Nochda'} = 1;
+}
+# neue Dateien werden in die Gruppe $unsorted genommen
+# und ein Datafileeintrag angelegt
+# Spaeter sollte dies interaktiv erfolgen
+else {
+       $adata = {};
+       $adata->{'Gruppe'}=$unsorted;
+       $adata->{'Level'}='99';
+       $adata->{'Stil'}='';
+       $adata->{'Text'}='';
+       $adata->{'Link'}=$pdffile;
+       $adata->{'Beschreibung'}='';
+       push @{$data{$unsorted}}, $adata;
+       $datafiles{$pdffile}{'Nochda'} = 1;
+       push @{$datafiles{$pdffile}{'Ref'}} , $adata ;
+} #else exists
+} # foreach pdffile
+print VERBOSEOUT ".\n" if $verbose;
+
+
+print VERBOSEOUT "Suche nach fehlenden Links in der Datenbank" if $verbose;
+# Jetzt soll geprueft werden, ob in $datafiles noch links
 # zu Dateien, die nicht mehr existieren, ueberiggeblieben sind.
-# => spaeter implementieren
+my $alleda=1;
+foreach $file (keys %datafiles) {
+       if (not (exists $datafiles{$file}{'Nochda'}) 
+                                       and ($file =~ /^\.\//i)) {
+               if ($alleda == 1) {
+                       print "\n\nFolgende Links aus $datafile sind nicht mehr 
aufzufinden.\n";
+                       print "Die entsprechenden Dateien sind vermutlich 
geloescht und sollten\n";
+                       print "auch per Hand aus $datafile enfernt werden.\n";
+                       print "Im Momement werden sie weiter in der Sitemap 
erscheinen,\n";
+                       print "wenn sie dort vorher aufgetaucht waren.\n";
+                       $alleda = 0;
+                       # Hier koennte spaeter evtl. eine Routine ansetzten, die
+                       # gleich die bearbeitung der Eintraege erlaubt
+               }
+               print ($file,"\n");
+               # Der Eintrag wird auch in datafiles geloescht
+               # um spaeter nicht noch als Datei angesprochen zu werden
+               # allerdings bleibt der Eintrag in %data erhalten.
+               delete $datafile{$file};
+       }       
+}
+if ($verbose and $alleda) {
+       print ".\nKeine fehlenden Links in $datafile gefunden.\n";
+}
 
+# Ausgabe der Dateien, die im site.data vorhanden 
+# sind, aber noch nicht zugeordnet wurden
+if (exists $data{$unsorted} and @{$data{$unsorted}}) {
+       print ".\nFolgende Dateien sind im $datafile als nicht zugeordnet 
gekennzeichnet.\n";
+       print "Die entsprechenden Dateien wurden vermutlich nach der letzten 
Bearbeitung\n";
+       print "von $datafile ins CVS zugefuegt und muessen von Hand an die 
richtigen \n";
+       print "Stellen $datafile eingepflegt werden. Zur Erleichterung wurden 
sie jetzt\n";
+       print "bereits ans Ende von $datafile eingetragen.\n";
+       print "Im Momement wuerden sie nicht in der Sitemap erscheinen.\n";
+       # Hier koennte spaeter evtl. eine Routine ansetzten, die
+       # gleich die bearbeitung der Eintraege erlaubt
+       foreach $adata (@{$data{$unsorted}}){
+               print ($adata->{'Link'},"\n");
+       }
+}
 
-# Die Datenbank wird neu geschrieben, jetzt mit den neuen, nicht zugeordneten 
Dateien
-open (DATAFILE, '>'.$datafile) or die "Kann $datafile nicht oeffnen";
+
+} # validatesite
+
+
+sub writesite {
+
+print VERBOSEOUT "Die Datenbank wird neu geschrieben" if $verbose;
+# Das Datafile wird neu geschrieben, jetzt mit den neuen, nicht zugeordneten 
Dateien
+open (DATAFILE, '>:utf8',$datafile) or die "Kann $datafile nicht oeffnen";
 
 foreach $agroup (sort {
+       # Die Sortierreihenfolge entspricht der Reihenfolge im Datafile
+       # 'Position' enthaelt jeweils die Zeilennummer
        (exists($data{$a}[0]->{'Position'}) ? $data{$a}[0]->{'Position'} : 
999999)
                        <=>
        (exists($data{$b}[0]->{'Position'}) ? $data{$b}[0]->{'Position'} : 
999999)
@@ -125,6 +481,15 @@
        } # foreach adata
 } # foreach group
 
+close DATAFILE;
+print VERBOSEOUT ".\n" if $verbose;
+} #writesite
+
+sub baselinks {
+print VERBOSEOUT "Anpassung der Links, wenn die Sitemap nicht in Siteroot ist" 
if $verbose;
+# Nachdem das Datafile geschrieben ist, werden die Links
+# veraendert, damit die Sitemap auch an einer anderen Stelle 
+# als der siteroot stehen kann.
 foreach $agroup (keys %data) {
        foreach $adata (@{$data{$agroup}}){
                if ( not $adata->{'Link'} =~ /^http/i  ) {
@@ -132,10 +497,11 @@
                }
        } # foreach adata
 } # foreach group
+print VERBOSEOUT ".\n" if $verbose;
+}
 
-
-close DATAFILE;
-
+sub readheader {
+print VERBOSEOUT "Fehlende Texte aus den html-Headern auslesen" if $verbose;
 # Jede Datei wird geprueft, wenn schon ein Text vorliegt
 # wird er verwendet, sonst schaut man nach dem Titel der html-datei.
 # und in den <Meta name="title" content="XXXX"> eintrag im Header
@@ -143,42 +509,68 @@
 # nicht geprueft werden und fuer die neuen Dateien keine Infos
 # aufgenommen werden
 foreach $file (@files) {
-       if ( (exists ($datafiles{$file}))) {
+
+       foreach $adata (@{$datafiles{$file}{'Ref'}}){
+               if ( not exists($adata->{'Text'})
+                               or ($adata->{'Text'} eq "" )) {
+               
+                       # Einen Parser oeffnen und den Header der Datei lesen
+                       # vielleicht finden wir ja da einen Text zum Eintrag
+                       
                $p = HTML::HeadParser->new;
                $p->parse_file($file);
+
                $title = $p->header('Title');
                if (not defined $title) {$title = $p->header('X-Meta-title') }
                if (not defined $title) {$title = "" }
-               $title =~ s/ü/&uuml;/;
-               $title =~ s/Ü/&Uuml;/;
-               $title =~ s/ö/&ouml;/;
-               $title =~ s/Ö/&Ouml;/;
-               $title =~ s/ä/&auml;/;
-               $title =~ s/Ä/&Auml;/;
-               $title =~ s/ß/&szlig;/;
 
-               foreach $adata (@{$datafiles{$file}{'Ref'}}){
-                       if ( not exists($adata->{'Text'})
-                                       or ($adata->{'Text'} eq "" )) {
-                               $adata->{'Text'} = $title;
-                       }
-               } # foreach adata
 
+                       # Eine kurze Bemerkung zum Thema Unicode:
+                       # Da site.data und die map_*.html in UTF8 sind
+                       # und alle anderen eingelesenen Seiten in utf8 oder 
8859-1
+                       # macht perl alle Konversionen automatisch. Dies wird
+                       # schiefgehen, sobald jemand sich nicht an die 
encodings haelt
+                       # oder eine Euro in den Ueberschriften haben will.
+                       #open (my $fh, "<",$file) or die ("Konnte $file nicht 
oeffnen.\n");
+                       #ein versuch mit Unicode
+                       #$type = $p->header('Content-Type');
+                       #if (not defined $type) {$type = "Not defined" }
+                   #unless ($type =~ /charset=UTF-8/i) {
+                       #       if ($debug) {print DEBUGOUT 
$file."\t".$type."\t"};
+                       #       if ($debug) {print DEBUGOUT $title."\t"};
+
+                       #       #$title =~ s/ü/&uuml;/;
+                       #       #$title =~ s/Ü/&Uuml;/;
+                       #       #$title =~ s/ö/&ouml;/;
+                       #       #$title =~ s/Ö/&Ouml;/;
+                       #       #$title =~ s/ä/&auml;/;
+                       #       #$title =~ s/Ä/&Auml;/;
+                       #       #$title =~ s/ß/&szlig;/;
+                       #       if ($debug) {print DEBUGOUT $title};
+                       #       if ($debug) {print DEBUGOUT "\n"};
+                       #}
+                       #close $fh;
 
+                       $adata->{'Text'} = $title;
        }
+       } # foreach adata
 } # foreach file
 
+print VERBOSEOUT ".\n" if $verbose;
+} #readheader
 
 
+sub makesitemap { 
+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'};
-       open (OUTFILE, '>'.$outfile) or die "Kann $outfile nicht oeffnen";
+    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;
@@ -205,6 +597,10 @@
        <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
+       \$Id: makemap.pl,v 1.3 2005/11/16 16:06:28 mkirchner Exp $
+< -->
 
 
 
@@ -213,17 +609,11 @@
 
 <a name="Top"></a>
 <div id="body2">
-
 <table id="main2" summary="body2">
 <tr>
-
 <td id="body2td">
-
 <div id="body2col">
-
-
 <p class="nonscreen"><a name="content">start:</a></p>
-
 <div id="toptabs2">
 
 EOT
@@ -252,8 +642,13 @@
                                        $agroup->{'Text'};
                }
        }
-       print OUTFILE '</ul></div><br /><br /><hr noshade="noshade" size="1" 
/></div></td></tr></table>';
-       print OUTFILE "<h1>$sitemaptitle</h1>\n";
+       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
@@ -297,22 +692,31 @@
 
        print OUTFILE $sitemapfuss;
        close OUTFILE;
+    print VERBOSEOUT ", " if $verbose;
 } # foreach perl-sitemap
 
+print VERBOSEOUT ".\n" if $verbose;
+} #makesitemap
+
+
 
+sub makenavbar { 
+print VERBOSEOUT "Die Navbars werden erzeugt und gespeichert" if $verbose;
 foreach $atype (@{$data{'perl-navbar'}}) {
 
        $outfile = $atype->{'Text'};
+    print VERBOSEOUT $outfile if $verbose;
        $navbarstil = $atype->{'Stil'};
        $navbarlevel = $atype->{'Level'};
        $navbartitle = $atype->{'Beschreibung'};
        $kato = $atype->{'Link'};
-       open (OUTFILE, '>'.$outfile) or die "Kann $outfile nicht oeffnen";
+       open (OUTFILE, '>:utf8', $outfile) or die "Kann $outfile nicht oeffnen";
        $Datum = strftime "%A, %d. %B %Y %H:%M:%S", localtime( time);
 $navbarkopf = <<EOT;
 <table id="$navbarstil" summary="$navbartitle" border="0" cellspacing="0" 
cellpadding="0">
        <!-- >
        Kommentare zur Seite
+       \$Id: makemap.pl,v 1.3 2005/11/16 16:06:28 mkirchner Exp $
        $outfile,V $Version $Datum $ENV{'USERNAME'}
        < -->
 EOT
@@ -355,11 +759,62 @@
 
        print OUTFILE $navbarfuss;
        close OUTFILE;
+    print VERBOSEOUT ", " if $verbose;
 } # foreach perl-navbar
 
+print VERBOSEOUT ".\n" if $verbose;
+} #makenavbar
+
+
+sub readnavbar {
+# Einlesen der Navbars
+               
+print VERBOSEOUT "Lese Navbar" if $verbose;
+
+foreach $atype (@{$data{'perl-navbar'}}) {
+               
+       my $navfile = $atype->{'Text'};
+    print VERBOSEOUT $navfile if $verbose;
+       open (NAVFILE, "<:utf8",$navfile) or die "Kann $navfile nicht oeffnen";
+       NAVREAD: while (<NAVFILE>) {
+               push @{$navbar{$navfile}}, $_;
+       }
+       close NAVFILE;
+    print VERBOSEOUT ", " if $verbose;
+}
+
+print VERBOSEOUT ".\n" if $verbose;
+} # readnavbar
 
 
+sub writenavbar {
+# Schreiben der Navbars
+print VERBOSEOUT "Schreibe Navbar(s) in html-Dateien " if $verbose;
+
+foreach $file ('./credits.html') {
+               
+
+    print VERBOSEOUT $file if $verbose;
+       open (INFILE, "<".$file) or die "Kann $file nicht oeffnen";
+       VOR: while (my $Line = <INFILE>) {
+               if ($Line !~ /<!-- Start Navbar -->/ig) {
+#                      print $Line;
+               }
+       }
+       BAR: while (<INFILE> !~ /<!-- End Navbar -->/ig) {
+       }
+       NACH: while (<INFILE>) {
+#              print $_;
+       }
+
+
+       close INFILE;
+    print VERBOSEOUT ", " if $verbose;
+}
+
+print VERBOSEOUT ".\n" if $verbose;
 
 
+} # writenavbar
 
 




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Antwort per Email an