Anbei ein kleiner Auszug aus unserer Moduldokumentation
die Basis unseres Webtist CMS Systems
Das System setzen wir erfolgreich seit Jahren
bei unseren Geschäftspartnern ein, es wird stets weiterentwickelt
und der Technik entsprechend angepasst.
Modulbeschreibung webtist.pm
Version 1.87
Das Module stellt allgemeine Routinen fr DHTML zur verfuegung.
Diverse Routinen rund ums Web zur schnellen gestaltung von Pages.
Die Funktionen werden im einzelenen noch beschrieben wie sie
Aufgerufen werden und was sie zurckgeben.
weitere SUB Module zu webtist
webtist::content
webtist::counter
webtist::chat
webtist::dirindex
webtist::gb
webtist::lebenslauf
webtist::meta
webtist::navigation
webtist::shop
webtist::sysadm
webtist::ticker
webtist::tools
webtist::user
AUTOR
Marc Hanschur, Space4Data / WEBTIST [NOSPAMmarc@hanschur.de]
Aenderungsliste im PerlModul
SYNOPSIS
das Modul DBI wird benoetigt mit den dazugehoerigen Modulen wie z.B DBD::MySQL oder DBD::Oracle
sowie Time::Local
Aufruf
use webtist;
$webtist = new webtist();
# wo liegen die Files zu Laden (Config Files)
$webtist->param('cfgpath','./incl','1');
# wir evtl keine Webanwendung sondern eine Scripanwendung initialisiert
# somit wird das config File auf script.cfg gesetzt
$webtist->param('cfgfile','1','1');
Modul Variablen sind %gparam und $gquery
bei einlesen des Modules wird der Verzeichnispfad festgestellt um die
benoetigten Konfigurations und Templatefiles zu finden. Dieses wird
ueber die Globale Variable @INC in Erfahrung gebracht
nach diesem Vorgang stehen die Modul Variablen
$gpath, $gcfgpath, $gtmplpath, $gconfigfile und $gwebcfgfile
zur Verfuegung
$gpath => der Pfad zum Modul webtist Verzeichnis
$gcfgpath => der Pfad zum Konfig verzeichnis (cfg)
$gtmplpath => der Pfad zu den Standarttemplates
$gconfigfile => Webtist Standartconfigfile (main.cfg)
$gcfgfile => dieser wird aus der main.cfg geholt ueber die Methode webtistcfg();
nix oder 0 Standard web.cfg 1 = script.cfg
main.cfg File Konfigfile des Modules
die Datei ist wie eine CSV Datei aufgebaut
die eintr?e in dieser Datei werden von mir vorgenommen
sie enthalten Standarttemplate angaben sowie Spezifische
angaben zum Modul und und und bitte nicht veraendern
web.cfg File Konfigfile der einzelnen Webseite
die Datei ist wie eine CSV Datei aufgebaut
die Parameter die in dieser Datei hinterlegt werden koennen werden in der
jeweiligen Moduel/Routine beschrieben
Beispiel
Parameter;Wert;Beschreibung wenn n?ig;
Standartwerde sind:
DEBUG;0;ja == 1 / nein == 0 Debug Ausgabe am Bildschirm funktioniert nur wenn es das Module erlaubt (main.cfg);
DEBUGNOWEB;1;ja ==1 / nein == 0 Ausgbae ohne HTML Tags fr zeilenumbruch beim Logging
LOGGING;1;ja == 1 / nein == 0 Debug Ausgabe in Datei;
LOGFILE;./incl/webmaster.log;mit komplettem PFAD Achtung Datei muss fr Webserver schreibbar sein
METHODS
new
Konstruktor
Aufruf
new webtist();
webtistcfg
Konfigparameter (Dateizeilen in Variable einlesen)
Aufruf
&webtistcfg($param,$art,$file);
Parameter
$param => ?ergabeparameter der aus der Konfig Datei als Wert zurckgegeben wird
$art => welche Konfig soll geladen werden
=> 0 oder nix ist main.cfg
=> 1 Config von Website / Script
=> 2 Dynamisches Template laden nachfolgender Parameter erforderlich
$file => Welches Template File soll geoeffnet werden
wenn der CFG File name ge?dert werden soll (keine Webanwendung sondern ein script)
dann sollte beim einbinden von Module webtist der Parameter CFGFILE auf 1 gesetzt werden
somit muss ein Globale Konfig File "script.cfg" angelegt werden
Rueckgabe
Parameter aus Datei in Form eines Skalars
param
Rckgabe von Globalen Variablen (gparam)
Aufruf
¶m($variable,$wert,$todo)
Parameter
$variable => Name der Variable
$wert => Inhalt der Variablen
MCGI => neues Modul CGI wird eingebunden und wichtige Variable gesetzt
dieses kann wie nachfolgend dargestellt uebergeben werden
use CGI;
my $query = new CGI;
$webtist->param('MCGI',$query,'1');
$todo => was soll die SUB machen
0 oder nix == Variable aus %gparam ausgeben
1 == Variable in %gparam setzten (wird fuer Webseite verwendet)
2 == Variable in %cgiparam setzten ( kann beliebig verwendet werden)
3 == Variable aus %cgiparam auslsesen
4 == Variable aus %cgiparam loeschen
5 == fonts Verzeichnis auf dem Server
Rueckgabe
ein Skalar bei $todo 0 oder '' ansonsten kommt nichts zurueck
querystrg
Querystring zusammenbauen
Aufruf
&querystrg($wert,$art)
Parameter
$wert => was fr ein wert soll noch an den Querystring angeh?gt werden
$art
1 = Land aus Wert setzten und Navigations IDs mit ausgeben
2 = Printenstring anh?gen
3 = alles bis auf Printen und uebergebener Wert anhaengen
4 = alles und uebergebener Wert anhaengen
5 = wie 4 nur als UNiMUT Schwobifying Proxy URL siehe
http://unimut.fsk.uni-heidelberg.de/schwob.html
6 = alles bis auf Nav IDs
Rueckgabe
ein Skalar mit dem gewuenschten Querystring
cgiquerystrg
CGI Querystring zusammenbauen
Aufruf
&cgiquerystrg($wert)
Parameter
$wert => Werte die an den Querystrg angeh?gt werden sollen
$art => 0 oder nix der komplette Querystrg
1 = den CGIPARAM als Hash
Rueckgabe
ein Skalar mit allen initialisierten Querystring Parameter als Querystrg
oder bei art 1 = Hash mit CGI Werten
hiddenquerystrg
Querystring zusammenbauen
wenn keine Templates angegeben werden werden diese zuerst
versucht aus dem Webconfig File gezogen sonst aus dem
Standasrtkonfigfile
Weiter definitionen in der web.cfg
HIDDEN => Verzeichnis/Datei
Aufruf
&hiddenquerystrg($emplate)
Parameter
$template => das zu ?fnende Hidden Template mit Pfadangabe
Rueckgabe
ein Scalar mit HTML Inhalt
gensessionid
Genereirt eine eindeutige Session ID
wenn wwwid und GParam definiert und nicht leer ist
ansonsten wird die gparam{'wwwid'} als sessionid mitgefhrt
Aufruf
&session()
Parameter
keine
Rueckgabe
ein Skalar mit der Session ID
webtisttime
Time Variablen setzten und zurckgeben
die mehrsprachigkeit muss hier noch eingebaut werden
Aufruf
&webtisttime($variable,$timeview)
Parameter
$variable => Welchen Timewert willst du zurck
Variable Werte
sec = Sekunden
min = Minuten
hour = Stunden
mday = Tag
mon = Monat Zahl
year = Jahr
day = Tag
week = Woche
date = Datum Lang
shortdate = Datum Kurz
today = timestamp
metadate = Datum fr Metatags
oradbtime = Zeit fuer Oracle DB
date01 = Datum Language oder $timeview selber definieren
tmstamp = YYYYMMDDHH24MISS
$timeview => Angabe wie Langtimeview $variable = date01
$epoch_seconds => Epochen Sekunden (gleich wie time)
web.cfg Werte nur fuer eingeschlatetet LANG / WEBLANG
TIMEVIEW / TIMEVIEW-LANGID fuer die Zeitdarstellung
in folgender Form YYYY.MM.DD HH24:MI:SS oder z.B. MM/DD/YYYY HH:MI:SSAM
Rueckgabe
ein Skalar mit dem oben Ausgewaehlten Inhalt
bodyhacking
Body Weghacken in einem HTML File
Aufruf
&bodyacking($tmpl)
Parameter
$tmpl => Das ge?fnete Template
Rueckgabe
ein Skalar mir HTML Code
weblang
Sprache auf der Seite richtig setzten
die gilt nur fr die Seite nicht fr dynamische Inhalte inerhalb einer Seite
Definitionen in der web.cfg
LANG;de;;
WEBLANG;1;ja == 1 / nein == 0 ist die mehrsprachigkeit erlaubt oder nicht;
WEBLANGDBTXT;0;ja == 1 (db) / nein == 0 (textfile);
WEBLANGDBFILE;templates.cfg;liegt im cfgpath was im Modulaufruf definiert werden muss oder dbi:mysql:Datenbank:host;
WEBLANGDBUSR;username;Der Datenbankuser;
WEBLANGDBPASS;password;Das dazugehierige Password
WEBLANGTRAN;txtdat;wird nur bei textfiles benoetigt bitte ohne Endung und punkt muss jeweils aber als endung .de .en ... vorliegen;
Das WEBLANGDBFILE Template sieht wie folgt aus
Parameter;Wert;Beschreibung wenn n?ig;
test02.tmpl;000;;
test01.tmpl;001;;
Standartwerte sind:
NAV => Navigation
ERR => Errortexte
GB => Gaestebuch
TCK => Ticker
Die WEBLANGTRAN Templates sehen wie folgt aus
File txtdat.de
Parameter;Wert;Beschreibung wenn n?ig;
000:01;DE TEST TEXT1;
000:02;DE TEST;
001:01;DE TEST TEXT2;
File txtdat.eng
Parameter;Wert;Beschreibung wenn n?ig;
000:01;ENG TEST TEXT1;
000:02;ENG TEST;
001:01;ENG TEST TEXT2;
Tabellenstruktur und Namen
hier werden die Templates erfasst (wie templates.cfg)
CREATE TABLE langtmpl (
langtmpl_id varchar(10) default NULL,
langtmpl_name varchar(50) default NULL,
langtmpl_comment varchar(100) default NULL,
ID tinyint(4) DEFAULT '' NOT NULL auto_increment,
PRIMARY KEY (ID),
UNIQUE KEY langtmpl_id (langtmpl_id),
KEY langtmpl_tmpl (langtmpl_tmpl),
KEY langtmpl_id_2 (langtmpl_id)
) TYPE=MyISAM;
hier werden die einzelenen Textbloecke erfasst wie txtdat nur alles in einer tabelle mit der langid als index
CREATE TABLE langtxt (
langtxt_id varchar(10) default NULL,
langtxt_langtmpl_id varchar(10) default NULL,
langtxt_lang_id varchar(10) NOT NULL default 'DFT',
langtxt_textl blob,
langtxt_textk varchar(50) default NULL,
ID tinyint(4) DEFAULT '' NOT NULL auto_increment,
PRIMARY KEY (ID),
KEY langtxt_id (langtxt_id),
KEY langtxt_langtmpl_id (langtxt_langtmpl_id),
KEY langtxt_langid (langtxt_langid)
) TYPE=MyISAM;
Dabei ist zu beachten damit die langtmpl_id,langtxt_id,langtxt_langtmpl_id nur Zahlenwerte sein duerffen dies
gilt auch fuer die Textdateien
Aufruf
&weblang($tmpl,$tmplid,$txtid)
Parameter
$tmpl => Das bereits ge?fnete Template in dem die Sprache richtig gesetzt werden soll
$tmplid => Template Name wenn nicht vorhanden wird er ermittelt oder Template ID
$txtid => die Text ID zur direkten Rueckgabe eines Textbausteines
Rueckgabe
der Uebergebene Wert mehrsprachig als Skalar
tmpl2fomfields
Im Template enthaltene Qualifire durch Formularfelder ersetzen
nur der Body Inhalt wird ausgegeben (das Template wird somit vorher durch die
bodyhacking routine gejagt)
<!--%%BEGINN:XX:YY:00-00:BERECHTIGUNG%%-->TEXT<!--%%END%%-->
XX => Art TF fuer Textfield TA fuer Texarea
YY => Name des Feldes
00-00 => Groesse des Feldes angezeigtel?ge-maximall?ge bei textfield
rows-colums bei textarea
kann in form von -12 oder 12- angegeben werden
BERECHTIGUNG => Berechtigung des Feldes ansonsten leer lassen
Aufruf
&tmpl2fomfields($tmpl)
Parameter
$tmpl => das bereits ge?fnete Template
Rueckgabe
Das Template mit den Formularfeldern
formfields2tmpl
Das Template das mit durch die uebergebenen Formularfelder
ersetzt werden soll
Aufruf
&formfields2tmpl($tmpl)
Parameter
$tmpl => das bereits ge?fnete Template
Rueckgabe
Das zusammengesetzte Template
randdirfiles
RadomFunktion auf Verzeichnis mit Ablaufdatum wie
templatename-YYYYMMDD.tmpl ab diesem Tag (Systemdatum) wird das Template nicht mehr beruecksichtigt.
Die Files muessen mit .tmpl enden.
wenn ein template mit stat beginnt wird diese immer verwendet kann aber jeweils immer nur eines sein und muss
ein ablaufdatum besitzen wie z.b. stattemplatename-YYYYMMDD.tmpl
Aufruf
&randdirfiles($directory,$art)
Parameter
$directory => Verzeichnis in der die Files dynamisch ausgew?t werden mit Verfallsdatum ohne endenden /
$art => Welche Files sollen durchgearbeitet werden
=> 0 oder nix ist main.cfg
=> 1 catcha Diretory nach png,gif,jpg durchsuchen (Achtung files klein schreiben)
Rueckgabe
ein Filename als Skalar
filesearch
Files in einem Verzeichnis Suchen nach muster und als Array zurckliefern
Aufruf
&filesearch($muster,$directory)
Parameter
$muster => nach welche Files soll gesucht werden /muster/
$directory => Verzeichnis in der die Files dynamisch gesucht werden sollen
Rueckgabe
ein Array mit dem gefundenen Files
opentmpl01
Dateihandle (Datei in Variable einlesen)
Aufruf
&opentmpl01($template)
Parameter
$template => Verzeichnis/Datei wo das Template liegt
Rueckgabe
ein Skalar mit Inhalt der Datei
opentmpl02
Dateihandle (Datei Zeilenweise in Variable einlesen mit Feldtrenner)
Aufruf
&opentmpl02($template,$spacer)
Parameter
$template => Verzeichnis/Datei wo das Template liegt
$spacer => der Feldtrenner der zwichen den Zeilen verwendet werden soll
Rueckgabe
ein Skalar mit Inhalt des Templates Zeilenweise durch Feldtrenner getrennt
opentmpl03
Dateihandle (Datei in Array Zeilenweise einlesen)
Aufruf
&opentmpl03($template)
Parameter
$template => der Pfad wo das Template liegt
Rueckgabe
ein Array in dem das Template zeilenweise eingelesen wird
writefile01
Dateihandle (An eine bestehende Datei etwas anh?gen oder neue erzeugen)
nur eine Zeile
Aufruf
&writefile01($file,$string)
Parameter
$file => der Pfad wo das File liegt und das File
$string => was soll in die Datei geschriben werden
Rueckgabe
keine
writefile02
Dateihandle (neue erzeugen)
nur eine Zeile oder mehrere Zeilen
Aufruf
&writefile02($file,$string,$art)
Parameter
$file => der Pfad wo das File liegt und das File
$string => was soll in die Datei geschriben werden
$art => 0 oder nix keiner binmode
1 = binmod auf file
Rueckgabe
keine
mailsend
Mailroutine zum versenden von Mails mit Templatevorgabe und mehrsprachigkeit
wenn die mailsubject Variable nichts enthaelt wir es aus dem Template extrahiert
in folgender form <mailsubject>TEXT</mailsubject>
Aufruf
&mailsend($mailto,$mailtoadr,$mailfrom,$mailfromadr,$mailsubject,$mailtemplate,$art)
Parameter
$mailto => Name des Mailempfaengers
$mailtoadr => Mailadresse des Empfaengers
$mailfrom => Name des Absenders
$mailfromadr => Mailadresse des Absenders
$mailsubject => Mailbetreff
$mailtemplate => das bereits geoeffnete Mailtemplate das versandwerden soll (TEXTFILE)
$att => Attachements im Template
Rueckgabe
keine
mailatt
an einen String ein Attachment h?gen
Aufruf
&mailatt($mailatt)
Parameter
$mailatt => bereits vorhandene Attachments
Rueckgabe
ein Skalar mit dem zus?zlichen Attachment
uml2html
Wandlung von Sonderzeichen
Aufruf
¨2html($tmpl)
Parameter
$tmpl => der komplette HTML Code
Rueckgabe
ein Skalar
Loggin informationen Webschreiben fr WEBMASTER wenn fehler auftreten
Definitionen in der web.cfg
DBLOGGING;1;ja == 1 / nein == 0 Debug Ausgabe in DB;
DBLOGDB;dbi:mysql:Datenbank:host;Datenbank
DBLOGDBSID;; nur bei Oracle
DBLOGDBUSR;;Username
DBLOGDBPASS;;Passwort
Aufruf
&dblogging($tabelle,$felder,$werte,$art,$timeok)
Beispiel fuer logging Tabelle
CREATE TABLE USR
(
USR_NICKNAME VARCHAR(20) NOT NULL,
USR_WWWID VARCHAR(255) NOT NULL,
USR_TIMESTAMP DATE NOT NULL,
USR_METHODE VARCHAR(70) NOT NULL,
USR_RESULT VARCHAR(255) NOT NULL,
USR_QUERY VARCHAR(512),
USR_STATUS INT DEFAULT 0
)
Parameter
$tabelle => in welche tabelle soll protokoliert werden
$felder => welche felder werden geschrieben feld,feld,feld
$werte => welche inhalte werden geschrieben 'inhalt',0,'inhalt'
$art => soll die einzelne Uebergabe direkt gedebuggt werden
== 0 oder nix keine Aenderung
== 1 einzelne Wert Debuggen fuer Entwicklung
$timeok => soll die Routine den Timstamp erzeugen als wert bitte das DB Feld angeben
Rueckgabe
keine
logging
Loggin informationen Webschreiben fr WEBMASTER wenn fehler auftreten
Wichtig dabei ist damit der Webserver in dem Logfile das in der WEBconfig angegeben wird
Schreibberechtigung hat !!!!
das Logging muss im main.cfg sowie im web.cfg erlaubt sein
Definitionen in der web.cfg
LOGGING;1;ja == 1 / nein == 0 Debug Ausgabe in Datei;
LOGFILE;./incl/webmaster.log;mit komplettem PFAD Achtung Datei muss fr Webserver schreibbar sein
Aufruf
&logging($logstring,$art,$file)
Parameter
$logstring => der Code der Ausgegebn werden soll (ins Logfile)
$art => soll die einzelne Uebergabe direkt gedebuggt werden
== 0 oder nix keine Aenderung
== 1 einzelne Wert Debuggen fuer Entwicklung
$file => Logfile
Rueckgabe
keine
debug
Debug Informationen anzeigen aber nur wenn in main.cfg es erlaubt ist
und im web.cfg der Wert DEBUG definiert ist
Weiter definitionen in der web.cfg
DEBUG;0;ja == 1 / nein == 0 Debug Ausgabe am Bildschirm funktioniert nur wenn es das Module erlaubt (main.cfg);
Aufruf
&debug($debugstring,$art,$nobr)
Parameter
$debugstring => der Code der Ausgegebn werden soll
$art => soll die einzelne Uebergabe direkt gedebuggt werden
== 0 oder nix keine Aenderung
== 1 einzelne Wert Debuggen fuer Entwicklung
$nobr => keine BR setzten => 1
Rueckgabe
keine es erfolgt eine direkte print Ausgabe
WARNING
ich kann im Moment keine Warnungen erkennen
BUGS
Transparent wird durch eine Remotedelegationkerbe vollendet, die unter bestimmten Umstaeden brechen
konnte. Wenn dieses Ihnen geschieht, informieren Sie mich bitte.
Informieren Sie mich, wenn Sie einiges finden.
ACKNOWLEDGEMENTS
Thanks to Susanne Herz for inspiration, laughs and all 'round good times;
and Linus Torvalds for all the great software.
LICENSE
Dieser Code ist freie Software; Sie koenen ihn neuverteilen und/oder ihn unter den gleichen
Bezeichnungen wie Perl selbst aedern.
DISCLAIMER
Dieses ist freie Software. Wenn es bricht, besitzen Sie beide Teile.
POD ERRORS
Hey! The above document had some coding errors, which are explained below:
Around line 125:
Non-ASCII character seen before =encoding in 'geändert'. Assuming ISO8859-1