UB BRAUNSCHWEIG
Symbolfoto
  • Impressum
  • Startseite
  • allegro-C von A-Z
  • Druckversion


a30 - Plattformunabhängiges Programm zur Nutzung von allegro-Datenbanken im Netz auf der Basis des Systems "Adobe Flex"


Anhang 5: Formulartechnik  [nicht mehr empfohlen]

Die hier beschriebene Technik ist im Grunde schon veraltet. Die neuere, einfachere FreiRaum-Technik (ab April 2010) kann alle Aufgaben übernehmen, die mit dem FOR-Tab möglich sind, und darüber hinaus noch viel mehr.

Der Button FORM, unten im INT-Tab sichtbar, startet den Job  a30for.job. Dieser untersucht den aktuellen Satz und ordnet ihm das passende Formular aus der Datei a30for.xml zu, z.B. das mit dem Namen "Buch". Der Job sendet dann an a30 das Label  _!_FOR Buch, und darauf folgend zeilenweise den Inhalt des Satzes mit Kategorienummern, jeweils V statt #.
a30 sucht die zum Formular Buch passenden Felder selber heraus und präsentiert das damit gefüllte Formular.
Der Job a30for.job sendet z.B. folgendes:

_!_REC 13 _!_ACC 3_!_FOR Buch
V20 Shakespeare inmitten der Revolutionen
V42 Metscher, Thomas
...
Dann weiß a30: Es handelt sich um den Satz 13, Berechtigung ist 3 (sonst werden die Buttons inaktiviert), und es soll das Formular "Buch" geöffnet und die Felder V20 und V42 mit den Daten bestückt werden.
Sonderfall: Wenn "***" als Inhalt gegeben ist, wird das Feld als Paßwortfeld behandelt, d.h. man sieht beim Eingeben nur * statt Buchstaben, z.B.:
_!_REC 13 _!_ACC 3_!_FOR Identifikation
*VuPW ***
Das Formular "Identifikation" hat ein Feld mit Namen *VuPW, und dieses soll als Paßwortfeld gelten.

In der Datei  a30for.xml, die mit auf dem Skriptverzeichnis der Datenbank liegen muß, kann man eine größere Zahl (wieviele ist noch nicht bekannt) von Formularen definieren.  a30 lädt die gesamte Datei schon beim Start.
So sieht  a30for.xml  aus:
<forms>
  <form id="1" label="Buch">
    <item type="textinput" name="V20" label="Buch- oder Zs. Titel" />
    <item type="textinput" name="V40" label="Verfasser" />
    <item type="textinput" name="V41" label="Hrsg." />
    <item type="textinput" name="V74" label="Ort" />
    <item type="textinput" name="V76" label="Jahr" />
    <item type="textinput" name="V75" label="Verlag" />
    <item type="textinput" name="V77" label="Umfang" />
    <item type="textinput" name="V31" label="Schlagw." />
    <item type="textinput" name="V85" label="Serie" />
    <item type="textinput" name="V90" label="Signatur" />
    <item type="textinput" name="V91" label="Zg.-Nr." />
    <item type="textarea" name="V81" label="Anmerkungen" />
    <item type="textarea" name="V98" label="Abstract" />
  </form>
  <form id="2" label="Zusatzdaten" action="0">
    <item type="textinput" name="V41" label="Hrsg." />
    <item type="textinput" name="V85" label="Serie" />
  </form>
  <form id="3" label="Identifikation" action="a30id" but1="Senden">
    <item type="textinput" name="VuNA" label="Name" />
    <item type="textinput" name="*VuPW" label="Paßwort" />
  </form>
...
</forms>

Nur eines dieser Formulare wird jeweils sichtbar, gesteuert von dem Label  _!_FOR, das vom Job geliefert wurde.
Unter dem Formular stehen dann zwei Buttons: "Speichern" und "Neusatz" - die Bedeutung wird als ToolTip angezeigt.
Man sieht, daß es zwei Typen von Eingabefeldern gibt: textinput (einzeilig) und textarea (mehrzeilig). Jedem ist eine Kategorienummer zugeordnet:  
name="V20" bedeutet, daß die Eingabe in #20 landen soll.
Sonderfall: Steht vor dem Feldnamen ein *, so wird sein Inhalt vor dem Absenden verschlüsselt, d.h. der zum Formular gehörige Job empfängt in dem Feld #uPW den verschlüsselten Eingabetext (s.a. oben). Die Verschlüsselung ist irreversibel, deshalb nur für Paßwortprozeduren brauchbar.

Der oben zu sehende Formulartyp ist ein Erfassungs- und Bearbeitungsformular.

Daneben gibt es einen anderen Typ: Das Vorgangsformular. Damit kann man den Nutzer zu einer Eingabe auffordern und dann diese Eingabe an einen beliebigen Job schicken.
So ein Formular sieht so aus:
  <form id="10" label="Neue Daten ab JJJJMMTT" action="a30dab" but1="Los!">
    <item type="textinput" name="VuND" label="Datum " >
    </item>
  </form>
Es gibt hier zwei zusätzliche Attribute im <form>-Tag:  action  und  but1. Sind diese gesetzt, gibt es einen Button mit der Aufschrift, die bei but1 angegeben ist, der zweite Button ("Neusatz") fällt weg. Bei Druck auf den Button wird der Job ausgeführt, dessen Name in  action  steht, hier also a30dab.job. Diesem Job werden die Variablen übergeben, die im Formular definiert sind, hier also nur #unD, ferner aber automatisch #unR mit der aktuellen Satznummer (des zuletzt abgerufenen Satzes) und #urS (Name der momentanen Ergebnismenge).
Aktivieren kann man das Formular z.B. aus einem Menü heraus. Beispiel siehe in  a30men.htm:

<a href="event:_!!_FOR Neu\nVuND 20091001">Neue Daten ab JJJJMMTT</a>

Hinter FOR steht der Formularname, wobei jede eindeutige Verkürzung funktioniert (hier "Neu" statt "Neue Daten").
Hier sieht man auch, wie der Inhalt eines Eingabefeldes vorbelegt werden kann. Hier ist _!!_ statt _!_ angegeben, sonst würde die Anzeige der Datei  a30men.htm  nicht funktionieren!
Eine andere Möglichkeit ist, daß ein Job an a30 diese Anweisung schickt, woraufhin das Formular aufgehen soll:

wri "_!_FOR Neue" n "VunD " #dts(0,8)

Die Formulartechnik hat jedoch ihre Grenzen, z.B. kann man (noch) keine Combo-Boxen oder Radiobuttons oder Checkboxes in ein Formular einbauen. Wer eine diffizile Formulargestaltung will, kann jedoch die "autoform"-Technik nutzen, die es in PHPAC schon länger gibt: Man gestaltet damit das Formular in HTML, wobei man alle Freiheitsgrade nutzen kann, und läßt ein Fenster mit diesem Formular mit JavaScript aus a30 heraus zur Anzeige bringen (siehe Anhang 3.2).
Sonderfall: Vor das V ein * setzen, dann wird beim Absenden des Formulars das betr. Feld codiert übermittelt. Wichtig für die Authentifizierungs-Methodik. Siehe  a30for.xml  bei der DemoBank.

ein Kapitel zurück zurück zum Inhaltsverzeichnis ein Kapitel vor

 



[i] zuletzt aktualisiert: 03.05.2011
Email: ub@tu-bs.de