Alle Quellcodes (Dateien der Typen .js, .css, .htm, .php, .job etc.) sind freigegeben, daher können Anwender die Oberfläche von a35 in jeder Einzelheit ändern und neue Funktionen für beliebige eigene Zwecke einbauen. Hinweis: Mehr zu dem Zusammenhang mit dem avanti-Server, dem Konsolprogramm acon und der Skriptsprache FLEX findet man in einem eigenen Tutorial in englischer Sprache: http://www.allegro-b.de/doku/aconflex.htm. 1. Aufruf Gestartet wird a35 aus einer PHP-Datei heraus, in die alles Nötige eingebaut ist. Und zwar gibt es drei Startdateien für drei Gerätetypen: a35-pc.php für Desktop-Browser a35-tab.php für Tablets a35-app.php für SmartPhones Jeweils zugehörige Dateien enthalten das Menü (z.B. a35-pc-menu.php) und die Oberflächenelemente (z.B. a35-pc-cont.php). Alle Teile kann man modifizieren, bes. die Menüdatei. Hinweis: Die a35-app.php ist keine App - sie funktioniert deshalb im iPhone und in Android-Smartphones. 2. Start von a35 Dazu wird schlicht eine der genannten PHP-Dateien im Browser aufgerufen. (Zum Testen kann man auf einem PC auch die Tablet- bzw. SmartPhone-Version aufrufen und benutzen.)
5. Start der Funktion (falls allegro-Datenbank: Aufklappen des Registers) Bei der Registersuche z.B. wird das Skript a35ind.job gestartet, und zwar mit dem logischen Registernamen und Suchbegriff als Argument VurS, d.h. es erfolgt ein Aufruf .../ajax4.php?JOB=a35ind&VurS=PER goethe Dann wird ein Ausschnitt des gewählten Registers gezeigt, mit anklickbaren Zeilen für den Zugriff auf die zugehörigen Daten. Im a35ind.job kommt die Variable VurS an als #urS. Genauso funktioniert es bei jedem Job, und es können auch mehrere solche Variablen übergeben werden. Auch $-Variablen kann man übergeben, und zwar wird aus &Dabc die Variable $abc. (V statt # und D statt $ sind notwendig, weil man die Zeichen # und $ in solchen Aufrufen nicht verwenden kann.) 5.1 Registerwechsel Wählt man über die Combo-Box ein anderes Register, so wird aus der gerade angezeigten Registerliste die erste Zeile genommen und damit das Skript a35ind.job wieder gestartet, also z.B. mit &VurS=TIT text. 6. Anzeige des Datensatzes / der Ergebnismenge nach Auswahl (Doppelklick oder Enter) einer Zeile des Registers. Es kommt darauf an, ob zur Registerzeile ein einzelner Treffer gehört oder mehrere. Aufgerufen wird dann das die JavaScript-Funktion reqLoad(satznummer) bei Einzeltreffer bzw. reqRes(suchbefehl) bei mehr als einem, und diese aktiviert den Job a35get.job mit VuRN=inum // Indexzeile mit Anzahl 1 bzw. a35erg.job mit VurF=reg text // Indexzeile mit mehr als 1 wobei reg der logische Registername ist bzw. der gewählte Funktionsname der Anwendung. 7a) Satzanzeige Das Skript a35get.job erhält den Wert #uRN und liefert den zugehörigen Satz, und zwar in zweifacher Ausführung, Intern und Extern. Dies geschieht, indem das Skript die Daten mit zwei verschiedenen Labels davor liefert: _!_INT bzw. _!_EXT. Die darauf folgenden Texte kommen in die Tab-Felder "Intern" bzw. "Extern". Standardmäßig verwendet das Skript dafür die Exportparameter e-unihtm.apr bzw. d-khtm.apr (mit d-k.apt). Aber man kann im a35get.job den Export auch ohne Parameter machen, einfach mit write-Befehlen. 7b) Ergebnismengenanzeige Das Skript a35erg.job liefert die Kurzliste zu der mit dem Befehl f regname text gebildeten Ergebnismenge, also z.B. f PER shakespeare, william. Das Skript liefert die Ergebnisliste so aus: _!_ERG Kurzlistentext Die Gestaltung der Kurzliste ist im Skript a35erg.job variierbar. 8) Wahl einer Zeile aus der Kurzliste Hinter den Kurzzeilen stecken Aufrufe von a35get.job mit der internen Nummer des betr. Satzes., jeweils mit &VurN=interneNr als Argument, ganz wie in 7a). Wichtiger Tip zum Testen: Was die Skripte genau liefern, kann man studieren, indem man sie manuell aufruft, z.B. so: .../demo/ajax4.php?JOB=a35erg&VurI=PER shakespeare, william oder .../demo/ajax4.php?JOB=a35get&VurN=256 Man sieht dann den Ergebnistext, so wie er bei a35 ankommt. Ein Blick in den Quelltext, und man sieht alle Einzelheiten. Das Skript ajax4.php sendet jeden Job zusammen mit dessen Argumenten an avanti und nimmt die Ergebnisse entgegen, um sie an den Browser weiterzureichen. Im Browser ist es die Funktion receivE(), die für das Einordnen der Inhalte in die verschiedenen Bereiche (Quadranten etc.) zuständig ist: Die Tabs Den größten Raum nehmen die 4 "Quadranten" bzw. bei Tablet und Smartphone wahlweise einschaltbaren "Tab"-Bereiche ein. Was darin erscheint, ist allein die Sache der Skripte, denn der Inhalt ist in keiner Weise festgelegt. Erwähnt wurden schon INT und EXT: Die Standard-Skripte liefern folgende Inhalte: (der dreibuchstabige interne Name wird nicht sichtbar) INT = Intern : Internformat-Anzeige (mit Kategorienummern) eines Datensatzes mit der Parameterdatei e-unihtm.apr EXT = Extern : Aufbereitete Anzeige desselben Datensatzes mit Parameterdatei d-khtm.apr Zwischen INT und EXT wird mit F5 umgeschaltet (wie in a99) INF = Info : Gedacht zur Anzeige beliebiger Textinformation (HTM-Format), die auch Hyperlinks enthalten kann ERG = Ergebnismenge : Zeigt die Kurztitelliste der aktuellen Ergebnismenge REG = Indexregister : zum Blättern in den alphabetischen Registern und Auswahl von Titeln zur Anzeige Wenn ein Skript z.B. mit _!_INF ... etwas in das Info-Tab schreibt, wird es in dem Quadranten bzw. unter dem Tab sichtbar gemacht, denn der Bereich ist markiert mit <div id="INF">. Im Tab "Intern" gibt es oben über dem Datensatz drei Funktionen, wenn man eingeloggt ist: Edit : ausgelöst wird damit presto.job Copy : desgl, aber mit uRN=0 Del : a35del.job aber zuerst wird zwecks Bestätigung gefragt: "Wirklich?" Das Menü (Datei a35-pc-menu.php bzw. a35-tab-menu.php) Im Hauptfenster von a35 befindet sich oben in der Mitte ein Menü. Dies ist nicht als definitiv und unveränderlich anzusehen, sondern im der genannten Datei leicht änder- und erweiterbar. Die ausgelieferte Menüdatei umfaßt z.B. diese Funktionen: (Tip: Mauszeiger drauf, dann sieht man, was dahintersteckt.) Suchen Bearbeiten
Die Menüdateien sind sehr übersichtlich. Hier ist der Punkt, wo es am einfachsten ist, eigene Funktionen einzubauen, denn man braucht dazu nichts in PHP oder JavaScript zu schreiben. Dazu gehören nur zwei Dinge: 1. Eine neue HTML-Zeile, die z.B. so aussieht: <li><a href="javascript:reqJob('jobname');">Eigene Funktion</a></li> 2. Eine Jobdatei namens jobname .job, in der die FLEX-Befehle für avanti stehen. Eine solche Zeile kann man überall einbauen, sie kann in jedem Bereich der Oberfläche erscheinen. Ein ganz einfaches Beispiel nach diesem Muster: Die Funktion soll heißen "Schlüssel des aktuellen Satzes anzeigen", und sie soll im Tab-Feld "INF" eben die Liste dieser Schlüssel anzeigen. (In a99 macht das F7.) So geht es: 1. In eine HTM-oder PHP-Datei diese Zeile einbauen, die den Job keys.job ausführt: <button type="button" onclick="javascript:reqJob('keys');">F7</button> Damit entsteht ein Button mit der Aufschrift F7, der die Anzeige der Schlüssel des aktuellen Satzes auslöst: 2. Eine Jobdatei namens keys.job anlegen (es gibt sie aber schon, nur mit mehr ), in der steht: var "#" #uRN find write "_!_INF Indexschlüssel zum Satz " i ":<br><pre>" write sk n "</pre>" Die Variable #uRN enthält die aktuelle Satznummer. Sie wird von ajax4.php automatisch diesem Job übergeben. Genauso erhält der Job die Variable #urI mit dem Suchbefehl, der die aktuelle Ergebnismenge bildet. Diese wird hier nicht benutzt, man hat sie aber in jedem solchermaßen eingebundenen Job zur Verfügung. Der keys.job holt also dann den Satz, schreibt hinter dem Label _!_INF dessen Schlüssel (sk), und a35 macht dann den Text im bereich INF sofort sichtbar. Man erkennt: Alles, was mit der avanti-Jobsprache gelöst werden kann, muß man nicht in a35 einbauen, sondern kann es auf die gezeigte Weise realisieren. Noch direkter geht es für den Kenner mit dem Kommando X jobname im Befehlsfeld: z.B. einfach X keys eingeben. Die Jobdatei jobname.job wird dann zuerst im Jobordner der Datenbank gesucht, und wenn sie dort nicht ist, im Ordner scripts/jobs.
Wenn die Inhalte, die gezeigt werden sollen, statisch sind, d.h. sie stehen in einer Textdatei, kann man diese Datei auch mit dem Befehl h dateiname herbeiholen. Die darin evtl. eingebetteten Labels mit _!_ werden auch hierbei entsprechend verarbeitet. Ausgefallenes Beispiel: h labels.txt Dann sieht man plötzlich in allen mit Labels versehenen Bereichen die Namen der Labels und kurze Erklärungen. Wie kann man a35 ausbauen und modifizieren? 1. Die PHP-Skripte modifizieren, neue Skripte oder Jobdateien erstellen und in eigene HTM-Seiten (Dateien wie a35menu.htm) einbinden. 2. Die Startdateien selbst verändern sowie die Skripte a35.js und ajax4.php. Damit hat man noch viel mehr Möglichkeiten an der Hand, weil man die Oberfläche in allen Aspekten verändern, aber auch ganz neue Elemente und Funktionen einbauen kann. |
||