{{indexmenu_n>20}}
====== Gästebucheintrag verbergen ======
Eine kleine Erweiterung um im Gästebuch neue Einträge unsichtbar zu schalten, bis diese im BE editiert //(freigegeben)// worden sind.
**Ablauf:**
* Nach dem Absenden eines neuen Eintrags wird dem Message-Text automatisch ein "[##]" vorangestellt //(Mini-Hack)//.
* Alle Einträge die ein "[##]" beinhalten werden in der FE-Ausgabe nicht angezeigt, bzw. ein Alternativtext ausgegeben. //(Template/cp-trigger Script)//.
* Dieses "%%[##]%%" kann im BE aus dem Eintrag gelöscht werden, ab diesem Zeitpunkt ist der Eintrag im FE sichtbar. //(Das "[##]" kann auch im BE hinzugefügt werden, um Einträge zu verstecken)//.
\\
**Gesperrte Einträge:**
{{:deutsch:andere-erweiterungen:hacks:gb_entry_hide_fe01_1.gif| }}
{{:deutsch:andere-erweiterungen:hacks:gb_entry_hide_be01_2.gif|}}
**Entsperrte Einträge:**
{{:deutsch:andere-erweiterungen:hacks:gb_entry_hide_fe02_1.gif| }}
{{:deutsch:andere-erweiterungen:hacks:gb_entry_hide_be02_2.gif|}}
\\
===== Voraussetzungen =====
- dazu sind:
- Der Schalter **$phpwcms['guestbook_hidden'] = 1;** wird in die conf.inc.php eingetragen
- Die Datei **include/inc_front/content/cnt18.article.inc.php** verändern //(kleiner Hack)//
- Im Template **template/inc_cntpart/guestbook/*.html** mind. zwei neue Tags einsetzen
- Das PHP-Script **template/inc_script/frontend_init/cp_trig_guestbook.php** installieren
\\
----
Docu: -- \\
Forum: --
**Autor:** K.Heermann (flip-flop) http://planmatrix.de \\
**CMS Version:** >= 1.4x \\
**Version:** V1.0 //(08.02.2010)// \\
**Bedingung:** -> [[http://www.phpwcms-docu.de/confincphp_de.phtml|/config/phpwcms/conf.inc.php]] \\
* $phpwcms['allow_ext_init'] = 1;
* $phpwcms['allow_cntPHP_rt'] = 1;
----
\\
**Tag** //(in der Vorlage)//:
%%%% \\
##%%%%## **... Eintrag ...** ##%%%%## \\
%%%% \\
* Alles zwischen **%%%%** und **%%%%** wird getriggert und wenn ein [##] dort auftaucht nicht ausgeliefert.
In
steht der Alternativtext der angezeigt wird wenn der Eintrag gesperrt ist, z.B. ''%%%%''.
**%%%%** muss irgendwo zwischen **%%%%** und **%%%%** gesetzt werden. \\
//(Wird dieser Alternativtext-Tag nicht verwendet, bleibt die Ausgabe für den gesperrten Eintrag leer)//.
\\
**Beispiel:**
entry #{ID} by [URL]{NAME}[/URL][URL_ELSE]{NAME}[/URL_ELSE]
{TIMESTAMP:m/d/Y H:i}[EMAIL] — email[/EMAIL]
[IMAGE]
{IMAGE:50x50x1}
[/IMAGE]
[MSG]
{MSG}
[/MSG]
\\
==== conf.inc.php ====
Mit diesem Schalter wird bestimmt, ob dieses Versteckspiel ein -oder ausgeschaltet ist. //(Ist der Schaltet nicht vorhanden ist das gleichbedeutend "0" = aus )//.
In der config/phpwcms/conf.inc.php wird eingefügt
$phpwcms['guestbook_hidden'] = 1; // enable|disable hidden guestbook entry +KH090210
\\
==== Codeschnipsel (Hack) ====
**Dateiname:** cnt18.article.inc.php \\
**Ort:** include/inc_front/content/
**Erweiterung** der Datei etwa ab Zeile 387:
Die Zeile
$guestbook['sql'] .= "guestbook_msg='".aporeplace($guestbook['post']['msg'])."', ";
\\
wird ersetzt durch
// Insert tag to hide entry ================= +KH090210
if ($phpwcms['guestbook_hidden'])
$guestbook['sql'] .= "guestbook_msg='".'[##]'.aporeplace($guestbook['post']['msg'])."', ";
else $guestbook['sql'] .= "guestbook_msg='". aporeplace($guestbook['post']['msg'])."', ";
// =========================================== +KH090210
\\
In neueren Versionen des CMS
$guestbook['sql'] .= "guestbook_msg="._dbEscape($guestbook['post']['msg']).", ";
\\
wird ersetzt durch
// Insert tag to hide entry ================= +KH090210
if ($phpwcms['guestbook_hidden'])
$guestbook['sql'] .= "guestbook_msg="._dbEscape('[##]' . $guestbook['post']['msg']).", ";
else $guestbook['sql'] .= "guestbook_msg="._dbEscape($guestbook['post']['msg']).", ";
// =========================================== +KH090210
\\
=== Dokumentation ===
Die Datei PATCH-DOC01.php im Verzeichnis include/inc_front/content/ ablegen. //(Oder an einem anderen Ort und/oder mit anderem Namen - aber immer mit der Endung ***.php**) //
\\
==== Vorlage ====
**Dateiname:** guestbook_vorlage.html \\
**Ort:** template/inc_cntpart/guestbook/
Hier müssen noch die Wrapper-Tags eingesetzt werden:
Z.B.:
.....
.....
Der Tag %%%% muss innerhalb von \\
**%%%%** \\
%%%% \\
**%%%%** \\
stehen.
\\
==== PHP ====
Im Bereich **%%CUSTOM VAR ==========================%%** \\
kann in der Variablen **$replacement_text** ein zusätzlicher Text eingetragen werden, der ausgegeben wird, wenn ein Eintrag noch nicht freigegeben ist. Dieser Text wird nur ausgegeben, wenn in der Vorlage ebenfalls der Tag ''%%%%'' gesetzt ist.
----
\\
**Dateiname:** cp_trig_guestbook.php \\
**Ort:** template/inc_script/frontend_init/
*
*
*
* .......
* .......
*
*
*
*
* Tag in message: [##]
*
* If the script find te tag [##] in a guestbook message, this message kicked out for output and
* a replacement text in appears.
*
* CUSTOM VAR:
* $guestbook_hidden = 1; // if not set in the config
* $entry_count = 20; // only the last XX entries are processed
* $replacement_text = ''; // additional replacement text
*
*/
// -------------------------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day."); }
// -------------------------------------------------------------------------------------------
function CP_GUESTBOOK($text, & $data) {
if( $data['acontent_type'] == 18 ) // CP: 18 => guestbook
{
// Is the var in config set?
if (isset($GLOBALS['phpwcms']['guestbook_hidden'])) $guestbook_hidden = $GLOBALS['phpwcms']['guestbook_hidden'];
else $guestbook_hidden = 1; // CUSTOM VAR
// CUSTOM VAR ==========================
// For small process runtime, only the last XX entries are processed
// if you want that all messages are processed, increment the counter e.g. to 10000
$entry_count = 20;
// additional replacement text
$replacement_text = ' [[Der Eintrag wird bearbeitet]]
'.LF;
// $replacement_text = ' [[The entry will be processed]]
'.LF;
// =====================================
// Cut out text between your tags in template
preg_match_all('/(.*?)/ism',$text, $_text);
if ($_text[2][0]) { // is there any text available?
foreach ($_text[2] as $key =>$value) {
// Hidden tag [##] find?
if ( strpos($value, '[##]')!== false ) {
// Hidden tag entry switched on or off?
if ($guestbook_hidden) {
// replacement text available?
if (preg_match('//ism', $value, $_temp)) {
$value = $_temp[1] . $replacement_text;
}
else $value = ''; // no entry is shown
// no hidden tag entry in config, kill the tag for output
} else $value = str_replace('[##]','', $value);
$search = '/(.*?)/ism';
$text = preg_replace($search, $value, $text,1);
}
// Only the first XX entries for small runtime
if ($key > $entry_count) break;
}
// If you want kill the replacement text comment
// $text = preg_replace('//ism', '$1', $text); // Kill all
}
}
return $text;
}
register_cp_trigger('CP_GUESTBOOK');
?>
\\