Hi, ich suche jemand der mir einen gefallen tut, und zwar hab ich perl nicht im griff und daher diese bitte um diesen gefallen, fals sich jemand zeit nehmen würde.
Es ist so, ich habe ein integriertes gästebuch in perl das in meinen Chat arbeitet, jetzt möchte ich dieses gästebuch ein bisschen aufpeppen. Smiliefunktionen hat er jetzt von mir reinbekommen. Und nun hab ich probiert bbcodes noch reinzuhauen, aber da ich nur die javascript in der html datei einfügen konnte fehlt mir jetzt in der pm datei vo die perlcodes sind des gästebuchs den rest damit er mir die bbcodes auch ausgibt im gästebuch. Das wäre sehr dankbar wen mir da jemand den perlcode reinhauen könnte in der pm datei damit ich auch die bbcodes gebrauchen kann am gästebuch.
hier mal die pm datei des gästebuchs wo ihr mir den perlcode reinhauen müsstet für die bbcodefunktionen.
################################################################################
# #
# Gästebuch 0.95 V1.1 #
# #
# GTChat 0.95 Alpha Plugin #
# Copyright & Written 2005 #
# Author: Michael Schiefer #
# E-Mail: [email]Webmaster@ScriptWorldX.de[/email] #
# Web : http://www.ScriptWorldX.de #
# #
# Gästebuch Script für GTChat 0.95 #
################################################################################
package GTChat::Plugins::GBuch;
use strict;
use DBI;
bless({
template_var_handlers => {
'gbuch' => \&gbuch_handler,
'gbuch_send' => \&gbuchsend_handler,
'gbuch_del' => \&gbuchdel_handler,
},
command_handlers => {
'gbm' => \&gbm_handler,
'gbme' => \&gbme_handler,
},
});
sub gbuch_handler
{
my($self,$main,$text) = @_;
my $von = $main->{current_user}{nick};
my $an = $main->{input}{nickname};
my $page;
if ($an eq "") {
my %info = {};
foreach (split(/&/,$ENV{'QUERY_STRING'}))
{
my ($v,$i) = split(/=/,$_);
$v =~ tr/+/ /;
$v =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$i =~ tr/+/ /;
$i =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$i =~ s///g;
$info{$v} = $i;
}
$an = $info{'an'};
$page = $info{'page'};
}
if ($an eq "") { $an = $main->{current_user}{nick}; }
if ($page eq "") { $page=1; }
my $schleife = "$page"."0";
my $anfang;
if ($schleife > 10) { $anfang = ($page-1); $anfang = "$anfang"."0"; }
##########################################################
##########################################################
my $db_name = "DBI:mysql:usr_web8_1"; #Datenbankname
my $db_user = "web8"; #Datenbank-Username
my $db_pass = "00NJbnsp"; #Datenbank-Passwort
##########################################################
##########################################################
my $dbh = DBI->connect("$db_name","$db_user","$db_pass") || die "Database connection not made: $DBI::errstr";
my $sth = $dbh->prepare("SELECT * FROM gtchat_gb WHERE an = '$an' ORDER BY uhrzeit DESC");
$sth->execute();
my $count=0;
my @gbook=();
my $gbuch=();
while(@gbook=$sth->fetchrow_array)
{
$count++;
}
my $sth = $dbh->prepare("SELECT * FROM gtchat_gb WHERE an = '$an' ORDER BY uid DESC LIMIT $schleife");
$sth->execute();
my $zahl = 0;
my $administer;
my $ausgabe = "";
while(@gbook=$sth->fetchrow_array)
{
$zahl++;
if ($zahl > $anfang)
{
$gbuch->{id} = $gbook[0];
$gbuch->{von} = $gbook[2];
$gbuch->{datum} = $gbook[3];
$gbuch->{uhrzeit} = $gbook[4];
$gbuch->{messa} = $gbook[5];
if($main->{current_user}{nick} eq $an || $main->{current_user}{tempgroup} > 4) { $administer = "<input type=button value=\"Delete\" onClick=\"if (confirm('Soll dieser Beitrag wirklich gelöscht werden?')) document.location.href='$main->{runtime}{completeurl}&template=gbuch_del&uid=$gbuch->{id}&an=$an\';return false\" title=\"Diesen Beitrag löschen!\">"; } else { $administer = ""; }
push @gbook,$gbuch;
$ausgabe = $ausgabe."<div align='center'><table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" class=\"outer\"><tr><td width=\"20%\" align=\"center\" class=\"row1\">[b]Nickname:[/b]</td><td width=\"80%\" align=\"center\" class=\"rowtitle\">[b]Geschrieben am $gbuch->{datum}, um $gbuch->{uhrzeit} Uhr[/b]</td></tr>
<tr><td width=\"20%\" class=\"rowyellow\" align=\"center\" valign=\"top\"><table width=\"100%\" border=\"0\" cellpadding=\"6\" cellspacing=\"0\" class=\"entered\"><tr><td align=\"center\" valign=\"top\"><a href=\"$main->{runtime}{completeurl}&template=gbuch&an=$gbuch->{von}\" title=\"Zum Gästebuch dieses Users!\"><font color=\"#000000\">[b]$gbuch->{von}[/b]</font></a></td></tr></table></td><td width=\"80%\" valign=\"top\"><table width=\"100%\" border=\"0\" cellpadding=\"6\" cellspacing=\"0\" class=\"entered\"><tr><td valign=\"top\">$gbuch->{messa}</td></tr></table></td></tr>
<tr><td width=\"20%\" class=\"row1\" align=\"center\"></td><td width=\"80%\" align=\"right\" class=\"rowtitle\" valign=\"top\">$administer</td></tr></table>
</div>";
}
}
$sth->finish();
$dbh->disconnect();
my $counter;
if ($count > 0) { $counter = ($count-1) };
my $seiten = ($counter / 10);
$gbuch->{seiten} = sprintf("%d",$seiten);
my $site = "";
my $seitencount = 0;
for(my $i = 0; $i <= $gbuch->{seiten}; $i++) {
$seitencount++;
if ($seitencount ne $page) {
$site = $site." <a href=\"$main->{runtime}{completeurl}&template=gbuch&an=$an&page=$seitencount\">$seitencount</a> |";
}
else
{
$site = $site." [b]$seitencount[/b] |";
}
}
$gbuch->{seiten} = "Seiten : | $site";
if ($count > 0)
{
$gbuch->{fehler} = "0";
$gbuch->{ausgabe} = $ausgabe;
}
if ($count eq 0)
{
$gbuch->{fehler} = "1";
$gbuch->{noentry} = "Keine Einträge vorhanden";
}
$gbuch->{count} = $count;
$gbuch->{an} = $an;
$main->{template_vars}{gbuch} = $gbuch;
}
sub gbuchsend_handler
{
my($self,$main,$command,$text) = @_;
my %info = {};
my $an = $main->{input}{an};
my $von = $main->{current_user}{nick};
my $messa = $main->{input}{messa};
if($messa ne "") {
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat+=1;
$Jahrestag+=1;
$Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat;
$Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag;
$Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden;
$Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten;
$Sekunden = $Sekunden < 10 ? $Sekunden = "0".$Sekunden : $Sekunden;
$Jahr+=1900;
my $datum = "$Monatstag.$Monat.$Jahr";
my $uhrzeit = "$Stunden.$Minuten";
$messa =~ s/>/>/g;
$messa =~ s/</</g;
$messa =~ s/(^|\s)((?:https?|ftp):\/\/[^<>\*\s\n\"\]\[\(\)]+[^<>\*\s\n\"\]\[\(\),.?!:-])/"$1<a href=\"".$2."\" target=\"_blank\" class=\"stdlink\" onfocus=\"if (window.resetFocus) resetFocus()\">$2<\/a>"/ige;
$messa =~ s/(^|\s)(www\.[^<>\*\s\n\]\[\(\)]+[^<>\*\s\n\"\]\[\(\),.?!:-])/"$1<a href=\"http:\/\/".$2."\" target=\"_blank\" class=\"stdlink\" onfocus=\"if (window.resetFocus) resetFocus()\">$2<\/a>"/ige;
$messa =~ s/(^|\s)([\w\-_.]+@[\w\-_.]+\.[a-z]{2,})/$1<a href=\"mailto:$2\" class=\"stdlink\" onfocus=\"if (window.resetFocus) resetFocus()\"\>$2<\/a>/ig;
$messa =~ s /<EMBED [^]+>[^]*>/<\/EMBED>/ig;
$messa =~ s/[\\']/\\$&/g;
$messa =~ s/\t/\\t/g;
$messa =~ s/<\/script/<\/'+'script/g;
$messa =~ s/\r?\n/
/g;
##########################################################
##########################################################
my $db_name = "DBI:mysql:usr_web8_1"; #Datenbankname
my $db_user = "web8"; #Datenbank-Username
my $db_pass = "00NJbnsp"; #Datenbank-Passwort
##########################################################
##########################################################
my $dbh = DBI->connect("$db_name","$db_user","$db_pass") || die "Database connection not made: $DBI::errstr";
my $sth = $dbh->prepare("INSERT INTO gtchat_gb (an, von, datum, uhrzeit, messa) VALUES ('$an', '$von', '$datum', '$uhrzeit', '$messa')");
$sth->execute();
my $gbuch;
$gbuch->{an} = $an;
$gbuch->{chatmessage} = ";opener.sendText('/gbm $gbuch->{an} $main->{current_user}{nick} schaut in dein Gästebuch!'";
$main->{template_vars}{gbuch} = $gbuch;
$sth->finish();
$dbh->disconnect();
}
else
{
my $gbuch;
$gbuch->{an} = $an;
$main->{template_vars}{gbuch} = $gbuch;
}
}
sub gbuchdel_handler
{
my($self,$main,$command,$text) = @_;
my %info = {};
foreach (split(/&/,$ENV{'QUERY_STRING'}))
{
my ($v,$i) = split(/=/,$_);
$v =~ tr/+/ /;
$v =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$i =~ tr/+/ /;
$i =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$i =~ s///g;
$info{$v} = $i;
}
my $uid = $info{'uid'};
my $an = $info{'an'};
##########################################################
##########################################################
my $db_name = "DBI:mysql:usr_web8_1"; #Datenbankname
my $db_user = "web8"; #Datenbank-Username
my $db_pass = "00NJbnsp"; #Datenbank-Passwort
##########################################################
##########################################################
my $gbuch;
my $dbh = DBI->connect("$db_name","$db_user","$db_pass") || die "Database connection not made: $DBI::errstr";
my $sth = $dbh->prepare("DELETE FROM gtchat_gb WHERE uid = '$uid'");
$sth->execute();
$sth->finish();
$dbh->disconnect();
$gbuch->{an} = $an;
$main->{template_vars}{gbuch} = $gbuch;
}
sub gbm_handler
{
my($self,$main,$command,$text) = @_;
my @parts = split(/\s+/,$text);
my $tonick = shift @parts;
my $von = $main->{current_user}{nick};
my $candidates = $main->getPossibleOnlineUsers($tonick);
my $user = $candidates->[0];
if ($#$candidates==0)
{
if ($von ne $tonick) {
my $output = $main->createOutput(
{
template => 'gbuch_messi',
name => $main->{current_user}{name},
nick => $main->{current_user}{nick},
color => $main->{current_user}{color},
});
return [$output->restrictToUser($user->{name})];
}
}
}
sub gbme_handler
{
my($self,$main,$command,$text) = @_;
my @parts = split(/\s+/,$text);
my $tonick = shift @parts;
my $von = $main->{current_user}{nick};
my $candidates = $main->getPossibleOnlineUsers($tonick);
if ($#$candidates>0) # Too many users online with nick starting like this
{
return [$main->createErrorOutput('ambiguousname',{nick => $tonick})];
}
elsif ($#$candidates==0 && $von ne $tonick) # User is online
{
my $user = $candidates->[0];
$main->loadUser($user->{name},$user);
my $output = $main->createOutput(
{
template => 'gbuch_messo',
name => $main->{current_user}{name},
nick => $main->{current_user}{nick},
color => $main->{current_user}{color},
});
return [$output->restrictToUser($user->{name})];
}
}
[/list]
Dabei steht messa für die textarea und Messas für die form.
hier noch den javascript den ich dür die html datei reingehauen habe:
[list]<script type="text/javascript" language="javascript">
function smilie(smiliecode) {
document.Messas.messa.value += smiliecode+" ";
document.Messas.messa.focus();
}
function fett()
{
text = prompt("[b]Dein Text[/b]","");
if(text && text!="")
{
text = "[b]"+ text +"[/b]";
document.Messas.messa.value += text;
}
}
function underline()
{
text = prompt("<u>Dein Text</u>","");
if(text && text!="")
{
text = "<u>"+ text +"</u>";
document.Messas.messa.value += text;
}
}
function italic()
{
text = prompt("[i]Dein Text[/i]","");
if(text && text!="")
{
text = "[i]"+ text +"[/i]";
document.Messas.messa.value += text;
}
}
function Farbe()
{
if (document.Messas.Font.selectedIndex=="1")
{
text = prompt("Schreibe dein Text, der ORANGE erscheinen soll!","");
if(text && text!="")
{
text = "[ORANGE]"+ text +"[/ORANGE]";
document.Messas.messa.value += text;
}
}
if (document.Messas.Font.selectedIndex=="2")
{
text = prompt("Schreibe dein Text, der ROT erscheinen soll!","");
if(text && text!="")
{
text = "[ROT]"+ text +"[/ROT]";
document.Messas.messa.value += text;
}
}
if (document.Messas.Font.selectedIndex=="3")
{
text = prompt("Schreibe dein Text, der BLAU erscheinen soll!","");
if(text && text!="")
{
text = "[BLAU]"+ text +"[/BLAU]";
document.Messas.messa.value += text;
}
}
if (document.Messas.Font.selectedIndex=="4")
{
text = prompt("Schreibe dein Text, der GRÜN erscheinen soll!","");
if(text && text!="")
{
text = "[GRÜN]"+ text +"[/GRÜN]";
document.Messas.messa.value += text;
}
}
if (document.Messas.Font.selectedIndex=="5")
{
text = prompt("Schreibe dein Text, der SILBER erscheinen soll!","");
if(text && text!="")
{
text = "[SILBER]"+ text +"[/SILBER]";
document.Messas.messa.value += text;
}
}
}
function Groesse()
{
if (document.Messas.Size.selectedIndex=="1")
{
text = prompt("Schreibe dein Text, der KLEIN erscheinen soll!","");
if(text && text!="")
{
text = "[KLEIN]"+ text +"[/KLEIN]";
document.Messas.messa.value += text;
}
}
if (document.Messas.Size.selectedIndex=="2")
{
text = prompt("Schreibe dein Text, der GROSS erscheinen soll!","");
if(text && text!="")
{
text = "[GROSS]"+ text +"[/GROSS]";
document.Messas.messa.value += text;
}
}
if (document.Messas.Size.selectedIndex=="3")
{
text = prompt("Schreibe dein Text, der RIESIG erscheinen soll!","");
if(text && text!="")
{
text = "[RIESIG]"+ text +"[/RIESIG]";
document.Messas.messa.value += text;
}
}
}
function pruefung(Messas)
{
if(Messas.messa.value.length < 1)
{
alert("Nachrichtfeld muß ausgefüllt werden!")
return false
}
return true
}
</script>
Alles anzeigen
Ich hoffe das reicht und wäre sehr erleichtert wen jemand mir diesen riesen gefallen tun könnte. Habe schon gegooglt aber nichts schlaues gefunden bisher, da ich sowiso kein perl kann *g*