[Allegro] ... in der Tiefe des FreiRaumes
Bernhard Eversberg
ev at biblio.tu-bs.de
Mi Jul 14 09:08:03 CEST 2010
Texte erscheinen in der Tiefe des FreiRaumes
Mit einfachen Mitteln wurde die Flexibilität des Konstrukts "FreiRaum"
nochmals erhöht.
Dies ist nur der erste Teil, daher heute noch keine Bereitstellung.
Der zweite Teil wird noch viel spektakulärer.
Folgende Situation: Man hat sich einen schönen, umfänglichen Inhalt im
FreiRaum zurechtgelegt. Mit vielen Eingabefeldern und anderen
Dialogelementen.
Nun soll ein Job, z.B. ausgelöst durch einen Button, einen oder mehr
Texte innerhalb des FreiRaums ersetzen, ohne daß man den gesamten Raum
neu aufbauen müßte - u.U. wäre das mühsam, wenn der Nutzer schon was
drin geändert hat!
Das wäre also eine AJAX-Technik innerhalb des FreiRaums. Aus einem Job
heraus kann man mit dem Label _!_FRE bisher ja nur den Raum als Ganzes
neu aufbauen, denn sobald dieses Label kommt, wird er erst einmal
leergemacht. Nun aber will man gezielt in der Tiefe des FreiRaums
etwas ändern - so wie man mit AJAX etwas mitten in einer HTML-Seite
modifizieren kann, ohne sie als Ganzes neu zu laden.
Wie geht das?
Den Inhalt eines bestimmten Elements austauschen, das geht nur, wenn das
Element einen Namen hat, mit dem man es ansprechen kann.
Die Inputfelder haben schon einen, z.B. V20 oder Vuxy.
Die Textfelder haben keinen, dafür muß also ein neuer Befehl her.
Ein Beispiel zeigt, wie's geht:
TE Füllen Sie bitte alles aus!|300
NA hinweis
Dies macht man natürlich schon bei der Einrichtung des FreiRaums, wo
nun also die NA-Zeile zu ergänzen ist: das Textfeld kriegt damit
den Namen "hinweis".
Neu kommt hier noch hinzu, daß man im TE-Feld auch eine Höhe angeben
kann:
TE ... text ...|laenge|hoehe
Bisher ging nur die laenge. Eine Angabe hoehe macht das Feld zu einem
mehrzeiligen. So ist es ja auch beim Inputfeld IN. Damit könnte man
nun recht große Textfelder machen, die ordentlich was aufnehmen können.
Eine einzelne Zeile hat etwa eine hoehe von 40 Pixeln.
Wenn nun in einem späteren Job Änderungen anstehen, sendet man im
Datenstrom erst einmal:
_!_FRE +
Das bedeutet: nun kommen Änderungen für den FreiRaum. Ohne das + würde
dieser erst einmal leergemacht, so aber bleibt alles erhalten.
Es kann sich auch um neue Elemente handeln! Die werden ganz genau
wie sonst angegeben, dann aber unmittelbar angehängt im Anschluß
an die schon vorhandenen Sachen - wie von Geisterhand. Sollen die neuen
Dinge auf neuer "Zeile" beginnen, dann zuerst die Zeile
--
einstreuen, den Zeilenvorschub-Befehl des FreiRaums.
(Die Höhe einer FreiRaum-"Zeile" ist die ihres höchsten Elements.)
Soll nun das Textfeld "hinweis" mit neuem Inhalt gefüllt werden, dann
braucht im Datenstrom nur z.B. zu stehen:
hinweis=<b>Es fehlt noch das Feld Telefonnummer</b>
Genauso wäre es mit einem Inputfeld: statt "hinweis" stünde der mit
V beginnende Feldname. Man vermeide als Feldnamen nur die zweistelligen
FreiRaumcodes,
In jedem Fall, auch bei den Inputfeldern, kann man HTML-Formatierungen
einsetzen. Der Text hinter = muß als einzige lange Zeile angegeben
sein, Zeilenbrüche durch <br> markiert. Die Zeilenlänge ist nicht durch
die optische Größe des Elements begrenzt. Ist es ein mehrzeiliges Feld,
erhält es automatisch bei Platzmangel einen Scrollbalken.
Wenn ein Feld des angegebenen Namens fehlt, passiert nichts.
Und noch was: Unsichtbare Variablen!
In HTML-Formularen ist die Möglichkeit nützlich, ja unverzichtbar, daß
darin Daten eingebettet sind, die der Nutzer nicht sieht, die beim
Rücksenden aber mit zurückgeliefert werden. Für den FreiRaum geht das
nun so:
UV Vnnn|Text
Davon ist dann nichts zu sehen, aber im Job, der am Ende aufgerufen
wird, kommt #nnn Text an. Das kann eine Kategorie oder eine #u-
Variable sein., z.B. V20 oder Vuxy wird zu #20 und #uxy
.
Die aktuelle Satznummer und der Zeitstempel des Satzes (z.B. aus #99e)
werden stets automatisch als unsichtbare Variablen gehalten, dafür
braucht man nichts zu tun. Sie kommen im Job an als #urN und #ueD.
Verwertet werden sie in a30put.php beim Speichern eines Satzes.
Mehr Informationen über die Mailingliste Allegro