allegro-Homepage a35 : HTML5 + CSS3 + JavaScript mit jQuery

allegro-Datenbanken ins Netz mit a35, auch auf Mobilgeräten

2012-11-28

Grundkonzept und Struktur
Ab August 2012 entstand eine neue Internet-Schnittstelle, Arbeitstitel a35. Zwar inspiriert von  a30,  arbeitet es aber nicht mit einem RIA-Entwicklungssystem (wie Adobe-Flex/Flash), sondern mit dem neuen Standard HTML5 plus JavaScript im Browser  sowie  PHP mit allegro-FLEX im Server.  (Als a30 entstand, hatte HTML5 noch keine genügend große Marktdurchdringung: siehe dazu http://www.allegro-c.de/doku/a30/rias.htm)
a35 kann für die Oberfläche das gesamte Potential von HTML5 nutzen, wogegen die a30-Oberfläche nur mit ActionScript-Kenntnissen zu modifizieren ist.
Wie bei a30 ist es aber auch hier möglich, weitgehend ohne eigene Bemühungen in HTML, CSS und JavaScript sowie PHP auszukommen. Wer über solche Kenntnisse (und etwas mehr Zeit) verfügt, kann diese unbeschränkt einbringen.
Erreicht wird im Endeffekt gegenüber a30 eine noch bessere Plattformunabhängigkeit, weil nur noch gängige Browsertechnik eingesetzt wird.

Perspektiven

Die Arbeit an a35 wird während des Jahres 2013 weiter vorangehen. Dabei sollen auch exemplarisch einige Admin-Funktionen realisiert werden sowie solche aus den Bereichen der Ausleihe, Erwerbung und Zeitschriftenverwaltung. Mittelfristig soll damit a35 zumindest für viele wichtige Teilaufgaben das Programm a99 ersetzen können: Der Vorteil: a35 braucht nur irgendeinen moderneren Browser, a99 aber ist ein Windows-Programm und läuft nicht auf anderen Endgeräten.

Beispiel: Kopie des OPAC der UB Braunschweig

Grundkonzept: Alle JavaScript- und PHP-Funktionen sind allgemein und universell, d.h. können unverändert zum Einsatz kommen für jede Datenbank. Spezifische Einstellungen werden nur in einer Datei vorgenommen, und zwar in   ajax3ini.php   (von  phpac  übernommen). Große Teile, insbesondere die FLEX-Jobs für den Zugriff zur Datenbank, können direkt und unverändert z.B. auch in die Mobil-Schnittstelle übernommen werden, die zur selben Zeit entwickelt wurde.

Frei gestaltbar und ausbaufähig sind

  • die Oberfläche (s. Beispiel  a35start.php ) mit Formularen,  Links und  <div>'s  oder <span>'s  für die variablen Inhalte
  • die FLEX-Jobs für den Zugriff zur Datenbank (s.  a35get.job  für das Laden eines Datensatzes).


a35start.php

  • Das Oberflächenbild; kann als Beispiel und Vorlage für den Einsatz von a35 dienen, jedoch kann man es beliebig umgestalten.
  • enthält die universellen JavaScript-Funktionen, mit denen ein FLEX-Job aufgerufen und dessen Ergebnisse verarbeitet werden können. In diese Funktionen braucht man nicht einzugreifen! Die meisten sind ausgelagert in  ../scripts/a35.js.
  • zeigt an Beispielen, wie geeignete Links bzw. Formulare konstruiert sein müssen; diese rufen als  action  die JavaScript-Funktion  reqLink()  bzw.   reqForm()  auf  (diese stehen in  a35.js )
  • Formularelemente, deren Inhalte an einen Job übergeben werden sollen,  müssen ein Attribut  id  der Form  id="Vuxy"  haben,  xy  beliebige Zeichen (daraus wird in der Jobdatei dann #uxy)
  • Elemente, z.B. <div ...>, in die per Job etwas geschrieben werden soll, müssen ein  id  haben mit einem 3stelligen großbuchstabigen Label, z.B.  id="EXT"  oder  id="ERR"
  • Die genannten Funktionen starten  ajax3.php   und 
  • übergeben ihm den Jobnamen mit  ?JOB=...  sowie die Variablen aus dem Formular mit &Vuxy=...

Jede  *.job-Datei

  •  wird aus  ajax3.php  gestartet
  • erhält vom  ajax3.php  die Variablen:  aus  Vuxy  wird im Job  #uxy, d.h. im Job hat man diese ohne eigenes Zutun zur Verfügung, ferner  #uIP  mit der IP-Nummer des Browsers
  • produziert Output mit  write- und export-Befehlen. Dieser Output ist eine lange Zeichenfolge, die durch Labels  _!_ABC  gegliedert ist
  • Ein solches Label adressiert ein Element  id="ABC"  im aufrufenden HTML-Code, also hier  a35start.php,  dann kommt der auf _!_ABC  folgende Text bis zur nächsten Markierung  _!_  in das betr. Element.  Das erledigt die universelle Rückkehrfunktion  receivE()  in a35start.php. In Spezialfällen kann man hier Sonderbehandlungen einbauen (im Abschnitt unter  switch(label) ).

a35get.job   Zeigt einen Datensatz (unter Label  _!_EXT  in  a35start.php ); datenbankspezifisch

a35ind.job   Zeigt einen Register-Ausschnitt (Label  _!_REG  in  a35start.php )

a35erg.job   Zeigt eine Ergebnis-Kurzliste (Label  _!_ERG ), datenbankspezifisch

Die Jobdateien sollen in einem Unterordner des HTML-Ordners der Datenbank liegen. Dessen Name muß in ajax3ini.php stehen, z.B.

$Jobdir="a35jobs/";

sonst würden die Jobdateien direkt im HTML-Ordner gesucht, was ungünstig ist, denn dort wären sie von außen sichtbar. In den Job-Ordner legt man zudem eine Datei  .htaccess  mit der Zeile  Require user xyz

a35.js

  • Enthält die universellen JavaScript-Funktionen, die man auf jeden Fall  braucht. Eingriffe sind nicht nötig. Direkt übernehmbar auch für die Mobilversion.
  • Die Funktionen liefern einen markierten Datenstrom, der die  Labels  _!_ABC  enthält für das "Befüllen" der entsprechenden Elemente.   

    Dies sind die wichtigsten Funktionen:
  • cReqObj() : Ein "request object" anlegen (für die Ajax-Technik)
  • reqLink() : Aus einem Hyperlink einen Job starten (z.B. href="javascript:reqLink(123)" um den Satz 123 anzuzeigen)
  • reqRes()  : Eine Suchanfrage ausführen lassen
  • reqInd()  : Einen Registerabschnitt anzeigen lassen
  • reqForm() : Aus einem Formular einen Job starten (s. a35start.php : <form … )  (sucht alle  Vu-Variablen aus dem Formular heraus)
  • reqHelp() : Eine beliebige URL absenden, Ergebnisse erscheinen Info-Feld (Label "INF") .
  • extWin()  : Eine beliebige URL in einem externen, kleineren Fenster öffnen

ajax3.php + ajax3ini.php
  • ist ein universelles Skript, das nicht selber etwas ausgibt.
  • Es startet jeden Job, z.B.  a35get.job, dessen Name ihm mit  ?JOB=… übergeben wird, und 
  • reicht die Variablen  Vuxy  an diesen Job weiter. Sie kommen im Job als  #uxy  an
  • Was der Job mit  write-  und  export-Befehlen ausgibt, sendet  ajax3.php sofort unverändert an den Browser.
  • In dieses Skript braucht man nicht einzugreifen. Nur in  ajax3ini.php  sind einige Angaben zur Datenbank nötig (dieselben wie in av_ini.php).

Parameterdateien (im Datenordner oder Programmordner (wo  acon  liegt)!)
Die folgenden braucht man für jede Datenbank (Darin stehen jeweils Kommentare)

e-unihtm.apr, utf.apr (nur zur Umwandlung von inernem Datenbank-Text in UTF-8) 

a35erg.apr / d-khtm.apr + dk.apt (zur Kurz- bzw. Vollanzeige eines Datensatzes, nur diese zwei sind von der Datenbank-CFG abhängig)

ad-utf.apt, ad-htm.apt, d-htm.apt (Hilfstabellen für die Zeichenumcodierung und HTML-Darstellung)

a35 Startbild

Startbild a35

Jedes Element, auch die Eingabefelder und Schaltflächen, verfügt über einen ToolTip, der beim Positionieren des Mauszeigers darauf erscheint.
Tip: Das Fenstersymbol ganz rechts oben vergrößert die a35-Anzeigefläche auf den gesamten verfügbaren Raum, wenn das Browserfenster in seiner Größe verändert wurde.

Die vier Quadranten haben folgende Labels und Bedeutungen: 

EXT/INT Dokumentfeld zur Anzeige eines einzelnen Datensatzes in zwei Formen (extern und intern), zwischen denen mit F5 umgeschaltet wird
Die Buttons  <  und  >  blättern zwischen den während der Sitzung vorher angezeigten Datensätzen
Job:  a35get.job  liefert die Inhalte mit den Labels  _!_INT  und  _!_EXT
Die Anzeigeparameter können beliebige Links erzeugen zur Auslösung von geeigneten, zum Datensatz passenden Funktionen, der Job kann aber auch selber solche Links hinzufügen: z.B. zum Sprung in den WorldCat oder Google Buchsuche (s. a35get.job)
INF Mehrzweck-Informationsfeld zum Anzeigen beliebiger HTML-Texte, z.B. vom Anwender definierte Menüs
REG Indexfeld für das Blättern in den Registern der Datenbank
In das Eingabefeld "Einblick nehmen ..." gibt man die Startposition ein, bei der die Indexanzeige beginnen soll
Job:  a35ind.job
ERG Ergebnisfeld zum Anzeigen von Ergebnis-Kurzlisten.
In das Eingabefeld (Finden: ...) kann man Suchbefehle eingeben oder auch Wörter, die mit UND kombiniert werden sollen
Die Buttons  <  und  >  blättern zwischen den während der Sitzung vorher angezeigten Ergebnismengen
Job:  a35erg.job

Tip: Die Inhalte von REG und ERG kann man mit F12 in das Feld EXT kopieren, d.h. hintereinander dort anzeigen lassen.

 
2012-11-28