Es ist mal wieder so weit, ein neues Modul für die Community ist da.
Das Gästebuch hat folgende Features:
1.Emoticon Eingabe
2.Spam Schutz einstellbar über Cookies
3.Benachrichtigung über neue Einträge via E-Mail
4.Sofortige anzeige von Einträgen auswählbar
5.IP und Host werden in der DB gespeichert
6.Einträge in das gästebuch können im Backend Aktiviert (wenn keine sofortige Anzeige gewählt)
oder Deaktiviert werden.
7.Roman Block: Ausgabe der max. Zeichen einstellbar. (abschnitt nur nach ganzen Wörtern.
8.URL und E-Mail Adresse werden ausgegeben, wenn der User sie eingibt.
9.Max. angezeigte Einträge pro Seite auswählbar (Blätterfunktion)
- Das Gästebuch Modul benötigt einen zusätzlichen Table in der Datenbank
SQL-Dump:
Code: Alles auswählen
CREATE TABLE con_guestbook (
id int(8) DEFAULT '0' NOT NULL auto_increment,
name varchar(40) NOT NULL,
email varchar(40) NOT NULL,
location varchar(40) NOT NULL,
comments text NOT NULL,
url varchar(50) NOT NULL,
active int(1) DEFAULT '1' NOT NULL,
client int(1) DEFAULT '1' NOT NULL,
date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
PRIMARY KEY (id)
);
$cfg["Tab"]["guestbook"] = "con_guestbook";
$cfgTab_guestbook = "con_guestbook";
- im Layout, dass Ihr benutzen wollt, benötigt Ihr im Head noch folgendes Javascript:
Code: Alles auswählen
<script language="JavaScript">
function insert(gif)
{
document.gb.comments.value +=gif;
opener.show_chars_left();
return;
}
</script>
Das ganze besteht aus zwei Modulen. Also der Ausgabe des Gästebuchs und der Eingabe der Postings
Modul Gästebuch Ausgabe
INPUT:
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : Guestbook Ausgabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
************************************************/
echo "<input type=\"hidden\" name=\"CMS_VAR[0]\" value=\"".$value."\">";
echo "<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\">";
echo "</SELECT></td></tr>";
echo "
<tr>
<td>Anzahl Einträge/Seite: </td>
<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\"></td></tr>";
$query = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE filetype = 'gif'";
$db->query($query);
while ($db->next_record()) {
//$bild replaces old $filename
$bild[$db->f("idupl")] = $db->f("filename");
} // end while
function d_checked($which) {
if ($which != "") {
return "checked";
}
} // end function
echo "<tr>\n";
echo "<td>WWW-Image</td>\n";
echo "<td><select name=\"CMS_VAR[5]\">\n";
if (is_array($bild)) {
foreach ($bild as $key => $value) {
if ("CMS_VALUE[5]" == $value) {
echo "<option selected=\"selected\" value=\"". $value ."\">". $value ."</option>";
} else {
echo "<option value=\"". $value ."\">". $value ."</option>";
} // end if
} // end foreach
} // end if
echo "</select></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td>Mail-Image</td>\n";
echo "<td><select name=\"CMS_VAR[6]\">\n";
if (is_array($bild)) {
foreach ($bild as $key => $value) {
if ("CMS_VALUE[6]" == $value) {
echo "<option selected=\"selected\" value=\"". $cfgClient[1]["frontendpath"]["img"].$value ."\">". $value ."</option>";
} else {
echo "<option value=\"". $value ."\">". $value ."</option>";
} // end if
} // end foreach
} // end if
echo "</select></td>\n";
echo "</tr>\n";
echo "</table>";
OUTPUT:
Code: Alles auswählen
<br><p><B>Einträge mit ICONS haben Links auf E-Mail und URL</B></p>
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Guestbook Ausgabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
************************************************/
$accessGranted = false;
$permissions = $auth->auth["perm"];
$permissions = explode(',', $permissions);
foreach ($permissions as $perm)
if ($perm == "sysadmin" || $perm == "admin[".$client."]")
$accessGranted = true;
switch ($eintrag) { // das erste mal beim aufruf ist $eintrag undefiniert
case "";
$eintrag = "0"; // deswegen wertzuweisung 0
}
$zps = "CMS_VALUE[4]"; // anzeige der einträge pro Seite
$max = ($eintrag + $zps);
$meineseite=$auth->url();
if (!$accessGranted) { $where = " WHERE active=1 AND client=$client"; }
else { $where = " WHERE client=$client"; }
if($accessGranted) {
$sql = "UPDATE ".$cfgTab_guestbook." SET active=".$active." WHERE id='".$gbid."' LIMIT 1";
$db->query($sql);
}
$a = "view";
// wenn view als aktion übergeben wird bzw. beim erstmaligen Seitenaufruf
if($a == "view")
{
//Zählen der Datensätze
$sql = "SELECT count(*) AS total FROM ".$cfgTab_guestbook.$where;
$db->query($sql);
$db->next_record();
$eintraege = $db->f("total");
echo "<br>";
echo "<table>";
//Unternavigation zusammenbauen
$gbnav = "";
$gbnav .= "<table width=520px cellspacing=0 cellpadding=0><tr>";
if ($max >= $eintraege)
$gbnav .= "<td class=textbold><p> Einträge: ".($eintrag+1)."-".($eintraege)." von ".$eintraege."</p></td>";
else
$gbnav .= "<td class=textbold><p> Einträge: ".($eintrag+1)."-".($max)." von ".$eintraege."</p></td>";
$gbnav .= "<td class=textbold align=right><p>";
$pages = $eintraege / $zps;
if ($pages > 1) {
$gbnav .= "gehe zu Seite ";
for ($ii = 0; $ii < $pages; $ii++) {
if ($ii != ($eintrag / $zps)) {
$gbnav .= "<a href=\"$meineseite&a=view&eintrag=";
$gbnav .= ($ii * $zps);
$gbnav .= "\">[".($ii+1)."]</a> ";
}
}
}
$gbnav .= "</p></td>";
//Ausgabe Navigation
// echo $gbnav;
// Daten aus der Datenbank abfragen mit der Einschränkung $eintrag (d.h. welche ausgegeben werden sollen) und $zps (anzahl der anzuzeigenden elemente)
$sql = "SELECT name, email, url, date, location, comments, id, active FROM $cfgTab_guestbook $where order by date desc LIMIT $eintrag,$zps";
$db->query($sql);
// Auslesen des Ergebnisse pro Reihe und Generierung der Seite
while ($db->next_record()) {
echo "<p><table width=80% border=0 cellpadding=0 cellspacing=0>";
echo "<td class=textbold><span ID=fontCMS_VALUE[1]>".$db->f("name")."</span><br><span ID=fontCMS_VALUE[2]>".$db->f("date")."</span></td>";
echo "<td align=right valign=top>";
if($accessGranted) {
if ($db->f("active") == 0) { $imgsrc = $cfgPathContenido.$cfgPathImg."deactivate.gif"; }
if ($db->f("active") == 1) { $imgsrc = $cfgPathContenido.$cfgPathImg."activ.gif"; }
echo "<a href=$meineseite&active=".(($db->f("active")*-1)+1)."&gbid=".$db->f("id")."&eintrag=".$eintrag."><img src=$imgsrc border=0></a>";
}
if ($db->f("url") != "") { echo "<a href=\"http://".$db->f("url")."\" target=_blank><img src=".$cfgClient[1]["frontendpath"]["img"]."upload/bilder/CMS_VALUE[5] border=0 hspace=5></a>"; }
if ($db->f("email") != "") { echo "<a href=\"mailto:".$db->f("email")."\"><img src=".$cfgClient[1]["frontendpath"]["img"]."upload/bilder/CMS_VALUE[6] border=0></a></td>"; }
echo "</tr>";
echo "<tr><td class=text ID=fontCMS_VALUE[3] colspan=3 valign=top><p>".stripslashes($db->f("comments"))."</p></td></tr>";
//Eintrag aktivieren/deaktivieren
{
if ($a == "view") { $imgsrc = $cfgPathContenido.$cfgPathImg."line_top.gif"; }
echo "<tr><td colspan=2><a href=\"#top\"><img src=$imgsrc border=0></a></td></tr>";
}
echo "</table></p><br>";
}
//Ausgabe Navigation
echo $gbnav;
}
echo "</table>";
?>
Gästebuch Eintrag:
INPUT:
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : Guestbook Eingabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
************************************************/
echo "<input type=\"hidden\" name=\"CMS_VAR[0]\" value=\"".$value."\">";
echo "<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\">";
echo "</SELECT></td></tr>";
echo "<tr valign=\"top\"><td width=\"202\">Emailbenachrichtigung: ";
echo "Ja <INPUT TYPE=\"checkbox\" NAME=\"CMS_VAR[3]\" VALUE=\"1\" ";
if("CMS_VALUE[3]" == 1){echo "checked=checked"; };
echo "> An:</td><td>";
echo "<INPUT TYPE=\"text\" NAME=\"CMS_VAR[4]\" VALUE=\"";
if("CMS_VALUE[4]"){ echo "CMS_VALUE[4]"; } else { echo $cfgNewsletter["from"]; };
echo "\"></td></tr>";
if("CMS_VALUE[5]" == 1) { $checked = "checked=checked"; }
//else { $checked = ""; }
echo "<tr>
<td>Sofort anzeigen:</td>
<td><input type=\"checkbox\" name=\"CMS_VAR[5]\" value=\"1\" ".$checked."></td>
</tr>
";
echo "<tr>";
echo "<td width=\"202\">Cookie gegen widerholte Einträge :</td><td><INPUT TYPE=\"radio\" NAME=\"CMS_VAR[6]\"
VALUE=\"0\"";
if("CMS_VALUE[6]" ==0){echo "checked=checked";};echo"> off
<INPUT TYPE=\"radio\" NAME=\"CMS_VAR[6]\" VALUE=\"1\"";
if("CMS_VALUE[6]" ==1){echo "checked=checked";};echo"> on</td></tr>";
echo "<tr>";
echo"<td width=\"202\">Cookie Lifetime (1 = 1 Tag etc.) :
</td><td><input type=\"text\" name=\"CMS_VAR[8]\" value=\"CMS_VALUE[8]\" ></td></tr>";
echo "<tr>";
echo"<td width=\"202\">Angezeigte Länge in Zeichen :
</td><td><input type=\"text\" name=\"CMS_VAR[7]\" value=\"CMS_VALUE[7]\" ></td></tr>";
echo "</table>";
Code: Alles auswählen
<br><p><B>Bitte mindestens Name und Kommentar angeben</B>
<div>Um Ihrem Beitrag ein <b>Emoticon</b> hinzuzufügen, einfach auf ein Smiley klicken ! Sie können auch den</div>
<div>Code eingeben, der erste Smiley wäre dann z.B.: :-)</div></p>
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Guestbook Ausgabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
************************************************/
$activ = "CMS_VALUE[5]";
if ($activ == "") { $activ = "0";
}
$sperre ="CMS_VALUE[6]";
$links = explode('?',$PHP_SELF);
$link = $links[0];
$link = $link."?idcat=".$idcat; // back-link
$meineseite=$auth->url();
if ($a == "") { $a = "add"; }
if ($a == "add") {
echo "<br>";
echo "<FORM name='gb' id='gb' action=".$auth->url()." method='post' enctype='application/x-www-form-urlencoded'>";
echo "<INPUT TYPE=hidden NAME=a VALUE=send>";
echo "<input type=hidden name=required value=name,comments>";
echo "<table border=0 cellpadding=4 cellspacing=0 width=515 >
<tr><td class=p1 align=right width=12%><B> Name: </b></td><td><INPUT class=tr12 TYPE=text NAME=name VALUE='$name'style=width:95%;></td><td width=160 rowspan=8 valign=top>
<table width=142 border=0 align=right cellspacing=0 cellpadding=0>
<tr>
<td width=78 class=text><strong>Bedeutung</strong></td>
<td width=39 class=text><div align=center><strong>Icon </strong></div></td>
<td width=40 class=text><strong> Code</strong></td>
</tr>
<tr>
<td class=p4>lacht</td>
<td align=center valign=middle><img src=smileys/smile.gif onClick=insert(':-)');></td>
<td class=p4>:-)</td>
</tr>
<tr>
<td class=p4>Zunge streckend</td>
<td align=center valign=middle><img src=smileys/tongue.gif onClick=insert(':-P');></td>
<td class=p4>:-P</td>
</tr>
<tr>
<td class=p4>augenzwinkernd</td>
<td align=center valign=middle><img src=smileys/wink.gif onClick=insert(';-)');></td>
<td class=p4>;-)</td>
</tr>
<tr>
<td class=p4>laut lachend</td>
<td align=center valign=middle><img src=smileys/laugh.gif onClick=insert(':lol:');></td>
<td class=p4>:lol:</td>
</tr>
<tr>
<td class=p4>unsicher</td>
<td align=center valign=middle><img src=smileys/unsure.gif onClick=insert(':unsure:');></td>
<td class=p4>:unsure:</td>
</tr>
<tr>
<td class=p4>cool</td>
<td align=center valign=middle><img src=smileys/cool.gif onClick=insert('8-)');></td>
<td class=p4>8-)</td>
</tr>
<tr>
<td class=p4>ängstlich</td>
<td align=center valign=middle><img src=smileys/huh.gif onClick=insert(':huh:');></td>
<td class=p4>:huh:</td>
</tr>
<tr>
<td class=p4>wütend</td>
<td align=center valign=middle><img src=smileys/mad.gif onClick=insert(':angry:');></td>
<td class=p4>:angry:</td>
</tr>
<tr>
<td class=p4>erstaunt</td>
<td align=center valign=middle><img src=smileys/blink.gif onClick=insert(':blink:');></td>
<td class=p4>:blink:</td>
</tr>
<tr>
<td class=p4>traurig</td>
<td align=center valign=middle><img src=smileys/sad.gif onClick=insert(':-(');></td>
<td class=p4>:-(</td>
</tr>
<tr>
<td class=p4>breit grinsend</td>
<td align=center valign=middle><img src=smileys/biggrin.gif onClick=insert(':-))');></td>
<td class=p4>:-))</td>
</tr>
<tr>
<td class=p4>erschrocken</td>
<td align=center valign=middle><img src=smileys/surprised.gif onClick=insert(':-O');></td>
<td class=p4>:-0</td>
</tr>
<tr>
<td class=p4>augenrollen</td>
<td align=center valign=middle><img src=smileys/rolleyes.gif onClick=insert(':rolleyes:');></td>
<td class=p4>:rolleyes:</td>
</tr>
</table></td>
<tr><td class=p1 align=right width=12%> E-Mail: </td><td><INPUT class=tr12 TYPE=text NAME=email VALUE='$email' style=width:95%;></td></tr><tr>
<tr><td TD class=p1 align=right width=12%> Homepage: </td><td><INPUT class=tr12 TYPE=text NAME=url VALUE='$url' style=width:95%;></td></tr>
<tr valign=top><td class=p1 align=right width=10%><b> Kommentar: </b></td><td><TEXTAREA class=tr13 NAME=comments VALUE='$comments' cols=21 rows=11 wrap=physical style=width:95%;></TEXT"."AREA></td></tr>
<tr><td class=p1 align=right width=12%><a href=# onClick=gb.submit();>Eintragen </a></td></tr>
</table>";
}
// wenn ein eintrag geschrieben werden soll
if($a == "send") {
// Formatierung des Textes aus dem Kommentarfeld
if($name!=""&&$comments!="") //Abfangen der "leeren" Einträge
{
$mailkomm = stripslashes($comments);
$comments = nl2br("$comments");
$comments = addslashes("$comments"); //Abfangen von TAGS
$comments = strip_tags( $comments );
//-------------------- konvertiere Smileys ---------------------------------
$comments = eregi_replace(":-\)\)|:\)\)|:biggrin:",
'<img src="smileys/biggrin.gif" border="0">',$comments);
$comments = eregi_replace(":-\)|:\)|:smile:",
'<img src="smileys/smile.gif" border="0">',$comments);
$comments = eregi_replace(":-D|:-D|:lol:",
'<img src="smileys/laugh.gif" border="0">',$comments);
$comments = eregi_replace(":huh:",
'<img src="smileys/huh.gif" border="0">',$comments);
$comments = eregi_replace(":rolleyes:",
'<img src="smileys/rolleyes.gif" border="0">',$comments);
$comments = eregi_replace(":O\)|:o\)",
'<img src="smileys/smile2.gif" border="0">',$comments);
$comments = eregi_replace(";-\)|;\)|:wink:",
'<img src="smileys/wink.gif" border="0">',$comments);
$comments = eregi_replace(":-\(|:\(|:sad:",
'<img src="smileys/sad.gif" border="0">',$comments);
$comments = eregi_replace(":angry:",
'<img src="smileys/mad.gif" border="0">',$comments);
$comments = eregi_replace(":-D|:D|:happy:",
'<img src="smileys/happy.gif" border="0">',$comments);
$comments = eregi_replace(":heart:",
'<img src="smileys/heart.gif" border="0">',$comments);
$comments = eregi_replace(":-P|:P|:tongue:",
'<img src="smileys/tongue.gif" border="0">',$comments);
$comments = eregi_replace("8-\)|8\)|:cool:",
'<img src="smileys/cool.gif" border="0">',$comments);
$comments = eregi_replace(":-\(|:\(|:weep:",
'<img src="smileys/weep.gif" border="0">',$comments);
$comments = eregi_replace(":-o|:o|:astonished:",
'<img src="smileys/surprised.gif" border="0">',$comments);
$comments = eregi_replace(":blink:",
'<img src="smileys/blink.gif" border="0">',$comments);
$comments = eregi_replace(":wub:",
'<img src="smileys/wub.gif" border="0">',$comments);
$comments = eregi_replace(":unsure:",
'<img src="smileys/unsure.gif" border="0">',$comments);
// ---------Abschnitt nach n Zeichen-------------------------------------
for ($i=CMS_VALUE[7]; $i < CMS_VALUE[7]+20; $i++)
{
$comments1 = substr($comments , 0, $i);
$cut = substr($comments, $i);
if ((ord ($cut) == 32)||(ord ($cut) == 44)||(ord ($cut) == 45)) {
$comments= substr($comments , 0, $i);
$comments .= ' .....';
}
}
// -------------- IP /Host speichern ----------------------------------
$ip = getenv('REMOTE_ADDR');
$host = gethostbyaddr($ip);
// -------------- Cookie Setzen ---------------------------------------
setcookie("AJUS-Forumeintrag","ja",time()+CMS_VALUE[8]*24*3600);
if($HTTP_COOKIE_VARS["AJUS-Forumeintrag"]=="ja" && $sperre ==1){
echo"<br><p><font class=textbold><b>Sie haben sich bereits eingetragen !<br>";
if (CMS_VALUE[8] == 1){
echo"Sie können sich Morgen erneut eintragen.";
}
else{
echo"Sie können sich in CMS_VALUE[8] Tagen erneut eintragen.</b></p>";
}
}
else{
$url = Str_replace("http://","",$url);
$sql = "INSERT into ".$cfg["Tab"]["guestbook"]." (name, email, location, url, date, comments, active, client) VALUES ('$name', '$email', '$ip/$host', '$url', NOW(), '$comments', '$activ', $client)";
$db->query($sql);
if("CMS_VALUE[3]" == 1 && "CMS_VALUE[4]" != "") {
$mailbody = "Von: $name ( $email )\nHomepage: $url\n\nKommentar:\n$mailkomm\n\n http://".getenv("HTTP_HOST")."$meineseite";
mail("CMS_VALUE[4]", "neuer Gaestebuch-Eintrag", $mailbody, "From: Gaestebuch<CMS_VALUE[4]>\nX-Mailer: PHP/" . phpversion(). "\n");
};
echo "<p class=textbold> Danke! Ihr Beitrag wurde eingetragen</p>";
}
}
else
{
echo "<br><p><font class=textbold><b>Bitte überprüfen Sie ihre Eingaben!</b></p>";
echo" <form action='$link' method='post'>
<input type=hidden name=name value=$name>
<input type=hidden name=email value=$email>
<input type=hidden name=url value=$url>
<input type=hidden name=comments value=$comments>
<input class=\"tr12\" type='submit' value='« zurück'>
</form> ";
}
}
?>
Die Bilder für E-mail und URL müssen im Ordner upload liegen und sind dann über das Template
wählbar.
Im Backend kann man dann die Einträge aktivieren oder deaktivieren, Ich habe dafür
ein rotes Kreutz und einen grünen Haken verwendet, so wie sie im Backend überall zu finden
sind.
Bitte auf der Seite vom Ajus klauen. Und wenn ihr schon mal dort seid, Einträge im
Gästebuch sind erwünscht.
Und Hier die Links:
Gästebuch Ausgabe:
http://www.ajus-hamburg.de/cms/front_co ... dcatart=28
Gästebuch Ausgabe:
http://www.ajus-hamburg.de/cms/front_co ... dcatart=29
Gruß aus Hamburg,
euer Snoopy