a35 :
Plattformunabhängige Browser-Oberfläche für allegro-Datenbanken
Konzept und Installation 2020-04-15
|
Vorwort Das ab 2012 entwickelte Web-Interface a35 arbeitet auf der Basis von HTML5 + JavaScript + CSS3 im Browser sowie PHP + allegro-FLEX im Server. a35 bietet damit für die Oberfläche das gesamte, jedem Web-Entwickler vertraute Potential von HTML5. Fremdkomponenten, wie z.B. Java, MySQL oder XML, werden nicht verwendet. Nur FLEX ist allegro-spezifisch, weil notwendig für die Zugriffe auf die Datenbank. a35 schafft eine Web-Oberfläche für das Arbeiten mit einer Katalogdatenbank, nicht nur für das Suchen darin. Auch als Web-OPAC kann es dienen, obwohl ein zeitgemäßes OPAC-System für Endnutzer nach heutigem Verständnis mehr erfordert, als die Indextechnik von allegro leisten kann. Wahlweise ist dafür VuFind oder "beluga" verwendbar oder vergleichbare Discovery Systeme. Diese können Daten von allegro per MARC-Export erhalten. Solche Systeme kosten allerdings serverseitig deutlich mehr KnowHow, Performance und personellen Aufwand. Es sind reine Suchsysteme, sie zeigen nicht den tagesaktuellen Stand der Daten. Dafür und für die ständige Arbeit an den Daten ist a99, auch unter Windows-10, noch nicht ersetzbar. Zu den Grundsätzen der frei modifizierbaren Oberfläche von a35 siehe Abschnitt Design-Konzept. Eine englischsprachige Einführung in die wichtigsten Komponenten bietet acon and FLEX. |
Man braucht eine avanti-Installation für den Zugriff zu den Datenbanken und natürlich einen Webserver für den Zugang über das Internet. Diese zwei Komponenten können auf zwei verschiedenen Plattformen liegen oder auf derselben.
Die aktuelle Version des a35-Gesamtpakets, mit allen nötigen Programmen und Dateien (bis auf den Webserver, i.d.R. Apache), holt man sich hier:
http://www.allegro-b.de/download/a35.zip
In diesem Paket stecken zwei Ordner mit Unterordnern, in jedem davon erklärt eine Datei README, wozu die Dateien gut sind und wo man modifizieren kann:
1. allegro : Diese Dateien und Programme
(acon,
avanti u.a.) gehören in den Programm- bzw. Datenordner auf
dem
Arbeitssystem, d.h. wo man die allegro-Software
und die Datenbanken installiert hat: z.B. c:\allegro
Hier liegen die
a35-Programme: avanti und acon; die Dateien avanti.con und uifsger. - Plus 2 Ordner
Demo-Datenbanken.
2. www
: HTML- und
Skript-Ordner (.php, .js, .css, .htm und .job) zur
Installation auf dem
Webserver, also evtl. einem anderen System.
Der Inhalt: Ein Ordner db, er gehört
z.B.
für XAMPP (Windows) in xampp\htdocs
, für Apache in /var/www/html
Der Webserver
braucht physisch nicht derselbe Server zu sein wie
für 1., denn die Kommunikation zwischen Webserver
und Datenserver
läuft über TCP/IP.
Programm- und
DatenOrdner (Windows oder
Linux) ProgDir = c:\allegro bzw. /var/allegro Hier Programme avanti + acon, avanti.con etc. DataDir z.B. = ProgDir/db oder sonstwo/db darin für jede Datenbank ein Unterordner: DataDir/demo2 Demo-Datenbank DataDir/name Eigene Datenbank(en) (z.B. name = katalog) Statt der echten Daten können es auch Kopien sein, die man regelmäßig aktualisiert. Der Ordner DataDir muss für die Programme im ProgDir zugänglich sein, besonders für acon . |
avanti <-- TCP/IP --> z.B. Port 4949 s.u.. |
HTML- und Script-Ordner auf dem Webserver WebDir = ...\htdocs oder .../html Unter Linux z.B. WebDir = /var/www/html (auch Document Root genannt) a35Dir = WebDir/db Ordner für a35-Scripte; hier liegt ajax4.php : universell f. alle Datenbanken, erledigt die Kommunikation zwischen Datensystem und Web-System), und scripts/a35.js enthält alle JavaScript-Funktionen für a35. a35Dir/demo Skripte für Demo-Datenbank a35Dir/demo/demojobs Jobs speziell für Demo-Datenbank Hier legt man Ordner für eigene Datenbanken an, z.B. a35Dir/opac Skripte für Katalog-Datenbank, hier Einstellungen in a35ini.php : für a35-pc.php ajax4ini.php : für jax4.php a35Dir/opac/katjobs : Jobs speziell für katalog-Datenbank, Der Name $Jobdir="katjobs" muss in ajax4ini.php stehen a35Dir/scripts Universelle Skripte, vor allem a35.js a35Dir/scripts/jobs JobSkripte, die für alle Datenbanken funktionieren |
In folgenden Dateien sind Einstellungen unbedingt
nötig:
1. avanti.con
im Ordner ProgDir
und
2. ajax4ini.php
und a35ini.php im
Ordner a35Dir/demo
und jeweils in den entsprechenden Ordnern für weitere
Datenbanken
In rot
ist unten zu sehen,
welche Angaben in diesen Dateien übereinstimmen
müssen. In grün,
welche für die jeweilige Datenbank sonst noch
angepasst werden können, aber nicht immer
müssen:
1. avanti.con
: gehört ins ProgDir,
also
wo avanti(.exe)
und acon(.exe)
liegen
Wichtig: Diese Datei gibt es nur einmal,
sie enthält die
Angaben,
die avanti
und acon für alle
zu bedienenden Datenbanken brauchen.
Wenn
man avanti.con ändert, dann avanti neu
starten. Die Datei enthält ihre eigene Dokumentation.
[general]
port = 4949 # über diesen Port kommuniziert avanti mit dem Webserver, s.u.
prefork = 1
AnonymousAccess = yes
max_cputime = 120
# Folgende 2 Zeilen aktivieren, wenn man eine LOGdatei will: [in avanti.con steht mehr Doku]
# logfile = /var/log/a35/ava.log
# loglevel = all,!io
...
# für jede zu bedienende Datenbank ein Abschnitt nach diesem Muster:
[demo] [symbolischer Name der Demo-Datenbank] Diesen für eigene Datenbank kopieren und dann anpassen
directory = /var/allegro/db/demo2 (Linux) oder c:\allegro\db\demo2 (Windows)
access = 3
konfiguration = a
indexparameter = cat
# Nutzerkennungen und Passwörter, access 1 = Nur lesen, 3 = lesen und schreiben
opac = OPAC:1
master = AVANTI:3
2. ajax4ini.php : im Paket im Ordner a35dir/demo und in den entsprechenden für andere Datenbanken
(Nur ajax4.php braucht diese Datei)
Darin Einstellungen für die Skripte zu einer konkreten Datenbank; d.h. jede Datenbank braucht ein Exemplar davon.
Man macht am besten für jede andere Datenbank zuerst eine parallele Kopie von a35dir/demo und ändert darin dann die ajax4ini.php.
Folgende Einstellungen sind in ajax4ini.php wichtig:
$UTF=1; // Datenbank ist intern ASCII, Ausgabe soll UTF-8 sein. Nur wenn intern UTF-8, dann diesen Befehl weglassen.
// Serveradresse und Port: IP oder Name
$Server = "127.0.0.1"; // bzw. IP eines anderen
Servers, dort müssen dann avanti und acon liegen
$Port = "4949"; //
Wie in avanti.con. Dieser Port muss auf den Servern geöffnet sein
// Wo liegen die Programme?
Auf demselben Server, wo die
Datenbank liegt, - das ist nicht unbedingt auf dem Webserver.
Beipiele:
$ProgDir="c:\allegro";
unter
Linux z.B. $ProgDir="/var/allegro";
Daraus kann acon
entnehmen, wo Parameterdateien etc. liegen, wenn sie nicht im DataDir
zu finden sind.
// symbolischer DB-Name wie in avanti.con
(s.o.), nicht der reale Name und Ort auf dem Datenbankserver
$DB="demo";
// user und password wie in avanti.con (des users, der den job
starten soll)
$ID="master/AVANTI";
// bzw. opac/OPAC,
wenn keine Schreibzugriffe notwendig
$SP="a0"; // Sortierposition in Kurzzeilen für Ergebnislisten (daraus wird im Job: #uSP )
$Dispar="d-html"; // Anzeigeparameter für die Datensätze, hier d-html.apr. (display parameter file)
// Wo liegen die Jobs? (im Ordner der jeweiligen Datenbank, für a35Dir/demo
ist es z.B. .../demo/ajaxjobs ), so anzugeben:
$Jobdir="ajaxjobs/";
avanti.exe
(LINUX: avanti)
Serverprogramm
avanti.con
Liste
der Datenbanken, die avanti
kennen soll (siehe oben). Eigene muss man hier eintragen.
acon.exe (LINUX: acon)
Programm zur
Ausführung von Job-Dateien (Typ .job)
al.job Admin-Job +
Hilfetext al-help.txt
(Hilfsfunktionen; Start in Linux-Konsole: ./acon -jal)
uifsger
Texte für die Meldungen der
Programme avanti
und acon
Im DataDir
(z.B. c:\allegro\db\demo2
bzw.
/var/db/demo2
) ODER ebenfalls im
ProgDir liegen:
Konfiguration, z.B. $a.cfg
oder a.cfg
-- sie enthält alle Angaben zur Datenstruktur, vor allem das
Kategorienschema
Indexparameter, z.B. cat.api
mit Hilfstabellen i.apt, o.apt,
ucodes.apt, swl1.apt
Parameterdateien: d-khtm.apr + ad-utf.@pt oder d-html.apr, ferner d-k.apt,
d-htm.apt u.a. eigene
Im Webserver-Ordner für die Datenbank, z.B.
c:\xampp\html\db\demo
bzw. /var/www/html/db/demo
:
Der Inhalt des Ordners html/demo
aus a35inst.zip
(Der Name, hier demo,
ist zugleich der symbolische Name der
Datenbank; er muss nicht identisch sein mit dem Namen
des Datenordners DataDir, hier demo2 )
Anzupassen sind für eine eigene Datenbank im Minimum nur ajax4ini.php
und a35ini.php, siehe oben sowie unten unter
Technisches Konzept.
------------------------------------
Wichtig:
avanti-Server als Dienst installieren
(Mit Administrator-Rechten auszuführen)
Auf einer Windows-Plattform
genügt dazu folgender Befehl, zu
geben auf dem Verzeichnis, wo avanti.exe
liegt:
avanti -install
Schon läuft der Dienst und wird fortan stets beim
Hochfahren
des Systems automatisch gestartet.
Unter Linux startet man avanti direkt vom Programmordner aus (nicht von woanders) als Hintergrundprogramm mit dem Befehl
./avanti &
Auch unter Linux
kann man es so einrichten, dass der Server stets beim
Hochfahren des Systems gestartet wird:
Man legt im ordner /etc/init.d
eine ausführbare Datei avanti
an, in der nur steht:
Die Datei a35ini.php
liegt im Ordner a35Dir/demo
etc.
für jede Datenbank separat im jeweils eigenen Verzeichnis
genau wie ajax4ini.php.
a35ini.php ist mit include
eingebunden in die drei Startdateien a35-pc.php,
a35-tab.php, a35-app.php.
ajax4ini.php wird eingelesen von ajax4.php.
Wichtige Inhalte von a35ini.php :
$dbTitle="a35 Demo Version"; // erscheint in der Kopfzeile des Browsers
$db="demo";
// Name des Ordners
in a35Dir, wo die genannten Skripte
liegen (damit ajax4.php
dies
erfährt)
// Für die Kopfzeile der Startseite selbst, wenn man dafür die Textversion nimmt, s.u.
$dbHead='<span style="font-family:Verdana; color:rgb(204, 0, 0); font-weight:bold; font-size:20px"><i>allegro-b</i> - Demo Version</span> ';
// Varianten der Head-Darstellung der PC Version für
die drei Oberflächen; beliebig zu modifizieren.
// nur jeweils
eine davon in a35-pc.php etc. aktivieren, darin steht :
// $headpc= 'a35-head-pc1.php';
// Navigation mit eigener graphischer
Gestaltung
$headpc= "a35-head-pc2.php";
// Textversion Head - Navigation mit simplen
Textbuttons
// Varianten der Head-Darstellung der TAB Version
// $headtab= 'a35-head-tab1.php';
// Navigation mit eigener graphischer
Gestaltung
$headtab=
"a35-head-tab2.php";
// Textversion Head - Navigation mit simplen
Textbuttons
// Varianten der Head-Darstellung der MOBILE Version
// $headmobile= 'a35-head-mobile1.php';
// Navigation mit eigener graphischer Gestaltung
$headmobile= "a35-head-mobile2.php";
// Textversion Head - Navigation mit simplen
Textbuttons
Design-Konzept
a35 ist eine Weboberfläche, die flexibel an drei unterschiedliche Endgeräte anpassbar ist: PC, Tablet, Smartphone ("App"): Die Hauptelemente der Oberfläche befinden sich in drei Startdateien: a35-pc-cont.php, a35-tab-cont.php, a35-app.php Die FLEX-Job-Skripte für die eigentliche Datenbankarbeit sind davon unabhängig, d.h. für alle drei Oberflächen gleich. |
Bei der Arbeit mit einer Datenbank gibt es
vier Arten
von Information, die oft alle gleichzeitig sichtbar sein sollten, weil
sie logisch zusammenhängen:
Ergebnislisten : geordnete Übersicht (Kurzliste) der Ergebnisse eines Suchbefehls Indexsuche : geordnete Übersichten (Register) von Namen , Titeln, Schlagwörtern etc. zur Auswahl (browsing) Titeldaten : Metadaten, jeweils ein Datensatz zu einem ausgewählten Objekt (z.B. Buch, PDF-Datei, Website) Extras : Funktions- und Arbeitsdaten, z.B. Eingabeformulare, Hilfetexte, eigene Menüs Jeder der Bereiche braucht seine eigenen Schalt- und Eingabeelemente, die ihm jeweils auch optisch unmittelbar zugehören sollten. Z.B. die Eingabefelder für Suchbefehle bzw. der Einstiegspunkt im Index sollten Bestandteile dieser Bereiche sein. Als einfachstmöglicher Designansatz ergab sich daraus die Aufteilung der verfügbaren Fläche in vier Quadranten: (jeder hat ein internes, dreibuchstabiges Label)
Während einer Sitzung sieht die PC-Variante so
aus: (hier zum Ausprobieren: http://www.allegro-b.de/db/demo/a35-pc.php
) Das Menü oben in der Mitte steckt aber in a35-pc-menu.php . Seine Struktur und Funktionsweise ist leicht zu durchschauen und zu modifizieren. Neue, eigene FLEX-Jobs kann man am leichtesten hier einbauen. Oder vorhandene, die man nicht braucht, rausnehmen. Die zu Anfang
erscheinenden
Inhalte (s.o.) der vier Quadranten stehen in der Datei a35start.htm,
einfach mal reinschauen. Sie wird gleich zu Beginn geladen, bevor man
etwas eingeben kann. Das rot umrandete Feld ist der Eingabeschlitz
für
Suchwörter und Befehle. Für kurzzeitig
wichtige Dinge gibt es die Felder mit den Labels FRE, FRR und FRL,
die bei Bedarf in der nötigen Größe mittig
bzw. rechts/links unten eingeblendet werden.
Die Anordnung der Quadranten ergab sich aus folgenden
Überlegungen: In den einzelnen Quadranten (außer REG) kann man, unabhängig voneinander, zu den vorher dort erschienenen Anzeigen zurückblättern (Buttons [<] und [>] ). In EXT und ERG gibt es einen unscheinbaren Button [ L ]; damit wird die Liste der während der Sitzung vorher dort erschienenen Inhalte aufgemacht. So kann man schnell zu anderen Sätzen und Ergebnislisten gezielt zurückgehen, ohne den Back-Button des Browsers (der tut's nämlich nicht) und ohne erneuten Suchvorgang.. Hinweis:
Sowohl der Datensatz wie auch Hilfetexte und Formulare werden manchmal
recht lang, wobei man gern möglichst viel davon im
Blick
hätte. Daher sind diese zwei Quadranten oben angeordnet, und
mit F12 kann man die beiden unteren
Quadranten schnell mal wegblenden, um mehr von den oberen Inhalten zu
sehen. Mit F2
dagegen kann man auch jederzeit oben und unten vertauschen, wenn man
dies intuitiv besser findet. Dann sind also das rote Eingabefeld und
die Kurzliste links oben, die Anzeige des ausgewählten Satzes
darunter. Bei Größenänderung des
Browserfensters passen
sich die Quadranten automatisch an. Die Anordnung und Gestaltung der
Quadranten ist dennoch, da mit HTML5 + CSS realisiert, vom
Anwender für eigene Anpassungen in a35-*.php
modifizierbar. Ferner könnte an der linken und/oder rechten
Seite
noch ein Bereich für Navigation o.a. hinzukommen. a35-tab.php
:
Version für Tablets (eingebunden wird a35-tab-cont.php) Die PHP-Skripte hierfür sind fast alle dieselben, es handelt sich im wesentlichen um geänderte Präsentationsformen der Oberflächenelemente: die vier „Quadranten“ der PC-Version werden hierbei nicht gleichzeitig sichtbar, sondern unter „Tabs" bzw. in einem „Accordion“ angeordnet; man sieht dann jeweils nur den Inhalt eines Quadranten. Die Umschaltung zwischen den Bereichen erfolgt an einigen Stellen im Ablauf automatisch, ansonsten durch Mausklicks auf die Tabs. |
Technisches Konzept
|
a35 bietet einen Kernbestand von allgemeinen und
universellen
JavaScript- und PHP-Funktionen, die unverändert für
jede
Datenbank zum Einsatz kommen können. Spezifische Einstellungen
werden in der Datei ajax4ini.php
vorgenommen (Modifikation der av_ini.php
von phpac).
a35erg.job, um ein Beispiel zu nehmen,
Weitere wichtige Jobs
und in db/scripts
liegen ferner Über die Kombination ajax4.php + ajax4ini.php "redet" a35.js im Browser mit der Datenbank, und zwar so:
Die Jobdateien können in einem Unterordner
des a35Dir/-Ordners der Datenbank
liegen. Dessen Name muss ebenfalls in ajax4ini.php
stehen, z.B. |
Parameterdateien (evtl. spezifisch
für
die Datenbank und deren CFG)
Ort: im Datenordner , z.B.
c:\allegro\demo2
bzw. /var/db/demo2,
oder
wo das Programm acon
liegt, z.B. in c:\allegro
bzw. /var/allegro) fts.@pr : Parameter für die Ergebnis-Kurzliste der Volltextsuche mit a35fts.job (universell) Ohne a35 auf der Konsole gibt es eine Variante srch.job, die man mit acon starten kann, z.B. so: acon -jsrch -ddemo2\cat*.ald [-ee-1[=exportdatei]] -rsuchbegriff cat.api : Index-Parameter (und dazu i.apt, o.apt, ucodes.apt, swl1.apt ) e-unihtm.apr, e-unicod.apr, utf.apr: Umcodierungsparameter ad-utf.apt, d-html.apt, ucodes.apt : Umcodier- und Hilfstabellen Wenn man nicht mit dem Standardschema a.cfg arbeitet, braucht man eigene Anzeige- und Indexparameter. Letztere wird man schon haben, daran wäre nichts zu ändern, die Anzeigeparameter jedoch muss man eigens erarbeiten. Man kann sie schrittweise mit einfachen Anfängen entwickeln. Die .apt-Dateien kann man nur verwenden, wenn man in der eigenen Datenbank mit dem OstWest-Code arbeitet (angepasster ASCII-Code). Arbeitet man in der Datenbank mit dem Windows-ANSI-Code oder mit UTF-8, muss man entsprechend in den Exportparametern andere Tabellendateien verwenden, z.B. aw-utf.apt statt ad-utf.apt. Das erfordert Kenntnisse der Export-Parametrierung (Kap. 10 des Systemhandbuchs). |
Berechtigungen für Schreibzugriffe
|
Mit dem Login-Button oben rechts oder vom Menü "Sitzung/Login" wird die Datei a35login.htm abgerufen. Dieses zeigt 4 Buttons: [Identifizieren], [Registrieren], [Passwort ändern] und [Logout]. Jeder startet das Skript a35id.job, in dem sämtliche Funktionen ausgeführt werden. Wichtig sind dann folgende Punkte:
Besteht Schreibberechtigung, setzt a35get.job
über die Datenanzeige im INT-Feld
drei Links: "Edit
- Copy
- Delete".
Diese starten presto.job
bzw. a35del.job.
Der presto.job
erzeugt ein
Bearbeitungsformular im Feld INF
. Das Formular hat nur ein einziges Eingabefeld, in dem der ganze Satz
mit allen Feldern steht - wie beim alten Programm PRESTO. Darüber ein
Button [Speichern], und das besorgt das Skript prsave.job.
Analog zu presto.job
kann es andere Skripte geben, um selbstgestaltete Formulare
einzurichten, wobei alle Möglichkeiten von HTML5 ausnutzbar
sind.
Als Muster wird form1.job
mitgeliefert, darin Kommentare zur Methodik. |
Grafikdateien
|
Mitgeliefert und standardmäßig
benötigt werden nur wenige Icons, z.B. close.png,
finbut.png, up.ico, down.ico. Nur optional: gbs.png, wcat.png. Diese kann man in die Anzeige von Datensätzen einbauen, wie es in a35get.job zu sehen ist, um eine Verlinkung zur Google Buchsuche bzw. zum WorldCat bereitzustellen. Ansonsten können in allen .php-Bereichen beliebige Grafikelemente zum Einsatz kommen, nicht nur in den head-Dateien. |