Administration

Ansprechpartner erzeugen

#################################################### ### Script zur autom. Kontaktgenerierung ### -> für Col2, Kontakt Dillingen Serviceteams ### by Nicolas Huckert ### Datum: 01.09.2011 - 14:28 Uhr #################################################### ### H I S T O R Y ### ============= ### 01.09.2011: ### - Neue Sortierung auf Kontaktseite ### SHS LOGISTICS steht nun direkt unter SHS SERVICES ### ### 06.01.2011: ### - Bug-Beseitigung Mehrmalige Anzeige in Col2 bei AP's ### für die nur eine einmalige Anzeige vorgesehen ist ### ### 20.12.2010: ### - Hinzufügen der Ausnahme, dass hinter Verkauf Nebenprodukte ### keine Rubriken und kein komma erscheint ### ### 16.12.2010: ### - Bug-Beseitigung Anzeige in sub printKontaktseite () ### durch neue Verzeichnisstruktur wurden AP's n. angezeigt ### ### 15.12.2010: ### - Hinzufügen Klasse Floatbox zu <p>-Tags ### um potentielle Fehler in Anzeige zu verhindern ### - Hinzufügen Ausnahme bei Col2 / Weitere AP's ### ### 26.11.2010: ### - Modifzierung Header-Daten ### - Hinzufügen der Klasse .clearfix um Umbruch ### zu vermeiden ### ### 23.09.2010: ### - Allg. Überprüfung des Scripts #################################################### use strict; # Alle alten Dateien löschen und neue generieren APSeiten_generieren(); # Übersetzungsdatei einlesen my %dynamic; readDynamicFile(); my $directory; my $filename; # Allgemein Informationen my $vorschau_bild_name; my $bild_kontaktseite; my $titel; my $name; my $vorname; my $zus_bezeichnung; my $zus_bezeichnung_col2; my $tel; my $fax; my $pcfax; my $email; # potenzieller Tab --> Bei Abteilung = Weitere_Ansprechpartner my $weitere; my @chem_labor; # Sparten, Zuständigkeiten, Zugehörigkeiten my @rubrikenzuordnung; my @serviceteams; my %serviceteam_hash = (); # Anzeigeeinstellungen my $anz_kontaktseite; my $anz_col2; my $anz_serviceteam; # Ordnungszahlen my $ordnung_main; # my $ordnung_col2; Zurzeit n. in Gebrauch my $ordnung_service; # Laufvariablen my %ansprechpartner; my $file; my $abteilung; my $abteilung_format; # abteilung + Sprachcode my $abteilung_ausgabe; my $rubrik; my $kontakt; my $uebersetzung; # Variablen für unterschiedliche Sprachen my @linguas = qw(de fr en); my $lingua; foreach $lingua (@linguas) { clearlist(); zusammenfassung("start"); print "

aktuelle Sprache: $lingua

"; my $mask = "index\.shtml\.". $lingua. "\$"; filemask($mask); ireaddir('/dh/administration/ansprechpartner'); sort_by_meta("ordnung_main"); foreach $file (@FILELIST) { # Deklaration aller notwendigen Variablen $directory = $FILE_META_INFO{$file}->getValues('directory'); $filename = $FILE_META_INFO{$file}->getValues('filename'); # Allgemein Informationen $vorschau_bild_name = $FILE_META_INFO{$file}->getValues('vorschau_bild_name'); $bild_kontaktseite = $FILE_META_INFO{$file}->getValues('bild_kontaktseite'); $titel = $FILE_META_INFO{$file}->getValues('titel'); $name = $FILE_META_INFO{$file}->getValues('name'); $vorname = $FILE_META_INFO{$file}->getValues('vorname'); $zus_bezeichnung = $FILE_META_INFO{$file}->getValues('zus_bezeichnung_'.$lingua); $zus_bezeichnung_col2 = $FILE_META_INFO{$file}->getValues('zus_bezeichnung_col2_'.$lingua); $tel = $FILE_META_INFO{$file}->getValues('tel'); $fax = $FILE_META_INFO{$file}->getValues('fax'); $pcfax = $FILE_META_INFO{$file}->getValues('pcfax'); $email = $FILE_META_INFO{$file}->getValues('email'); # Umbrüche einbauen $zus_bezeichnung =~ s|\n|
|; $zus_bezeichnung_col2 =~ s|\n|
|; # potenzieller Tab --> Bei Abteilung = Weitere_Ansprechpartner $weitere = $FILE_META_INFO{$file}->getValues('weitere'); @chem_labor = $FILE_META_INFO{$file}->getValues('chem_labor'); # Sparten, Zuständigkeiten, Zugehörigkeiten @rubrikenzuordnung = $FILE_META_INFO{$file}->getValues('rubrikenzuordnung_de'); @serviceteams = $FILE_META_INFO{$file}->getValues('serviceteamzuordnung_de'); # Anzeigeeinstellungen $anz_kontaktseite = $FILE_META_INFO{$file}->getValues('anz_kontaktseite'); $anz_col2 = $FILE_META_INFO{$file}->getValues('anz_col2'); $anz_serviceteam = $FILE_META_INFO{$file}->getValues('anz_serviceteam'); # Ordnung $ordnung_main = $FILE_META_INFO{$file}->getValues('ordnung_main'); # $ordnung_col2 = $FILE_META_INFO{$file}->getValues('ordnung_col2'); $ordnung_service = $FILE_META_INFO{$file}->getValues('ordnung_service'); # Extrahierung der Abteilung aus Pfad my @split = split('/',$directory); $abteilung = @split[4]; next if ($abteilung eq "dh_allgemein"); if ($anz_kontaktseite eq "ja") { addKontakt_Kontaktseite($lingua); } if ($anz_col2 eq "ja") { createHashkey_col2($lingua); } if ($anz_serviceteam eq "ja") { addKontakt_Serviceteam($lingua); } zusammenfassung("kontakt"); } # END foreach my $file (@FILELIST) # Testausgabe eines APs #print "
$ansprechpartner{'presse'}
"; # Print Datei alle Kontakte printKontaktseite($lingua); zusammenfassung("end"); } saveServiceteams(); sub createHashkey_col2 { my $sprache = shift; my $hashkey; my $rubrik; my %seen_rubrik = (); # Generierung des passenden Dateinamens für Rubriken unless ($abteilung =~ "(weiterverarbeitung|rohstoffeinkauf|verkehrswesen|presse|werksbesichtigung|werkszeitschrift|dh_allgemein)") { foreach $rubrik (@rubrikenzuordnung) { next if $seen_rubrik{$rubrik}++; if ($abteilung =~ "(verkauf|marketing)") { if ($rubrik eq "nep" || $rubrik eq "nebenprodukte") { $hashkey = "nebenprodukte.shtml.".$sprache; } else { $hashkey = "$abteilung"."_$rubrik.shtml.".$sprache; } addKontakt_col2($hashkey, $sprache); } # Generierung des Dateinamens für Chemische Laboratorien oder Weitere Ansprechpartner elsif ($abteilung =~ "(chemischelaboratorien|weitere_ansprechpartner)") { $hashkey = $rubrik.".shtml.".$sprache; addKontakt_col2($hashkey, $sprache); } else { $hashkey = $abteilung.".shtml.".$sprache; addKontakt_col2($hashkey, $sprache); } } } else { $hashkey = $abteilung.".shtml.".$sprache; addKontakt_col2($hashkey, $sprache); } } sub addKontakt_col2 { my $hashkey = shift; my $sprache = shift; # Generierung des passenden Kontaktes für col2 $kontakt = generateAP("col2", $sprache); my $verzeichnis = $SYSTEM_CONF{'DOCUMENT-ROOT'}; my $savefile = $verzeichnis."/dh/ssi/generated/kontakt/ansprechpartner/".$hashkey; open (SACTIVE, ">> $savefile") or die "Konnte die Datei $savefile nicht oeffnen\n "; print SACTIVE $kontakt; close SACTIVE or die "Konnte Datei $file nicht schliessen\n"; } sub addKontakt_Kontaktseite { my $sprache = shift; my $first; if ($abteilung eq "verkauf") { foreach $rubrik (@rubrikenzuordnung) { if ($rubrik eq "nebenprodukte" || $rubrik eq "nep") { $abteilung = "verkauf_np"; } } } # Hinzufügen des Sprachecodes zur Abteilung $abteilung_format = $abteilung.'_'.$sprache; # Generierung des AP für Kontaktseite $first = ""; if ($ansprechpartner{"$abteilung_format"} eq "") { $first = " first"; } # Generierung des AP + Hinzufügen zu Hashtable $ansprechpartner{"$abteilung_format"} .= generateAP("main", $sprache, $first); } sub addKontakt_Serviceteam { my $sprache = shift; my $hashkey; $kontakt = "
"; $kontakt .= generateAP("serviceteam", $sprache); $kontakt .= "
"; my $serviceteam; foreach $serviceteam (@serviceteams) { my $hashkey = $serviceteam.".shtml.".$sprache; $serviceteam_hash{$hashkey}{$ordnung_service} .= $kontakt; } } sub saveServiceteams { foreach my $serviceteam ( sort (keys %serviceteam_hash)) { #print "$serviceteam: "; my $verzeichnis = $SYSTEM_CONF{'DOCUMENT-ROOT'}; my $savefile = $verzeichnis."/dh/ssi/generated/kontakt/ansprechpartner/".$serviceteam; print "

$serviceteam

"; open (SACTIVE, ">> $savefile") or die "Konnte die Datei $savefile nicht oeffnen\n "; foreach my $ordnung_service (sort { $a <=> $b } keys %{$serviceteam_hash{$serviceteam}}) { print $ordnung_service.", "; #print $serviceteam_hash{$serviceteam}{$ap}; #print "$role=$HoH{$family}{$role} "; print SACTIVE $serviceteam_hash{$serviceteam}{$ordnung_service}; } close SACTIVE or die "Konnte Datei $file nicht schliessen\n"; } } sub generateAP { my $anzeige = shift; my $sprache = shift; my $first = shift; my $kontakt = ""; my $abteilung_ausgabe = ""; my $komma = ""; # Erstellung des Kontakts if ($anzeige eq "main" || $anzeige eq "serviceteam") { $kontakt .= "

"; if ($bild_kontaktseite) { $kontakt .= " $titel $vorname $name"; } } elsif ($anzeige eq "col2") { $uebersetzung = $dynamic{"text.ansprechpartner_$sprache"}; $kontakt .= "

$uebersetzung

"; if ($vorschau_bild_name) { $kontakt .= " $titel $vorname $name"; } } #Ausgabe Name des AP $kontakt .= " $titel $vorname $name
"; # Unterscheidung welcher Ausgabetext notwendig ist... if ($anzeige eq "main") { if ($zus_bezeichnung) { $abteilung_ausgabe = $zus_bezeichnung; } # ... in Abhänigkeit der Abteilung if (($directory =~ "(verkauf|marketing)") && ($abteilung ne "verkauf_np")) { # wurden Rubriken angegeben? if (@rubrikenzuordnung) { # Hinzufügen des Kommas $abteilung_ausgabe .= ", " if ($zus_bezeichnung); # Ausgabe aller Rubriken inkl. "," zwischen den Rubriken foreach $rubrik (@rubrikenzuordnung) { # Keine Ausgabe der Rubrik, wenn diese zu Referenzen, Stählen oder Nebenprodukte gehört if (not $rubrik =~ "^stahl_" || $rubrik =~ "^referenzen_") { if (not $komma) { $abteilung_ausgabe .= $dynamic{"text.rubrik.".$rubrik."_".$sprache}; $komma = "true"; } else { $abteilung_ausgabe .= ', '.$dynamic{"text.rubrik.".$rubrik."_".$sprache}; } } } } } } elsif ($anzeige eq "col2" || $anzeige eq "serviceteam") { if ($zus_bezeichnung_col2) { $abteilung_ausgabe .= $zus_bezeichnung_col2; } elsif ($abteilung =~ "(verkauf|marketing)") { $abteilung_ausgabe .= $dynamic{"text.".$abteilung."_".$sprache}; } elsif ($zus_bezeichnung) { $abteilung_ausgabe .= $zus_bezeichnung; } else { $abteilung_ausgabe .= $dynamic{"text.kontakt.titel.".$abteilung."_".$sprache}; } } # Diverse öffentliche Unternehmensangaben $kontakt .= " AG der Dillinger Hüttenwerke"; if ($abteilung_ausgabe ne "") { $kontakt .= "$abteilung_ausgabe"; } $kontakt .= "
"; # $kontakt .= " # # Work # Werkstrasse 1 # 66763 # Dillingen/Saar # # http://www.dillinger.de # 49.3559826.73262 # "; #Abstand nach Name und Abteilung (wenn abt != "") $kontakt .= "
"; if ($tel) { $uebersetzung = $dynamic{"text.telefon_$sprache"}; $kontakt .= " $uebersetzung Work $tel
"; } if ($fax) { $uebersetzung = $dynamic{"text.fax_$sprache"}; $kontakt .= " $uebersetzung fax $fax
"; } if ($pcfax) { $uebersetzung = $dynamic{"text.pcfax_$sprache"}; $kontakt .= " $uebersetzung fax2 $pcfax
"; } if ($email) { $uebersetzung = ""; if ($anzeige eq "main" || $anzeige eq "serviceteam" ) { $uebersetzung = $dynamic{"text.email_$sprache"}; } $kontakt .= " $uebersetzung "; } $kontakt .= "

"; if ($anzeige eq "col2") { $kontakt .= "
"; } return $kontakt; } sub printKontaktseite { my $sprache = shift; my $verzeichnis = $SYSTEM_CONF{'DOCUMENT-ROOT'}; my $savefile = $verzeichnis . "/dh/ssi/generated/kontakt/ansprechpartner/index.shtml." . $sprache; # Ausgabe aller Ansprechpartner für Kontaktseite open (SACTIVE, "> $savefile") or die "Konnte die Datei $savefile nicht oeffnen\n "; my $dollar = '$'; print SACTIVE <
$ansprechpartner{"verkauf_".$sprache}
$ansprechpartner{"verkauf_np_".$sprache}
$ansprechpartner{"weiterverarbeitung_".$sprache}
$ansprechpartner{"marketing_".$sprache}
$ansprechpartner{"einkauf_".$sprache}
$ansprechpartner{"verkehrswesen_".$sprache}
$ansprechpartner{"rohstoffeinkauf_".$sprache}
$ansprechpartner{"presse_".$sprache}
$ansprechpartner{"werksbesichtigung_".$sprache}
$ansprechpartner{"werkszeitschrift_".$sprache}


EOT close SACTIVE or die "Konnte Datei $file nicht schliessen\n "; } sub zusammenfassung { my $var = shift; if ($var eq "start") { print ""; } elsif ($var eq "end") { print "
Name Zus. Bezeichnung Zus. Bezeichnung Col2 Rubriken auf Kontaktseite? auf rechter Seite? in Serviceteam? Pfad
"; } if ($var eq "kontakt") { print <$name, $vorname $zus_bezeichnung $zus_bezeichnung_col2 @rubrikenzuordnung $anz_kontaktseite $anz_col2 $anz_serviceteam >>> EOT } } sub APSeiten_generieren { my $ap = $SYSTEM_CONF{'DOCUMENT-ROOT'}."/dh/ssi/generated/kontakt/ansprechpartner/ap.txt"; my @linguas = qw(de fr en); open (AP, "< $ap") or die "Konnte die AP-Datei nicht oeffnen!"; while () { chomp; $_ =~ s/\s+//g ; #Leerzeichen entfernen foreach my $lingua (@linguas) { my $verzeichnis = $SYSTEM_CONF{'DOCUMENT-ROOT'}; my $savefile = $verzeichnis . "/dh/ssi/generated/kontakt/ansprechpartner/".$_.".shtml.".$lingua; open (SACTIVE, "> $savefile") or die "Konnte die Datei $savefile nicht oeffnen\n"; close SACTIVE or die "Konnte Datei $file nicht schliessen\n"; } } close AP; } sub readDynamicFile { my $dynamicfile = $SYSTEM_CONF{'SITE-DIR'} ."/dynamic/allgemein.conf"; my $dynamic; open (TRANS, "< $dynamicfile") or die "Konnte die Dynamic Datei nicht oeffnen\n"; my $i = 0; while () { chomp; $_ = m|\s*REPLACE\s*\[(.*)\]\s*BY\s*\[(.*)\]|; $dynamic{$1} = $2; } close TRANS; }