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/ü/ü/; - $title =~ s/Ü/Ü/; - $title =~ s/ö/ö/; - $title =~ s/Ö/Ö/; - $title =~ s/ä/ä/; - $title =~ s/Ä/Ä/; - $title =~ s/ß/ß/; - 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/ü/ü/; + # #$title =~ s/Ü/Ü/; + # #$title =~ s/ö/ö/; + # #$title =~ s/Ö/Ö/; + # #$title =~ s/ä/ä/; + # #$title =~ s/Ä/Ä/; + # #$title =~ s/ß/ß/; + # 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]
