Typo3Erweiterungen
Erweiterung ud_popupimg_text
Die Version 4.0 von Typo3 kennt für Bilder mehrere beschreibende Felder:
- imagecaption (Bildtext) für die normalen Bildunterschriften
- altText (AlternativerText)
- titleText (TitelText)
- longdescURL (Langbeschreibung URL)
ich hätte jetzt gehofft, dass sich die Feldinhalte an das Popup übergeben lassen, das ist aber leider nicht der Fall. Die Popups lassen sich beeinflussen, indem man im Typoscript Template das Content-Element manipuliert.
tt_content.image.20.1.imageLinkWrap {
bodyTag = <BODY bgColor="#cccccc" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onBlur="self.close()">
width = 960m
title = Film- und Fernsehmuseum
JSwindow.expand = 0,40
wrap = <A href="javascript:close();"> | </a><br /><font face="verdana,arial,helvetica,sans-serif" size="2" color="#666666">###longdescURL###</font>
defaultText = Film- und Fernsehmuseum Hamburg e.V.
}
An der Stelle, wo im Code ###longdescURL### steht hätte ich gern irgendwie den Feldinhalt genutzt. Leider sind alle Felder nur Strings und werten Parameter nicht aus. Also muss die Funktion imageLinkWrap erweitert werden, die die Popup-Links erzeugt.
Für die Veränderung von Typo3-Funktionen kommen Hooks und Erweiterungen per Xclass in Frage. Da es hier keinen passenden Hook gibt musste ich eine Xclass-Erweiterung benutzen.
XCLASS
Die Idee dahinter ist eigentlich relativ einfach. Die Funktion imageLinkWrap ist in der Klasse tslib_cObj definiert, bzw. in der Datei typo3_src-4.0/typo3/sysext/cms/tslib/class.tslib_content.php. Also leitet man von dieser Klasse eine eigene Klasse ab, die dann die Funktion imageLinkWrap überschreibt. Die eigene Klass muss ux_tslib_cObj heißen, damit sie automatisch instanziiert wird.
Erzeugen der Extension
Ich habe den Extensionmanager benutzt um meine Erweiterung einzurichten und nur die Elemente General Info und Frontend-Plugins ausgefüllt. Hier habe ich die Option Just include library aktiviert. Ob das wirklich notwendig war (s.u.) muss ich irgendwann noch einmal testen.
Der Extension-Manager hat mir dann die notwendigen Dateien erzeugt.
Aktivieren meiner Klasse
Nahezu jede Klasse hat am Ende zwei Zeilen wie:
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['tslib/class.tslib_content.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['tslib/class.tslib_content.php']);
letztendlich wird hier geprüft, ob es eine Erweiterung gibt und wenn ja, dann wird diese per Include eingebunden.
Man muss also nur diese Variable setzen, um die eigene Erweiterung zu aktivieren. Dazu dient die Datei ext_localconf.php im Hauptverzeichnis der eigenen Erweiterung
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
#t3lib_extMgm::addPItoST43($_EXTKEY,'pi1/class.tx_udpopupimgtext_pi1.php','_pi1','includeLib',0);
$TYPO3_CONF_VARS['FE']['XCLASS']['tslib/class.tslib_content.php']=t3lib_extMgm::extPath('ud_popupimg_text').'pi1/class.tx_udpopupimgtext_pi1.php';
?>
Gegenüber der Version des Extensions-Managers habe ich die vorletzte Zeile auskommentiert (s.o.) und die letzte Zeile ergänzt.
Damit wird die eigene Klasse eingebunden und aktiviert, wenn sie den vorhanden ist.
Das Listing
<?php
/***************************************************************
* Copyright notice
*
* (c) 2006 Uwe Debacher <Uwe-at-Debacher.de>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Plugin 'Popup-IMG' for the 'ud_popupimg_text' extension.
*
* @author Uwe Debacher <Uwe-at-Debacher.de>
* Diese Erweiterung dient dazu die Datenfelder
* * longdescURL
* * altText
* * titleText
* in den Elementen
* * bodyTag
* * title
* * wrap
* verfügbar zu machen. Dazu kommt im Typoscript einfach ein entsprechende Platzhalter zum Einsatz
* also z.B. ###longdescURL### für das entsprechende Feld.
* nur wenn Platzhalter auftauchen hat die Erweiterung eine Funktion.
*/
require_once(PATH_tslib.'class.tslib_pibase.php');
class ux_tslib_cObj extends tslib_cObj {
/**
* Wraps the input string in link-tags that opens the image in a new window.
*
* @param string String to wrap, probably an <img> tag
* @param string The original image file
* @param array TypoScript properties for the "imageLinkWrap" function
* @return string The input string, $string, wrapped as configured.
* @see cImage()
* @link http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=270&tx_extrepmgm_pi1[tocEl]=316&cHash=2848266da6
*/
function imageLinkWrap($string,$imageFile,$conf) {
$a1='';
$a2='';
$content=$string;
if ($this->stdWrap($conf['enable'],$conf['enable.'])) {
$content=$this->typolink($string, $conf['typolink.']);
// imageFileLink:
if ($content==$string && @is_file($imageFile)) {
$params = '';
if ($conf['width']) {$params.='&width='.rawurlencode($conf['width']);}
if ($conf['height']) {$params.='&height='.rawurlencode($conf['height']);}
if ($conf['effects']) {$params.='&effects='.rawurlencode($conf['effects']);}
if ($conf['sample']) {$params.='&sample=1';}
if ($conf['alternativeTempPath']) {$params.='&alternativeTempPath='.rawurlencode($conf['alternativeTempPath']);}
# ab hier Einfügung von UD
$bilder=split(",", $this->data['image']);
$longdesc=split("\n", $this->data['longdescURL']);
$alttext =split("\n", $this->data['altText']);
$titletext=split("\n", $this->data['titleText']);
$anz=count($bilder);
$aktuell=explode("/",$imageFile);
$pos=count($aktuell)-1;
if ($pos<1) $pos=0;
$aktuell=$aktuell[$pos];
$tlongdesc="";
$talttext="";
$ttitletext="";
for ($i=0; $i<$anz; $i++) {
if ($aktuell == $bilder[$i]) {
$tlongdesc=$longdesc[$i];
$talttext =$alttext[$i];
$ttitletext=$titletext[$i];
}
}
if (strlen($tlongdesc)<3)
$tlongdesc=$conf['defaultText'];
if (strlen($talttext)<3)
$talttext=$conf['defaultText'];
if (strlen($ttitletext)<3)
$ttitletext=$conf['defaultText'];
$conf['wrap']=str_replace("###longdescURL###", $tlongdesc, $conf['wrap']);
$conf['wrap']=str_replace("###altText###", $talttext, $conf['wrap']);
$conf['wrap']=str_replace("###titleText###", $ttitletext, $conf['wrap']);
$conf['title']=str_replace("###longdescURL###", $tlongdesc, $conf['title']);
$conf['title']=str_replace("###altText###", $talttext, $conf['title']);
$conf['title']=str_replace("###titleText###", $ttitletext, $conf['title']);
$conf['bodyTag']=str_replace("###longdescURL###", $tlongdesc, $conf['bodyTag']);
$conf['bodyTag']=str_replace("###altText###", $talttext, $conf['bodyTag']);
$conf['bodyTag']=str_replace("###titleText###", $ttitletext, $conf['bodyTag']);
# Ende der Ergänzung von UD
if ($conf['bodyTag']) {$params.='&bodyTag='.rawurlencode($conf['bodyTag']);}
if ($conf['title']) {$params.='&title='.rawurlencode($conf['title']);}
if ($conf['wrap']) {$params.='&wrap='.rawurlencode($conf['wrap']);}
$md5_value = md5(
$imageFile.'|'.
$conf['width'].'|'.
$conf['height'].'|'.
$conf['effects'].'|'.
$conf['bodyTag'].'|'.
$conf['title'].'|'.
$conf['wrap'].'|'.
$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'].'|');
$params.= '&md5='.$md5_value;
$url = $GLOBALS['TSFE']->absRefPrefix.'index.php?eID=tx_cms_showpic&file='.rawurlencode($imageFile).$params;
if ($conf['JSwindow.']['altUrl'] || $conf['JSwindow.']['altUrl.']) {
$altUrl = $this->stdWrap($conf['JSwindow.']['altUrl'], $conf['JSwindow.']['altUrl.']);
if ($altUrl) {
$url=$altUrl.'?file='.rawurlencode($imageFile).$params;
}
}
// Create TARGET-attribute only if the right doctype is used
if (!t3lib_div::inList('xhtml_strict,xhtml_11,xhtml_2', $GLOBALS['TSFE']->xhtmlDoctype)) {
if (isset($conf['target'])) {
$target = sprintf(' target="%s"', $conf['target']);
} else {
$target = ' target="thePicture"';
}
} else {
$target = '';
}
if ($conf['JSwindow']) {
$gifCreator = t3lib_div::makeInstance('tslib_gifbuilder');
$gifCreator->init();
$gifCreator->mayScaleUp = 0;
$dims = $gifCreator->getImageScale($gifCreator->getImageDimensions($imageFile),$conf['width'],$conf['height'],'');
$offset = t3lib_div::intExplode(',',$conf['JSwindow.']['expand'].',');
$a1='<a href="'. htmlspecialchars($url) .'" onclick="'.
htmlspecialchars('openPic(\''.$GLOBALS['TSFE']->baseUrlWrap($url).'\',\''.($conf['JSwindow.']['newWindow']?md5($url):'thePicture').'\',\'width='.($dims[0]+$offset[0]).',height='.($dims[1]+$offset[1]).',status=0,menubar=0\'); return false;').
'"'.$target.$GLOBALS['TSFE']->ATagParams.'>';
$a2='</a>';
$GLOBALS['TSFE']->setJS('openPic');
} else {
$a1='<a href="'.htmlspecialchars($url).'"'.$target.$GLOBALS['TSFE']->ATagParams.'>';
$a2='</a>';
}
$content=$a1.$string.$a2;
}
}
return $content;
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/ud_popupimg_text/pi1/class.tx_udpopupimgtext_pi1.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/ud_popupimg_text/pi1/class.tx_udpopupimgtext_pi1.php']);
}
?>
Nun werden Platzhalter in den Typoscript-Feldern
- title
- wrap
- bodyTag
berücksichtigt. Zusätzlich kann man im Typoscript auch einen defaulText angeben, der dann berücksichtigt wird, wenn im jeweiligen Datenbank-Feld kein Eintrag vorhanden ist.
Erweiterung du_versalie
Für ein Projekt wurde eine Möglichkeit gesucht Kapitelüberschriften als einheitlich gestaltete Logos darzustellen.
Die grafischen Elemente sollen jeweils identisch sein, nur der Text variiert. Üblicherweise würde man solche Grafiken jeweils erstellen lassen und müsste dann bei jedem neuen Abschnitt neue Logos anfordern. Im Prinzip besitzt Typo3 aber alle Fertigkeiten, die man für die Erstellung solcher Logos benötigt.
Erzeugen der Extension
Wie immer habe ich mir mit dem Kickstarter eine neue Extension anlegen lassen. Als Extension-Key habe ich du_versalie gewählt. Die ersten beiden Buchstaben sind meine Initialen, aber verdreht da ein Extension-Key nicht mit "U" beginnen darf. Besser wäre es gewesen user_versalie zu wählen, da die Extension sowieso nicht veröffentlicht werden soll. Für eine Veröffentlichung wäre eine Flexibilisierung notwendig, die für das konkrete Projekt nicht notwendig ist.
Ausgefüllt im Kickstarter habe ich dann nur die Bereiche:
- General Info
- Frontend Plugins
Die Extension habe ich dann in dieser Version erzeugen lassen und installiert. Der Rest ist nun etwas Handarbeit.
Flexforms
Für die Extension benötigen wir ein (oder mehrere) neue Datenfelder. Nun könnte man auf die Idee kommen die Tabelle tt_content entsprechend zu erweitern. Doch Robert Lembcke droht mit schrecklichen Konsequenzen. Es leuchtet auch ein, dass nicht jeder Programmierer weiterhin die Tabelle erweitern sollte, das bläht das System nur auf.
Die Typo3-Programmierer haben für solche Zwecke ein Containerfeld vorgesehen, in dem man seine Daten unterbringen kann. Für die Nutzung dieser Containerfelder im Backend gibt es entsprechende Methoden. Das fertige (naja fast fertige) Formular sieht dann folgendermaßen aus:
Individuell siend hier die beiden kleinen Felder Titel und Offset.
Erweiterung des Backends
Zuständig für diese Erweiterung des Backends sind die drei Dateien flexform_ds.xml, locallang_tca.php und ext_tables.php. Die ersten beiden davon müssen im Hauptverzeichnis des Plugins erstellt werden.
flexform_ds.xml
Diese Datei beschreibt die Felder in der Backend-Erweiterung. Für jedes der beiden Felder gibt es hier einen eigenen Abschnitt.
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3DataStructure>
<ROOT>
<type>array</type>
<el>
<inputTitel>
<TCEforms>
<label>LLL:EXT:du_versalie/locallang_tca.php:du_versalie.pi_flexform.Titel</label>
<config>
<type>input</type>
<size>24</size>
</config>
</TCEforms>
</inputTitel>
<inputOffset>
<TCEforms>
<label>LLL:EXT:du_versalie/locallang_tca.php:du_versalie.pi_flexform.Offset</label>
<config>
<type>input</type>
<size>24</size>
</config>
</TCEforms>
</inputOffset>
</el>
</ROOT>
</T3DataStructure>
Die Abschnitte inputTitle und inputOffset beschreiben jeweils eines der Felder. Die Label der Felder können jeweils in verschiedenen Sprachen existieren, weshalb der Text in eine extra Sprachdatei ausgelagert wird. Danach wird dann jeweils festgelegt, dass es sich um Eingabefeld der Länge 24 handelt.
locallang_tca.php
Diese Datei soll eine spätere Sprachanpassung erleichtern. Momentan sind hier nur die Label-Texte für die default-Sprache vorhanden, ein Anlegen dieser Datei erleichtert aber spätere Übersetzungen erheblich. Für jede Zielsprache wären einfach die mittleren vier Zeilen zu kopieren und die Sprachbezeichnung sowie die Label-Texte anzupassen
<?php $LOCAL_LANG = Array ( 'default' => Array ( 'du_versalie.pi_flexform.Titel' => 'Titel', 'du_versalie.pi_flexform.Offset' => 'Offset', ), ); ?>
ext_tables.php
Diese Datei hat bereits der Kickstarter angelegt. Sie dient letzendlich der Aktivierung des Plugins. Hier müssen einige Zeilen ergänzt werden, damit die neuen Felder im Backend erscheinen.
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
t3lib_div::loadTCA('tt_content');
$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY.'_pi1']='layout,select_key,pages,recursive,header';
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform';
t3lib_extMgm::addPlugin(Array('LLL:EXT:du_versalie/locallang_db.xml:tt_content.list_type_pi1', $_EXTKEY.'_pi1'),'list_type' );
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY.'/flexform_ds.xml');
t3lib_extMgm::addStaticFile($_EXTKEY,"pi1/static/","VersalienLogo");
?>
Die erste hervorgehobene Zeile dient dazu einige Standar-Felder in dem Formular auszublenden. Die Liste ist momentan eher noch zu kurz, aber ich habe noch nicht alle Bezeichner nachgeschlagen, um weitere Felder ausblenden zu können.
Die zweite hervorgehobene Zeile ist quasi das Gegenstück. Damit wird das Feld pi_flexform hinzugefügt.
In der dritten hervorgehobenen Zeile wird dann die XML-Datei eingebunden, die für die Darstellung der Felder zuständig ist.
Nach dem Löschen der Caches sollte das eigene Formular im Backend erscheinen, wenn man das Plugin auf einer Seite einfügt.
Das Frontend
Über das Backend-Formular können nun die Texte eingegeben und gespeichert werden. Nun sollen aber auch die Logos im Frontend erscheinen. Dazu muss die Datei class.tx_duversalie_pi1.php, die der Kickstarter im Unterverzeichnis pi1 der Extension angelegt hat.
<?php /*************************************************************** * Copyright notice * * (c) 2006 Uwe Debacher <Uwe_at_Debacher.de> * All rights reserved * * This script is part of the TYPO3 project. The TYPO3 project is * free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * The GNU General Public License can be found at * http://www.gnu.org/copyleft/gpl.html. * * This script is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ /** * Plugin 'VersalienLogo' for the 'du_versalie' extension. * * @author Uwe Debacher <Uwe_at_@Debacher.de> */ require_once(PATH_tslib.'class.tslib_pibase.php'); class tx_duversalie_pi1 extends tslib_pibase { var $prefixId = 'tx_duversalie_pi1'; // Same as class name var $scriptRelPath = 'pi1/class.tx_duversalie_pi1.php'; // Path to this script relative to the extension dir. var $extKey = 'du_versalie'; // The extension key. function main($content,$conf) { $this->conf=$conf; $this->pi_setPiVarDefaults(); $this->pi_loadLL(); $this->pi_USER_INT_obj=1; // Configuring so caching is not expected. This value means that no cHash params are ever set. We do this, because it's a USER_INT object!
bis hierher sind alle Zeilen aus der Vorlage des Kickstarters direkt übernommen. Danach sind dann alle Zeilen bis zum Ende der function gelöscht bzw. durch die folgenden Zeilen ersetzt.
# $titel=$this->cObj->data["header"];
diese Zeile ist deaktiviert, sie soll nur daran erinnern, wie man Felder aus der normalen tt_content Tabelle übernehmen kann.
$this->pi_initPIflexForm();
$titel=$this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'inputTitel','sDEF');
$offset=$this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'inputOffset','sDEF');
Hier erfolgt jetzt die Abfrage der Datenfelder aus dem Flexform-Bereich. Die Bezeichner müssen mit denen aus der XML-Datei übereinstimmen
$versa=strtoupper(substr($titel, 0, 1));
$titel=substr($titel, 1);
Hier wird der erste Buchstabe des Titels vom Rest abgetrennt.
$posv=15;
$post=40;
$posy=50;
if ($versa == "M") $post+=4;
$post+=$offset;
Nun ein paar Manipulationen an den Positionierungen. Der erste Buchstabe wird also genüber dem Hintergrund um 15 Pixel nach Rechts und 50 Pixel nach unten verschoben. Der Rest des Titels wird um 40 Pixel nach Rechts verschoben. Bei sehr großen Buchstaben wie dem M muss die Verschiebung größer ausfallen. Für Notfälle steht das Offset-Feld zur Verfügung, hier könnten negative oder positive Zahlenwerte Berücksichtigung finden.
$conf["testObjekt"]="IMAGE";
$conf["testObjekt."]["file"]="GIFBUILDER";
$conf["testObjekt."]["file."]["XY"]="236,79";
$conf["testObjekt."]["file."]["10"]="IMAGE";
$conf["testObjekt."]["file."]["10."]["file"]="typo3conf/ext/du_versalie/hintergrund.jpg";
$conf["testObjekt."]["file."]["15"]="TEXT";
$conf["testObjekt."]["file."]["15."]["text"]=$versa;
$conf["testObjekt."]["file."]["15."]["fontFile"]="fileadmin/fonts/verdanab.ttf";
$conf["testObjekt."]["file."]["15."]["fontSize"]="30";
$conf["testObjekt."]["file."]["15."]["fontColor"]="#3178b8";
$conf["testObjekt."]["file."]["15."]["offset"]="$posv,$posy";
$conf["testObjekt."]["file."]["20"]="TEXT";
$conf["testObjekt."]["file."]["20."]["text"]=$titel;
$conf["testObjekt."]["file."]["20."]["fontFile"]="fileadmin/fonts/verdana.ttf";
$conf["testObjekt."]["file."]["20."]["fontSize"]="18";
$conf["testObjekt."]["file."]["20."]["fontColor"]="#3178b8";
$conf["testObjekt."]["file."]["20."]["offset"]="$post,$posy";
Das ist jetzt reines Typoscript verpackt in ein PHP-Listing. Ich wollte vermeiden, dass der Benutzer noch irgendwo Typoscript angeben muss, verliere damit aber auch einen Teil der Flexibilität, da der Benutzer nicht die einflussmöglichkeiten bekommt, die er sonst hätte.
return $this->cObj->cObjGetSingle($conf["testObjekt"], $conf["testObjekt."]);
den Rest übernimmt wieder Typo3. Das weiß schon, wie man mit solchen Objekten umgeht.
}
}
if (defined('TYPO3_MODE') && TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/du_versalie/pi1/class.tx_duversalie_pi1.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/du_versalie/pi1/class.tx_duversalie_pi1.php']);
}
?>
Der Rest stammt wieder vom Kickstarter und ist unverändert übernommen. Der Abschnitt beginnt mit der schließenden Klammer der function main.
Die Erweiterung ist momentan nicht besonders flexibel. Sie erwartet bestimmte Schriften in einem bestimmten Verzeichnis und auch das Hintergrund-Bild muss an der richtigen Stelle liegen. Eine Mischung aus wirklichem Typoscript und dem PHP-Code könnte das ermöglichen.
Suche mit Htdig
Die Suchfunktion von Typo3 unterliegt sehr vielen Einschränkungen. Die meisten vorhandenen Erweiterungen können nicht sinnvoll mit zusätzlichen Datenbanktabellen umgehen.
Eine einfache Lösung besteht darin die Suchmaschine htdig zu benutzen und in Typo3 zu integrieren. Hier die ersten Schnipsel zu diesem Ansatz.
ich habe die Erweiterung für PHP installiert und diese Erweiterung auf der Seite Suchen eingebunden. Als PHP-Code benutze ich folgendes Listing.
<?php
unset ($param);
$hilf=explode(";", $_REQUEST['restrict']);
foreach ($hilf as $zeile) {
list($key, $value) = split("=", $zeile, 2);
$param[$key] = $value;
}
if (!$_REQUEST['words']) $_REQUEST['words']=$param['words'];
print "<form method=\"get\" action=\"suchen.html\">";
print "";
print "<input type=\"hidden\" name=\"config\" value=\"bergedorf\">";
print "<input type=\"hidden\" name=\"restrict\" value=\"\">";
print "<input type=\"hidden\" name=\"exclude\" value=\"\">";
print "Suchebegriff(e):";
print "<input type=\"text\" size=\"50\" name=\"words\" value=\"".$_REQUEST['words']."\">";
print " <input type=\"submit\" value=\"Suchen!\">";
print "</form>";
if (strlen($_SERVER['QUERY_STRING'])>1) {
$t = "http://www.bergedorf.de/cgi-bin/htsearch?&config=bergedorf&";
$t.= "restrict=".$_REQUEST['restrict'];
if(!$_REQUEST['restrict']) {
$t.= "&exclude=".$REQUEST['exclude'];
$t.= "&words=". $_REQUEST['words'];
$t.= "&methods=".$_REQUEST['methods'];
$t.= "&format=".$_REQUEST['format'];
$t.= "&config=".$_REQUEST['config'];
}
if (isset($_REQUEST['restrict'])) {
$t="http://localhost/cgi-bin/htsearch?".$_SERVER['QUERY_STRING'];
} else {
# $t="http://localhost/cgi-bin/htsearch";
}
#print "Aufruf: $t
";
$lines = file("$t");
foreach ($lines as $zeile) {
$zeile=str_replace("code>", "i>", $zeile);
$zeile=str_replace("/cgi-bin/htsearch", "/suchen.html", $zeile);
$zeile=str_replace("|", "|", $zeile);
$zeile=str_replace("Website Bergedorf.de:", "", $zeile);
print $zeile . "";
}
}
?>