Gästebuch kommentierbar

Allgemeine Diskussionen zu ConPresso 3.x.
Achtung: Bitte benutzt wenn möglich die themenspezifischen Foren!
vurt
ConPresso-Newbie
Beiträge: 18
Registriert: 01.01.1970 01:00

Gästebuch kommentierbar

Beitrag von vurt »

Hallo,

da ich denke dass meine Modifikation der Gästebuchlösung auch für andere User interessant ist poste ich diese jetzt nochmals im allgemeinen Conpresso Forum.
Artikel können jetzt auch kommentiert werden. Das ganze funktioniert folgendermaßen:

1. Eine neue Rubrik namens pinboard erstellen (kann auch anders heißen, dann muss allerdings das weiter unten beschriebene Script entsprechend angepasst werden.

2. Template "pinboard" erstellen:
Den folgenden Code in das Textfeld "Seite 1" kopieren. Detail-Seite und Javascript können leer bleiben.

<table width="555" border="0" cellspacing="0" cellpadding="4"
align="center">
<tr>
<td class="text"><%cpAuthor%> schrieb am <%cpDate%></td>
</tr>
<tr>
<td class="text"><%cpText2%></td>
</tr>
<%ifText3%>
<tr>
<td class="text"><%cpText3%></td>
</tr>
<%/ifText3%>
<tr>
<td align="right" class="text">
<a href="pinboard.php?action=newcomment&artid=<%cpID%>"
class="more">Diesen Artikel
kommentieren</a><br />
<a href="pinboard.php?action=new"
class="more"> Neuer Artikel</a>
</td>
</tr>
</table>

Das Template kann natürlich individuell an das jeweilige Seitenlayout angepasst werden.

3. Individuelle Rubrikeinstellungen anpassen:
Bei Titel, Artikel-Text und Fortsetzungstext jeweils "editieren" und "Seite 1" anhaken.
Zusätzlich "Seite 1" bei Autor, E-Mail und Datumsformat anhaken. In das Textfeld bei Datumsformat "d.m.Y" eingeben.
"max. Artikelanzahl" nicht vergessen und die übrigen Einstellungen nach Belieben vornehmen.

4. Eine Datei pinboard.php erstellen, die den folgenden Code beinhaltet, und in das Rubrikverzeichnis pinboard kopieren.
Bitte beachten: Falls das Rubrikverzeichnis respektive das Template anders heißen sollen, müssen in dieser Datei diverse Variablen und Links angepasst werden.

<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap: */
define('CPO', true);
if (file_exists("../_cfg/const.php")) require("../_cfg/const.php");
else require("../_cfg/const.php.dist");

require(CPO_BASEDIR."_include/category_rubric.inc.php");
require(CPO_BASEDIR."_include/var_category.php");
$Artikel_header = 'kontakt_gbuch';
$Rubric_header_view = 0;

isset($_GET['action']) ? $g_action=$_GET['action'] : $g_action='';

if ($g_action == 'new') {
# --- HEADER ---
require(CPO_BASEDIR.$directory."/_inc_header.php");
?>
<form name="form" method="post" action="<?php echo $_SERVER['../PHP_SELF']."?action=newsave"; ?>">
<table width="100%" border="0" cellspacing="0" cellpadding="4" align="center">
<tr>
<td align="center"><b>Einen neuen Eintrag erstellen</b></td>
</tr>
<tr>
<td>
<table width="95%" border="0" cellspacing="0" cellpadding="4" align="center" bgcolor="#FFFFFF">
<tr>
<td align="right">Name:</td>
<td><input type="text" name="gbautor" size="60" maxlength="50" value="<?php echo $SID_autor ?>" class="i2"></td>
</tr>
<tr>
<td align="right">E-Mail:</td>
<td><input type="text" name="gbmail" size="60" maxlength="50" class="i2"></td>
</tr>
<tr>
<td align="right" valign="top">Mitteilung:</td>
<td><textarea name="gbtext" cols="70" rows="20" class="i2"></textarea></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">
<input type="submit" name="submit" value=" Abschicken ">
<input type="reset" name="reset" value=" Zurücksetzen ">
</td>
</tr>
</table>
</form>
<?php
# --- FOOTER ---
require("_inc_footer.php");
exit;
}

if ($g_action == 'newcomment') {
# --- HEADER ---
require(CPO_BASEDIR.$directory."/_inc_header.php");
?>
<form name="form" method="post" action="<?php echo $_SERVER['../PHP_SELF']."?action=commentsave"; ?>">
<input type="hidden" name="artid" value="<?php echo $_GET['artid'] ?>">
<table width="100%" border="0" cellspacing="0" cellpadding="4" align="center">
<tr>
<td align="center"><b>Einen neuen Kommentar erstellen</b></td>
</tr>
<tr>
<td>
<table width="95%" border="0" cellspacing="0" cellpadding="4" align="center" bgcolor="#FFFFFF">
<tr>
<td align="right">Name:</td>
<td><input type="text" name="gbautor" size="60" maxlength="50" value="<?php echo $SID_autor ?>" class="i2"></td>
</tr>
<tr>
<td align="right">E-Mail:</td>
<td><input type="text" name="gbmail" size="60" maxlength="50" class="i2"></td>
</tr>
<tr>
<td align="right" valign="top">Mitteilung:</td>
<td><textarea name="gbtext" cols="70" rows="20" class="i2"></textarea></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">
<input type="submit" name="submit" value=" Abschicken ">
<input type="reset" name="reset" value=" Zurücksetzen ">
</td>
</tr>
</table>
</form>
<?php
# --- FOOTER ---
require("_inc_footer.php");
exit;
}

if ($g_action == 'newsave') {

// Name und EMail-Adresse des Conpresso-Admins ermitteln
$db = new DB;
$query = "SELECT user,email FROM ".$dbPrefix."_user WHERE admin = 4";
$db->query($query);
$db->next_record();
$changer = strtolower($db->v('user'));
$sendto = $db->v('email');

// Formularwerte einlesen
$_POST['gbautor'] != '' ? $gbautor = htmlspecialchars($_POST['gbautor']) : $gbautor = 'unbekannt';
$gbmail = htmlspecialchars($_POST['gbmail']);
$gbtext = nl2br(htmlspecialchars($_POST['gbtext']));

// Feldwerte vorbelegen
$titel = 'Eintrag von '.$gbautor;
$kategorie = 'pinboard';
$template = 'pinboard';
$idx = 'zzzzzz';
$datum = time();
$verfallsdatum = mktime(23,59,0,12,31,2036);
$c_datum = date("Y-m-d H:i:s",time());
$t_datum = date("YmdHis",time());
$random = rand(1000,9999);
$sort_id = $datum.$random;
$article_nr = substr($changer,0,2).$t_datum.$random;

$query = "INSERT INTO ".$dbPrefix."_news ";
$query .= "(artikel_archiv,article_nr,auth,auth_backup,commentary,kategorie,search,template,titel,titel_link,titel_target,untertitel,untertitel_link,untertitel_target,text_1,text_1_target,html_1,text_2,text_2_target,html_2,text_3,text_3_target,html_3,bild,bild_link,bild_target,";
$query .= "datei_name,datei_desc,datei_prolog,link_1,link_text_1,link_target_1,link_2,link_text_2,link_target_2,link_3,link_text_3,link_target_3,datum,verfallsdatum,pub_datum,autor,email,initial,mehr,more_target,idx,freigabe,freigabe_name,freigabe_datum,last_modify,c_time,changer,sort_id) VALUES ";
$query .= "(0,'".$article_nr."','','','','".$kategorie."',0,'".$template."','".$titel."','','','','','','','',0,'".$gbtext."','',0,'','',0,'','','',";
$query .= "'','','','','','','','','','','','',".$datum.",".$verfallsdatum.",".$datum.",'".$gbautor."','".$gbmail."','','','','".$idx."',0,'".$changer."',".$datum.",0,'".$c_datum."','".$changer."',".$sort_id.")";
$db->query($query);

// Infomail an Conpresso-Admin senden
$subject = "Neuer Eintrag im PinBoard ...";
$body = $subject."<br><br>";
$body .= "Name: ".$gbautor."<br><br>";
$body .= "E-Mail: ".$gbmail."<br><br>";
$body .= "Inhalt:<br>".$gbtext;
$xtra = "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";
$xtra .= "X-Mailer: PHP ".phpversion();
mail($sendto, $subject, $body, $xtra);
}

if ($g_action == 'commentsave') {

// Name und EMail-Adresse des Conpresso-Admins ermitteln
$db = new DB;
$query = "SELECT user,email FROM ".$dbPrefix."_user WHERE admin = 4";
$db->query($query);
$db->next_record();
$changer = strtolower($db->v('user'));
$sendto = $db->v('email');

//Bisherige Kommentare aus der Datenbank laden
$query = "SELECT text_3 FROM ".$dbPrefix."_news WHERE nr = ".$_POST['artid'];
$db->query($query);
$db->next_record();
$comments = $db->v('text_3');
$comments = stripslashes($comments);

// Formularwerte einlesen
$_POST['gbautor'] != '' ? $gbautor = htmlspecialchars($_POST['gbautor']) : $gbautor = 'unbekannt';
$gbmail = htmlspecialchars($_POST['gbmail']);
$gbtext = '<strong>Kommentar von: <a href="mailto:'.$gbmail.'">'.$gbautor.'</a> am '.date('d.m.Y', time()).'</strong><br />'.nl2br(htmlspecialchars($_POST['gbtext']));
$gbtext = addslashes($comments.'<p>'.$gbtext.'</p>');

// Fortsetzungstext des betreffenden Artikels updaten
$query = 'UPDATE '.$dbPrefix.'_news ';
$query .='SET text_3 = "'.$gbtext.'" ';
$query .='WHERE nr = '.$_POST['artid'];
$db->query($query);

// Infomail an Conpresso-Admin senden
$subject = "Neuer Kommentar im PinBoard ...";
$body = $subject."<br><br>";
$body .= "Name: ".$gbautor."<br><br>";
$body .= "E-Mail: ".$gbmail."<br><br>";
$body .= "Inhalt:<br>".$gbtext;
$xtra = "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";
$xtra .= "X-Mailer: PHP ".phpversion();
mail($sendto, $subject, $body, $xtra);
}

header("Location: ../pinboard/index.php");
?>

5. Zuletzt das Script pinboard.php im Browser aufrufen und den ersten Beitrag erstellen. Fertig.

Viel Spaß damit

Gruß Volker
Benutzeravatar
semf
Modul-Entwickler
Beiträge: 1853
Registriert: 01.01.1970 01:00
Wohnort: Gütersloh-Friedrichsdorf
Hat sich bedankt: 14 Mal
Danksagung erhalten: 40 Mal
Kontaktdaten:

Re: Gästebuch kommentierbar

Beitrag von semf »

hallo vurt,

ich bin gerade dabei, das gästebuch an einen webauftritt anzupassen. dabei ist mir aufgefallen, das eine leere eingabe auch gespeichert wird! ich habe die abschnitte 'newsave' und 'commentsave' ungefähr so abegändert:

<!-- schnipp -->

if ($g_action == 'commentsave') {

//Kommentartext auslesen
$commenttext = $_POST['gbtext'];

if (!empty ($commenttext)) {

speicher Kommentar ....

}

<!-- schnapp -->

Viel Erfolg!

Module ConPresso 4.x
Latest News
Tell-a-friend

Module ConPresso 3.4.x
Index_X
Kontakt
RSS-Feed
Umfrage
Gästebuch
Tell-a-Friend

Modul-Download
vurt
ConPresso-Newbie
Beiträge: 18
Registriert: 01.01.1970 01:00

Re: Gästebuch kommentierbar

Beitrag von vurt »

Hi semf,

Du hast recht. Ich habe diese Möglichkeit jetzt abgefangen. Zusätzlich kann man inzwischen dem Eintrag auch einen Titel verpassen. Dazu verwende ich den Conpresso Untertitel. Folgende Modifikationen sind dafür notwendig.

1. Template:

<table width="555" border="0" cellspacing="3" cellpadding="4"
align="center" class="artikelbox">
<tr>
<td class="pinboardtitle1"><%cpAuthor%> schrieb am
<%cpDate%></td>
</tr>
<tr>
<td class="pinboardtitle2"><strong><%cpSubtitle%></strong></td>
</tr>
<tr>
<td class="pinboardtext"><%cpText2%></td>
</tr>
<%ifText3%>
<tr>
<td class="commentbox"><%cpText3%></td>
</tr>
<%/ifText3%>
<tr>
<td align="right" class="text">
<a href="pinboard.php?action=newcomment&artid=<%cpID%>"
class="more">Diesen Artikel
kommentieren</a><br />
<a href="pinboard.php?action=new"
class="more"> Neuer Artikel</a>
</td>
</tr>
</table>

2. pinboard.php

<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap: */
define('CPO', true);
if (file_exists("../_cfg/const.php")) require("../_cfg/const.php");
else require("../_cfg/const.php.dist");

require(CPO_BASEDIR."_include/category_rubric.inc.php");
require(CPO_BASEDIR."_include/var_category.php");
$Artikel_header = 'Pinboard - Neuer Eintrag';
$Rubric_header_view = 0;

isset($_GET['action']) ? $g_action=$_GET['action'] : $g_action='';

if ($g_action == 'new') {
# --- HEADER ---
require(CPO_BASEDIR.$directory."/_inc_header.php");
?>
<form name="form" method="post" action="<?php echo $_SERVER['../PHP_SELF']."?action=newsave"; ?>">
<table width="100%" border="0" cellspacing="0" cellpadding="4" align="center">
<tr>
<td align="center"><b>Einen neuen Eintrag erstellen</b></td>
</tr>
<tr>
<td>
<table width="95%" border="0" cellspacing="0" cellpadding="4" align="center" bgcolor="#FFFFFF">
<tr>
<td align="right">Name:</td>
<td><input type="text" name="gbautor" size="60" maxlength="50" value="<?php echo $SID_autor ?>" class="i2"></td>
</tr>
<tr>
<td align="right">E-Mail:</td>
<td><input type="text" name="gbmail" size="60" maxlength="50" value="<?php echo $SID_email ?>" class="i2"></td>
</tr>
<tr>
<td align="right">Titel:</td>
<td><input type="text" name="gbtitle" size="60" maxlength="50" class="i2"></td>
</tr>
<tr>
<td align="right" valign="top">Mitteilung:</td>
<td><textarea name="gbtext" cols="70" rows="20" class="i2"></textarea></td>
</tr>
</table>
<//tr>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">
<input type="submit" name="submit" value=" Abschicken ">
<input type="reset" name="reset" value=" Zurücksetzen ">
</td>
</tr>
</table>
</form>
<?php
# --- FOOTER ---
require("_inc_footer.php");
exit;
}

if ($g_action == 'newcomment') {
# --- HEADER ---
require(CPO_BASEDIR.$directory."/_inc_header.php");
?>
<form name="form" method="post" action="<?php echo $_SERVER['../PHP_SELF']."?action=commentsave"; ?>">
<input type="hidden" name="artid" value="<?php echo $_GET['artid'] ?>">
<table width="100%" border="0" cellspacing="0" cellpadding="4" align="center">
<tr>
<td align="center"><b>Einen neuen Kommentar erstellen</b></td>
</tr>
<tr>
<td>
<table width="95%" border="0" cellspacing="0" cellpadding="4" align="center" bgcolor="#FFFFFF">
<tr>
<td align="right">Name:</td>
<td><input type="text" name="gbautor" size="60" maxlength="50" value="<?php echo $SID_autor ?>" class="i2"></td>
</tr>
<tr>
<td align="right">E-Mail:</td>
<td><input type="text" name="gbmail" size="60" maxlength="50" value="<?php echo $SID_email ?>" class="i2"></td>
</tr>
<tr>
<td align="right" valign="top">Kommentar:</td>
<td><textarea name="gbtext" cols="70" rows="20" class="i2"></textarea></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">
<input type="submit" name="submit" value=" Abschicken ">
<input type="reset" name="reset" value=" Zurücksetzen ">
</td>
</tr>
</table>
</form>
<?php
# --- FOOTER ---
require("_inc_footer.php");
exit;
}

if ($g_action == 'newsave') {

// Name und EMail-Adresse des Conpresso-Admins ermitteln
$db = new DB;
$query = "SELECT user,email FROM ".$dbPrefix."_user WHERE admin = 4";
$db->query($query);
$db->next_record();
$changer = strtolower($db->v('user'));
$sendto = $db->v('email');

// Formularwerte einlesen
$_POST['gbautor'] != '' ? $gbautor = htmlspecialchars($_POST['gbautor']) : $gbautor = 'unbekannt';
$gbmail = htmlspecialchars($_POST['gbmail']);
$gbtext = nl2br(htmlspecialchars($_POST['gbtext']));
$_POST['gbtitle'] != '' ? $gbtitle = htmlspecialchars($_POST['gbtitle']) : $gbtitle = 'Ohne Titel';

// Feldwerte vorbelegen
$titel = 'Eintrag von '.$gbautor;
$kategorie = 'pinboard';
$template = 'pinboard';
$idx = 'zzzzzz';
$datum = time();
$verfallsdatum = mktime(23,59,0,12,31,2036);
$c_datum = date("Y-m-d H:i:s",time());
$t_datum = date("YmdHis",time());
$random = rand(1000,9999);
$sort_id = $datum.$random;
$article_nr = substr($changer,0,2).$t_datum.$random;

if ($gbtext != '')
{
$query = "INSERT INTO ".$dbPrefix."_news ";
$query .= "(artikel_archiv,article_nr,auth,auth_backup,commentary,kategorie,search,template,titel,titel_link,titel_target,untertitel,untertitel_link,untertitel_target,text_1,text_1_target,html_1,text_2,text_2_target,html_2,text_3,text_3_target,html_3,bild,bild_link,bild_target,";
$query .= "datei_name,datei_desc,datei_prolog,link_1,link_text_1,link_target_1,link_2,link_text_2,link_target_2,link_3,link_text_3,link_target_3,datum,verfallsdatum,pub_datum,autor,email,initial,mehr,more_target,idx,freigabe,freigabe_name,freigabe_datum,last_modify,c_time,changer,sort_id) VALUES ";
$query .= "(0,'".$article_nr."','','','','".$kategorie."',0,'".$template."','".$titel."','','','".$gbtitle."','','','','',0,'".$gbtext."','',0,'','',0,'','','',";
$query .= "'','','','','','','','','','','','',".$datum.",".$verfallsdatum.",".$datum.",'".$gbautor."','".$gbmail."','','','','".$idx."',0,'".$changer."',".$datum.",0,'".$c_datum."','".$changer."',".$sort_id.")";
$db->query($query);

// Infomail an Conpresso-Admin senden
$subject = "Neuer Eintrag im PinBoard ...";
$body = $subject."<br><br>";
$body .= "Name: ".$gbautor."<br><br>";
$body .= "E-Mail: ".$gbmail."<br><br>";
$body .= "Inhalt:<br>".$gbtext;
$xtra = "From: conpresso@theater-suendenfall.de\n";
$xtra .= "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";
$xtra .= "X-Mailer: PHP ".phpversion();
mail($sendto, $subject, $body, $xtra);
}
else
{
header("Location: ../pinboard/pinboard.php?action=new");
exit;
}
}
if ($g_action == 'commentsave') {

// Name und EMail-Adresse des Conpresso-Admins ermitteln
$db = new DB;
$query = "SELECT user,email FROM ".$dbPrefix."_user WHERE admin = 4";
$db->query($query);
$db->next_record();
$changer = strtolower($db->v('user'));
$sendto = $db->v('email');

//Bisherige Kommentare aus der Datenbank laden
$query = "SELECT text_3 FROM ".$dbPrefix."_news WHERE nr = ".$_POST['artid'];
$db->query($query);
$db->next_record();
$comments = $db->v('text_3');
$comments = stripslashes($comments);

if ($_POST['gbtext'] != '')
{
// Formularwerte einlesen
$_POST['gbautor'] != '' ? $gbautor = htmlspecialchars($_POST['gbautor']) : $gbautor = 'unbekannt';
$gbmail = htmlspecialchars($_POST['gbmail']);
$gbtext = '<strong>Kommentar von: <a href="mailto:'.$gbmail.'">'.$gbautor.'</a> am '.date('d.m.Y', time()).'</strong><br />'.nl2br(htmlspecialchars($_POST['gbtext']));
$gbtext = addslashes($comments.'<p>'.$gbtext.'</p>');

// Fortsetzungstext des betreffenden Artikels updaten
$query = 'UPDATE '.$dbPrefix.'_news ';
$query .='SET text_3 = "'.$gbtext.'" ';
$query .='WHERE nr = '.$_POST['artid'];
$db->query($query);

// Infomail an Conpresso-Admin senden
$subject = "Neuer Kommentar im PinBoard ...";
$body = $subject."<br><br>";
$body .= "Name: ".$gbautor."<br><br>";
$body .= "E-Mail: ".$gbmail."<br><br>";
$body .= "Inhalt:<br>".$gbtext;
$xtra = "From: conpresso@theater-suendenfall.de\n";
$xtra .= "Content-Type: text/html\nContent-Transfer-Encoding: 8bit\n";
$xtra .= "X-Mailer: PHP ".phpversion();
mail($sendto, $subject, $body, $xtra);
}
else {
header("Location: ../pinboard/pinboard.php?action=newcomment&artid=".$_POST['artid']);
exit;
}
}

header("Location: ../pinboard/index.php");
?>

3. Rubrikeinstellungen:

Untertitel: Editierbar, Seite 1

Prinzipiell wäre damit auch eine Art einfaches Forum möglich, wenn man das Template so anpasst, dass auf Seite 1 nur Titel und Untertitel und auf der Detailseite dann der gesamte Eintrag mit Kommentaren angezeigt wird.


Gruss Volker



Beitrag bearbeitet (13.07.04 14:58)
vurt
ConPresso-Newbie
Beiträge: 18
Registriert: 01.01.1970 01:00

Re: Gästebuch kommentierbar

Beitrag von vurt »

Habe gerade festgestellt, dass es bei Verwendungen bestimmter Sonderzeichen zu Fehlern bei den Datenbankabragen kommen kann.

Mit dieser pinboard.php sollte das Problem behoben sein:

<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap: */
define('CPO', true);
if (file_exists("../_cfg/const.php")) require("../_cfg/const.php");
else require("../_cfg/const.php.dist");

require(CPO_BASEDIR."_include/category_rubric.inc.php");
require(CPO_BASEDIR."_include/var_category.php");
$Artikel_header = 'Pinboard - Neuer Eintrag';
$Rubric_header_view = 0;

isset($_GET['action']) ? $g_action=$_GET['action'] : $g_action='';

if ($g_action == 'new') {
# --- HEADER ---
require(CPO_BASEDIR.$directory."/_inc_header.php");
?>
<form name="form" method="post" action="<?php echo $_SERVER['../PHP_SELF']."?action=newsave"; ?>">
<table width="100%" border="0" cellspacing="0" cellpadding="4" align="center">
<tr>
<td align="center"><b>Einen neuen Eintrag erstellen</b></td>
</tr>
<tr>
<td>
<table width="95%" border="0" cellspacing="0" cellpadding="4" align="center" bgcolor="#FFFFFF">
<tr>
<td align="right">Name:</td>
<td><input type="text" name="gbautor" size="60" maxlength="50" value="<?php echo $SID_autor ?>" class="i2"></td>
</tr>
<tr>
<td align="right">E-Mail:</td>
<td><input type="text" name="gbmail" size="60" maxlength="50" value="<?php echo $SID_email ?>" class="i2"></td>
</tr>
<tr>
<td align="right">Titel:</td>
<td><input type="text" name="gbtitle" size="60" maxlength="50" class="i2"></td>
</tr>
<tr>
<td align="right" valign="top">Mitteilung:</td>
<td><textarea name="gbtext" cols="70" rows="20" class="i2"></textarea></td>
</tr>
</table>
<//tr>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">
<input type="submit" name="submit" value=" Abschicken ">
<input type="reset" name="reset" value=" Zurücksetzen ">
</td>
</tr>
</table>
</form>
<?php
# --- FOOTER ---
require("_inc_footer.php");
exit;
}

if ($g_action == 'newcomment') {
# --- HEADER ---
require(CPO_BASEDIR.$directory."/_inc_header.php");
?>
<form name="form" method="post" action="<?php echo $_SERVER['../PHP_SELF']."?action=commentsave"; ?>">
<input type="hidden" name="artid" value="<?php echo $_GET['artid'] ?>">
<table width="100%" border="0" cellspacing="0" cellpadding="4" align="center">
<tr>
<td align="center"><b>Einen neuen Kommentar erstellen</b></td>
</tr>
<tr>
<td>
<table width="95%" border="0" cellspacing="0" cellpadding="4" align="center" bgcolor="#FFFFFF">
<tr>
<td align="right">Name:</td>
<td><input type="text" name="gbautor" size="60" maxlength="50" value="<?php echo $SID_autor ?>" class="i2"></td>
</tr>
<tr>
<td align="right">E-Mail:</td>
<td><input type="text" name="gbmail" size="60" maxlength="50" value="<?php echo $SID_email ?>" class="i2"></td>
</tr>
<tr>
<td align="right" valign="top">Kommentar:</td>
<td><textarea name="gbtext" cols="70" rows="20" class="i2"></textarea></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">
<input type="submit" name="submit" value=" Abschicken ">
<input type="reset" name="reset" value=" Zurücksetzen ">
</td>
</tr>
</table>
</form>
<?php
# --- FOOTER ---
require("_inc_footer.php");
exit;
}

if ($g_action == 'newsave') {

// Name und EMail-Adresse des Conpresso-Admins ermitteln
$db = new DB;
$query = "SELECT user,email FROM ".$dbPrefix."_user WHERE admin = 4";
$db->query($query);
$db->next_record();
$changer = strtolower($db->v('user'));
$sendto = $db->v('email');

// Formularwerte einlesen
$_POST['gbautor'] != '' ? $gbautor = htmlentities($_POST['gbautor']) : $gbautor = 'unbekannt';
$gbmail = htmlentities($_POST['gbmail']);
$gbtext = nl2br(htmlentities($_POST['gbtext']));
$_POST['gbtitle'] != '' ? $gbtitle = htmlentities($_POST['gbtitle']) : $gbtitle = 'Ohne Titel';

// Feldwerte vorbelegen
$titel = 'Eintrag von '.$gbautor;
$kategorie = 'pinboard';
$template = 'pinboard';
$idx = 'zzzzzz';
$datum = time();
$verfallsdatum = mktime(23,59,0,12,31,2036);
$c_datum = date("Y-m-d H:i:s",time());
$t_datum = date("YmdHis",time());
$random = rand(1000,9999);
$sort_id = $datum.$random;
$article_nr = substr($changer,0,2).$t_datum.$random;

if ($gbtext != '')
{
$query = "INSERT INTO ".$dbPrefix."_news ";
$query .= "(artikel_archiv,article_nr,auth,auth_backup,commentary,kategorie,search,template,titel,titel_link,titel_target,untertitel,untertitel_link,untertitel_target,text_1,text_1_target,html_1,text_2,text_2_target,html_2,text_3,text_3_target,html_3,bild,bild_link,bild_target,";
$query .= "datei_name,datei_desc,datei_prolog,link_1,link_text_1,link_target_1,link_2,link_text_2,link_target_2,link_3,link_text_3,link_target_3,datum,verfallsdatum,pub_datum,autor,email,initial,mehr,more_target,idx,freigabe,freigabe_name,freigabe_datum,last_modify,c_time,changer,sort_id) VALUES ";
$query .= "(0,'".$article_nr."','','','','".$kategorie."',0,'".$template."','".$titel."','','','".$gbtitle."','','','','',0,'".$gbtext."','',0,'','',0,'','','',";
$query .= "'','','','','','','','','','','','',".$datum.",".$verfallsdatum.",".$datum.",'".$gbautor."','".$gbmail."','','','','".$idx."',0,'".$changer."',".$datum.",0,'".$c_datum."','".$changer."',".$sort_id.")";
$db->query($query);

// Infomail an Conpresso-Admin senden
$subject = "Neuer Eintrag im PinBoard ...";
$body = $subject."<br><br>";
$body .= "Name: ".$gbautor."<br><br>";
$body .= "E-Mail: ".$gbmail."<br><br>";
$body .= "Inhalt:<br>".$gbtext;
$xtra = "From: conpresso@theater-suendenfall.de\n";
$xtra .= "Content-Type: text/html; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit \n";
$xtra .= "X-Mailer: PHP ".phpversion();
mail($sendto, $subject, $body, $xtra);
}
else
{
header("Location: ../pinboard/pinboard.php?action=new");
exit;
}
}
if ($g_action == 'commentsave') {

// Name und EMail-Adresse des Conpresso-Admins ermitteln
$db = new DB;
$query = "SELECT user,email FROM ".$dbPrefix."_user WHERE admin = 4";
$db->query($query);
$db->next_record();
$changer = strtolower($db->v('user'));
$sendto = $db->v('email');

//Bisherige Kommentare aus der Datenbank laden
$query = "SELECT text_3 FROM ".$dbPrefix."_news WHERE nr = ".$_POST['artid'];
$db->query($query);
$db->next_record();
$comments = $db->v('text_3');
$comments = stripslashes($comments);

if ($_POST['gbtext'] != '')
{
// Formularwerte einlesen
$_POST['gbautor'] != '' ? $gbautor = htmlentities($_POST['gbautor']) : $gbautor = 'unbekannt';
$gbmail = htmlentities($_POST['gbmail']);
$gbtext = "<strong>Kommentar von: <a href='mailto:".$gbmail."'>".$gbautor."</a> am ".date('d.m.Y', time())."</strong><br />".nl2br(htmlentities($_POST['gbtext']));
$gbtext = $comments.'<p>'.$gbtext.'</p>';

// Fortsetzungstext des betreffenden Artikels updaten
$query = 'UPDATE '.$dbPrefix.'_news ';
$query .='SET text_3 = "'.$gbtext.'" ';
$query .='WHERE nr = "'.$_POST['artid'].'" ';
$db->query($query);

// Infomail an Conpresso-Admin senden
$subject = "Neuer Kommentar im PinBoard ...";
$body = $subject."<br><br>";
$body .= "Name: ".$gbautor."<br><br>";
$body .= "E-Mail: ".$gbmail."<br><br>";
$body .= "Inhalt:<br>".$gbtext;
$xtra = "From: conpresso@theater-suendenfall.de\n";
$xtra .= "Content-Type: text/html; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit \n";
$xtra .= "X-Mailer: PHP ".phpversion();
mail($sendto, $subject, $body, $xtra);
}
else {
header("Location: ../pinboard/pinboard.php?action=newcomment&artid=".$_POST['artid']);
exit;
}
}

header("Location: ../pinboard/index.php");
?>
Dani
ConPresso-User
Beiträge: 38
Registriert: 01.01.1970 01:00

Re: Gästebuch kommentierbar

Beitrag von Dani »

Der Gästebuchcode funktioniert, bis auf, dass es nicht den Namen des Erstellers bzw. das Datum anzeigt. Woran kannes liegen. Gibt es eine Option, wo nur ein Redakteur oder der Admin, die Einträge freischalten darf. So will ich das Gästebuch sauber halten!
Dani
ConPresso-User
Beiträge: 38
Registriert: 01.01.1970 01:00

Re: Gästebuch kommentierbar

Beitrag von Dani »

Wäre schön, wenn jemand ne Lösung parat hätte!
Volker Hartmann

Re: Gästebuch kommentierbar

Beitrag von Volker Hartmann »

wenn Du Dich an die Anleitung oben hältst, dann sollte alles wie gewünscht funktionieren -tut es zumindest bei mir ;-).
D.h. Du verwendest ein Template, das dem Beispiel oben entspricht und Du passt die Rubrikeinstellungen so an, wie oben angegeben.

Gruss VOlker

Dani
ConPresso-User
Beiträge: 38
Registriert: 01.01.1970 01:00

Re: Gästebuch kommentierbar

Beitrag von Dani »

Ok, jetzt funzt es. Habe allerdings noch Klammern um den Autor.

Wie mache ich das mit den Einträgen manuel freischalten?
Volker Hartmann

Re: Gästebuch kommentierbar

Beitrag von Volker Hartmann »

Hallo Dani,

1. Was die Klammern betrifft: Werden von conpresso generiert. Welche Datei Du hierfür ändern musst, weiß ich nicht. Da wirst Du Dir den Sourcecode anschauen müssen. Prinzipiell könntest Du stattdessen auch andere Felder der Artikeltabelle (cpo_news) verwenden. Dann musst Du das Script pinboard.php bzw. das darin enthaltene SQL-Query und das Template entsprechend ändern.

2. Für das manuelle Freischalten gilt prinzipiell dasselbe. Das Feld heißt soweit ich weiß Freigabe. Dorthin schreibt Conpresso verschiedene Werte für die verschiedenen Status der Artikel. Leider weiß ich jetzt nicht aus dem Stehgreif heraus, was die verschiedenen Werte genau bedeuten. Das musst Du ausprobieren und dann wiederum das Script pinboard.php anpassen.

3. Was Deine Fragen per Mail betrifft: Den "Neuer Artikel Link kann man auch ganz unten auf der Seite platzieren. Dazu mußt Du Ihn aus dem Template entfernen und an richtiger Stelle in den category-footer setzen.

4. Ganz prinzipiell: Solltest Du Dir bzgl. des Konzeptes von Conpresso mal die Administrator Doku zu Gemüte führen. Dann hätten sich einige Deiner Fragen von selbst erledigt. Da ich die Features die Du Dir wünscht nicht benötige, werde ich Dir hier keine Komplettlösung servieren, zumal mir Dein fordernder Ton nicht ganz so gut gefällt.

Viel Erfolg

VOlker

Dani
ConPresso-User
Beiträge: 38
Registriert: 01.01.1970 01:00

Re: Gästebuch kommentierbar

Beitrag von Dani »

Sorry es tut mir leid. Ich lasse es lieber. Ich bekomm es nicht hin.
Tschaui
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Re: Gästebuch kommentierbar

Beitrag von MarkusR »

Nun habe ich auch mal Volkers Gästebuch in einen Webauftritt eingebaut und finde das Konzept recht gelungen!

Glückwunsch!

Nun zu den anstehenden Fragen:
Die Klammern um den Autor
werden in _include/template_first_header.php gesetzt.
Einfach den Teil

Code: Alles auswählen

    // ------------------------------------------------------------------------------------------
    // Autor
    $cpContent["Author"] = '';
    if ( $feld_autor == 1 )  
    {
        $cpContent["Author"] .= '<span class="datum">';
        if ( $db_email != '' && ( $feld_email == 1 )) {
            $cpContent["Author"] .= '[<A HREF="mailto:'.$db_email.'" class="al">'.$db_autor.'</A>]';
        } else {
            $cpContent["Author"] .= '['.$db_autor.']';
        }
        $cpContent["Author"] .= "</span>";
    }
durch

Code: Alles auswählen

    // -------------------------------------------------------------------------------------------
    // Autor
    $cpContent["Author"] = '';
    if ( $feld_autor == 1 )  
    {
        $cpContent["Author"] .= '<span class="datum">';
        if ( $db_email != '' && ( $feld_email == 1 )) {
            $cpContent["Author"] .= '<A HREF="mailto:'.$db_email.'" class="al">'.$db_autor.'</A>';
        } else {
            $cpContent["Author"] .= $db_autor;
        }
        $cpContent["Author"] .= "</span>";
    }
ersetzen.

Und damit die Einträge freigegeben werden müssen, muß nur die Freigabe auf "2" gestellt werden, also

Code: Alles auswählen

... '".$idx."',0,'".$changer."' ...
geändert werden in

Code: Alles auswählen

... '".$idx."',2,'".$changer."' ...
Ich finde aber Gästebücher, die ein Freigabe erfordern, langweilig ;o) ...
daher bleibt das bei mir auf "0"

Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Volker Hartmann

Re: Gästebuch kommentierbar

Beitrag von Volker Hartmann »

...nur damit niemand denkt, dass ich mich hier mit falschen Federn schmücke:

Die Gästebuchlösung ist nicht von mir (das Orginal findet sich auch hier im Forum), ich habe nur die Möglichkeit hinzugefügt, Einträge zu kommentieren.

Gruss Volker

Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Re: Gästebuch kommentierbar

Beitrag von MarkusR »

Ooops... ja sorry... stammt von hier
-> http://www.conpresso.de/conpresso/phoru ... =401&t=401

Also auch Danke an Martin! ;o)


Auto-Edit: Link veraltet - neuer Link: http://community.conpresso.de/viewtopic.php?t=1163#5691
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Dani1978

Beitrag von Dani1978 »

Ich muss jetzt diesen etwas älteren Thread wieder hoch holen. Ich hatte ursprünglich die Gästebuch-Einträge so eingestellt, dass sie nur dann erscheinen, wenn man sie freischaltet. Kommischerweise erscheinen die mittlerweile, obwohl im Backend das Symbol auf nicht freigeschalten steht?
Wer kann helfen?

Code poste ich später, da grad kein FTP-Tool zur Hand.
Dani1978

Beitrag von Dani1978 »

Kann mir jemand weiterhelfen. Liegt die Entsperrung der Freischaltung eventuell am ehemaligen Datumsproblem von Conpresso.
Antworten