phpac2
allegro-Web-OPAC
DOWNLOAD

Mit  
PHPAC  wurde erstmals 2002 ein in PHP programmiertes Web-OPAC-Grundmodell bereitgestellt.
Es trat neben ein schon älteres, in Perl programmiertes Modell namens acwww25.
Die Zielvorstellungen bei  PHPAC  waren:

  1. Alle für die Katalogbenutzung notwendigen Funktionen, plus Datenerfassung und Korrektur.

  2. Einfaches Installieren, möglichst wenige Dateien, geringer Anpassungsbedarf.
    Wirklich notwendig ist, wenn man das Standardschema verwendet, nur die Anpassung einer einzigen Datei:  av_ini.php.

    Dazu wenige Zeilen in der Konfig-Datei des Servers (liegt da, wo dir Programme avanti und acon liegen):  avanti.con

    Die wichtigsten Inhalte beider Dateien: siehe
    Anhang.

  3. Leichte Umstellung auf ein anderes Kategorienschema, d.h. möglichst wenig Abhängigkeit vom Datenschema.

  4. Hinreichende Dokumentation, um Veränderungen und einen weiteren Ausbau zu unterstützen.

Es gab dazu auch schon eine Übersicht, aus der man die Funktionen der verschiedenen Dateien ersehen konnte, also der PHP-Skripte und Parameterdateien. Die Übersicht ist etwas abstrakt, deshalb wird sie hier um eine illustrierte Darstellung ergänzt.

Viele Web-Kataloge wurden bereits mit diesem Modell realisiert, einige Musterdatenbanken sind auf dem allegro-Server zur Ansicht verfügbar. Aus den bisherigen Erfahrungen wurden einige Verbesserungen herausdestilliert. Es handelt sich mehr um Details, nicht um grundlegende Veränderungen. Im folgenden werden die unterschiedlichen Bilder gezeigt, die man in einem solchen Katalog zu sehen bekommt, und es wird kurz beschrieben, wie diese Bilder zustandekommen. Wer phpac schon kannte, wird ein paar Modifikationen im Erscheinungsbild bemerken.


1. Die Startseite: index.htm

OPAC Startseite

Diese Datei kann völlig frei gestaltet werden. Zu übernehmen braucht man nur das Formular mit den zwei Elementen <select> (Auswahlbox) und <input> (Eingabefeld), doch auch den Inhalt von <select> kann man ändern. Eine ganz andere Gestaltung sieht man z.B. bei der DemoBank zum Neutralformat. (Dabei wird, anders als im Normalmodell, nicht in ein Register gesprungen, sondern eine Mehrfach-Suche durchgeführt. Dazu wird nicht  page.php, sondern  zx.php  aufgerufen.)


Der Link "Neue Daten erfassen" wird nur gebraucht, wenn über phpac auch Dateneingabe ermöglicht werden soll. Es wird dann  edrec.php  mit Satznummer 0 aufgerufen - ein leeres Formular erscheint.
Hinter  ? ? ?  steckt ein Link zur Datei tellme.htm, die man gleichfalls frei gestalten kann, um alle nötige Information zum Katalog bereitzustellen.

Damit alles weitere funktioniert, muß man den avanti-Server korrekt installiert und in seiner Datei  avanti.con  die betr. Datenbank eingetragen haben. In der Datei  av_ini.php  muß dann der symbolische Name der Datei stehen, wie er in die  avanti.con  eingetragen ist. Die Datei av_ini.php wird von allen PHP-Skripten eingebunden. Darin stehen viele modifizierbare Variablen, darunter die Überschriften etc. für die anderen Seiten, aber auch allgemeine Funktionen sowie CSS-Anweisungen. Am wichtigsten ist die Funktion  sendjob(), die von allen Skripten  benutzt wird, um Aufträge an den avanti-Server abzuschicken. Der Server liefert dann meistens fertigen HTML-Text, der nur noch an den Endnutzer auszuliefern ist. Selbstverständlich ist  av_ini.php  kommentiert, so daß man sehen kann, was dort in welcher Weise geändert werden muß, kann, darf oder sollte.

Aus dem Formular heraus wird das PHP-Skript  page.php  aufgerufen. Diesem werden die Parameter urG und urS übergeben. So sieht der Aufruf aus, den man auch in beliebige andere Seiten einbauen kann, um dasselbe zu erreichen:
   page.php?urG=sym&urS=startpkt
Dabei ist  sym  der symbolische Name eines Registers und startpkt eine Zeichenfolge, die angibt, an welcher Stelle das Register aufzublättern ist. Das sieht dann so aus:
Wählt man z.B. bei der DemoBank das Register "Personennamen" und gibt "shakesp" ein (der Anfang eines Namens genügt!), kommt dieses heraus, produziert vom Skript  page.php  mit dem Aufruf  .../page.php?urG=per&urS=shakesp


2. Indexfenster

PHPAC Register

Der Fensterinhalt wird aufbereitet in  av_page.php

Auf einer solchen Indexseite hat man mehrere Möglichkeiten:

2.1. Eine andere Stelle aufblättern: Man wählt u.U. ein anderes Register und gibt einen anderen Startpunkt ein. Dadurch wird wieder page.php aufgerufen, um einen anderen Registerabschnitt zu zeigen.

2.2. Vor- und zurückblättern: Dazu klickt man auf "Eine Seite weiter" bzw. "Eine Seite zurück". Dahinter steckt jeweils ein Aufruf von page.php; man sieht es genau (unten in der Statuszeile), wenn man mit der Maus drauf zielt.

2.3. Einzelne Zeile anklicken. Dabei gibt es drei Arten von Zeilen:
a) Einzeltreffer : Der Datensatz wird gezeigt (Skript  grec.php)
b) Mehrfachtreffer (Anzahl steht in Klammern dahinter) : Die Kurzliste zu diesen Einträgen wird gezeigt (Skript  find.php)
c) Verweisung [neu]: Man kann nur auf das klicken, was hinter dem Pfeil steht. Dann wird die dazugehörige Stelle im Register aufgeblättert. Auch hier kommt wieder  page.php  zum Einsatz, um die betr. Stelle aufzuschlagen.

2.4. Mehrere Zeilen ankreuzen [neu] : Man klickt eines oder mehrere Kästchen an und dann den Button  "Angekreuzte Daten holen". Man erhält die zusammengefaßte Ergebnisliste zu den angekreuzten Zeilen. Der dazu nötige find-Befehl wird zusammengesetzt durch die JavaScript-Funktion  ixlist(), die in av_func.js  zu finden ist.

Tip: Auch Trunkierung ist möglich! Wie in a99 setzt man ein ? an das Ende der Eingabe, dann werden alle Einträge an der Stelle abgeschnitten und die Trefferzahlen den gekürzten Einträgen entsprechend angezeigt, mit ... am Ende.

Tip: Auf einer Indexseite werden regulär 18 Zeilen gezeigt. Die Zahl ist aber variabel: wenn man zum Aufruf von  page.php  noch
&urA=30 ergänzt, erhält man z.B. 30 Zeilen ab Startpunkt, mit &urA=-30 sind es 30 Zeilen oberhalb des Startpunkts - so wird das Rückwärtsblättern ermöglicht. In av_ini.php kann man den Standardwert 18 ändern, und zwar mit dem Befehl  $uRA = ...


3. Ergebnisliste
Eine Ergebnisliste erscheint in einem etwas kleineren Fenster [neu] und sieht immer so aus:

phpac-Ergebnislistenanzeige

Für die Anzeige der Treffer wird das Skript  rset.php  und die Parameterdatei  p-brief.apr  gebraucht. In dieser steht, welche Datenfelder in welcher Reihenfolge in der Kurzliste zu sehen sein sollen. Kenner greifen hier ein, um die Kurzdarstellung zu verändern. Wenn nicht A.CFG verwendet wird, sondern X.CFG, muß man eine eigene  p-brief.xpr  schreiben.
Wenn ein Datensatz eine URL enthält (Feld #8e), ist in dieser Kurzliste auch schon der Titel mit dem Link versehen. Falls nicht gewünscht:  p-brief.apr  ändern.
Mit dem Button [Neu suchen] kann man einen geänderten Suchbefehl neu ausführen lassen.
Wenn die Ergebnismenge größer wird als 40, zeigt  rset.php  die ersten 40 und ermöglicht dann das Vor- und Rückblättern.
Dieser Standardwert ist in  av_ini.php  einstellbar (Befehl  $uZA = 40).
Tip: Die Funktion "Ergebnisliste als E-Mail" wird durch  t-mail.php  erledigt. In  rset.php  kann man weitere Möglichkeiten einbauen, wie die E-Mail aussehen soll! Dahinter stecken jeweils Export-Parameterdateien, die man dafür erstellen muß.

Und schließlich noch das Wichtigste:


4. Satzanzeige
Klickt man eine der Registerzeilen oder Kurzlisten-Zahlen an, erscheint die Vollanzeige des Datensatzes. Das passiert (bei Einzeltreffer) auch direkt von der Registeranzeige aus (s.o. 3a). So sieht dann die Datensatz-Anzeige aus, produziert mit Ajax-Technik von  grec.php: (Aus der Kurzliste heraus erscheint der Satz in einem eigenen, kleineren Fenster, nicht rechts eingeblendet, produziert von grec.php):

phpac Datensatz-Anzeige
 
Für diese Anzeige wird die Parameterdatei d-khtm.apr benutzt (Einstellung $Dispar in ac_ini.php). Die eigentlich wichtigen Teile stehen aber in der Datei d-k.apt. (Diese wird auch in d-krtf.apr und d-kdos.apr für Windows bzw. DOS eingebunden, auch in d-a30.apr für a30, und ist damit plattformunabhängig.) Man muß sich also nur um  d-k.apt kümmern, wenn man Änderungen machen will oder eine ganz eigene Version. Das ist normalerweise nicht schwer; es stehen Kommentare drin und man erkennt das Strickmuster, wie die Ausgabe eines Feldes gemacht wird. Alles Schwierige ist allgemeingültig gelöst und muß nicht verstanden werden (hierarchische und verknüpfte Sätze!).
Unten kann man, falls in  grex.php/grec.php  aktiviert, wie bei der Ergebnis-Kurzliste, eine E-Mail-Adresse eingeben, dann bekommt man die Daten zugeschickt. Dies erledigt wieder das Skript t-mail.php, benötigt werden darin Exportparameter  d-mail.apr  oder andere, die man evtl. dafür erstellt.
Oben rechts sieht man u.U. den Link "Edit/Bearbeiten" und unten einen Button zum Löschen des Satzes (für diese Dinge muß eine Einstellung in der Datei  av_ini.php  gesetzt sein sowie in  av_grec.php, man findet Kommentare dazu).

5. Bearbeitungsformular
Wenn man in der Satzanzeige auf "Edit/Bearbeiten" klickt, sieht man dieses Formular:

phpac Bearbeitungsformular

Produziert wird dieses Formular von dem Skript  edrec.php. Darin kann man relativ leicht die Gestaltung verändern, z.B. andere Felder hinzunehmen. Die zwei Buttons [Wieder speichern] und [Als neuen Satz speichern] rufen das Skript  write.php  auf. Dieses braucht man nicht zu ändern, es nimmt die im Formular vorgesehenen Felder entgegen, ordnet sie dann in den Datensatz ein und speichert ihn als veränderten bzw. neuen Satz.

6. Kombinierte Suche
Wählt man im ersten Bild oder auf der Registeranzeige den Link "Kombinierte Suche", kommt folgendes:
(dahinter steckt  detail.php):


Suchformular

Dieses Suchformular (Wir sagen nicht "Maske", sondern treffender "Formular" - und so heißt es ja auch innerhalb HTML) wird komplett von dem Skript  detail.php  hergestellt. Gebraucht wird dazu eine Parameterdatei mit Hilfsfunktionen, h-php.apr. Die Namen der Register und der Restriktionen werden aus der Index-Parameterdatei der Datenbank entnommen. Dieselben Namen sieht man auch im Programm a99 bzw. alcarta im Fernglas-Menü. Auch in die  detail.php  kann man ansonsten freizügig gestaltend eingreifen.
Die "Schnelle Direktsuche" gibt es nur. wenn man ein Register namens ALL hat, in dem "alle Wörter" aus den Titeldaten stehen. (Zu konfigurieren ist dies in den Indexparametern, in der Standarddatei cat.api ist es ab V30.9 enthalten. Mit dem Button [Find] wird dann  all.php  aufgerufen.)
Der Button [Registereinblick] verzweigt zum Skript  page.php, und [Suchbefehl ausführen] zu rset.php.
Man kann also von dieser Startseite aus sowohl in den Registern blättern (dann wird nur das erste Eingabefeld ausgewertet) wie auch eine kombinierte Suche machen. 



DOWNLOAD

avanti

Die aktuelle Version und einige ältere des avanti-Servers holt man sich so:

Windows:   http://ftp.allegro-c.de/aktuelle-version/avanti/
Linux  :   http://ftp.allegro-c.de/avanti/
Solaris:   http://ftp.allegro-c.de/unix/sun/avanti/

Man holt sich von dort nur die drei Dateien avanti.exe, acon.exe, avanti.con und  uifsger  und kopiert sie auf das eigene Programmverzeichnis, wo  allegro.exe  liegt.
Die weitere Installation macht man nach der Anleitung.

phpac

Das Paket phpac bekommt man hier:

http://ftp.allegro-c.de/aktuelle-version/avanti/phpac.zip  


Die Installation geht so: Das Archiv  phpac.zip entpacken in irgendein Verzeichnis. Dies dient nur als Zwischenlager für die Dateien. Man erhält dort die folgenden Unterverzeichnisse, deren Inhalte man anschließend an die jeweiligen Ziele kopiert:


php:   Auf ein Unterverzeichnis des Webserver-Dokumentenbereichs, z.B. ./katalog.
       Dieses dient danach als Startadresse für den Web-OPAC.
       Lokale Einstellungen sind zumindest in  av_ini.php  nötig.
       Ferner ist ratsam, index.htm zu bearbeiten.

param: Auf das eigene Datenbankverzeichnis. Modifikationen nur nötig, wenn man nicht den
       Standard A.CFG verwendet (s.o.).

avlib: (optional) Einige allgemeine PHP-Funktionen. Diese kann man für eigene Entwicklungen nutzen.
       Dokumentation: ref_av.htm




Anhang :  avanti.con  +  av_ini.php, und Notwendige Dateien
In Lila
ist zu sehen, welche Angaben in beiden Dateien übereinstimmen müssen

avanti.con   (auf dem ProgDir, d.h. wo  avanti.exe  liegt, z.B.  c:\allegro)
                         Wichtig: Wenn man diese Datei ändert, dann avanti neu starten.
[general]
port = 4948
prefork = 1
AnonymousAccess = yes
max_cputime = 120
# logfile = c:\temp\ava.log
# loglevel = all,!io

#    für jede bereitzustellende Datenbank ein Abschnitt nach diesem Muster:
[demo]
directory = c:\allegro\demo2
access = 3
konfiguration = a
indexparameter = cat
opac = OPAC:1
admin = AZBYCX:3

av_ini.php   (gehört zu den PHP-Skripten der Datenbank, z.B. in  c:\xampp\htdocs\demo )
$UTF=1;   // Datenbank ist intern ASCII, Ausgabe soll UTF-8 sein

$Server = "localhost";  // hier kann die Adresse eines anderen Servers stehen
$Port = "4948";         // Derselbe Wert wie in der avanti.con

$DB = "demo";       // symb. Datenbankname
$ID = "admin/AZBYCX";   // User / Pw für den Zugriff (wie in avanti.con)

$Dispar = "d-khtm";  // Parameter für die Titelanzeige
// falls Schreibzugriff erlaubt sein soll:
$CM = "u";           // c = Codiertes Pw, u = uncodiert,
                     // r = read-only-Modus (default)

$CW = "abcdef";      // bei DIESER Datenbank ist $CM='u', also uncodiert

Alle weiteren Werte sind optional. Kommentare in der  av_ini.php  der DemoBank.

Notwendige Dateien

auf dem  ProgDir  (auf demselben Rechner, wo die Datenbank liegt)

avanti.exe   Server  (unter UNIX/LINUX ohne .exe)
acon.exe     Programm zur Ausführung der Jobs
avanti.con   Liste der Datenbanken, die der Server kennen soll (anpassen!)
uifsger      Textmeldungen

Auf dem DbDir (z.B. c:\allegro\demo2) ODER ebenfalls auf dem ProgDir:
Konfiguration, z.B.
 $a.cfg  --  sicherheitshalber immer auf dem DbDir, für die anderen ist auch ProgDir möglich
Indexparameter, z.B. cat.api mit  i.apt, o.apt, swl1.apt
Parameterdateien  h-php.apr, h-edit.apr, ad-utf.apt, d-khtm.apr, d-k.apt, d-htm.apt

Im  html-Ordner für die Datenbank, z.B.  c:\xampp\htdocs\demo
Der gesamte Inhalt des PHPAC-Unterverzeichnisses   php  aus dem  phpac.zip
Anzupassen ist im Minimum nur  av_ini.php. Wenn aLF zum Einsatz kommt, auch  av_mini.php  in gleicher Weise. (Wird gebraucht in  a-overl.php, a-ovorm.php, a-onpw.php  und  a-okonto.php.

 


© B.Eversberg, UB Braunschweig, 2006-07-11/2010-11-05