es gibt mal wieder ein neues Modul, diesmal ist es eine Shoutbox.
Die Shoutbox hat folgende Features:
1. Spamschutz (einstellbar über Backend)
2. Design komplett über Backend konfigurierbar
3. Normale Ausgabe mit begrenzter Anzahl der Einträge oder Archiv mit allen Einträgen
4. Einträge können mit grafishen Smilieys verschönert werden
5. Im Backend können Einträge gelöscht werden
Installation:
Die Shoutbox braucht eine extra Tabelle in der Datenbank:
SQL-Dump:
Code: Alles auswählen
create table con_sbox(
id INT (10) not null AUTO_INCREMENT PRIMARY KEY,
ip varchar(15) NOT NULL,
date int(20) NOT NULL,
name varchar(20) NOT NULL,
bla varchar(250) NOT NULL );
Code: Alles auswählen
$cfg["tab"]["sbox"] = $cfg['sql']['sqlprefix']."_sbox";
Und hier das Modul:
INPUT:
Code: Alles auswählen
/*****************************************************
* SHOUTBOX INPUT
*
* Shoutbox-Modul basierend auf der Shoutbox von
* www.x-periences.de mit einigen Erweiterungen
* Author : D. Buhmann
* cyberdan@cyberdan.de
* Created : 24-03-04
******************************************************/
echo "<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\">
<tr bgcolor=\"#E8E8EE\" >
<td>
Breite der Shoutbox:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[10]\" value=\"CMS_VALUE[10]\">
</td>
</tr>
<tr>
<td>
Breite der Inputfelder (Name, Text):
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[11]\" value=\"CMS_VALUE[11]\">
</td>
</tr>
<tr bgcolor=\"#E8E8EE\" >
<td>
maximale Zeichenanzahl eines Eintrags, Höchstwert: 230 Zeichen:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[12]\" value=\"CMS_VALUE[12]\">
</td>
</tr>
<tr>
<td>
maximale Zeichenanzahl für ein Wort:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[13]\" value=\"CMS_VALUE[13]\">
</td>
</tr>
<tr bgcolor=\"#E8E8EE\" >
<td>
Zeitdauer für den Spamschutz (Minuten):
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[14]\" value=\"CMS_VALUE[14]\">
</td>
</tr>
<tr>
<td>
Anzahl der Einträge, die ein User machen darf, bis der Spamschutz aktiv wird:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[15]\" value=\"CMS_VALUE[15]\">
</td>
</tr>
<tr bgcolor=\"#E8E8EE\" >
<td>
Anzahl der Einträge, die ausgegeben werden:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[16]\" value=\"CMS_VALUE[16]\">
</td>
</tr>
<tr>
<td>
Anzahl der Einträge, die im Archiv und im Backend ausgegeben werden:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[17]\" value=\"CMS_VALUE[17]\">
</td>
</tr>
<tr bgcolor=\"#E8E8EE\" >
<td>
Schriftfarbe der Shoutbox:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[18]\" value=\"CMS_VALUE[18]\">
</td>
</tr>
<tr>
<td>
Schriftfarbe der Fehlermeldungen:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[19]\" value=\"CMS_VALUE[19]\">
</td>
</tr>
<tr bgcolor=\"#E8E8EE\" >
<td>
Hintergrundfarbe der Shoutbox:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[20]\" value=\"CMS_VALUE[20]\">
</td>
</tr>
<tr>
<td>
Hintergrundfarbe der Überschrift:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[21]\" value=\"CMS_VALUE[21]\">
</td>
</tr>
<tr bgcolor=\"#E8E8EE\" >
<td>
Rahmenfarbe der Einträge:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[22]\" value=\"CMS_VALUE[22]\">
</td>
</tr>
<tr>
<td>
Überschrift:
</td>
<td>
<input size=40 type=\"text\" name=\"CMS_VAR[23]\" value=\"CMS_VALUE[23]\">
</td>
</tr>
</table>";
OUTPUT:
Code: Alles auswählen
<?php
/*****************************************************
* SHOUTBOX OUTPUT
*
* Shoutbox-Modul basierend auf der Shoutbox von
* www.x-periences.de mit einigen Erweiterungen
* Author : D. Buhmann
* cyberdan@cyberdan.de
* Created : 24-03-04
******************************************************/
$sbox_width = "CMS_VALUE[10]";
$sbox_inputsize = "CMS_VALUE[11]";
$sbox_maxlength = "CMS_VALUE[12]";
$sbox_wordmaxlength = "CMS_VALUE[13]";
$sbox_spamzeit = "CMS_VALUE[14]";
$sbox_anzusereintr = "CMS_VALUE[15]";
$sbox_limit = "CMS_VALUE[16]";
$sbox_limitall = "CMS_VALUE[17]";
$sbox_schriftcolor = "CMS_VALUE[18]";
$sbox_outputcolor = "CMS_VALUE[19]";
$sbox_bgcolor = "CMS_VALUE[20]";
$sbox_headerbgcolor = "CMS_VALUE[21]";
$sbox_bordercolor = "CMS_VALUE[22]";
$sbox_header = "CMS_VALUE[23]";
if ($edit) { //wenn Zugriff über Backend -> Anzeige der Adminseite
$meineseite=$auth->url();
if ($_POST["sbox_del"])
{
if ($_POST["sbox_delids"])
{
foreach($_POST["sbox_delids"] as $temp)
{
$sbox_loeschen = "delete from ".$cfg["tab"]["sbox"]." where id='$temp'";
$db->query($sbox_loeschen);
}
}
}
// Beginn der Tabelle
echo "<table align=\"center\" class=\"sbox\" width=\"300\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" style=\"background-color: #F4F4F7; border: 1px solid #747488\">\n";
// Ausgabe von eventuellen Fehlermeldungen
if ($sbox_output)
echo "<tr><td><font color=\"$sbox_outputcolor\">$sbox_output</font></td></tr>";
// Ausgabe der Überschrift
echo "<tr><td colspan=\"2\" align=\"center\" style=\"background-color: $sbox_headerbgcolor;\"><font color=\"#FFFFFF\"><strong>$sbox_header</strong></font></td></tr><tr><td><table width=\"100%\" cellspacing=\"2\">\n";
// Variablen für den Seitenwechsel
if (!$_GET["sbox_page"])
$sbox_page = 1;
$sbox_begin = $sbox_limitall*($sbox_page-1);
$sbox_zaehlen = "SELECT COUNT(id) AS total FROM ".$cfg["tab"]["sbox"]."";
$db->query($sbox_zaehlen);
$db->next_record();
$sbox_anzahl = $db->f("total");
$sbox_pagegesamt = ceil($sbox_anzahl/$sbox_limitall);
$sbox_next = $sbox_page+1;
$sbox_previous = $sbox_page-1;
// Einträge auslesen
echo "<form action=\"$meineseite&sbox_page=$sbox_page\" method=\"post\">\n";
$sbox_eintraege = "SELECT id, name, bla FROM ".$cfg["tab"]["sbox"]." ORDER BY date DESC LIMIT $sbox_begin, $sbox_limitall";
$db->query($sbox_eintraege);
// Einträge ausgeben
while ($db->next_record())
{
echo "<tr><td align=\"left\"><input type=\"Checkbox\" name=\"sbox_delids[]\" value=\"".$db->f("id")."\"></td><td style=\"background-color: $sbox_bgcolor; border: 1px solid $sbox_bordercolor\" class=\"sbox\"><b>".$db->f("name").": </b>".$db->f("bla")."</td></tr>\n";
}
echo "<tr><td align=\"right\" colspan=\"2\"><input type=\"Submit\" name=\"sbox_del\" value=\"löschen\"></td></tr>";
echo "</form>";
// Seitenwechsel
echo "</table></td></tr><tr><td align=\"center\">";
if ($sbox_page != 1)
echo "<a href=\"$meineseite&sbox_page=$sbox_previous\">prev</a>";
else
echo "prev";
echo " <b>$sbox_page</b> ";
if ($sbox_page != $sbox_pagegesamt)
echo "<a href=\"$meineseite&sbox_page=$sbox_next\">next</a>";
else
echo "next";
echo "</td></tr>\n";
// Ende Tabelle
echo "</table>";
}
else { //Zugriff über Frontend und Anzeige der Shoutbox
echo "<style type=\"text/css\">
<!--
.sbox {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 7pt; font-weight:norm; color:$sbox_schriftcolor; background-color:$sbox_bgcolor}
-->
</style>";
if ($_GET["showall"] != "") //wenn das Archiv angezeigt wird
{
$showall_value = 1;
$meineseite=$sess->url("front_content.php?client=$client&lang=$lang&subid=$subid&idcat=$idcat&idart=$idart&idside=$idside&showall=$showall_value");
$url=$sess->url("front_content.php?client=$client&lang=$lang&subid=$subid&idcat=$idcat&idart=$idart&idside=$idside");
// Beginn der Tabelle
echo "<table class=\"sbox\" width=\"$sbox_width\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" style=\"background-color: #F4F4F7; border: 1px solid #747488\">\n";
// Ausgabe der Überschrift
echo "<tr><td align=\"center\" style=\"background-color: $sbox_headerbgcolor;\"><font color=\"#FFFFFF\"><strong>Shoutbox Archiv</strong></font></td></tr><tr><td><table width=\"100%\" cellspacing=\"2\">";
// Variablen für den Seitenwechsel
if (!$_GET["sbox_page"])
$sbox_page = 1;
$sbox_begin = $sbox_limitall*($sbox_page-1);
$sbox_zaehlen = "SELECT COUNT(id) AS total FROM ".$cfg["tab"]["sbox"]."";
$db->query($sbox_zaehlen);
$db->next_record();
$sbox_anzahl = $db->f("total");
$sbox_pagegesamt = ceil($sbox_anzahl/$sbox_limitall);
$sbox_next = $sbox_page+1;
$sbox_previous = $sbox_page-1;
// Einträge auslesen
$sbox_eintraege = "SELECT name, bla FROM ".$cfg["tab"]["sbox"]." ORDER BY date DESC LIMIT $sbox_begin, $sbox_limitall";
$db->query($sbox_eintraege);
// Einträge ausgeben
while ($db->next_record())
{
echo "<tr><td style=\"background-color: $sbox_bgcolor; border: 1px solid $sbox_bordercolor\" class=\"sbox\"><b>".$db->f("name").": </b>".$db->f("bla")."</td></tr>\n";
}
echo "</table></td></tr>";
// Ausgabe von eventuellen Fehlermeldungen
if ($sbox_output)
echo "<tr><td><font color=\"$sbox_outputcolor\">$sbox_output</font></td></tr>";
echo "<tr><td align=\"center\">";
if ($sbox_page != 1)
echo "<a href=\"$meineseite&sbox_page=$sbox_previous\">prev</a>";
else
echo "prev";
echo " <b>$sbox_page</b> ";
if ($sbox_page != $sbox_pagegesamt)
echo "<a href=\"$meineseite&sbox_page=$sbox_next\">next</a>";
else
echo "next";
echo "<br><a href=\"$url\">$sbox_header</a></td></tr></table>\n";
}
else //normal Anzeige der Shoutbox (nur x Einträge)
{
echo "<script language=\"JavaScript\">
<!--
function sbox_out(text, inputname)
{
if (document.sbox(inputname).value=='')
{
document.sbox(inputname).value = text;
}
}
function sbox_over(text, inputname)
{
if (document.sbox(inputname).value == text)
{
document.sbox(inputname).value = '';
}
}
function SetEmo(emo)
{
document.sbox.sbox_bla.value+=''+emo;document.sbox.sbox_bla.focus();
}
-->
</script>";
// System-Variablen
$sbox_formquery = substr(strrchr($REQUEST_URI, '/'),1); // form-Attribut für das Formular
$sbox_spam = time()-($sbox_spamzeit*60); // Zeitpunkt für Spamschutz
$sbox_ip = $_SERVER["REMOTE_ADDR"]; // IP des Users
$sbox_date = time(); // aktueller Zeitpunkt
// überprüfen, ob der User schreiben darf
$sbox_pruefen = "SELECT COUNT(id) AS total FROM ".$cfg["tab"]["sbox"]." WHERE ip='$sbox_ip' and date>'$sbox_spam'";
$db->query($sbox_pruefen);
if ($db->f("total") >= $sbox_anzusereintr)
$sbox_lock = 1;
else
$sbox_lock = 0;
// Formular auswerten
if ($_POST["sbox_submit"])
{
$sbox_name = trim($_POST["sbox_name"]);
$sbox_bla = trim($_POST["sbox_bla"]);
if (!$sbox_name or !$sbox_bla or $sbox_name == 'Name' or $sbox_bla == 'Text')
$sbox_output = "Name u. Text eingeben";
else
{
if ($sbox_lock == 0)
{
$sbox_check = 0;
// Eintrag zu lang
if (strlen($sbox_bla) > $sbox_maxlength or strlen($sbox_bla) > 230)
{
$sbox_output = "Eintrag zu lang";
$sbox_check = 1;
}
// einzelnes Wort zu lang?
$sbox_inhalt=explode(" ", $sbox_bla);
foreach ($sbox_inhalt as $sbox_temp)
{
if (strlen($sbox_temp)>$sbox_wordmaxlength)
{
$sbox_output = "einzelnes Wort zu lang";
$sbox_check = 1;
}
}
// neuen Eintrag in die Datenbank schreiben
if ($sbox_check == 0)
{
$sbox_name = htmlentities(strip_tags($sbox_name));
$sbox_bla = htmlentities(strip_tags($sbox_bla));
//smileys in Einträge einsetzen
$sbox_bla = eregi_replace("8-o",
'<img src="img/bigeek.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace("%-\)",
'<img src="img/rolleyes.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace(":-/",
'<img src="img/mad.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace(":yes:",
'<img src="img/yes.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace(":no:",
'<img src="img/no.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace("8-\)",
'<img src="img/cool.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace(":lol:",
'<img src="img/laugh.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace(";-\(|;\(",
'<img src="img/cry.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace(":-\)|:\)",
'<img src="img/smile.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace(";-p|;-\)|;\)",
'<img src="img/smilewinkgrin.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace(":-D",
'<img src="img/biggrin.gif" border="0">',$sbox_bla);
$sbox_bla = eregi_replace(":-p",
'<img src="img/bigrazz.gif" border="0">',$sbox_bla);
$sql = "INSERT into ".$cfg["tab"]["sbox"]." (ip, date, name, bla) VALUES ('$sbox_ip', '$sbox_date', '$sbox_name', '$sbox_bla')";
$db->query($sql);
}
}
// Spamschutz aktiv
else
{
$sbox_output = "sorry, spamschutz aktiv";
}
// Name und Text zurücksetzen
if ($sbox_check == 0)
{
$sbox_name="Name";
$sbox_bla="Text";
}
}
$sbox_name = stripslashes(strip_tags(str_replace("\"", "'", $sbox_name)));
$sbox_bla = stripslashes(strip_tags(str_replace("\"", "'", $sbox_bla)));
}
else
{
$sbox_name="Name";
$sbox_bla="Text";
}
$showall_value = 1;
$url=$sess->url("front_content.php?client=$client&lang=$lang&subid=$subid&idcat=$idcat&idart=$idart&idside=$idside&showall=$showall_value");
// Beginn der Tabelle
echo "<table class=\"sbox\" width=\"$sbox_width\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" style=\"background-color: #F4F4F7; border: 1px solid #747488\">\n";
// Ausgabe der Überschrift
echo "<tr><td align=\"center\" style=\"background-color: $sbox_headerbgcolor;\"><font color=\"#FFFFFF\"><strong>$sbox_header</strong></font></td></tr><tr><td><table width=\"100%\" cellspacing=\"2\">";
// Einträge auslesen
$sbox_eintraege = "SELECT name, bla FROM ".$cfg["tab"]["sbox"]." ORDER BY date DESC LIMIT $sbox_limit";
$db->query($sbox_eintraege);
// Einträge ausgeben
while ($db->next_record())
{
echo "<tr><td style=\"background-color: $sbox_bgcolor; border: 1px solid $sbox_bordercolor\" class=\"sbox\"><b>".$db->f("name").": </b>".$db->f("bla")."</td></tr>\n";
}
echo "</table></td></tr>";
// Ausgabe von eventuellen Fehlermeldungen
if ($sbox_output)
echo "<tr><td><font color=\"$sbox_outputcolor\">$sbox_output</font></td></tr>";
//<!-- Beginn: Shoutbox Formular -->
echo "<form name=\"sbox\" action=\"$sbox_formquery\" method=\"post\">";
echo "<tr><td align=\"center\"><input onfocus=\"sbox_over('Name', 'sbox_name');\" onblur=\"sbox_out('Name', 'sbox_name');\" type=\"Text\" name=\"sbox_name\" value=\"$sbox_name\" size=\"$sbox_inputsize\" maxlength=\"20\"></td></tr>";
echo "<tr><td align=\"center\"><input onfocus=\"sbox_over('Text', 'sbox_bla');\" onblur=\"sbox_out('Text', 'sbox_bla');\" type=\"Text\" name=\"sbox_bla\" value=\"$sbox_bla\" size=\"$sbox_inputsize\" maxlength=\"$sbox_maxlength\"></td></tr>";
echo "<tr><td align=\"center\"><input type=\"Submit\" name=\"sbox_submit\" value=\"senden\"> <input type=\"reset\" name=\"sbox_reset\" value=\" reset \"><br> <a href=\"$url\">Archiv</a><br><br>
<A HREF=\"javascript:SetEmo('8-o')\"><IMG SRC='img/bigeek.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A>
<A HREF=\"javascript:SetEmo('%-)')\"><IMG SRC='img/rolleyes.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A>
<A HREF=\"javascript:SetEmo(':-/')\"><IMG SRC='img/mad.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A>
<A HREF=\"javascript:SetEmo(':yes:')\"><IMG SRC='img/yes.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A>
<A HREF=\"javascript:SetEmo(':no:')\"><IMG SRC='img/no.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A>
<A HREF=\"javascript:SetEmo('8-)')\"><IMG SRC='img/cool.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A><br>
<A HREF=\"javascript:SetEmo(':lol:')\"><IMG SRC='img/laugh.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A>
<A HREF=\"javascript:SetEmo(';-(')\"><IMG SRC='img/cry.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A>
<A HREF=\"javascript:SetEmo(':-)')\"><IMG SRC='img/smile.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A>
<A HREF=\"javascript:SetEmo(';-p')\"><IMG SRC='img/smilewinkgrin.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A>
<A HREF=\"javascript:SetEmo(':-D')\"><IMG SRC='img/biggrin.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A>
<A HREF=\"javascript:SetEmo(':-p')\"><IMG SRC='img/bigrazz.gif' ALT='' BORDER='0' ALIGN='absmiddle'></A></td></tr></form></table>";
}
}
?>
Gruß
Daniel