Zum Inhalt springen

Flexforms mit verschachtelten Optionen

Erstellt am 7. Oktober 2009 · 2 Antworten · letzte Antwort am 8. Oktober 2009

Tags: FlexForms, Frage

ChristoferKoenig ·

Hallo Community,

mit folgender Flexform-Datei kann ich innerhalb unterschiedlicher Seiten Teilfunktionen einer Extension ausführen. Dazu nutze ich das Auswahlfeld viewOption (siehe Skript) welches mir drei Teilfunktionen zur Verfügung stellt (one, two, three). Zusätzlich muss ich noch mindestens die Seiten der beiden Teilfunktionen mit angeben, damit die Teilfunktionen auch untereinander aufrufbar sind. Dies habe ich mit zwei Page-Browsern (page_two, page_three) realisiert. Leider muss ich aber bei jeder Seite in der die Teilfunktionen als Plugin aufgerufen werden auch immer die Seiten aus dem Pagebrowser mit angeben. Das ist relativ sinnfrei. Daher stellt sich die Frage ob man das Ganze so einrichten kann, das man die beiden Page-Brouser nur dann sehen kann wenn im Auswahlfeld viewOption die erste Option (<numindex index="1">one</numindex>) ausgewählt wurde.
Wenn ja, wie geht das?

<?xml version="1.0" encoding="UTF-8"?>
<t3datastructure>
	<meta />
		<langdisable>1</langdisable>
		<langchildren>0</langchildren>
	</meta>
	<root>
	<type>array</type>
		<el>
			<viewoption>
				<tceforms>
				<label>LLL:EXT:extension_key/pi1/locallang.xml:pi1_flexform.viewOption</label>
				<config>
					<type>select</type>
					<items type="array">
						<numindex index="0" type="array">
							<numindex index="0">LLL:EXT:extension_key/pi1/locallang.xml:pi2_flexform.viewOption_one</numindex>
							<numindex index="1">one</numindex>
						</numindex>
						<numindex index="1" type="array">
							<numindex index="0">LLL:EXT:extension_key/pi1/locallang.xml:pi2_flexform.viewOption_two</numindex>
							<numindex index="1">two</numindex>
						</numindex>										
						<numindex index="2" type="array">
							<numindex index="0">LLL:EXT:extension_key/pi1/locallang.xml:pi2_flexform.viewOption_three</numindex>
							<numindex index="1">three</numindex>
						</numindex>	
					</items>
				</config>
				</tceforms>
			</viewoption>
			<page_two>
				<tceforms>
					<label>LLL:EXT:extension_key/pi1/locallang.xml:pi1_flexform.page_two</label>
					<config>
						<type>group</type>
						<internal_type>db</internal_type>
						<allowed>pages</allowed>
						<size>1</size>
						<minitems>1</minitems>
						<maxsize>1</maxsize>
						<show_thumbs>1</show_thumbs>
					</config>					
				</tceforms>
			</page_two>
			<page_three>
				<tceforms>
					<label>LLL:EXT:extension_key/pi1/locallang.xml:pi1_flexform.page_three</label>
					<config>
						<type>group</type>
						<internal_type>db</internal_type>
						<allowed>pages</allowed>
						<size>1</size>
						<minitems>1</minitems>
						<maxsize>1</maxsize>
						<show_thumbs>1</show_thumbs>
					</config>					
				</tceforms>
			</page_three>
		</el>
	</root>
</t3datastructure>

PS: ich könnte <minitems>1</minitems> gleich 0 setzten, damit braucht man sie nur einmal angeben oder auch nicht, es führt aber beim unbedarften Nutzer zu Irritationen darüber ob er sie angeben muss und wo.

Unbekannter Benutzer ·

Mal in der API nach mit dem Stichwort displayCond(ition) suchen, da müsstest du fündig werden.

Hab hier doch auch gerade ein Beispiel rumliegen:

<TCEforms>
         <label>LLL:EXT:lang/locallang_general.php:LGL.recursive</label>
		 <displayCond>FIELD:viewselect:=:docmanager</displayCond>
         <config>

Also wenn das Feld viewselect auf "docmanager" steht, wird dieses Feld angezeigt sonst nicht.

ChristoferKoenig ·

@Kitsunet, super das klappt schon mal super.

Leider verschwinden bzw. erscheinen die Felder erst nach dem speichern, wenn man also die Anpassungen macht und dann abspeichert und schließt bekommt man nicht mit das sich was geändert hat. Sinnvoll wäre das man das selectfeld mit dem Javascript-attribut "onchange" versieht damit man via Java-Script eine Meldung bekommt wenn sich das Formular ändert. Also das das Ganze so funktioniert wie beim Ändern des Seiteninhaltselementes wo man die Meldung:

"Diese Änderung beeinflusst die zur Verfügung stehenden Eingabefelder.
Die Änderungen speichern und die Anzeige aktualisieren?"

bekommt. Kann man das dort auch einbauen?

Update

Dazu hat das forum hier schon eine Antwort. Zu finden hier.