erst einmal ein dickes Danke an Snoopy und Darth-Vader für das spitzen Gästebuch.
Ich habe mir nun von http://www.forseth.de/cms/front_content ... 1&client=1 die Version snoopys-guestbook-01-03-2004.zip heruntergeladen und wie einige andere leichte Probleme bei der Integration in die Version 4.5.2.alpha gehabt.
Nun habe ich die Module vom Gästebuch für mich angepasst und ein wenig erweitert, sowie ein extra Punkt Gästebuch unter Extras im Backend zum Verwalten eingefügt.
Als erstes habe ich die Installationsanweisungen von Snoopy und Darth-Vader befolgt, also:
Die Bilder der Smileys habe ich in den Ordner images/smileys unter dem Mandantenordner und in dem Ordner contenido/images/smileys, für das Backend (weiter unten beschrieben) kopiert.####################################################################################################################
## INSTALLATIONSANWEISUNGEN: ##
####################################################################################################################
1.) Die Tabelle für Gästebuch in der Contenido-Datenbank erstellen:
--> SQL-Befehl um die Tabelle für das Gästebuch anzulegen:ACHTUNG:Code: Alles auswählen
CREATE TABLE con_guestbook (id INT 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));
Das "con" in "con_guestbook" ist, bei einem anderen Tabellen-prefix,
natürlich entsprechend anzupassen!
####################################################################################################################
2.) Im includes Ordner im Contenido-Ordner in der Datei "cfg_sql.inc.php" 2 Zeilen hinzufügen:
--> Folgende Zeilen in "cfg_sql.inc.php" hinzufügen:
$cfg["tab"]["guestbook"] = $cfg['sql']['sqlprefix']."_guestbook";
$cfgTab_guestbook = $cfg['sql']['sqlprefix']."_guestbook";
####################################################################################################################
3.) Im Layout, das benutzt werden soll, im Header noch ein wenig Javascript-Code einfügen:
--> Folgenden JavaScript-Code im Layout zwischen "<head>" und "</head>" einfügen:####################################################################################################################Code: Alles auswählen
<script language="JavaScript" type="text/JavaScript"> <!-- function insert(gif) { document.gb.comments.value +=gif; opener.show_chars_left(); return; } //--> </script>
##
Dann habe ich zwei Module angelegt. Einmal "Gästebuch Eingabe" und einmal "Gästebuch Ausgabe"
Das hier ist nun der Code den ich für mich angepasst habe:
In "Gästebuch Ausgabe" habe ich nicht so viel angepasst. Für mich war nur wichtig das ich im Input nicht nur GIF sondern alle Bilder zur Auswahl hab.
Gästebuch Ausgabe Input
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : Guestbook Ausgabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
* Modified : Feb. 29th 2004 by Lars D. Forseth <lars@forseth.de>
*
* Modified : by http://www.xtended-cooperation.de
* Modified : ralf.fleischer@xtended-cooperation.de
* Modified : 31.März 2005
************************************************/
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'";
$query = "SELECT * FROM ".$cfg["tab"]["upl"];
$db->query($query);
while ($db->next_record()) {
//$bild replaces old $filename
$bild[$db->f("idupl")] = "upload/".$db->f("dirname").$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>";
Code: Alles auswählen
<br /><strong>Einträge mit ICONS haben Links auf E-Mail und URL</strong><br />
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Guestbook Ausgabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
* Modified : Mar. 1st 2004 by Lars D. Forseth <lars@forseth.de>
*
* Modified : by http://www.xtended-cooperation.de
* Modified : ralf.fleischer@xtended-cooperation.de
* Modified : 31.März 2005
************************************************/
$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 ".$cfg["tab"]["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 ".$cfg["tab"]["guestbook"].$where;
$db->query($sql);
$db->next_record();
$eintraege = $db->f("total");
echo "<br />";
//Unternavigation zusammenbauen
$gbnav = "";
$gbnav .= "\n<table width=\"400px\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n\t<tr>\n";
if ($max >= $eintraege){
$gbnav .= "\t\t<td class=\"textbold\"> Einträge: ".($eintrag+1)."-".($eintraege)." von ".$eintraege."</td>\n";
}else{
$gbnav .= "\t\t<td class=\"textbold\"> Einträge: ".($eintrag+1)."-".($max)." von ".$eintraege."</td>\n";
}
$gbnav .= "\t\t<td class=\"textbold\" align=\"right\">";
$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 .= "</td>\n\t</tr>\n</table>\n<br /> \n";
//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 ".$cfg["tab"]["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 "\n<table width=\"400px\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n\t<tr>\n";
echo "\t\t<td class=\"textbold\"><span class=\"gb_name\">".$db->f("name")."</span><br /><span class=\"gb_date\">".$db->f("date")."</span></td>\n";
echo "\t\t<td align=\"right\" valign=\"top\" class=\"textbold\">";
###############################################################ALT############################################################################
/*if($accessGranted) {
if ($db->f("active") == 0) { $imgsrc = $cfgPathContenido.$cfgPathImg."upload/bilder/but_cancel_kl.gif"; }
if ($db->f("active") == 1) { $imgsrc = $cfgPathContenido.$cfgPathImg."upload/bilder/but_ok_kl.gif"; }
echo "<a href=\"$meineseite&contenido=".$sess->id."&active=".(($db->f("active")*-1)+1)."&gbid=".$db->f("id")."&eintrag=".$eintrag."\"><img src=$imgsrc border=0></a>";
}*/
################################################################NEU###########################################################################
/*if($accessGranted) {
if ($db->f("active") == 0)
{
$imgsrc = $cfgPathContenido.$cfgPathImg."upload/bilder/but_cancel_kl.gif";
echo "<a href=$meineseite&active=".(($db->f("active")*-1)+1)."&gbid=".$db->f("id")."&eintrag=".$eintrag."><img src=$imgsrc border=0 alt=\"Eintrag ist deaktiviert, klicken um Eintrag freizugeben\"></a> ";
echo "<a href=\"\" onClick=\"window.open('../../gb_delete_inactive.php?sess=".$sess->id."&id=".$db->f("id")."', 'NewWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=n0,width=150,height=150')\"><img src=../contenido/images/delete.gif border=0 alt=\"Eintrag löschen\"></a>";
}
if ($db->f("active") == 1)
{
$imgsrc = $cfgPathContenido.$cfgPathImg."upload/bilder/but_ok_kl.gif";
echo "<a href=$meineseite&active=".(($db->f("active")*-1)+1)."&gbid=".$db->f("id")."&eintrag=".$eintrag."><img src=$imgsrc border=0 alt=\"Eintrag ist freigegeben, klicken zum deaktivieren\"></a>";
}
}*/
##############################################################################################################################################
if ($db->f("url") != "") { echo "<a href=\"http://".$db->f("url")."\" target=\"_blank\"><img src=\"".$cfgClient[1]["frontendpath"]["img"]."CMS_VALUE[5]\" border=\"0\" hspace=\"5\" alt=\"webseite\" /></a>"; }else{echo " ";}
if ($db->f("email") != "") { echo "<a href=\"mailto:".$db->f("email")."\"><img src=\"".$cfgClient[1]["frontendpath"]["img"]."CMS_VALUE[6]\" border=\"0\" alt=\"email\" /></a></td>"; }else{echo " </td>\n";}
echo "</tr>\n";
echo "\t<tr>\n\t\t<td class=\"gb_text\" colspan=\"2\" valign=\"top\">".$db->f("comments")."</td>\n</tr>\n";
//Eintrag aktivieren/deaktivieren
{
if ($a == "view") { $imgsrc = $cfgPathContenido.$cfgPathImg."upload/bilder/_top.gif"; }
echo "\t<tr>\n\t\t<td colspan=\"2\"> <br /><a href=\"#top\"><img src=\"$imgsrc\" border=\"0\" alt=\"top\" /></a></td>\n</tr>\n";
}
echo "</table>\n<br />";
}
//Ausgabe Navigation
echo $gbnav;
}
?>
Der Inputbereich sieht nun so aus:
Das mit der Emailbenachichtigung und dem Sofortanzeigen ist noch das selbe wie im Original. Leider bekomme ich bei dem setzen des Cokkies gegen wiederholte Einträge noch eine Fehlermeldung"Cannot modify header information...". Ich werde versuchen es noch zu ändern bzw. zu berichtigen.
Das neue sind die Felder darunter.
"Angezeigter Name für Emailbenachichtigung" bedeutet nur das in der Email die man bekommt wenn die Benachichtigung an ist nicht mehr nur "neuer Gaestebuch-Eintrag" sondern der dort eingetragene Name plus "neuer Gaestebuch-Eintrag" also zum Beispiel "xtended neuer Gaestebuch-Eintrag"
Ich fand es für mich wegen der Übersichtlichkeit wichtig und da ich so die Emails durch den unterschiedlichen Betreff leichter Automatisch sortieren lassen kann.
Das Feld "Link für Gästebuchausgabe" hat folgende Funktion.
Man kann über ein DropDown die Inhaltsseite auswählen die die Gästebuchausgabe enthält. Dadurch entstehen zwei neue Funktionen.
Bei aktivierter EMailbenachichtigung steht nicht mehr der Link der Inhaltsseite des Eingabemodules sondern der Link des Ausgabemodules in der EMail.
Man kommt also direkt zu der Ausgabe des Gästebuches.
Der Zweite Sinn besteht darin das nach dem Eintragen der Benutzer automatisch nach 5 Sekunden auf die Ausgabe des Gästebuches weitergeleitet wird.
Wenn "Sofortanzeigen" ausgeschaltet ist kommt zusätzlich in der EMail der Hinweis das der Eintrag erst im Backend freigeschaltet werden muss.
Gästebuch Eingabe Input
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : Guestbook Eingabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
* Modified : Feb. 29th 2004 by Lars D. Forseth <lars@forseth.de>
*
* Modified : by http://www.xtended-cooperation.de
* Modified : ralf.fleischer@xtended-cooperation.de
* Modified : 31.März 2005
************************************************/
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 "<tr>";
echo"<td width=\"202\">Angezeigter Name für Emailbenachichtigung :
</td><td><input type=\"text\" name=\"CMS_VAR[9]\" value=\"CMS_VALUE[9]\" ></td></tr>";
$select_cat = "CMS_VALUE[11]";
$sql = "SELECT
*
FROM
".$cfg["tab"]["cat_tree"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c,
".$cfg["tab"]["cat_lang"]." AS d,
".$cfg["tab"]["art_lang"]." AS e
WHERE
a.idcat = b.idcat AND
b.idcat = d.idcat AND
d.idlang = '".$lang."' AND
b.idart = e.idart AND
c.idcat = a.idcat AND
c.idclient = '".$client."' AND
e.idlang = '".$lang."'
ORDER BY
a.idtree";
$db->query($sql);
echo "<tr>";
echo"<td width=\"202\">Link für Gästebuchausgabe:
</td><td>";
echo "<SELECT name='CMS_VAR[11]' SIZE='1'>";
if($select_cat!="0" && $select_cat!="") {
echo "<option value=0>-- ".i18n("None")." --</option>";
} else {
echo "<option value=0 selected>-- ".i18n("None")." --</option>";
}
while ( $db->next_record() ) {
$spaces = "";
for ($i=0; $i<$db->f("level"); $i++) {
$spaces .= " ";
}
$tmp_title = $db->f("title");
if ( strlen($tmp_title) > 32 ) {
$tmp_title = substr($tmp_title, 0, 32);
}
$spaces .= " ";
if ( $db->f("idcatart") != $select_cat ) {
echo "<option value=\"".$db->f("idcatart")."\">$spaces ".$db->f("name")."---".$tmp_title."</option>";
} else {
echo "<option value=\"".$db->f("idcatart")."\" selected>$spaces ".$db->f("name")."---".$tmp_title."</option>";
}
}
echo "</SELECT>";
echo "</td></tr>";
echo "</table>";
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Guestbook Eingabe v1.1
* Copyright : P.beauvain
* Created : 14-02-2004
* Modified : Mar. 1st 2004 by Lars D. Forseth <lars@forseth.de>
*
* Modified : by http://www.xtended-cooperation.de
* Modified : ralf.fleischer@xtended-cooperation.de
* Modified : 31.März 2005
************************************************/
$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"; }
/* in diesem Ordner liegen meine smileys für das Gästebuch
(sollte nicht mit "/" beginnen, MUSS aber mit "/" enden!)
*/
$dir = "images/smileys/";
/* end definition v. "$dir" */
echo "
<br /><strong>Bitte mindestens Name und Kommentar angeben</strong>
<div>Um ein <strong>Emoticon</strong> hinzuzufügen, einfach auf ein Smiley klicken oder :-) eingeben!</div>";
if ($a == "add") {
echo "<br />";
echo "<form name='gb' id='gb' action='".$link."' method='post' style='display:inline;'>";
echo "<input type=\"hidden\" name=\"a\" value=\"send\" />";
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr align=\"left\" valign=\"top\">
<td style=\"padding-left:60px;\"><strong>Name: </strong></td>
<td><input type=\"text\" name=\"name\" value=\"$name\" /></td>
<td rowspan=\"4\" style=\"padding-left:10px;\"><table border=\"0\" align=\"right\" cellspacing=\"0\" cellpadding=\"2\">
<tr class=\"text\">
<td class=\"text\"><strong>Bedeutung</strong></td>
<td class=\"text\"><div align=\"center\"><strong>Icon </strong></div></td>
<td class=\"text\"><strong> Code</strong></td>
</tr>
<tr class=\"text\">
<td>lacht</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."smile.gif\" onClick=\"insert(':-)');\" alt=\"smile\" /></td>
<td>:-)</td>
</tr>
<tr class=\"text\">
<td>Zunge streckend</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."tongue.gif\" onClick=\"insert(':-P');\" alt=\"tongue\" /></td>
<td>:-P</td>
</tr>
<tr class=\"text\">
<td>zuzwinkernd</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."wink.gif\" onClick=\"insert(';-)');\" alt=\"wink\" /></td>
<td>;-)</td>
</tr>
<tr class=\"text\">
<td>laut lachend</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."laugh.gif\" onClick=\"insert(':lol:');\" alt=\"lol\" /></td>
<td>:lol:</td>
</tr>
<tr class=\"text\">
<td>unsicher</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."unsure.gif\" onClick=\"insert(':unsure:');\" alt=\"unsure\" /></td>
<td>:unsure:</td>
</tr>
<tr class=\"text\">
<td>cool</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."cool.gif\" onClick=\"insert('8-)');\" alt=\"cool\" /></td>
<td>8-)</td>
</tr>
<tr class=\"text\">
<td>nicht versteht</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."huh.gif\" onClick=\"insert(':huh:');\" alt=\"huh\" /></td>
<td>:huh:</td>
</tr>
<tr class=\"text\">
<td>wütend</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."mad.gif\" onClick=\"insert(':angry:');\" alt=\"angry\" /></td>
<td>:angry:</td>
</tr>
<tr class=\"text\">
<td>erstaunt</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."blink.gif\" onClick=\"insert(':blink:');\" alt=\"blink\" /></td>
<td>:blink:</td>
</tr>
<tr class=\"text\">
<td>traurig</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."sad.gif\" onClick=\"insert(':-(');\" alt=\"sad\" /></td>
<td>:-(</td>
</tr>
<tr class=\"text\">
<td>breit grinsend</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."biggrin.gif\" onClick=\"insert(':-))');\" alt=\"biggrin\" /></td>
<td>:-))</td>
</tr>
<tr class=\"text\">
<td>erschrocken</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."surprised.gif\" onClick=\"insert(':-O');\" alt=\"surprised\" /></td>
<td>:-0</td>
</tr>
<tr class=\"text\">
<td>augenrollen</td>
<td align=\"center\" valign=\"middle\"><img src=\"".$dir."rolleyes.gif\" onClick=\"insert(':rolleyes:');\" alt=\"rolleyes\" /></td>
<td>:rolleyes</td>
</tr>
</table>
</td>
</tr>
<tr align=\"left\" valign=\"top\">
<td style=\"padding-left:60px;\">E-Mail: </td>
<td><input type=\"text\" name=\"email\" value=\"$email\" /></td>
</tr>
<tr align=\"left\" valign=\"top\">
<td style=\"padding-left:60px;\">Homepage: </td>
<td><input type=\"text\" name=\"url\" value=\"$url\" /></td>
</tr>
<tr align=\"left\" valign=\"top\">
<td colspan=\"2\" style=\"padding-left:60px;\"><strong> Kommentar:</strong><br />
<textarea name=\"comments\" cols=\"25\" rows=\"15\">$comments</textarea><br /><!-- <a href=$link onClick=gb.submit();>Eintragen</a> -->
<input type=\"submit\" value=\"Eintragen\" /></td>
</tr>
</table>
</form>";
} // end "if($a == "add")"
// wenn ein eintrag geschrieben werden soll
if($a == "send") {
// Formatierung des Textes aus dem Kommentarfeld
if($_POST["name"]!="" && $_POST["comments"]!="") { //Abfangen der "leeren" Einträge
/* filter given data */
$error = "no";
$mailkomm = stripslashes($comments);
$comments = trim($comments);
$comments = nl2br($comments);
$comments = str_replace("'","",$comments);
//$comments = str_replace(";","",$comments);
$comments = str_replace("--","",$comments);
$comments = htmlentities($comments);
$comments = str_replace("<br />","",$comments);
$comments = str_replace("<br/>","",$comments);
$comments = str_replace("<br>","",$comments);
$comments = str_replace("\n","<br>",$comments);
// filter email
if ($error == "no") {
if ($email) {
if (strlen($email) > 50) {$error = "Emailadresse ist zu lang! (max. 50 Zeichen erlaubt)";}
else {
$valid = (eregi ("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]+$",$email));
if (!$valid == 1) {$error = "Emailadresse ist ungültig, bitte überprüfen!";}
else {
$parts = explode("@",$email);
$lasts = explode(".",$parts[1]);
$domain = $lasts[(count($lasts)-2)].".".$lasts[(count($lasts)-1)];
$valid = (int) (checkdnsrr($domain,ANY));
if ($valid == 0) {$error = "Emailadresse ist ungültig, bitte überprüfen!";}
} // end else
} // end else
} // end if email
} // end if no error
// filter name
if ($error == "no") {
if (strlen($name) > 30) {$error = "Name ist zu lang! (max. 30 Zeichen erlaubt)";}
else {
$name = nl2br($name);
$name = str_replace("'","",$name);
$name = str_replace(";","",$name);
$name = str_replace("--","",$name);
$name = htmlentities($name);
}
} // end if
// filter url
if ($error == "no") {
if ($url) {
if (strlen($url) > 100) {$error = "URL ist zu lang! (max. 100 Zeichen erlaubt)";}
else {
$url = str_replace("\n","",$url);
$url = str_replace("'","",$url);
$url = str_replace(";","",$url);
$url = str_replace("--","",$url);
$url = str_replace("\"","",$url);
$url = str_replace("'","",$url);
$url = str_replace("\'","",$url);
$url = str_replace(" ","",$url);
$url = strtolower($url);
$sheme_given = (eregi("^([a-z]+://)",$url));
if ($sheme_given == 0) {$url = "http://".$url;}
$url1 = (parse_url($url));
$host = $url1["host"];
$valid = (eregi("([a-z0-9_\\-\\.])+(\\.)+([a-z]{2,4})",$host));
if (!$valid == 1) {$error = "Homepage ist ungültig, bitte überprüfen!";}
else {
$valid = (int) (checkdnsrr($host,ANY));
if ($valid == 0) {$error = "Homepage ist ungültig, bitte überprüfen!";}
} // end else
} // end else
} // end if url
} // end if
if ($error == "no") {
if (strlen($comments) > 3000) {$error = "Kommentar ist zu lang! (max. 3000 Zeichen erlaubt)";}
else { // no errors in given data yet...
//-------------------- konvertiere Smileys ---------------------------------
$comments = eregi_replace(":-\)\)|:\)\)|:biggrin:",
"<img src=\'".$dir."biggrin.gif\' border=\"0\" alt=\"biggrin\" />",$comments);
$comments = eregi_replace(":-\)|:\)|:smile:",
"<img src=\'".$dir."smile.gif\' border=\"0\" alt=\"smile\" />",$comments);
$comments = eregi_replace(":-D|:-D|:lol:",
"<img src=\'".$dir."laugh.gif\' border=\"0\" alt=\"laugh\" />",$comments);
$comments = eregi_replace(":huh:",
"<img src=\'".$dir."huh.gif\' border=\"0\" alt=\"huh\" />",$comments);
$comments = eregi_replace(":rolleyes:",
"<img src=\'".$dir."rolleyes.gif\' border=\"0\" alt=\"rolleyes\" />",$comments);
$comments = eregi_replace(":O\)|:o\)",
"<img src=\'".$dir."smile2.gif\' border=\"0\" alt=\"smile2\" />",$comments);
$comments = eregi_replace(";-\)|;\)|:wink:",
"<img src=\'".$dir."wink.gif\' border=\"0\" alt=\"wink\" />",$comments);
$comments = eregi_replace(":-\(|:\(|:sad:",
"<img src=\'".$dir."sad.gif\' border=\"0\" alt=\"sad\" />",$comments);
$comments = eregi_replace(":angry:",
"<img src=\'".$dir."mad.gif\' border=\"0\" alt=\"mad\" />",$comments);
$comments = eregi_replace(":-D|:D|:happy:",
"<img src=\'".$dir."happy.gif\' border=\"0\" alt=\"happy\" />",$comments);
$comments = eregi_replace(":heart:",
"<img src=\'".$dir."heart.gif\' border=\"0\" alt=\"heart\" />",$comments);
$comments = eregi_replace(":-P|:P|:tongue:",
"<img src=\'".$dir."tongue.gif\' border=\"0\" alt=\"tongue\" />",$comments);
$comments = eregi_replace("8-\)|8\)|:cool:",
"<img src=\'".$dir."cool.gif\' border=\"0\" alt=\"cool\" />",$comments);
$comments = eregi_replace(":-\(|:\(|:weep:",
"<img src=\'".$dir."weep.gif\' border=\"0\" alt=\"weep\" />",$comments);
$comments = eregi_replace(":-o|:o|:astonished:",
"<img src=\'".$dir."surprised.gif\' border=\"0\" alt=\"surprised\" />",$comments);
$comments = eregi_replace(":blink:",
"<img src=\'".$dir."blink.gif\' border=\"0\" alt=\"blink\" />",$comments);
$comments = eregi_replace(":wub:",
"<img src=\'".$dir."wub.gif\' border=\"0\" alt=\"wub\">",$comments);
$comments = eregi_replace(":unsure:",
"<img src=\'".$dir."unsure.gif\' border=\"0\" alt=\"unsure\" />",$comments);
// see if there are more smileys than allowed:
$imgs = explode("<img src=",$comments);
$imgs = count($imgs);
if ($imgs > 10) {
$error = "Zu viele Smileys! (max. 10 Stück pro Eintrag)";
$comments = "";
} // end if($imgs > 10)
} // end else no errors
} // end else ("no errors in given data yet")
/* end "filter given data" */
/* if no error was found while filtering */
if ($error == "no") {
/* search for words longer than 50 chars and shorten them + <br> */
$c = 0;
for ($i=0; $i < strlen($comments); $i++) {
$c++;
if (($comments[$i] == " ") or ($comments[$i] == "\n") or
($comments[$i] == "\r")) {$c = 0;}
if ($c > 48) {
$comments = substr_replace($comments, "-<br>", $i, 0);
$i = $i+4;
$c = 0;
} // end if
} // end for
// ---------Abschnitt nach n Zeichen -------------------------------------
//$z = (int) ("CMS_VALUE[7]");
//for ($i=$z; $i < $z+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 .= ' .....';
// } // end if
//} // end for
// -------------- IP /Host speichern ----------------------------------
$ip = getenv('REMOTE_ADDR');
$host = gethostbyaddr($ip);
// -------------- Cookie Setzen ---------------------------------------
/* if no cookie lifetime given */
$lifetime = (int) ("CMS_VALUE[8]");
if($lifetime!="0" && $lifetime!=""){setcookie("Paintball-Pirmasens-Gästebuch","ja",time()+ ($lifetime*24*3600));}
/* end if no cookie-lifetime given */
if($HTTP_COOKIE_VARS["Paintball-Pirmasens-Gästebuch"]=="ja" && $sperre ==1){
echo "<br><p><font class=textbold><b>Sie haben sich bereits eingetragen !<br>";
if ($lifetime == 1){echo "Sie können sich Morgen erneut eintragen.";}
else {echo "Sie können sich in CMS_VALUE[8] Tagen erneut eintragen.</b></p>";}
} // end if
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($activ==0)
{
$aktivieren="\n\nLoggen Sie sich bitte mit Ihrem Benutzernamen un Kennwort in Contendio ein\nund schalten Sie den Eitrag unter -Extras- -Gästebuch- noch frei.";
}
else
{
$aktivieren="\n\nDieser Eintrag wurde sofort zur ansicht freigeschaltet";
}
if("CMS_VALUE[3]" == 1 && "CMS_VALUE[4]" != "") {
if ("CMS_VALUE[11]">0)
{
$meineseite="/front_content.php?idcatart=CMS_VALUE[11]";
}
$mailbody = "Von: $name ( $email )\nHomepage: $url\n\nKommentar:\n$mailkomm\n\n http://".getenv("HTTP_HOST")."$meineseite".$aktivieren;
mail("CMS_VALUE[4]", "CMS_VALUE[9], neuer Gaestebuch-Eintrag", $mailbody, "From: Gaestebuch<CMS_VALUE[4]>\nX-Mailer: PHP/" . phpversion(). "\n");
};
if("CMS_VALUE[5]" == 1)
{
echo "<br><p class=text><b>Danke,<br />Ihr Beitrag wurde eingetragen.</b><br />Sie werden automatisch in 5 sekunden weitergeleitet.</p><br>";
}
else
{
echo "<br><p class=text><b>Danke,<br />Ihr Beitrag wurde eingetragen und wird nach Sichtung von uns freigeschaltet.</b><br />Sie werden automatisch in 5 sekunden weitergeleitet.</p><br>";
}
echo "\n<script language=\"JavaScript\" type=\"text/JavaScript\">
<!--
function weiter() {
window.location.href=\"http://".getenv("HTTP_HOST")."$meineseite"."\";
}
window.setTimeout(\"weiter()\",5000)
//-->
</script> \n";
} // end else
} // end "if no error was found while filtering"
/* errors were found in given data */
else {
$comments = str_replace("<br>","\n",$comments);
echo "
<br><br><br><font color=\"red\"><b><u>Fehler</u><br>".$error."</b></font><br><br>
<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 type=\"submit\" value=\"« zurück\" />
</form>
<br /><br /><br />";}
// end "errors were found in given data"
} // end "Abfangen von leeren Einträgen
else {
$comments = str_replace("<br>","\n",$comments);
echo "
<br><p><font class=\"text\"><strong>Bitte überprüfen Sie ihre Eingaben!</strong></p><br><br>
";
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 type=\"submit\" value=\"« zurück\" />
</form>
";
} // end else
} // end if($a == "send")
?>
Ich habe die obenbeschriebenen Module und das Backend aufeinander angepasst. Das Backend könnte ohne weiteres auch mit den Originalmodulen laufen. Ob es auch in anderen Contenido-Versionen geht kann ich nicht sagen.
Im Backend ist nun ein extra Button
links eine Übersichtsauswahl
und rechts die Einträge des Gästebuches
Dadurch weil ich die Smileys unter cms/images/smileys und contenido/images/smileys kopiert habe, werden sie auch im Backend angezeigt.
Rötlich hinterlegte Zeilen sind noch nicht aktivierte Einträge.
Man kann nun jederzeit einen oder mehrere Einträge gleichzeitig zur Ansicht freischalten oder deaktivieren oder auch löschen.
Ich habe dafür 4 Dateien für das Backend erstellt die in das Verzeichnis contenido/includes kopiert.
http://www.xtended-cooperation.de/cms/u ... cludes.rar
Danach im Verzeichnis contenido/xml in der Datei lang_de_DE.xml unter extra
Code: Alles auswählen
<extra>
<main>Extras</main>
<newsletter>Newsletter</newsletter>
Code: Alles auswählen
<guestbook>Gästebuch</guestbook>
Code: Alles auswählen
<extra>
<main>Extras</main>
<newsletter>Newsletter</newsletter>
Code: Alles auswählen
<guestbook>Guestbook</guestbook>
Code: Alles auswählen
<guestbook>"Gästebuch" in der jeweiligen Sprache</guestbook>
Folgender Code muss bei phpMyAdmin ausgeführt werden.
Vorher kontrollieren ob die 7000-7004 in den jeweiligen Tabellen siehe unten frei ist, ansonst ändern auf eine freie ID z.B. 5000-5004 ausweichen!
Code: Alles auswählen
INSERT INTO con_area VALUES ('7000', '0', 'guestbook', '1', '1');
INSERT INTO con_files VALUES ('7001', '7000', 'include.guest_edit.php', 'main');
INSERT INTO con_files VALUES ('7002', '7000', 'include.guest_left_top.php', 'main');
INSERT INTO con_files VALUES ('7004', '7000', 'include.guest_menu_top.php', 'main');
INSERT INTO con_files VALUES ('7003', '7000', 'include.guest_menu.php', 'main');
INSERT INTO con_frame_files VALUES ('7001', '7000', '4', '7001');
INSERT INTO con_frame_files VALUES ('7002', '7000', '1', '7002');
INSERT INTO con_frame_files VALUES ('7003', '7000', '2', '7003');
INSERT INTO con_frame_files VALUES ('7004', '7000', '3', '7006');
INSERT INTO con_nav_sub VALUES ('7000', '3', '7000', '0', 'navigation/extra/guestbook', '1');
Ein Komplettpacket mit den Smyleys, den Original von Snoopy und Darth-Vader, mit den von mir angepassten Modulen und den Backenddateien könnt ihr hier herunterladen.
http://www.xtended-cooperation.de/cms/u ... ackend.rar
Momentan benutze ich es hier http://www.labrador-vom-stillen-tal.de/ ... hp?idcat=3
gruß yodatortenboxer