{{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'); ?>
\\