Quantcast
Channel: Komponenten - time4joomla
Viewing all articles
Browse latest Browse all 11

SEBLOD: Abhängigkeiten mit mehreren Zuständen

$
0
0

Es gibt in den Inhaltstypen und Forms die Möglichkeit Felder in Abhängigkeiten zu vorhergehenden Feldern zu setzen. Dazu muss die Nummer 5 im Admin- oder Seitenformular an der Seite angeklickt werden und danach bei dem Feld, dass in Abhängigkeit gesetzt werden soll, auf Hinzufügen in der ersten Spalte ("Abhängige Stati") geklickt werden. Nachdem dort etwas eingestellt wurde, steht dort <Bearbeiten />. Wenn nur eine Bedingung dort eingegeben werden soll, ist das ganze meist recht einfach. Schwieriger wird es, wenn mehrere Abhängigkeiten definiert werden sollen. Davon handelt dieses Tutorial.

Abhängigkeiten in Seblod einstellen

 

Zum testen habe ich zwei Felder angelegt. Zuerst ein einfaches Auswahlfeld mit einigen Obstorten und ein einfaches Textfeld, das ich inhaltlich in Abhängigkeit zur Auswahl setze.

 

Einfaches Auswahlfeld

 

Nachdem rechts die Nummer 5 ausgwählt wurde und auf Hinzufügen geklickt wurde, erscheint ein Fenster in der die "Abhängige Stati" eingegeben werden muss.

Links steht, was passieren soll ("Stati"), wenn das Ereignis rechts zutrifft ("Auslöser"). Ganz unten findet sich eine kleine Hilfe zu den Einstellmöglichkeiten.

In unserem Fall ist das zunächst sehr einfach:

Dieses Feld ist ausgefüllt Apfel #form# X WENN Auswahlfeld ist gleich / enthällt Apfel

Das große "X" steht für die aktivierte Checkbox
Diese Zeile wiederholen wir jeweils für Zitrone, Mandarine und Birne - sofern Sie meinem Beispiel folgen. Wichtig ist, dass Sie das jeweils in einen eigenen Block schreiben. Also jeweils oben rechts auf das grüne Plus klicken.

Wenn Sie nun einen neuen Beitrag aufrufen und im Adminformular die Abhängigkeiten überprüfen, werden Sie feststellen, dass nicht das gewünschte Ergebniss auftritt. Das liegt daran, dass die Checkboxen vermutlich in jedem Block aktiviert sind. Die darf aber nur im ersten Block aktiviert sein und muss in den anderen Blöcken ausgeschaltet sein. Dann wird bei einem neuen Beitrag bei Auswahl "Apfel" auch der "Apfel" ausgegeben, ebenso wie passend bei den anderen Obstsorten.

 

Stati und Auslöser

 

Erklärung der Checkbox

Es wird zunächst abgeprüft, ob der Wert "Apfel" ausgwählt wurde. Wenn ja, soll der auch in das Feld geschrieben werden. Wenn nein, soll nichts eingetragen werden. Dieses "nichts" regelt die Checkbox. Ist die deaktiviert, dann wird niemals der "Apfel" gelöscht werden.

Wenn Sie alle Checkboxen deaktivieren, werden zwar alle Auswahlen richtig eingetragen - also bei Auswahl "Zitrone", wird auch die "Zitrone" ausgegeben und bei der "Mandarine" wird diese auch ordnungsgemäß ausgegeben, aber wenn Sie den Satz "Wählen Sie das Obst" oder den Standardsatzt "Select..:" anklicken, dann wird immer der zuletzt ausgwählte Wert stehen bleiben. Erst wenn Sie im ersten Block wieder die Checkbox aktivieren, wird das Ausgabefeld auch ordnungsgemäß gelöscht.

Setzen Sie hingegen überall einen Haken, aktivieren also jede Checkbox, dann wird nur das letzte Obst - bei mir die Mandarine - angezeigt. Bei allem anderen bleibt die Auswahl leer.

Das liegt daran, dass immer der ganze Block abgearbeitet wird. Also alle vier Zustände abgefragt werden und nicht nur der eine, der zutrifft.

In meinem Beispiel passiert folgendes:

  1. Überprüfe zunächst ob die "Apfel" ausgwählt wurde. Wenn nein, dann
  2. ... gebe nichts aus.
  3. Nun überprüfe auf "Birne". Wenn die auch nicht, dann
  4. überprüfe nochmal auf "Apfel" und
  5. gebe nichts aus, wenn "der immer noch nicht zutrifft
  6. Überprüfe nun auf "Zitrone". Wenn keine "Zitrone" verfahre wie ab Punkt 5
  7. Überprüfe zu guter Letzt auf "Mandarine" und falls die nicht ausgwählt wurde, verfahre wie ab Punkt 6.

Wird aber die erste Checkbox nicht gesetzt, passiert in etwa dieses hier:

  1. Überprüfe zunächst ob der "Apfel" ausgwählt wurde. Wenn nein, dann
  2. überprüfe auf "Birne". Wenn die auch nicht, dann
  3. überprüfe auf "Zitrone". Wenn die auch nicht, dann
  4. überprüfe auf "Mandarine".

Dadurch das nichts nach hinten abgeprüft wird, bleibt am Ende die letzte Auswahl zwar stehen, aber bei anschließender "keiner Auswahl" eben auch.

Je nach gewünschten Effekt, kann nun hier bewusst mit dem Setzen der Checkboxen gearbeitet werden.

 

Die Checkbox sorgt also dafür, dass zurück geprüft wird. Würde aber im zweiten Block auch (oder ausschließlich) die Checkbox aktiviert sein, dann ist an der Stelle auch Schluß - Keine "Birne", dann zeig nichts an. Der "Apfel" wird jetzt nicht mehr berücksichtigt.Wohingegen "Zitrone" und "Mandarine" auch weiter berücksichtigt werden. Es werden stets alle vier Zustände bei jeder Auswahl abgeprüft und dieser in der angegebenen Reihenfolge. Somit ist die zuletzt gesetzte Checkbox ausschlaggebend. Alle anderen Abfragen davor werden nicht mehr berücksichtigt, da die letzte Checkbox für das "Löschen" der Werte zuständig ist.

Im übertragenden Sinne, könnte man auch sagen, dass die erste Checkbox den ganzen Block an Überprüfungen, die dazu gehören, einleitet.

 

Ist etwas schwer zu erklären, aber ich hoffe dennoch, etwas Licht ins Dunkel bringen zu können...


Viewing all articles
Browse latest Browse all 11