Aktuelles & Infos

Spartennews Infobox

use strict; use Time::Local; # Übersetzung für Aktuelles my %uebersetzung = ( aktuelles_de => "Aktuelles & Infos", aktuelles_fr => "Actualités & Infos", aktuelles_en => "News & Info" ); # Benötigte Variablen my $savedir = $SYSTEM_CONF{'DOCUMENT-ROOT'}."/dh/ssi/generated/aktuelles";; my $directory; my $filename; my $kurztitel; my $titel; my $teaser; my $sortier_datum; my $anzeige_datum; my @kategorie_sparte; my %aktuelles_box; my %aktuelles_uebersicht; my %laenge; # Aufruf Funktionen NewsSeiten_generieren(); readDocuments(); saveFiles(); sub readDocuments { # Konfiguration my $now = time(); # Aktueller Zeitstempel my $maxAlterTage = 180; # Max. Alter in Tagen (180/30 = 6 Monate) my $maxAlterSekunden = $maxAlterTage*24*60*60; # Variablen für unterschiedliche Sprachen my @linguas = qw(de fr en); foreach my $lingua (@linguas) { print "Lingua: $lingua
\n"; clearlist(); my $mask = "index\.shtml\.". $lingua. "\$"; my $readdir = "/dh/aktuelles/news"; filemask($mask); ireaddir($readdir); sort_by_meta("-sortier_datum"); foreach my $file (@FILELIST) { $directory = $FILE_META_INFO{$file}->getValues('directory'); $filename = $FILE_META_INFO{$file}->getValues('filename'); $kurztitel = $FILE_META_INFO{$file}->getValues('presse_kurztitel_'.$lingua); $titel = $FILE_META_INFO{$file}->getValues('title_'.$lingua); $teaser = $FILE_META_INFO{$file}->getValues('teaser_'.$lingua); $sortier_datum = $FILE_META_INFO{$file}->getValues('sortier_datum'); $anzeige_datum = $FILE_META_INFO{$file}->getValues('anzeige_datum'); @kategorie_sparte = $FILE_META_INFO{$file}->getValues('kategorie_sparte'); next unless ($sortier_datum); next unless (@kategorie_sparte); # Überspringe Dokument wenn dies älter als (aktuell 6 Monate) ist my ($jahr, $monat, $tag) = $sortier_datum =~ m|(\d{4})(\d{2})(\d{2})|; my $sortier_datum_seconds = timelocal(0,0,0,$tag,$monat-1,$jahr-1900); next unless ($now-$sortier_datum_seconds < $maxAlterSekunden); # Wenn Kurztitel angegeben, soll dieser auch für die Übersicht verwendet werden if ($kurztitel) { $titel = $kurztitel; } my $box_link = "$titel"; my $uebersicht_link = "
$titel
$anzeige_datum - $teaser [Weiter ...]
"; foreach my $sparte (@kategorie_sparte) { $sparte = $sparte ."_". $lingua; # Zwischenspeichern für Ausgabe in Col2 bzw. Übersichtsseite storeAktuellesBox($sparte,$box_link); storeAktuellesUebersicht($sparte,$uebersicht_link); } } } } sub storeAktuellesBox { my ($sparte, $link) = @_; my $laenge = $#{$aktuelles_box{$sparte}}; if ($laenge < 3) { push (@{$aktuelles_box{$sparte}}, $link); print $link."
"; } } sub storeAktuellesUebersicht { my ($sparte, $link) = @_; my $laenge = $#{$aktuelles_uebersicht{$sparte}}; if ($laenge < 9) { push (@{$aktuelles_uebersicht{$sparte}}, $link); } } sub saveFiles { foreach my $key (keys %aktuelles_box) { my ($sparte, $lingua) = $key =~ m|(.*)_(\w{2})$|; saveBoxFiles($sparte,$lingua,$key); } foreach my $key (keys %aktuelles_uebersicht) { my ($sparte, $lingua) = $key =~ m|(.*)_(\w{2})$|; saveUebersichtFiles($sparte,$lingua,$key); } } sub saveBoxFiles { my ($sparte, $lingua, $key) = @_; my $savefile = $savedir."/aktuelles_sparte_".$sparte.".shtml.".$lingua; open (FILE, "> $savefile") or die "Konnte $savefile nicht oeffnen!"; print FILE "
".$uebersetzung{"aktuelles_".$lingua}."
\n
\n
    "; foreach my $link (@{$aktuelles_box{$key}}) { print FILE "
  • $link
  • \n"; } print FILE "
\n"; close FILE or die "Konnte $savefile nicht schliessen!"; } sub saveUebersichtFiles { my ($sparte, $lingua, $key) = @_; my $savefile = $savedir."/aktuelles_sparte_".$sparte."_uebersicht.shtml.".$lingua; open (FILE, "> $savefile") or die "Konnte $savefile nicht oeffnen!"; foreach my $link (@{$aktuelles_uebersicht{$key}}) { print FILE "$link\n"; } close FILE or die "Konnte $savefile nicht schliessen!"; } sub NewsSeiten_generieren { my $news = $SYSTEM_CONF{'DOCUMENT-ROOT'}."/dh/ssi/generated/aktuelles/news.txt"; my @linguas = qw(de fr en); open (NEWS, "< $news") or die "Datei nicht gefunden!"; while () { chomp; $_ =~ s/\s+//g ; #Leerzeichen entfernen next if ($_ =~ "(aktuelles_presse|aktuelles_startseite)"); foreach my $lingua (@linguas) { my $verzeichnis = $SYSTEM_CONF{'DOCUMENT-ROOT'}; my $savefile = $verzeichnis . "/dh/ssi/generated/aktuelles/".$_.".shtml.".$lingua; open (SACTIVE, "> $savefile") or die "Konnte die Datei $savefile nicht oeffnen\n"; close SACTIVE or die "Konnte Datei $savefile nicht schliessen\n"; } } close NEWS; }