NAVIGATION
Eine kleine Erweiterung um im Gästebuch neue Einträge unsichtbar zu schalten, bis diese im BE editiert (freigegeben) worden sind.
Ablauf:
Gesperrte Einträge:
Entsperrte Einträge:
- dazu sind:
Docu: –
Forum: –
Autor: K.Heermann (flip-flop) http://planmatrix.de
CMS Version: >= 1.4x
Version: V1.0 (08.02.2010)
Bedingung: → /config/phpwcms/conf.inc.php
Tag (in der Vorlage):
<!--GUESTBOOK_ENTRY_START//-->
<!--##Begin-{DBID}##//--> … Eintrag … <!--##End-{DBID}##//-->
<!--GUESTBOOK_ENTRY_END//-->
In
<!--##:AlternativText AlternativText:##//-->
steht der Alternativtext der angezeigt wird wenn der Eintrag gesperrt ist, z.B. <!--##:<h2>{TIMESTAMP:d.m.Y H:i}</h2> :##//-->
.
<!--##:AlternativText AlternativText:##//--> muss irgendwo zwischen <!--##Begin-{DBID}##//--> und <!--##End-{DBID}##//--> gesetzt werden.
(Wird dieser Alternativtext-Tag nicht verwendet, bleibt die Ausgabe für den gesperrten Eintrag leer).
Beispiel:
<!--GUESTBOOK_ENTRY_START//--> <div class="gbListEntry" id="entry-{DBID}"> <!--##Begin-{DBID}##//--> <!--##:<h1 style="padding-top:10px">Eintrag am {TIMESTAMP:m/d/Y H:i} von {NAME}</h1>:##//--> <h1><span class="entryID">entry #{ID} by </span>[URL]<a href="{URL}" target="_blank">{NAME}</a>[/URL][URL_ELSE]{NAME}[/URL_ELSE]</h1> <h2>{TIMESTAMP:m/d/Y H:i}[EMAIL] — <a href="mailto:{EMAIL}">email</a>[/EMAIL]</h2> [IMAGE]<div class="gbImage">{IMAGE:50x50x1}</div>[/IMAGE] [MSG]<p>{MSG}</p>[/MSG] <!--##End-{DBID}##//--> </div> <!--GUESTBOOK_ENTRY_END//-->
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
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
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)
include/inc_front/content/PATCH-DOC01.php
<?php /* ======================================================== // 09.02.10 KH // Hide guestbook entry with simple tag [##] in message text // Around line 387 // disble and/or replace the following snipped: // guestbook['sql'] .= "guestbook_msg='".aporeplace($guestbook['post']['msg'])."', "; // 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 ======================================================== */ ?>
Dateiname: guestbook_vorlage.html
Ort: template/inc_cntpart/guestbook/
Hier müssen noch die Wrapper-Tags eingesetzt werden:
Z.B.:
<!--GUESTBOOK_ENTRY_START//--> <!--##Begin-{DBID}##//--> <!--##:ERSATZTEXT ERSATZTEXT ERSATZTEXT:##//--> ..... ..... <!--##End-{DBID}##//--> <!--GUESTBOOK_ENTRY_END//-->
<note important>
Der Tag <!--##:ERSATZTEXT ERSATZTEXT ERSATZTEXT:##//--> muss innerhalb von
<!--##Begin-{DBID}##//-->
<!--##:ERSATZTEXT ERSATZTEXT ERSATZTEXT:##//-->
<!--##End-{DBID}##//-->
stehen.
</note>
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 <!--##:AlternativText AlternativText:##//-->
gesetzt ist.
Dateiname: cp_trig_guestbook.php
Ort: template/inc_script/frontend_init/
<?php /** * Hide an guestbook entry with a simple tag [##] * 09.02.2010 K.Heermann (flip-flop) http://planmatrix.de * Template: * <!--GUESTBOOK_ENTRY_START//--> * * <!--##Begin-{DBID}##//--> * <!--##:REPTEXT REPTEXT REPTEXT:##//--> * ....... * ....... * <!--##End-{DBID}##//--> * *<!--GUESTBOOK_ENTRY_END//--> * * Tag in message: [##] * * If the script find te tag [##] in a guestbook message, this message kicked out for output and * a replacement text in <!--##:REPTEXT REPTEXT REPTEXT:##//--> 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 = ' <span style="color:red"> [[Der Eintrag wird bearbeitet]]</span><br><br>'.LF; // $replacement_text = ' <span style="color:red"> [[The entry will be processed]]</span><br><br>'.LF; // ===================================== // Cut out text between your tags in template preg_match_all('/<!--##Begin-(.*?)##\/\/-->(.*?)<!--##End-(.*?)##\/\/-->/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 = '/<!--##Begin-'.$_text[3][$key].'##\/\/-->(.*?)<!--##End-'.$_text[3][$key].'##\/\/-->/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 <!--:TEXT TEXT {NAME}://--> } } return $text; } register_cp_trigger('CP_GUESTBOOK'); ?>