|
|
|
Installation
WWW-Anbindung Schritt für Schritt
|
|
Version a99 : Die billigste Lösung
Diese Version kommt ohne
den
avanti-Server aus. Die Rolle eines
Servers übernimmt das Windows-Programm a99,
als Skriptsprache fungiert FLEX.
Die aktuellste, ausführlichste Fassung dieser Beschreibung ist
im
Demo-Gesamtpaket
enthalten:
Im Schreibfeld des Programms a99 geben Sie
ein: h
ruckzuck.
Nicht immer hat man die Zeit, das Geld, die Erfahrung - oder alles
zusammen
- um eine Web-Schnittstelle nach allen Regeln der Kunst für
die
eigene
Datenbank zu machen. Nicht immer ist der Aufwand notwendig, den man mit
avanti
und mit ACWWW25 oder "populo" treiben muß. Deshalb gibt es
eine
Schnittstelle
für Schnellschüsse:RuckZuck. Diese
Alternative kommt
sogar
ohne Skriptsprache aus (Perl, Python, PHP, JavaScript), nur ganz
normales
HTML
ist nötig. Es wird hiermit der Versuch gemacht, ein
möglichst
vielseitiges
Repertoire von Funktionen (einschl. Schreibzugriff) vorgefertigt
bereitzustellen,
wobei die Anforderungen an das System und die Notwendigkeit von
Anpassungen
auf ein Minimum #BE1E3Cuziert sind. Lokalen Anpassungen sind keine Grenzen
gesetzt,
vor allem mit JavaScript, an der Oberfläche ist nicht viel allegro-Kenntnis
notwendig. Wenn man aber andere als die Standardparameter einsetzt,
muß man sich mit der Parametrierung auskennen.
So kann ein Startbildschirm aussehen, wenn man eine mit
RuckZuck
angebundene
Datenbank anwählt:
(Dies ist nur ein Bild, kein funktionsfähiger Katalog)
|
Titelwort: | (Einzelnes Wort!) | |
Personenname: | (Nachname, Vorname) |
Seit langem gibt es die allegro-WWW-Schnittstelle.
Schon an die 100 Web-Kataloge sind damit am Netz.
Sie haben eine allegro-Datenbank (oder eine andere, aus der man eine machen könnte), die ins Inter- oder Intranet soll?
Nein: --> Ende
Ja: Welche dieser Aussagen gelten für Sie:
Denn dann verwenden Sie avanti auf einer UNIX- oder Linux-Anlage und Sie richten mit Hilfsmitteln wie z.B. Thomas Bergers"populo"-Paket einen maßgeschneiderten Qualitätsdienst ein, mit hoher Betriebssicherheit, der monatelang ohne Aufsicht und ohne Eingriff laufen kann. Damit verglichen ist "RuckZuck" mit a99 vielleicht eine 90%-Lösung - doch manchmal braucht man ja gar nicht mehr!Wenn eine oder mehrere dieser Aussagen für Sie zutreffen, ist die RuckZuck-Methode eine Überlegung wert. Oder auch dann, wenn schnell ein Provisorium gebraucht wird, damit man die Dauerlösung dann in Ruhe ausarbeiten kann.
Und was ist "RuckZuck" nun wirklich?
Es ist ein Fertigpaket für das
Bereitstellen einer
"allegro"-Datenbank
im Inter- oder Intranet.
Es sollte mit jedem Kategorienschema, also mit jeder
"allegro"-Datenbank
funktionieren. Es enthält nur die wichtigsten Funktionen, die
jeder
braucht, aber sorgfältig durchdacht und offen für
Erweiterungen.
Die Standarddateien werden ohne grafische Elemente geliefert, die
Einbindung
eigener Grafiken, insbes. Logos oder GIF-Dateien für Links wie
"Nächste
Seite", "Neue Suche" usw., ist für HTML-Kenner sehr einfach.
Neudeutsch:
man kann leicht seine eigene "Corporate Identity" integrieren.
RuckZuck besteht aus ganz wenigen Dateien und bleibt damit sehr übersichtlich. Alle Dateien sind voll kommentiert, die Stellen für notwendige Eingriffe sind markiert, daher braucht man nicht alles zu verstehen, was da abläuft.
Erforderlich:
Ruckzuck wird per FTP bereitgestellt. Es ist ein Paket, das außer Apache alles enthält, was gebraucht wird, und das nach der Installation (per "InstallShield", wie unter Windows üblich) sofort lauffähig ist.
Für Unix oder Linux existiert RuckZuck nicht, dafür empfiehlt sich der avanti-Server. Von mehreren Lösungen auf dieser Basis ist die PHP-Version von RuckZuck die einfachste.
Wie startet man RuckZuck?
So wird installiert, wenn man eine eigene Datenbank zugänglich machen will:
Die Funktionsweise
Nutzer: CGI . . . . . . . .
. .
. . . . . . . . CGI
HTML-Seite
HTML
Nutzer:
mit
--->
FLEX ---> a99 --->
Ausgabe
--> neue --> Anfang
Formular
HTML-Seite
Übersicht:
Was sieht/macht der
Nutzer --> was wird dann
ausgelöst
START: z.B.
OPAC.HTM
--> FIND-S.FLX
Ausführung
einer
Suche
Ausgabe: Ergebnisliste oder Registerausschnitt
oder --> DETAIL.FLX
produziert Formular für
kombinierte
Suche
Ausgabe: Das Eingabeformular
Eingabeformular
für
kombinierte
Suche
--> FIND-D.FLX
Neue Suche
ausführen
Ausgabe: Ergebnisliste oder Registerausschnitt
Ergebnisliste
--> GETREC.FLX holt einen einzelnen Satz
Ausgabe: Satzanzeige
--> FIND-D.FLX veränderte Suche
ausführen ->
andere
Ergebnisliste
--> DETAIL.FLX Start einer neuen Suche
Registerausschnitt
--> FIND-D.FLX zu einer Registerzeile
gehörige Sätze
Ausgabe: Ergebnisliste oder Satzanzeige
--> PAGE.FLX eine Seite vor oder
zurück
Ausgabe: Registerausschnitt
--> DETAIL.FLX Start einer Neuen Suche
Satzanzeige
--> DETAIL.FLX Start einer Neuen Suche
--> GETEDIT.FLX
Satz zum Bearbeiten
bereitstellen
Ausgabe: Bearbeitungsformular
Bearbeitungsformular
--> WRITE.FLX
Satz
speichern,
entw. als Korrektur oder Neusatz
Eingreifen muß man bei eigenen (nicht dem Standard entsprechenden) Datenbanken in die rot geschriebenen Dateien, denn darin gibt es datenbankabhängige Teile. Man findet die Stellen leicht, denn es steht immer XXX und ein Kommentar über den zu ändernden Stellen.
Liste der FLEXe
Diese FLEXe werden als Grundpaket bereitgestellt. Sie erzeugen jeweils
eine
HTML-Seite als Ausgabe. Sie benutzen jeweils eine (meistens)
gleichnamige
.HTM-Datei als Kopf. Hier kann man lokale Design-Elemente einbringen,
z.B.
ein eigenes Logo statt "ruckzuck.gif" (Tip: kopiert man das eigene auf
diesen
Namen, hat man weiter nichts zu tun) und Links zu eigenen
Seiten.
In
diesen Kopfdateien kann man aber auch JavaScript-Funktionen
unterbringen.
In die FLEXe eingebunden sind die Seiten mit dem Befehl write
Ffilename. Die
HTM-Köpfe enthalten kein
"<head>...</head>",
denn dieser Abschnitt wird schon von CGI erstellt und enthält
nur
einen
<title> mit der internen Nummer des Jobs.
Liste der FLEXe mit zugehörigen htm-Kopfdateien (werden automatisch eingebunden):
FIND-S.FLX
wird von der Startseite OPAC.HTM
gestartet
find.htm
DETAIL.FLX
kann von OPAC.HTM aufgerufen
werden,
und durch den Link
detail.htm "Neue Suche" von anderen
Stellen
Holt sich die Registernamen automatisch
FIND-D.FLX
Start aus DETAIL.FLX und aus
PAGE.FLX
find.htm Erg.Menge
(wenn mehr als 1 Satz),
sonst
Satzanzeige, ODER Anzeige eines
Registerabschnitts
PAGE.FLX
Ruft sich selber auf mit
[Eine Seite
höher] / [Eine Seite weiter]
page.htm Zeigt einen
Registerabschnitt,
ruft FIND-D.FLX
auf, wenn
eine Zeile angeklickt wird.
GETREC.FLX
Aufruf aus FIND-D.FLX, wenn ein
einzelner
Satz gezeigt werden soll
getrec.htm Startet GETEDIT.FLX,
wenn
gewünscht
GETEDIT.FLX Start aus
GETREC.FLX
getedit.htm Legt einen Satz zum Bearbeiten vor. Mit
JavaScript-Beispiel zur
Eingabekontrolle
WRITE.FLX
Start aus GETEDIT.FLX
getrec.htm Schreibt den Datensatz
zurück,
wahlweise
als neuen Satz oder Korrektur
Weitere Hinweise für CGI-kundige Leser
Das Programm CGI.EXE kann sowohl POST wie auch
GET-Aufträge
entgegennehmen,
d.h. man kann Aufträge über Formulare oder
über Links
erzeugen.
In einem Auftrag müssen bestimmte Dinge enthalten sein:
VuwD=Name
des Verz., wo a99 laeuft
(working
Directory)
flex=Name
eines FLEXes (der
auf dem Arbeitsverzeichnis liegen muß)
Vuxy=...
beliebig viele
#u-Variablen; werden angelegt, bevor der FLEX
anläuft
optional können folgende Variablen
auftreten (nur bei
Schreibaufträgen
sinnvoll, s. WRITE.FLX):
Vnnn=...
beliebig
viele Kategorien
Rnum=...
interne Nummer des
zu bearbeitenden Satzes. Dann wird dieser
Satz
zuerst geladen, bevor der FLEX anläuft und bevor die V-Befehle
ausgeführt
werden, d.h. die in den anderen Variablen mitgelieferten Kategorien
werden
in den Satz eingeordnet, bevor der eigentliche FLEX beginnt.
Text=...
Inhalt
eines TEXTAREA-Feldes in einem Eingabeformular; Verwendung in
GETEDIT.FLX,
siehe dort.
Die Variablen Vuxy werden also dem zu startenden FLEX überreicht, d.h. CGI.EXE fabriziert einen neuen FLEX (und löscht ihn hinterher sofort wieder) Dieser temporäre FLEX enthält am Anfang die Setzung der #uxy-Variablen etc. (s.o.) und am Ende deren Löschung. Man verwende daher nicht den Befehl "end", sondern statt dessen "jump exit", denn die Sprungmarke :exit wird ebenfalls erzeugt. D.h. CGI erstellt einen "Sandwich"-FLEX:
Laden
des Satzes (wenn Rnum gegeben)
Setzungen
der #uxy
Inhalt des
Text-Feldes
(d.h.
Einfügen der darin enth. Kategorien in den Datensatz)
der FLEX aus der
CGI-Variablen flex=...
:exit
Loeschungen
der #u-Variablen
Der Name des temporären FLEX enthält u.a. die Uhrzeit in Sekunden, daher ist keine Kollision zweier Aufträge zu befürchten.
CGI sendet diesen Namen an a99 und wartet, bis die Ausgabedatei fertig ist (d.h. von a99 das Signal zurückkommt, es sei alles erledigt). Keines der Programme muß also ständig die Platte überwachen oder dergleichen, sondern die Kommunikation geschieht über Windows-Systemmeldungen.
Als Exportparameter wird per default D-KHTM.cPR benutzt. Ansonsten wird der Output des FLEXes an CGI.EXE abegeben und von diesem an den Web-Server zurückgereicht, d.h. man muß in seinem FLEX den kompletten HTML-Ausgabetext fabrizieren. Das kann abwechselnd durch "write"- und "export"-Befehle passieren. Bei "write" hat man ja die Möglichkeit, ganze Fertigteile, d.h. Dateien "name.htm", mit wri Fname.htm auszugeben.
Übrigens kann auf dem Rechner, auf dem der Webserver, a99 und CGI laufen, durchaus ganz normal gearbeitet werden. Z.B. kann man darauf Netscape starten und den Katalog selber benutzen, indem man die Adresse http://127.0.0.1/opac/opac.htm aufruft.
Tips
Sollen einige Nutzer Schreibrechte haben, andere aber nicht: zwei
Eingangsseiten
und zwei Startverzeichnisse anlegen, a99 zweimal starten (auf jedem der
Verzeichnisse).
In der INI-Datei für die Nutzer ohne Schreibrecht kann man zur
Sicherheit
eintragen: access=0. In GETREC.FLX und FIND-D.FLX
nimmt man
die
kommentierten Zeilen heraus, die den Link "Bearbeiten" erzeugen.
Den Zugang zu der Eingangsseite mit Schreibrecht kann man
zusätzlich
durch Passwort absichern.
Auf einem weiteren Verzeichnis kann man ein drittes a99 starten, um
damit
ohne Störung durch die Web-Zugriffe selber an der Datenbank
arbeiten
zu können. Hier sollte dann access=4 in der INI-Datei stehen,
damit man
alles machen kann.
Hinweis für allegro-kundige
Leser
Die Parameterdatei D-H0.APR
besorgt
einige
Standardaufgaben wie das Produzieren von Registerauszuegen und
SELECT-Listen
für die Registerauswahl. Sie wird über den Befehl
"export" benutzt.
So wird vermieden, daß man die Anzeigeparameter D-KHTM.APR
auch noch
mit
diesen Sonderaufgaben befrachten bzw. daß man in vorhandene
Anzeigeparameter,
die man für "avanti" schon gemacht hat, die etwas
komplizierten
Hilfsprozeduren
auch noch einbauen muß. Das spart u.U. viel Zeit.
Ausnutzen kann man in eigenen FLEXen evtl. zwei weitere
Nutzervariablen:
#urH und #urA. Diese enthalten jeweils den Namen des Host bzw. die
Adresse,
von der aus der FLEX gekommen ist.
allegro-Anwender wissen: nichts ist
unverrückbar
festgeschraubt,
(fast) alles lässt sich irgendwie variieren oder die
Entwicklungsabteilung
macht, wenn begründete Vorschläge kommen, eine
Programmverbesserung.
Das gilt auch für RuckZuck. Schreiben
Sie uns!
Version PHP : Die einfachste Lösung (braucht den avanti-Server)
Diese gibt es erst ab
November 2001.
Im März 2003 wurde umgestellt
auf Unicode.
Das Besondere an der Skriptsprache
PHP
ist, daß HTML-Dateien und Skripte eine Einheit bilden. Perl-
und
Python-Skripte
sind dagegen eigene Programme, die auf einem anderen Verzeichnis liegen
müssen
als die HTML-Dateien. Aus diesem Grund kommt die
PHP-Standardlösung mit
einem Minimum an Dateien aus: nur halb so viele wie bei der a99-Lösung!
Die FLEX-Makros werden dabei nämlich zum integrierten
Bestandteil
einer
PHP-Datei, sind also keine eigenen Dateien.
Hinweise zum Installieren des avanti-Servers und
des Webservers
incl.
PHP entnehme man den entsprechenden Dokumentationen!
Empfehlung:
Eine ausführlichere Beschreibung kann man im Programm a99
abrufen
(auch im Demo-Programm):
im Schreibfeld gibt man ein h phpac
Ziel war, die Funktionen
des a99-RuckZuck
komplett zu realisieren,
mit einigen wenigen Verbesserungen. Das sollte mit einem
Minimum an Dateien erreicht werden. Damit hat man eine
überschaubare
Basis, die in jeder Richtung ausgebaut werden kann.
Das PHP-Paket läuft auf Windows, Linux und Solaris, als Webserver wurden Apache und Xitami getestet.
Die nötigen
Dateien findet man
in phpac.exe.
Startet man dieses Programm auf einem PC, entstehen drei
Unterverzeichnisse: PHP mit den PHP-Dateien, PARAM mit den
Parameterdateien, DOKU mit den Beschreibungstexten.
Wohin mit den Dateien?
PHP-Dateien -->
ein Unterverz. am
HTM-Verz. des Webservers
(Meistens: "htdocs" bei Apache, "webpages" bei Xitami)
APR-Dateien --> DbDir (umbenennen in .xPR , wenn man
mit x.CFG
arbeitet)
Startseite ist INDEX.HTM
oder
DETAIL.PHP (einstellbar in av_ini.php).
Hat man mehrere Datenbanken anzubinden, kopiert man die Dateien jeweils
auf
ein eigenes Unterverzeichnis und modifiziert zunächst die
Datei
AV_INI.PHP,
evt. auch noch andere (vor allem INDEX.HTM, GETREC.PHP und WRITE.PHP).
Diese ist sozusagen die
INI-Datei für den Zugang zu einer Datenbank.
In AV_INI.PHP liegen die Variablen mit Anpassungsbedarf (alles
kommentiert):
Server-IP, Datenbankname, Username, Passwort und ein paar wenige
weitere
Angaben, wie $Startpage, $Reg1name ....
Außerdem zwei wichtige Grundfunktionen: das
Übergeben eines
Jobs
und das Ausgeben der Ergebnisse.
PHP-Dateien
(die
rot
geschriebenen muß
man anpassen)
AV_INI.PHP Einstellungen für die betreffende Datenbank
INDEX.HTM
Startseite schlicht (Angebot: Link zu
DETAIL.PHP), nach Eingabe startet:
DETAIL.PHP Startseite fuer Detailsuche,
ruft auf:
FIND.PHP
Ausführen einer
Detailsuche,
startet PAGE oder RSET:
PAGE.PHP
Anzeige
eines
Registerabschnitts, startet:
RSET.PHP
Anzeige
einer
Ergebnismenge, startet:
GREC.PHP
Anzeigen eines Datensatzes, startet:
EDREC.PHP
Bereitstellen eines Satzes zum Editieren, startet:
WRITE.PHP
Speichern des bearbeiteten Satzes
AV_PAGE.PHP Kernfunktion für
PAGE.PHP
AV_RSET.PHP ... fuer RSET.PHP
AV_GREC.PHP ... fuer GREC.PHP
ENTRANCE.HTM Einloggen für die Bearbeitungsfunktion.
Passwort wird
als Cookie aufbewahrt.
Die Dateien mit dem Präfix AV_ sind unselbständig, sie werden von anderen Dateien nachgeladen,
Hinsichtlich der Schreibfunktionen muss man auch in GREC.PHP und WRITE.PHP eingreifen. Die Stellen sind markiert durch xxx. Es geht um die Kategorien, die in eigenen Edit-Feldern angeboten werden sollen.
Parameterdateien
Kopieren auf DbDir oder ProgDir (wo avanti gestartet wird):
d-html.apr
Datensatzanzeige
für HTML, angelehnt an D-1.APR
muss für andere CFG eigens erstellt werden!
Dafuer als Hilfe, sozusagen als Strickmuster:
d-simpel.apr
Geeignet, wenn es keine
Satzverknüpfungen
gibt
d-kompl.apr
... wenn es welche gibt
Diese zwei machen eine Anzeige mit Tabellenstruktur,
die man leicht ausbauen kann (NEU)
h-php.apr
Hilfsfunktionen,
z.B. Aufbereitung Registerabschnitt
universell fuer jede CFG verwendbar
h-edit.apr
Satz bereitstellen
zum
Editieren
geringe Anpassungen nötig (kommentiert)
d-utf8.apt
Codiertabelle ASCII -> ANSI
o.apt
Codiertabelle ASCII -> ANSI
ucodes.txt Liste
von u-Befehlen
für
Unicode.
Anzuhängen
an
die Indexparameter.
... und auf ProgDir\HELP zum
Betrachten in a99:
phpac.rtf
Dokumentation
der
Grundstruktur von PHP-Dateien
Einbindung in eigene Prozeduren
Dazu eignen
sich vor allem drei
Dateien:
page.php Anzeige eines
Registerabschnitts mit
Blättern
z.B.: page.php?urG=PER&urS=shakesp
Default: urG=|1 und urS=a, also Stelle a im Register 1
rset.php
Bildung und Anzeige einer
Ergebnismenge
mit Blättern
z.B.: rset.php?ufC=PER+shakesp%3F
grec.php
Holen und Zeigen eines Satzes
z.B.: grec.php?urN=12345 // Zeige Satz
Nr. 12345
oder grec.php?urG=NUM&urS=12345678
Die eigentlichen
Funktionen sind
ausgelagert in die Dateien av_page.php,
av_rset.php und av_grec.php
Dadurch bleibt die Anwendung übersichtlich.
Für die eigene Gestaltung muss man sich nur die oben genannten
drei Dateien
vornehmen, die av-Dateien sind darin eingebunden mit "include".
Die wichtigen
Variablennamen
stehen in Beziehung zu internen Variablen
(#u-Variable) von "avanti" und sind daher immer von der Form
uxY
mit
einem Kleinbuchstaben x und einem Grossbuchstaben Y (um moeglichst
nicht in
Konflikt zu geraten mit internen Variablen z.B. von Anzeigeparametern).
Die wichtigsten sind:
urG
Registerbezeichnung, z.B. PER
urS
Register-Startpunkt, z.B. shakesp
ufC find command,
z.B. PER+shakesp%3F
urN record number
(interne Satznummer)
urO Ordnungsmodus,
Default a0 (in RSET.PHP)
Wie allgemein üblich, müssen Aufruf-Variablen, vor allem urS, codiert werden, also Leerzeichen durch + ersetzt, ? durch %3F usw.