Gästebuch erweitert

Gesperrt
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Gästebuch erweitert

Beitrag von Sven777b »

Hi,

nachdem in meinem Gästebuch schon nach einer Adminfunktion gefragt wurde - und ich nichtmal mitbekommen habe, dass ich schon 12 Einträge habe - hab ich mir das Modul von Jens mal vorgenommen...

1. Erweiterung: Emailbenachrichtigung
Ab sofort kann man bei der Templatekonfiguration eine Checkbox anklicken um die Benachrichtigung zu aktivieren und eine Empfänger-Emailadresse angeben. Standard-Vorgabe ist die Email-Adresse vom Newsletter (config.php)

2. Erweiterung: Löschfunktion
Wenn man mit Admin-Rechten im Backend oder Frontend eingeloggt ist, bekommt man unter jedem Beitrag einen Link "Eintrag löschen". Damit kann man einfach und unkompliziert störende Beiträge entfernen. Der Link ist nur für User mit Admin-Recht zu sehen. Im Frontend benötigt man dazu das Login-Modul (wo will man sich sonst einloggen :lol: )

Wichtig!! bevor Fragen kommen... das Gästebuch benötigt einen neuen Table in der Datenbank. Dazu muss folgender Code ins SQL-Fenster des phpMyAdmin eingefügt werden:

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, 
   date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 
   PRIMARY KEY (id) 
); 
Das Modul:

Code: Alles auswählen

TITEL:
Gästebuch

LASTMODIFY:  29.09.2002 23:09

BESCHREIBUNG:
Dieses Gästebuchmodul benötigt einen zusätzlichen Table in der Datenbank.
geschrieben von Jens Knoblich
Erweiterung Emailbenachrichtigung und Löschfunktion: webmaster@zu-hause.biz

INPUT:

echo "<input type=\"hidden\" name=\"CMS_VAR[0]\" value=\"".$value."\">"; 
echo "<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\">"; 
echo "<tr valign=\"top\"><td width=\"202\">Überschrift:</td>"; 
echo "<td><select name=\"CMS_VAR[1]\" size=\"1\">"; 
if ("CMS_VALUE[1]" != 0) { 
   echo "<option value=\"0\">".$lngForm["nothing"]."</option>"; 
} else { 
   echo "<option value=\"0\" selected>".$lngForm["nothing"]."</option>"; 
} 
for ($i=1; $i<=50; $i++) { 
   if ($i != "CMS_VALUE[1]") { 
            echo "<option value=\"$i\">Font $i</option>"; 
         } else { 
            echo "<option value=\"$i\" selected>Font $i</option>"; 
         } 
} 
echo "</SELECT></td></tr>"; 
echo "<tr valign=\"top\"><td width=\"202\">Text:</td>"; 
echo "<td><select name=\"CMS_VAR[2]\" size=\"1\">"; 
if ("CMS_VALUE[2]" != 0) { 
   echo "<option value=\"0\">".$lngForm["nothing"]."</option>"; 
} else { 
   echo "<option value=\"0\" selected>".$lngForm["nothing"]."</option>"; 
} 
for ($i=1; $i<=50; $i++) { 
	if ($i != "CMS_VALUE[2]") { 
		echo "<option value=\"$i\">Font $i</option>"; 
    } else { 
        echo "<option value=\"$i\" selected>Font $i</option>"; 
    } 
} 
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></table>"; 


OUTPUT:
$meineseite="$PHP_SELF?client=$client&lang=$lang&parent=$parent&subid=$subid&idcat=$idcat&idside=$idside"; 

   if($a == "") 
   { 
      $a="view"; 
   } 
// wenn "add" als aktion übergeben wird 
   if($a == "add") 
   { 

echo "<span id='fontCMS_VALUE[1]'>Eintrag im Gästebuch</span>"; 
echo "<FORM  name='gb' id='gb'  action='$meineseite'  method='post' enctype='application/x-www-form-urlencoded'>"; 
echo "<INPUT  TYPE=hidden  NAME=a  VALUE=send>"; 
echo "<table><tr><td id='fontCMS_VALUE[2]'>Dein Name:</td><td><INPUT  TYPE=text  NAME=name></td></tr><tr><td id='fontCMS_VALUE[2]'>Deine E-mail Adresse:</td><td><INPUT  TYPE=text  NAME=email></td></tr><tr><td id='fontCMS_VALUE[2]'>Deine Homepage:</td><td>http://<INPUT  TYPE=text  NAME=url></td></tr><tr><td id='fontCMS_VALUE[2]'>Dein Wohnort:</td><td><INPUT  TYPE=text  NAME=location></td></tr><tr><td id='fontCMS_VALUE[2]'>Dein Kommentar:</td><td></td></tr><tr><td colspan='2'><TEXT"; 
echo "AREA  NAME=comments  COLS=60  ROWS=6></TEXT"; 
echo "AREA></td></tr>       <tr><td colspan='2' align='center'><INPUT type='Submit' value='eintragen'></td></tr></table>"; 
echo "</FORM><span id='fontCMS_VALUE[2]'><a href='$meineseite&a=view'>Zurück</a></span>"; 

   } 
// wenn "del" als aktion übergeben wird und wir noch im edit-modus sind
   if($a == "del" && $gbid && $perm->have_perm("admin"))
   {
	mysql_query("DELETE FROM con_guestbook WHERE id='".$gbid."' LIMIT 1");
    $a = "view";
   }

// wenn view als aktion übergeben wird bzw. beim erstmaligen Seitenaufruf 
   if($a == "view") 
   { 
      switch ($eintrag)      // das erste mal beim aufruf ist $eintrag undefiniert 
      { 
      case ""; 
          $eintrag = "0";      // deswegen wertzuweisung 0 
      } 
      $zps = "5";              // anzeige der einträge pro Seite 

//Zählen der Datensätze 

      $counter = mysql_query("SELECT Count(*) as total FROM con_guestbook"); 
      $eintraege = mysql_fetch_array($counter); 

// Zusammensetzen der Unternavigation nächste, vorherige, erste, eintragen 

      echo "<center><table><tr><td id='fontCMS_VALUE[2]'>Einträge: "; 
      echo $eintraege[total]; 
      echo "</td>"; 
      echo "<td  id='fontCMS_VALUE[2]'>[ "; 
      $back=$eintrag-5; 
      if ($back >=  0) 
      { 
         echo " <a href=\"$meineseite&a=view&eintrag="; 
         echo $back; 
         echo "\">Vorherige Seite</a> | "; 
      } 
      $eintragen = $eintrag + $zps; 
      if ($eintragen < $eintraege[total]) 
      { 
         echo "<a href=\"$meineseite&a=view&eintrag="; 
         echo $eintragen; 
         echo "\">Nächste Seite</a> | "; 
      } 
      if ($eintrag > 4) 
      { 
         echo "<a href=\"$meineseite&a=view"; 
         echo "\">Erste Seite</a> | "; 
      } 
      echo "<a href=\"$meineseite&a=add\">Eintragen</a> ]</td></tr>"; 
      echo "</table></center>"; 

      echo "<center><table width=\"95%\" align=\"center\">"; 
       echo "<hr color=\"#555555\">"; 
// Daten aus der Datenbank abfragen mit der Einschränkung $eintrag (d.h. welche ausgegeben werden sollen) und $zps (anzahl der anzuzeigenden elemente) 
       $result = mysql_query("SELECT name, email, url, date, location, comments, id FROM con_guestbook order by date desc LIMIT $eintrag,$zps"); 
// Auslesen des Ergebnisse pro Reihe und Generierung der Seite 
       while  ($row  =  mysql_fetch_row($result)) 
      { 
           echo "<tr><td id='fontCMS_VALUE[1]' rowspan=\"5\">$count</td><td><B>Name:</B></td><td id='fontCMS_VALUE[2]'>$row[0]</td><td id='fontCMS_VALUE[1]'><b>Datum:</b></td><td id='fontCMS_VALUE[2]'>$row[3]</td></tr>"; 
           echo "<tr><td id='fontCMS_VALUE[1]'><B>E-mail:</B></td><td colspan=\"3\" id='fontCMS_VALUE[2]'><A  HREF=\"mailto:$row[1]\">$row[1]</a></td></tr>"; 
           echo "<tr><td  id='fontCMS_VALUE[1]'><B>Homepage:</B></td><td colspan=\"3\" id='fontCMS_VALUE[2]'><A  HREF=\"http://$row[2]\" target=\"_blank\">$row[2]</A></td></tr>"; 
           echo "<tr><td valign='top' id='fontCMS_VALUE[1]'><B>Kommentar:</B></td><td colspan=\"3\" id='fontCMS_VALUE[2]'>".stripslashes($row[5])."</td></tr>"; 
           echo "<tr><td colspan=\"5\">";
if($perm->have_perm("admin")){echo "<a href=\"$meineseite&a=del&gbid=$row[6]\" id=\"font21\">Eintrag löschen</a>";}; 
           echo "<hr></td></tr>"; 
         } 
       echo "</table>"; 

//Zählen der Datensätze 

      $counter = mysql_query("SELECT Count(*) as total FROM con_guestbook"); 
      $eintraege = mysql_fetch_array($counter); 

// Zusammensetzen der Unternavigation nächste, vorherige, erste, eintragen 

      echo "<table><tr><td id='fontCMS_VALUE[2]'>Einträge: "; 
      echo $eintraege[total]; 
      echo "</td>"; 
      echo "<td id='fontCMS_VALUE[2]'>[ "; 
      if ($back >=  0) 
      { 
         echo " <a href=\"$meineseite&a=view&eintrag="; 
         echo $back; 
         echo "\">Vorherige Seite</a> | "; 
      } 
      $eintragen = $eintrag + $zps; 
      if ($eintragen < $eintraege[total]) 
      { 
         echo "<a href=\"$meineseite&a=view&eintrag="; 
         echo $eintragen; 
         echo "\">Nächste Seite</a> | "; 
      } 
      if ($eintrag > 4) 
      { 
         echo "<a href=\"$meineseite&a=view"; 
         echo "\">Erste Seite</a> | "; 
      } 
      echo "<a href=\"$meineseite&a=add\">Eintragen</a> ]</td></tr>"; 
      echo "</table></center>"; 
   } 
// wenn ein eintrag geschrieben werden soll 
   if($a == "send") 
   { 
// Formatierung des Textes aus dem Kommentarfeld 
       $mailkomm = stripslashes($comments);
       $comments  =  nl2br("$comments");
       $comments  =  addslashes("$comments"); 
       $url =  Str_replace("http://","",$url); 
       mysql_query("INSERT into con_guestbook (name, email, url, date, location, comments) VALUES ('$name', '$email', '$url', NOW(), '$location', '$comments')");
       if("CMS_VALUE[3]" == 1 && "CMS_VALUE[4]" != ""){
       	$mailbody = "Von: $name ( $email )\nHomepage: $url\nOrt: $location\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 "<span id='fontCMS_VALUE[1]'>Danke! Dein Beitrag wurde eingetragen</span><br><br><span id='fontCMS_VALUE[2]'><a href='$meineseite&a=view'>Zurück</a></span>"; 

   } 
Zuletzt geändert von Sven777b am Mo 30. Sep 2002, 15:26, insgesamt 1-mal geändert.
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
jknoblich
Beiträge: 20
Registriert: Do 19. Sep 2002, 21:29
Kontaktdaten:

Beitrag von jknoblich »

Das ging ja schnell mit der Erweiterung des GB. :-)

Ich teste das gerade und wollte die Funktion mit dem Lösch-Link durch den Admin auch woanders einbauen.

Nur zeigt er nichts an.
Wann habe ich denn die Berechtigung (perm...) ?

Mir gehts da speziell um die Zeile:

Code: Alles auswählen

if($perm->have_perm("area_news_rcp")){echo "<a href=\"$meineseite&a=del&gbid=$row[6]\" id=\"font21\">Eintrag löschen</a>";}; 
           echo "<hr></td></tr>"; 
         } 
Gruß
Jens
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

oh - ganz dolle sorry ... falsche perm ;)
das ist das Recht für den Newsletter gewesen ;)

Code: Alles auswählen

if($perm->have_perm("admin")){echo "<a href=\"$meineseite&a=del&gbid=$row[6]\" id=\"font21\">Eintrag löschen</a>";}; 
           echo "<hr></td></tr>"; 
         } 
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
jknoblich
Beiträge: 20
Registriert: Do 19. Sep 2002, 21:29
Kontaktdaten:

Beitrag von jknoblich »

So tief stecke ich leider noch nicht drin im Contenido. Sonst wäre mir das vielleicht auch aufgefallen.

Es ging aber immer noch nicht, weil:

ich noch nicht das Security-Fix eingespielt hatte. :-(

Gruß
Jens
-----Nachtrag:-----
Die Links erscheinen, aber gelöscht wird bei mir nichts.
Geht das bei Dir ?
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

damit hängt das eigentlich nicht zusammen dachte ich... ist natürlich möglich... so sehr stecke ich da auch nicht im System drinnen. Ich bin keiner der Entwickler ;)

aber es soll eigentlich so funktionieren (so funktioniert es auch bei mir):
wenn du dich mit admin-rechten einloggst, dann wird das $perm->have_perm("admin") gesetzt. Und zwar im Frontend und im Backend. (im Frontend natürlich nur, wenn eine Loginbox da ist.
Dieses Recht überprüfe ich - wenn es da ist, wird der löschen-Button eingeblendet.
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
jknoblich
Beiträge: 20
Registriert: Do 19. Sep 2002, 21:29
Kontaktdaten:

Beitrag von jknoblich »

Ist ja fast wie ein Live-Chat... :-)

Ich hab jetzt rumprobiert, aber :
- der Löschlink wird angezeigt,
- nach Klick wird aber nichts gelöscht, sondern es erscheint eine weisse Seite.

Ich würde diese Funktion in gern in ein anderes Modul einbauen, aber da funktioniert es auch nicht.
Gruss
Jens
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

geh mal bitte auf http://feg-borna.de/cms/frontend/
unter dem Punkt "Modul-Ausgabe" findest du das Gästebuch nochmal so wie es bei mir auch definitiv funktioniert .
Ich hatte den Fehler mit der weissen Seite nämlich auch schon - hab aber dann den Grund dafür herausgefunden und korrigiert. Ich weiß aber nicht mehr, was es war und ob ich es in der Textdatei (die ich hier gepostet habe) auch geändert hatte.
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
jknoblich
Beiträge: 20
Registriert: Do 19. Sep 2002, 21:29
Kontaktdaten:

Beitrag von jknoblich »

Hab nochmal das Modul neu reinkopiert.

Es funktioniert - aber nur im Frontend.
Im Backend hets noch nicht.

So reicht mir das aber erst einmal.
Gruss
Jens
tmhoefer
Beiträge: 40
Registriert: Mi 18. Sep 2002, 19:00
Wohnort: Albershausen
Kontaktdaten:

Kein löschen möglich

Beitrag von tmhoefer »

Hi, hab mir mal das GB geschnappt und ein bisschen verbogen. Allerdings bekomme ich im Backend keinen Löschen-Button. Hab schon einiges probiert, aber nix funzt. Hab mir die aktuelle Verison http://feg-borna.de/cms/frontend/ kopiert. Hab ich was vergessen einzubauen ode rbin ich nur zu doof?

Codeauszug:
if($perm->have_perm("admin")) {
echo "<tr><td colspan=2>$ActLink</td></tr>";
}

Habe auch schon Recht 'area_con' probiert -> nix.

Martin
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

ich habe gerade noch einen anderen Fehler im Gästebuch korrigiert (hatte irgendwo nochmal das newsletter-recht statt des admin-rechts abgefragt)
aber du hast Recht... im backend kann ich nicht löschen. Scheinbar wird die Variable $perm nicht mit ins Modul übergeben. (?!?) ich hab auch mal probiert:

if($perm->have_perm("admin") || $edit) {
echo "<tr><td colspan=2>$ActLink</td></tr>";
}

hat aber auch nicht geklappt... müsste aber klappen weil beide Variablen im Backend existieren. Ich bin jetzt etwas durcheinander...

PS: hab den Fehler nicht bemerkt, weil ich das eine mal wo ich getestet hatte auch im Frontend eingeloggt war - dann gehen die Links nämlich auch im backend (noch konfuser)
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
tmhoefer
Beiträge: 40
Registriert: Mi 18. Sep 2002, 19:00
Wohnort: Albershausen
Kontaktdaten:

Beitrag von tmhoefer »

Hab hier mal eine etwas unorthodoxe Methode, wie's funkt:

$editpage = $cfgClient[1]["path"]["frontend"]."front_content_edit.inc.php";

if ($PHP_SELF == $editpage) {
...
}

Weiss aber nicht, ob das so empfehlenswert ist?!?!?

Martin
tmhoefer
Beiträge: 40
Registriert: Mi 18. Sep 2002, 19:00
Wohnort: Albershausen
Kontaktdaten:

Beitrag von tmhoefer »

Habe den Fehler gefunden. Die front_content.php und front_content_edit.inc.php müssen security gefixed sein. Allerdings muss in front_content.php rein

@page_open(
array("sess" => "Contenido_Session",
"auth" => "Contenido_Frontend_Challenge_Crypt_Auth",
"perm" => "Contenido_Perm"));

Wichtig ist die Zeile mit

"auth" =>

Nur in der front_content_edit.inc.php muss

@page_open(
array("sess" => "Contenido_Session",
"auth" => "Contenido_Challenge_Crypt_Auth",
"perm" => "Contenido_Perm"));

rein. Dann funktionierts auch mit dem Gästebuch.

Martin
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

danke dir ... mach ich gleich.
Wäre evtl. ein Fall für den Bugtracker ?!?
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
tmhoefer
Beiträge: 40
Registriert: Mi 18. Sep 2002, 19:00
Wohnort: Albershausen
Kontaktdaten:

Beitrag von tmhoefer »

Hab ich schon gepostet. :wink:
Gesperrt