Liebe Experten,
als völliger PERL-Laie gelingt es mir einfach nicht, eine automatische email bei einem neuen Eintrag in ein PERL-Script zu installieren. So, wie ich es gemacht habe, bekomme ich immer 3 Mails bei einer Änderung. Außerdem möchte ich gern den Inhalt eines bestimmten Feldes mit gemailt bekommen. Kann mir bitte jemand helfen? (Suche "ich@xyz.de" um zu meiner Version zu gelangen)
+++
$link="baseportal.pl?htx=$htx";
$link.="&db=$db" if $db ne "";
$_header="Content-type: text/css\n\n" if $css;
unless($pure)
{
out <<EOF;
<html><head><title>baseportal Wiki</title>
<link href="$link&kennung=3&pure=1&css=1" type="text/css" rel="stylesheet">
</head><body>
EOF
}
sub esc { my $x=$_[0]; my $y=$_[1]?"":"\n"; $x=~ s/([^a-zA-Z0-9 $y^])/"^".unpack("C",$1)."^"/ge; $x }
#sub esc { my $x=$_[0]; $x=~ s/([\=\*\-\_\+\!\^\|\[\]\~\$\@\%\:])/"^".unpack("C",$1)."^"/ge; $x }
sub get_page
{
get "Kennung==$_[0] sort=- range=0,1";
my $red=$Text eq ""?' style="color:red"':"";
my $new=$Datum ge datum("-7","intern")?' <span style="color:red">'.($_[1]?"***":"^42^^42^^42^").'</span>':"";
local $index=""; do_headers($Text, "$link&kennung=$Kennung") if $do_index && !$_[1];
return "<a href=\"$link&kennung=$Kennung\"$red>$Titel</a>$new$index";
}
s#\^#^94^#g; # ^ selbst escapen
s#(^|\n)(\+\+\+\n)(.*?)(\n\+\+\+\n)#$1.$2.esc($3).$4#ges; # codeblock
s#\\([^\n\\]*)\\#"\\".esc($1)."\\"#ge; # alles zwischen \...\ wird nicht ersetzt
s#([\$\@\%]\w[\w{}\[\]()]*)#esc($1)#ge; # $var[3]
# Titel mit Kennung ersetzen (oder umgekehrt) - dadurch kann später beliebig der Titel geändert werden - was bei den anderen wikis nicht geht. Genial, wie ich finde ;-)))
s/(\[([^\]]*)\])/
my ($r,$t)=($1,$2);
unless($t=~ m#^(include|copy|image|class)=(.*)#i || $t=~ m#^([^|]*)\|(.*)#)
{
if($_[1])
{
get ["Titel", "~=", $t];
if($_amount==0)
{
put ["Titel", $t]; get ["Titel", "==!", $t]; mod "Id==$_id", ["Kennung", $_id]; my $k=$_id;
get "Kennung==0 sort=- range=0,1"; put ["Kennung", 0, "Autoren", $Autoren, "Titel", $Titel, "Text", "$Text\n - [$k]"]; # neue seite automatisch ins inhaltsverzeichnis eintragen
$Kennung=$k;
}
$r="[$Kennung]"
} else
{
get "Kennung==$t sort=- range=0,1";
$r="[$Titel]"
}
}
$r
/ge;
s#\^(\d{1,3})\^#pack("C",$1)#ge; # ^...^ ascii-code umsetzung
# letzten änderungen am wiki gesamt ausgeben
if($cmd eq "changes")
{
out get_navi($kennung); $kennung="";
out "<h1 class=Titel>Letzte Änderungen</h1>";
out "<div class=Text>Letzte Änderungen gesamt:<br><br>";
out "<table class=table><tr><th>Titel</th><th>Zeit</th><th>Zeichen</th><th>Autor</th><th>Grund</th></tr>\n";
my $red; my $lastdatum; my $thisdatum;
get "Id==* sort=- range=0,100";
while(get_next)
{
$red=$Text eq ""?' style="color:red"':"";
$thisdatum=datum($Datum,"Tag.Monat.Jahr");
out "<tr><td align=right>$thisdatum</td></tr>" if $lastdatum ne $thisdatum; $lastdatum=$thisdatum;
out "<tr><td><a href=\"$link&id=$_id\"$red>$Titel</a></td><td align=right>".datum($Datum,"Stunde:Minute")."</td><td align=right>".($red?"":length($Text))."</td><td>$Autor</td><td>$Grund</td></tr>\n";
}
out "</table></div>";
}
# stichworte ausgeben
if($cmd eq "keywords")
{
get "Begriff==*", "keywords";
out get_navi($kennung); $kennung="";
out "<h1 class=Titel>Stichwortverzeichnis</h1><ul><table width=60%>";
my $lf="";
while(get_next "keywords")
{
my $f=uc(substr($Begriff,0,1));
out "<tr><td style=\"font-size:120%;font-weight:bold\"><br>$f</td></tr>" if $f ne $lf; $lf=$f;
out "<tr><td valign=top>".convert_html($Begriff)."</td><td>";
foreach $Kennung (split /#/, $Seiten)
{
get "Kennung==$Kennung" unless $Titel=$k{$Kennung}; $k{$Kennung}=$Titel; # cache
out "<a href=\"$link&kennung=$Kennung\">$Titel</a><br>";
}
out "</td></tr>";
}
out "</table></ul>";
}
# eintrag ändern
if($cmd eq "mod" && $id ne "")
{
$_put{Text}=mod_links($_put{Text},1);
get "Id==$id";
$_put{Kennung}=$kennung=$Kennung; $cmd=""; $id="";
$_put{Autor}=$nAutor if $nAutor ne "";
$_put{Autoren}=$Autoren;
$_put{Autoren}.=($Autoren eq ""?"":", ").$_put{Autor} if index(", $Autoren,", ", $_put{Autor},")<0;
if($Gesperrt)
{
out "Seite gesperrt. Änderungen nicht möglich.";
} else
{
put if $_put{Text} ne "" && $_put{Titel} ne "";
}
if($nAutor ne "")
{
get "Name==$nAutor", "users";
put ["Name", $nAutor], "users" if $_amount==0;
}
do_keywords if $Stichworte ne $_put{Stichworte};
}
# bestimmten eintrag ausgeben - vorcheck ob der eintrag noch neu ist: dann gleich zu do_mod
if($kennung ne "" || $cmd eq "" || ($cmd eq "" && $id ne ""))
{
if($id ne "")
{
get "Id==$id";
} else
{
$kennung||=0;
get "Kennung==$kennung sort=- range=0,1";
}
if($Text eq "" || ($Bearbeitung && !$css && !$show)) { $id=$_id; $cmd="do_mod"; }
}
# änderungsformular ausgeben
if($cmd eq "do_mod")
{
get "Id==$id" if $id ne "";
$titel||=$Titel;
$autor=$Autor;
$autoren=$Autoren;
$bearbeitung=$Bearbeitung?" checked":"";
$stichworte=$Stichworte;
$kennung=$Kennung;
$_=mod_links($Text);
s/&/&/g; s/"/"/g; s/</</g; s/>/>/g;
$text=$_;
my $zurueck=$bearbeitung?"<a href=\"$link&kennung=$kennung&show=1\">Seite anzeigen</a>":"<a href=\"$link&kennung=$kennung\">Ohne Änderungen zurück zur Seite</a>";
get "Id==*", "users";
$select="";
while(get_next "users")
{
$select.="<option".($autor eq $Name?" selected":"").">$Name";
}
my $titeltext="Seite bearbeiten";
my $buttontext="Änderungen speichern";
get "Kennung==$kennung sort=- range=0,1";
if($id ne $Id)
{
$titeltext="Alte Version vom ".datum($Datum)." bearbeiten";
$buttontext="Diese Version zur aktuellen machen";
}
mail 'scriptum@frankenzeit.de', "Neuer Eintrag in der Datenbank Frîjas Codex", "Es wurde ein neuer Datensatz in der Datenbank eingetragen";
out <<EOF;
<h1 class=Titel>$titeltext</h1>
<div class=Text>
<form action="$link&cmd=mod&id=$id" method="post" enctype="multipart/form-data">
<input type="hidden" name="htx=" value="$htx">
<input type="hidden" name="cmd=" value="mod">
<input type="hidden" name="id=" value="$id">
Titel: <input type="text" name="Titel:=" value="$titel" size=60><br>
<textarea name="Text:=" style="width:100%" cols=60 rows=25>$text</textarea>
Autor: <select name="Autor:="><option>$select</select> oder neu: <input type="text" name="nAutor=" size=16>
Stichworte: <input type="text" name="Stichworte:=" value="$stichworte" size=40>
<br><br>
<table width=90%><tr><td><input type="submit" value="$buttontext" accessKey=s title="ALT + S - Abschicken"></td><td><a href="$link&kennung=85">Eingabehilfe</a></td><td align=right>$zurueck</td></tr></table>
</form>
$kennung=""; $id="";
}
# bestimmten eintrag ausgeben
if($kennung ne "" || $cmd eq "" || ($cmd eq "" && $id ne ""))
# Ältere Versionen einer Seite ausgeben
if($cmd eq "old")
{
get "Kennung==$kennung sort=- range=0,10";
$datum=datum($Datum);
$titel="<a href=\"$link&kennung=$kennung\">$Titel</a>";
$autoren=$Autoren;
$autor=$Autor;
$id=$_id;
$text="Letzte Änderungen an dieser Seite:<br><br>";
$text.="<table><tr><th>Datum</th><th>Zeichen</th><th>Autor</th><th>Grund</th></tr>\n";
while(get_next)
{
$text.="<tr><td align=right><a href=\"$link&cmd=do_mod&id=$_id\">".datum($Datum)."</a></td><td align=right>".length($Text)."</td><td>$Autor</td><td>$Grund</td></tr>\n";
}
$text.="</table>";
} elsif($css)
{
out $Text;
} else
{
# Ergebnis sichern, weil beim Ersetzen vom Text auch ein get vorkommt, das diese überschreibt. mhhh, nicht allzu schön :-(
$datum=datum($Datum);
$titel=$Titel;
$autoren=$Autoren;
$autor=$Autor;
$gesperrt=$Gesperrt;
$id=$_id;
$aelter=" - <a href=\"$link&cmd=old&kennung=$kennung\">Ältere Versionen</a>" if $_amount_query>1; # gibt mehr als 1 version
$_=$Text;
$class="";
out <<EOF;
$navi<h1 class=Titel>$titel</h1>$index
<div class=Text>$text</div>
<div class=info>
<span class=Autoren>$aendertext $datum von $autor<br>
Autoren: $autoren</span><p style="margin:10px"></p>
$aender$aelter
</div>
<br>
EOF
}
</perl>