<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.47.71.42</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.47.71.42"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/91.47.71.42"/>
	<updated>2026-05-06T19:47:09Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Zone30&amp;diff=1291</id>
		<title>Zone30</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Zone30&amp;diff=1291"/>
		<updated>2008-02-14T21:26:27Z</updated>

		<summary type="html">&lt;p&gt;91.47.71.42: /* Presse- und Öffentlichkeitsarbeit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;quot;Easy Going&amp;quot; Songs für den 1. September ==&lt;br /&gt;
Chasing Cars (Snow Patrol)&lt;br /&gt;
&lt;br /&gt;
Wherever you will go (The Calling) - Tab: http://www.guitaretab.com/t/the-calling/22311.html &lt;br /&gt;
&lt;br /&gt;
Reamonn - Tonight http://www.e-chords.com/guitartab.asp?idmusica=99301&amp;amp;keyb=true&lt;br /&gt;
&lt;br /&gt;
** Everything - Bouble http://www.911tabs.com/link/?4326553&lt;br /&gt;
&lt;br /&gt;
** Wenn jetzt Sommer wär (Pohlmann)&lt;br /&gt;
&lt;br /&gt;
Baby Love (Mothers Finest)&lt;br /&gt;
&lt;br /&gt;
Black Horse and the Cherry Tree (KT Tunstall)&lt;br /&gt;
&lt;br /&gt;
Mother Mother (Tracy Bonham)&lt;br /&gt;
&lt;br /&gt;
** Symphonie (Silbermond)&lt;br /&gt;
&lt;br /&gt;
Nutbush City Limits (Ike&amp;amp;Tina Turner)&lt;br /&gt;
&lt;br /&gt;
** Ich fühl wie Du (Peter Maffay)&lt;br /&gt;
&lt;br /&gt;
** Kiss me (Sixpence non the richer)&lt;br /&gt;
&lt;br /&gt;
Freedom (Georgy Michael)&lt;br /&gt;
&lt;br /&gt;
** Vincent (Don McLean)&lt;br /&gt;
&lt;br /&gt;
Das Beste (Silbermond)&lt;br /&gt;
&lt;br /&gt;
** Your body is a wonderland (John Mayer)&lt;br /&gt;
&lt;br /&gt;
Kiss (Prince)&lt;br /&gt;
&lt;br /&gt;
** Beautyful Soul (Jessie McCartney)&lt;br /&gt;
&lt;br /&gt;
Proud Mary (Ike&amp;amp;Tina Turner)&lt;br /&gt;
&lt;br /&gt;
La camis negra (Juanes)&lt;br /&gt;
&lt;br /&gt;
** We say goodbye (Sascha)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das war´s was ich bisher gesammelt habe, weiter unten stehen noch Songs in der Vorschlags/Wunschliste, vielleicht ist da ja auch noch was dabei, was schnell realisierbar ist.&lt;br /&gt;
&lt;br /&gt;
== Setlisten ==&lt;br /&gt;
gibts hier: [[Zone30 - Setlisten]]&lt;br /&gt;
&lt;br /&gt;
== Was braucht Zone30: ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Percussion&amp;#039;&amp;#039;&amp;#039;: Udu, Cowbell, Kabasa, Darbouka, Besen(Cajon), Ständer für Schellenring, Splash-Becken, Triangel, Boom-Wacker, Koffer/Kiste für Percussion-Sachen&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anlage&amp;#039;&amp;#039;&amp;#039;: Mikrofonierung für Percussion, Monitor, komplette Verkabelung für Anlage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dekoration&amp;#039;&amp;#039;&amp;#039;: Banner (wie gestalten?) Guckst Du: www.banner-channel.de&lt;br /&gt;
&lt;br /&gt;
== Buchungen, Urlaub ==&lt;br /&gt;
Zone30 Gigs, Vorbuchungen etc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2008&lt;br /&gt;
&lt;br /&gt;
Sa 15.3. - KO (VORGEBUCHT)&lt;br /&gt;
Sa 5.4. - Zone30 Böblingen Polarnacht (VORGEBUCHT)&lt;br /&gt;
Sa 24.5.- Zone30 Burkhölzle (VORGEBUCHT)&lt;br /&gt;
Sa 31.5. KO 30 Jähriges&lt;br /&gt;
Sa 26.7 - Zone30 Geburtstag (VORGEBUCHT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Noch ohne Termine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;November Kulturverein DeSi (Degerschlacht-Sickenhausen)&amp;lt;/s&amp;gt;&lt;br /&gt;
Benefiz Konzert Terre de Femmes (Nepomuk) - Anfrage von Akustika Jahreswechsel 07 / 08&lt;br /&gt;
Kohla Konzert allein, mit Gastsängern (Karaoke)?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Termine Jochen:&lt;br /&gt;
14.02. kein Ausweichtermin mögl.&lt;br /&gt;
21.02. kein Ausweichtermin mögl.&lt;br /&gt;
KW19 5 - 11.5. Sensor Messe Nbg.&lt;br /&gt;
KW41-43 6. - 25.10. China/Philipinen &lt;br /&gt;
KW46 10. - 16.11. Electronica München&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Songideen / Wunschliste ==&lt;br /&gt;
Freedom - George Michael&lt;br /&gt;
&lt;br /&gt;
Barenaked - Jennifer Love Hewitt&lt;br /&gt;
&lt;br /&gt;
Promise you and me - Reamonn&lt;br /&gt;
&lt;br /&gt;
Ironic - Alanis M.&lt;br /&gt;
&lt;br /&gt;
Nobody´s wife - Anouk&lt;br /&gt;
&lt;br /&gt;
Walk away - Kelly Klarkson&lt;br /&gt;
&lt;br /&gt;
Stone Sour - Through glas&lt;br /&gt;
&lt;br /&gt;
The Kooks - She moves in her own way&lt;br /&gt;
&lt;br /&gt;
Hard to Handle - Black Crowes u.a.&lt;br /&gt;
&lt;br /&gt;
Walk on the Wild Side - Lou Reed&lt;br /&gt;
&lt;br /&gt;
Kiss me - Six Pence None The Richer&lt;br /&gt;
&lt;br /&gt;
Killing in the Name of... - Rage Against the Machine&lt;br /&gt;
&lt;br /&gt;
Black in Black - ACDC&lt;br /&gt;
&lt;br /&gt;
Think - Aretha Franklin&lt;br /&gt;
&lt;br /&gt;
Dancing on the ceiling - Lionel Richie&lt;br /&gt;
&lt;br /&gt;
Im Ernst? dann lieber Brick House von Commodores (da war Herr Richie noch jung und fetzig)&lt;br /&gt;
OK, wie wär´s dann mit &amp;quot;I heard it through the grapevine&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Cowboys and Kisses - Anastacia&lt;br /&gt;
&lt;br /&gt;
== Songs und Abläufe und aktuelles Set==&lt;br /&gt;
[[Zone30 - Set]]&lt;br /&gt;
&lt;br /&gt;
== HILFE ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wie ändert man Texte?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten klicken (oben in der Seite oder am entsprechenden Abschnitt) und ändern...&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wie legt man neue Seiten an?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Irgendwo hier in der Seite den Text wie die Seite heißt reinschreiben(wie oben beschrieben) z.B. &amp;quot;mein neues Superlied&amp;quot;, den Text dann markieren und den Button interner Link klicken. Wenn es die Seite noch nicht gibt, kann man die Seite neu anlegen wenn man das erste mal den Link klickt. Zum&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mehr Hilfe:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
http://wiki.zone30.info/wikizone/index.php/Wikizone:Editierhilfe&lt;br /&gt;
&lt;br /&gt;
== Presse- und Öffentlichkeitsarbeit ==&lt;br /&gt;
http://www.tagblatt.de/soundcheck/Terminkalender&lt;br /&gt;
&lt;br /&gt;
swr veranstungstipps&lt;br /&gt;
&lt;br /&gt;
radioton&lt;br /&gt;
&lt;br /&gt;
rtf&lt;br /&gt;
&lt;br /&gt;
radio achalm&lt;br /&gt;
&lt;br /&gt;
Gea&lt;/div&gt;</summary>
		<author><name>91.47.71.42</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Zone30&amp;diff=1290</id>
		<title>Zone30</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Zone30&amp;diff=1290"/>
		<updated>2008-02-14T21:25:54Z</updated>

		<summary type="html">&lt;p&gt;91.47.71.42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;quot;Easy Going&amp;quot; Songs für den 1. September ==&lt;br /&gt;
Chasing Cars (Snow Patrol)&lt;br /&gt;
&lt;br /&gt;
Wherever you will go (The Calling) - Tab: http://www.guitaretab.com/t/the-calling/22311.html &lt;br /&gt;
&lt;br /&gt;
Reamonn - Tonight http://www.e-chords.com/guitartab.asp?idmusica=99301&amp;amp;keyb=true&lt;br /&gt;
&lt;br /&gt;
** Everything - Bouble http://www.911tabs.com/link/?4326553&lt;br /&gt;
&lt;br /&gt;
** Wenn jetzt Sommer wär (Pohlmann)&lt;br /&gt;
&lt;br /&gt;
Baby Love (Mothers Finest)&lt;br /&gt;
&lt;br /&gt;
Black Horse and the Cherry Tree (KT Tunstall)&lt;br /&gt;
&lt;br /&gt;
Mother Mother (Tracy Bonham)&lt;br /&gt;
&lt;br /&gt;
** Symphonie (Silbermond)&lt;br /&gt;
&lt;br /&gt;
Nutbush City Limits (Ike&amp;amp;Tina Turner)&lt;br /&gt;
&lt;br /&gt;
** Ich fühl wie Du (Peter Maffay)&lt;br /&gt;
&lt;br /&gt;
** Kiss me (Sixpence non the richer)&lt;br /&gt;
&lt;br /&gt;
Freedom (Georgy Michael)&lt;br /&gt;
&lt;br /&gt;
** Vincent (Don McLean)&lt;br /&gt;
&lt;br /&gt;
Das Beste (Silbermond)&lt;br /&gt;
&lt;br /&gt;
** Your body is a wonderland (John Mayer)&lt;br /&gt;
&lt;br /&gt;
Kiss (Prince)&lt;br /&gt;
&lt;br /&gt;
** Beautyful Soul (Jessie McCartney)&lt;br /&gt;
&lt;br /&gt;
Proud Mary (Ike&amp;amp;Tina Turner)&lt;br /&gt;
&lt;br /&gt;
La camis negra (Juanes)&lt;br /&gt;
&lt;br /&gt;
** We say goodbye (Sascha)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das war´s was ich bisher gesammelt habe, weiter unten stehen noch Songs in der Vorschlags/Wunschliste, vielleicht ist da ja auch noch was dabei, was schnell realisierbar ist.&lt;br /&gt;
&lt;br /&gt;
== Setlisten ==&lt;br /&gt;
gibts hier: [[Zone30 - Setlisten]]&lt;br /&gt;
&lt;br /&gt;
== Was braucht Zone30: ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Percussion&amp;#039;&amp;#039;&amp;#039;: Udu, Cowbell, Kabasa, Darbouka, Besen(Cajon), Ständer für Schellenring, Splash-Becken, Triangel, Boom-Wacker, Koffer/Kiste für Percussion-Sachen&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anlage&amp;#039;&amp;#039;&amp;#039;: Mikrofonierung für Percussion, Monitor, komplette Verkabelung für Anlage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dekoration&amp;#039;&amp;#039;&amp;#039;: Banner (wie gestalten?) Guckst Du: www.banner-channel.de&lt;br /&gt;
&lt;br /&gt;
== Buchungen, Urlaub ==&lt;br /&gt;
Zone30 Gigs, Vorbuchungen etc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2008&lt;br /&gt;
&lt;br /&gt;
Sa 15.3. - KO (VORGEBUCHT)&lt;br /&gt;
Sa 5.4. - Zone30 Böblingen Polarnacht (VORGEBUCHT)&lt;br /&gt;
Sa 24.5.- Zone30 Burkhölzle (VORGEBUCHT)&lt;br /&gt;
Sa 31.5. KO 30 Jähriges&lt;br /&gt;
Sa 26.7 - Zone30 Geburtstag (VORGEBUCHT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Noch ohne Termine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;November Kulturverein DeSi (Degerschlacht-Sickenhausen)&amp;lt;/s&amp;gt;&lt;br /&gt;
Benefiz Konzert Terre de Femmes (Nepomuk) - Anfrage von Akustika Jahreswechsel 07 / 08&lt;br /&gt;
Kohla Konzert allein, mit Gastsängern (Karaoke)?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Termine Jochen:&lt;br /&gt;
14.02. kein Ausweichtermin mögl.&lt;br /&gt;
21.02. kein Ausweichtermin mögl.&lt;br /&gt;
KW19 5 - 11.5. Sensor Messe Nbg.&lt;br /&gt;
KW41-43 6. - 25.10. China/Philipinen &lt;br /&gt;
KW46 10. - 16.11. Electronica München&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Songideen / Wunschliste ==&lt;br /&gt;
Freedom - George Michael&lt;br /&gt;
&lt;br /&gt;
Barenaked - Jennifer Love Hewitt&lt;br /&gt;
&lt;br /&gt;
Promise you and me - Reamonn&lt;br /&gt;
&lt;br /&gt;
Ironic - Alanis M.&lt;br /&gt;
&lt;br /&gt;
Nobody´s wife - Anouk&lt;br /&gt;
&lt;br /&gt;
Walk away - Kelly Klarkson&lt;br /&gt;
&lt;br /&gt;
Stone Sour - Through glas&lt;br /&gt;
&lt;br /&gt;
The Kooks - She moves in her own way&lt;br /&gt;
&lt;br /&gt;
Hard to Handle - Black Crowes u.a.&lt;br /&gt;
&lt;br /&gt;
Walk on the Wild Side - Lou Reed&lt;br /&gt;
&lt;br /&gt;
Kiss me - Six Pence None The Richer&lt;br /&gt;
&lt;br /&gt;
Killing in the Name of... - Rage Against the Machine&lt;br /&gt;
&lt;br /&gt;
Black in Black - ACDC&lt;br /&gt;
&lt;br /&gt;
Think - Aretha Franklin&lt;br /&gt;
&lt;br /&gt;
Dancing on the ceiling - Lionel Richie&lt;br /&gt;
&lt;br /&gt;
Im Ernst? dann lieber Brick House von Commodores (da war Herr Richie noch jung und fetzig)&lt;br /&gt;
OK, wie wär´s dann mit &amp;quot;I heard it through the grapevine&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Cowboys and Kisses - Anastacia&lt;br /&gt;
&lt;br /&gt;
== Songs und Abläufe und aktuelles Set==&lt;br /&gt;
[[Zone30 - Set]]&lt;br /&gt;
&lt;br /&gt;
== HILFE ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wie ändert man Texte?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten klicken (oben in der Seite oder am entsprechenden Abschnitt) und ändern...&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wie legt man neue Seiten an?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Irgendwo hier in der Seite den Text wie die Seite heißt reinschreiben(wie oben beschrieben) z.B. &amp;quot;mein neues Superlied&amp;quot;, den Text dann markieren und den Button interner Link klicken. Wenn es die Seite noch nicht gibt, kann man die Seite neu anlegen wenn man das erste mal den Link klickt. Zum&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mehr Hilfe:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
http://wiki.zone30.info/wikizone/index.php/Wikizone:Editierhilfe&lt;br /&gt;
&lt;br /&gt;
== Presse- und Öffentlichkeitsarbeit ==&lt;br /&gt;
http://www.tagblatt.de/soundcheck/Terminkalender&lt;br /&gt;
&lt;br /&gt;
swr veranstungstipps&lt;br /&gt;
&lt;br /&gt;
radioton&lt;br /&gt;
&lt;br /&gt;
rtf&lt;br /&gt;
&lt;br /&gt;
radio achalm&lt;/div&gt;</summary>
		<author><name>91.47.71.42</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Zone30&amp;diff=1289</id>
		<title>Zone30</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Zone30&amp;diff=1289"/>
		<updated>2008-02-14T21:18:15Z</updated>

		<summary type="html">&lt;p&gt;91.47.71.42: /* Buchungen, Urlaub */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;quot;Easy Going&amp;quot; Songs für den 1. September ==&lt;br /&gt;
Chasing Cars (Snow Patrol)&lt;br /&gt;
&lt;br /&gt;
Wherever you will go (The Calling) - Tab: http://www.guitaretab.com/t/the-calling/22311.html &lt;br /&gt;
&lt;br /&gt;
Reamonn - Tonight http://www.e-chords.com/guitartab.asp?idmusica=99301&amp;amp;keyb=true&lt;br /&gt;
&lt;br /&gt;
** Everything - Bouble http://www.911tabs.com/link/?4326553&lt;br /&gt;
&lt;br /&gt;
** Wenn jetzt Sommer wär (Pohlmann)&lt;br /&gt;
&lt;br /&gt;
Baby Love (Mothers Finest)&lt;br /&gt;
&lt;br /&gt;
Black Horse and the Cherry Tree (KT Tunstall)&lt;br /&gt;
&lt;br /&gt;
Mother Mother (Tracy Bonham)&lt;br /&gt;
&lt;br /&gt;
** Symphonie (Silbermond)&lt;br /&gt;
&lt;br /&gt;
Nutbush City Limits (Ike&amp;amp;Tina Turner)&lt;br /&gt;
&lt;br /&gt;
** Ich fühl wie Du (Peter Maffay)&lt;br /&gt;
&lt;br /&gt;
** Kiss me (Sixpence non the richer)&lt;br /&gt;
&lt;br /&gt;
Freedom (Georgy Michael)&lt;br /&gt;
&lt;br /&gt;
** Vincent (Don McLean)&lt;br /&gt;
&lt;br /&gt;
Das Beste (Silbermond)&lt;br /&gt;
&lt;br /&gt;
** Your body is a wonderland (John Mayer)&lt;br /&gt;
&lt;br /&gt;
Kiss (Prince)&lt;br /&gt;
&lt;br /&gt;
** Beautyful Soul (Jessie McCartney)&lt;br /&gt;
&lt;br /&gt;
Proud Mary (Ike&amp;amp;Tina Turner)&lt;br /&gt;
&lt;br /&gt;
La camis negra (Juanes)&lt;br /&gt;
&lt;br /&gt;
** We say goodbye (Sascha)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das war´s was ich bisher gesammelt habe, weiter unten stehen noch Songs in der Vorschlags/Wunschliste, vielleicht ist da ja auch noch was dabei, was schnell realisierbar ist.&lt;br /&gt;
&lt;br /&gt;
== Setlisten ==&lt;br /&gt;
gibts hier: [[Zone30 - Setlisten]]&lt;br /&gt;
&lt;br /&gt;
== Was braucht Zone30: ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Percussion&amp;#039;&amp;#039;&amp;#039;: Udu, Cowbell, Kabasa, Darbouka, Besen(Cajon), Ständer für Schellenring, Splash-Becken, Triangel, Boom-Wacker, Koffer/Kiste für Percussion-Sachen&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anlage&amp;#039;&amp;#039;&amp;#039;: Mikrofonierung für Percussion, Monitor, komplette Verkabelung für Anlage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dekoration&amp;#039;&amp;#039;&amp;#039;: Banner (wie gestalten?) Guckst Du: www.banner-channel.de&lt;br /&gt;
&lt;br /&gt;
== Buchungen, Urlaub ==&lt;br /&gt;
Zone30 Gigs, Vorbuchungen etc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2008&lt;br /&gt;
&lt;br /&gt;
Sa 15.3. - KO (VORGEBUCHT)&lt;br /&gt;
Sa 5.4. - Zone30 Böblingen Polarnacht (VORGEBUCHT)&lt;br /&gt;
Sa 24.5.- Zone30 Burkhölzle (VORGEBUCHT)&lt;br /&gt;
Sa 31.5. KO 30 Jähriges&lt;br /&gt;
Sa 26.7 - Zone30 Geburtstag (VORGEBUCHT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Noch ohne Termine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;November Kulturverein DeSi (Degerschlacht-Sickenhausen)&amp;lt;/s&amp;gt;&lt;br /&gt;
Benefiz Konzert Terre de Femmes (Nepomuk) - Anfrage von Akustika Jahreswechsel 07 / 08&lt;br /&gt;
Kohla Konzert allein, mit Gastsängern (Karaoke)?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Termine Jochen:&lt;br /&gt;
14.02. kein Ausweichtermin mögl.&lt;br /&gt;
21.02. kein Ausweichtermin mögl.&lt;br /&gt;
KW19 5 - 11.5. Sensor Messe Nbg.&lt;br /&gt;
KW41-43 6. - 25.10. China/Philipinen &lt;br /&gt;
KW46 10. - 16.11. Electronica München&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Songideen / Wunschliste ==&lt;br /&gt;
Freedom - George Michael&lt;br /&gt;
&lt;br /&gt;
Barenaked - Jennifer Love Hewitt&lt;br /&gt;
&lt;br /&gt;
Promise you and me - Reamonn&lt;br /&gt;
&lt;br /&gt;
Ironic - Alanis M.&lt;br /&gt;
&lt;br /&gt;
Nobody´s wife - Anouk&lt;br /&gt;
&lt;br /&gt;
Walk away - Kelly Klarkson&lt;br /&gt;
&lt;br /&gt;
Stone Sour - Through glas&lt;br /&gt;
&lt;br /&gt;
The Kooks - She moves in her own way&lt;br /&gt;
&lt;br /&gt;
Hard to Handle - Black Crowes u.a.&lt;br /&gt;
&lt;br /&gt;
Walk on the Wild Side - Lou Reed&lt;br /&gt;
&lt;br /&gt;
Kiss me - Six Pence None The Richer&lt;br /&gt;
&lt;br /&gt;
Killing in the Name of... - Rage Against the Machine&lt;br /&gt;
&lt;br /&gt;
Black in Black - ACDC&lt;br /&gt;
&lt;br /&gt;
Think - Aretha Franklin&lt;br /&gt;
&lt;br /&gt;
Dancing on the ceiling - Lionel Richie&lt;br /&gt;
&lt;br /&gt;
Im Ernst? dann lieber Brick House von Commodores (da war Herr Richie noch jung und fetzig)&lt;br /&gt;
OK, wie wär´s dann mit &amp;quot;I heard it through the grapevine&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Cowboys and Kisses - Anastacia&lt;br /&gt;
&lt;br /&gt;
== Songs und Abläufe und aktuelles Set==&lt;br /&gt;
[[Zone30 - Set]]&lt;br /&gt;
&lt;br /&gt;
== HILFE ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wie ändert man Texte?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten klicken (oben in der Seite oder am entsprechenden Abschnitt) und ändern...&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wie legt man neue Seiten an?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Irgendwo hier in der Seite den Text wie die Seite heißt reinschreiben(wie oben beschrieben) z.B. &amp;quot;mein neues Superlied&amp;quot;, den Text dann markieren und den Button interner Link klicken. Wenn es die Seite noch nicht gibt, kann man die Seite neu anlegen wenn man das erste mal den Link klickt. Zum&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mehr Hilfe:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
http://wiki.zone30.info/wikizone/index.php/Wikizone:Editierhilfe&lt;/div&gt;</summary>
		<author><name>91.47.71.42</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Zone30&amp;diff=1288</id>
		<title>Zone30</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Zone30&amp;diff=1288"/>
		<updated>2008-02-14T21:08:10Z</updated>

		<summary type="html">&lt;p&gt;91.47.71.42: /* Buchungen, Urlaub */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;quot;Easy Going&amp;quot; Songs für den 1. September ==&lt;br /&gt;
Chasing Cars (Snow Patrol)&lt;br /&gt;
&lt;br /&gt;
Wherever you will go (The Calling) - Tab: http://www.guitaretab.com/t/the-calling/22311.html &lt;br /&gt;
&lt;br /&gt;
Reamonn - Tonight http://www.e-chords.com/guitartab.asp?idmusica=99301&amp;amp;keyb=true&lt;br /&gt;
&lt;br /&gt;
** Everything - Bouble http://www.911tabs.com/link/?4326553&lt;br /&gt;
&lt;br /&gt;
** Wenn jetzt Sommer wär (Pohlmann)&lt;br /&gt;
&lt;br /&gt;
Baby Love (Mothers Finest)&lt;br /&gt;
&lt;br /&gt;
Black Horse and the Cherry Tree (KT Tunstall)&lt;br /&gt;
&lt;br /&gt;
Mother Mother (Tracy Bonham)&lt;br /&gt;
&lt;br /&gt;
** Symphonie (Silbermond)&lt;br /&gt;
&lt;br /&gt;
Nutbush City Limits (Ike&amp;amp;Tina Turner)&lt;br /&gt;
&lt;br /&gt;
** Ich fühl wie Du (Peter Maffay)&lt;br /&gt;
&lt;br /&gt;
** Kiss me (Sixpence non the richer)&lt;br /&gt;
&lt;br /&gt;
Freedom (Georgy Michael)&lt;br /&gt;
&lt;br /&gt;
** Vincent (Don McLean)&lt;br /&gt;
&lt;br /&gt;
Das Beste (Silbermond)&lt;br /&gt;
&lt;br /&gt;
** Your body is a wonderland (John Mayer)&lt;br /&gt;
&lt;br /&gt;
Kiss (Prince)&lt;br /&gt;
&lt;br /&gt;
** Beautyful Soul (Jessie McCartney)&lt;br /&gt;
&lt;br /&gt;
Proud Mary (Ike&amp;amp;Tina Turner)&lt;br /&gt;
&lt;br /&gt;
La camis negra (Juanes)&lt;br /&gt;
&lt;br /&gt;
** We say goodbye (Sascha)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das war´s was ich bisher gesammelt habe, weiter unten stehen noch Songs in der Vorschlags/Wunschliste, vielleicht ist da ja auch noch was dabei, was schnell realisierbar ist.&lt;br /&gt;
&lt;br /&gt;
== Setlisten ==&lt;br /&gt;
gibts hier: [[Zone30 - Setlisten]]&lt;br /&gt;
&lt;br /&gt;
== Was braucht Zone30: ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Percussion&amp;#039;&amp;#039;&amp;#039;: Udu, Cowbell, Kabasa, Darbouka, Besen(Cajon), Ständer für Schellenring, Splash-Becken, Triangel, Boom-Wacker, Koffer/Kiste für Percussion-Sachen&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anlage&amp;#039;&amp;#039;&amp;#039;: Mikrofonierung für Percussion, Monitor, komplette Verkabelung für Anlage.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dekoration&amp;#039;&amp;#039;&amp;#039;: Banner (wie gestalten?) Guckst Du: www.banner-channel.de&lt;br /&gt;
&lt;br /&gt;
== Buchungen, Urlaub ==&lt;br /&gt;
Zone30 Gigs, Vorbuchungen etc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2008&lt;br /&gt;
&lt;br /&gt;
Sa 15.3. - KO (VORGEBUCHT)&lt;br /&gt;
Sa 5.4. - Zone30 Böblingen Polarnacht (VORGEBUCHT)&lt;br /&gt;
Sa 24.5.- Zone30 Burkhölzle (VORGEBUCHT)&lt;br /&gt;
Sa 31.5. KO 30 Jähriges&lt;br /&gt;
Sa 26.7 - Zone30 Geburtstag (VORGEBUCHT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Noch ohne Termine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;November Kulturverein DeSi (Degerschlacht-Sickenhausen)&amp;lt;/s&amp;gt;&lt;br /&gt;
Benefiz Konzert Terre de Femmes (Nepomuk) - Anfrage von Akustika Jahreswechsel 07 / 08&lt;br /&gt;
Kohla Konzert allein, mit Gastsängern (Karaoke)?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Termine Jochen:&lt;br /&gt;
14.02. kein Ausweichtermin mögl.&lt;br /&gt;
21.02. kein Ausweichtermin mögl.&lt;br /&gt;
KW19 Sensor Messe Nbg.&lt;br /&gt;
KW41-43 China/Philipinen &lt;br /&gt;
KW46 Electronica München&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Songideen / Wunschliste ==&lt;br /&gt;
Freedom - George Michael&lt;br /&gt;
&lt;br /&gt;
Barenaked - Jennifer Love Hewitt&lt;br /&gt;
&lt;br /&gt;
Promise you and me - Reamonn&lt;br /&gt;
&lt;br /&gt;
Ironic - Alanis M.&lt;br /&gt;
&lt;br /&gt;
Nobody´s wife - Anouk&lt;br /&gt;
&lt;br /&gt;
Walk away - Kelly Klarkson&lt;br /&gt;
&lt;br /&gt;
Stone Sour - Through glas&lt;br /&gt;
&lt;br /&gt;
The Kooks - She moves in her own way&lt;br /&gt;
&lt;br /&gt;
Hard to Handle - Black Crowes u.a.&lt;br /&gt;
&lt;br /&gt;
Walk on the Wild Side - Lou Reed&lt;br /&gt;
&lt;br /&gt;
Kiss me - Six Pence None The Richer&lt;br /&gt;
&lt;br /&gt;
Killing in the Name of... - Rage Against the Machine&lt;br /&gt;
&lt;br /&gt;
Black in Black - ACDC&lt;br /&gt;
&lt;br /&gt;
Think - Aretha Franklin&lt;br /&gt;
&lt;br /&gt;
Dancing on the ceiling - Lionel Richie&lt;br /&gt;
&lt;br /&gt;
Im Ernst? dann lieber Brick House von Commodores (da war Herr Richie noch jung und fetzig)&lt;br /&gt;
OK, wie wär´s dann mit &amp;quot;I heard it through the grapevine&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Cowboys and Kisses - Anastacia&lt;br /&gt;
&lt;br /&gt;
== Songs und Abläufe und aktuelles Set==&lt;br /&gt;
[[Zone30 - Set]]&lt;br /&gt;
&lt;br /&gt;
== HILFE ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wie ändert man Texte?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bearbeiten klicken (oben in der Seite oder am entsprechenden Abschnitt) und ändern...&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wie legt man neue Seiten an?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Irgendwo hier in der Seite den Text wie die Seite heißt reinschreiben(wie oben beschrieben) z.B. &amp;quot;mein neues Superlied&amp;quot;, den Text dann markieren und den Button interner Link klicken. Wenn es die Seite noch nicht gibt, kann man die Seite neu anlegen wenn man das erste mal den Link klickt. Zum&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mehr Hilfe:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
http://wiki.zone30.info/wikizone/index.php/Wikizone:Editierhilfe&lt;/div&gt;</summary>
		<author><name>91.47.71.42</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1647</id>
		<title>Typo3 Extensions - Backend Formulare und TCA Konfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1647"/>
		<updated>2008-02-14T13:03:45Z</updated>

		<summary type="html">&lt;p&gt;91.47.71.42: /* Aussehen von Backend Formularen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Aussehen von Backend Formularen ===&lt;br /&gt;
&lt;br /&gt;
Definiert im &amp;#039;&amp;#039;&amp;#039;TCA Array&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
In Extensions wird es in den Dateien &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;tca.php&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
festgelegt. In tca.php wird z.B. mit&lt;br /&gt;
 ...&amp;quot;ctrl&amp;quot; =&amp;gt; $TCA[&amp;quot;tx_pupmanager_members&amp;quot;][&amp;quot;ctrl&amp;quot;],...&lt;br /&gt;
der Teil ctrl des TCA Arrays aus ext_tables übernommen. Man muß also nur in diesen beiden Dateien die Werte verändern um auf verschiedene Weise das Backend zu konfigurieren. Die Details findet man in:&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.1.0/view/4/2/#id3660035&lt;br /&gt;
&lt;br /&gt;
Die Ebenen des Arrays sind wie folgt angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Verschiedenes ===&lt;br /&gt;
Bereich &amp;#039;&amp;#039;&amp;#039;ctrl&amp;#039;&amp;#039;&amp;#039; wird immer gleich geladen die anderen BEreiche erst dynamisch. Wenn sie benutzt werden mit &lt;br /&gt;
&lt;br /&gt;
 t3lib_loadTCA(&amp;#039;your_table_name&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
nachladen&lt;br /&gt;
&lt;br /&gt;
=== Level 1 ===&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;Schlüssel entsprechen den DB-Tabellen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Grundsätzliche Einstellungen in &amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Level 2 und 3 ===&lt;br /&gt;
&lt;br /&gt;
Diese beziehen sich auf die &amp;#039;&amp;#039;&amp;#039;Struktur eines Tabelleneintrags&amp;#039;&amp;#039;&amp;#039; (so sieht also ein Datensatz im Backend aus) und werden meist in &amp;#039;&amp;#039;tca.php&amp;#039;&amp;#039; festgelegt.&lt;br /&gt;
&lt;br /&gt;
== Validierung von Backend Formularen ==&lt;br /&gt;
Für Backendfelder steht der Bereich eval zur Verfügung. Dort gibt es vorgefertigte Evaluierungsmöglichkeiten. Es können auch mittels einer Extension eigene JavaScripte zur Evaluierung gebastelt werden. Eine Beispielextension steht auch zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/api/&lt;br /&gt;
&lt;br /&gt;
 [&amp;#039;columns&amp;#039;][fieldname][&amp;#039;config&amp;#039;] / TYPE: &amp;quot;input&amp;quot;&lt;br /&gt;
 eval=&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
=== Eine Klasse für eigene Validierung einbauen ===&lt;br /&gt;
Folgende Schritte sind notwendig:&lt;br /&gt;
# Eine &amp;#039;&amp;#039;&amp;#039;Klasse zur Evaluierung&amp;#039;&amp;#039;&amp;#039; in der Extension anlegen in der Art: class.tx_meineextension_extraeval1&lt;br /&gt;
&lt;br /&gt;
## Diese Klasse enthält &amp;#039;&amp;#039;&amp;#039;zwei Funktionen&amp;#039;&amp;#039;&amp;#039;. Eine für die Evaluierung per &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039; bei der Eingabe und eine &amp;#039;&amp;#039;&amp;#039;php&amp;#039;&amp;#039;&amp;#039; Evaluierung nachdem der Datensatz gespeichert wurde. Unten steht die Beispielklasse aus der typo3.org API Dokumentation aus; sie fügt den eingegebenen Werten die unten gezeigten Strings hinzu.&lt;br /&gt;
&lt;br /&gt;
## Die Funktion &amp;#039;&amp;#039;returnFieldJS()&amp;#039;&amp;#039; gibt den &amp;#039;&amp;#039;&amp;#039;JavaScript Code&amp;#039;&amp;#039;&amp;#039; zurück. Im JavaScript steht die Variable &amp;#039;&amp;#039;value&amp;#039;&amp;#039; zur Verfügung die den Wert des Feldes enthält.&lt;br /&gt;
&lt;br /&gt;
## Die Funktion &amp;#039;&amp;#039;evaluateFieldValue ($value, $is_in, &amp;amp;$set)&amp;#039;&amp;#039; hat folgende Übergabewerte: &amp;#039;&amp;#039;$value&amp;#039;&amp;#039; ist der Feldinhalt, &amp;#039;&amp;#039;$is_in&amp;#039;&amp;#039; enthält die Werte aus der Typo3 Eval Funktion is_in (Filtert Zeichen aus), &amp;#039;&amp;#039;&amp;amp;$set&amp;#039;&amp;#039; ist Boolean und legt fest ob der Wert in die Datenbank geschrieben wird oder nicht. Wird per Referenz übergeben. &lt;br /&gt;
&lt;br /&gt;
# In ext_localconf.php muß die Klasse registriert werden damit sie zur Verfügung steht&lt;br /&gt;
&lt;br /&gt;
# In tca.php kann nun den Backendeingabefeldern die Evaluierung zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;class.tx_exampleextraevaluations_extraeval1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class tx_exampleextraevaluations_extraeval1 {&lt;br /&gt;
    function returnFieldJS() {&lt;br /&gt;
        return &amp;#039;&lt;br /&gt;
        return value + &amp;quot; [added by JS]&amp;quot;;&lt;br /&gt;
        &amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
    function evaluateFieldValue($value, $is_in, &amp;amp;$set) {&lt;br /&gt;
        return $value.&amp;#039; [added by PHP]&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Register new evaluation method in the $TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;tce&amp;#039;][&amp;#039;formevals&amp;#039;] array.&lt;br /&gt;
$TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;tce&amp;#039;][&amp;#039;formevals&amp;#039;][&amp;#039;tx_exampleextraevaluations_extraeval1&amp;#039;] = &amp;#039;EXT:example_extraevaluations/class.tx_pupmanager_extraeval1.php&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Beispiel zum Aufruf in tca.php &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
 &amp;#039;eval&amp;#039; =&amp;gt; &amp;#039;trim,tx_exampleextraevaluations_extraeval1&amp;#039;,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felder in Abhängigkeit von anderen anzeigen oder verstecken ==&lt;br /&gt;
===Möglichkeit 1: in der Felddefinition===&lt;br /&gt;
Für jedes Feld das eventuell versteckt werden soll, wird eine Bedingung angegeben&lt;br /&gt;
Im TCA (tca.php) unter&lt;br /&gt;
 [&amp;#039;columns&amp;#039;][fieldname] &lt;br /&gt;
 displayCond&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiele:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This example will require the field named &amp;quot;tx_templavoila_ds&amp;quot; to be true, otherwise the field for which this rule is set will not be displayed:&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;displayCond&amp;#039; =&amp;gt; &amp;#039;FIELD:tx_templavoila_ds:REQ:true&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
This example requires the extension &amp;quot;static_info_tables&amp;quot; to be loaded, otherwise the field is not displayed. (This is useful if the field makes a look-up on a table coming from another extension!)&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;displayCond&amp;#039; =&amp;gt; &amp;#039;EXT:static_info_tables:LOADED:true&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
Wie man sieht ist der String mit : in verschiedene Bereiche aufgeteilt. &lt;br /&gt;
Teil 1 ist der Regeltyp. FIELD bezieht sich z.B. auf ein Feld im selben Datensatz. Je nachdem was im ersten Teil steht kann man weitere Teile angeben.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.1.0/view/4/2/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Möglichkeit 2: mit Paletten===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Möglichkeit 3: ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Reihenfolge der Felder im Backend ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;#039;types&amp;#039;][key]&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;#039;types&amp;#039; =&amp;gt; Array (&lt;br /&gt;
 &amp;#039;0&amp;#039; =&amp;gt; Array(&amp;#039;showitem&amp;#039; =&amp;gt; &amp;#039;hidden;;1, type, title, test_template&amp;#039;),&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The key &amp;quot;showitem&amp;quot; lists the order in which to define the fields: &amp;quot;hidden, type, title, test_template&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(nicht mit showRecordFieldList verwechseln - das legt nur Fest was überhaupt angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
== Default Werte in Backend-Feldern ==&lt;br /&gt;
useColumnsForDefaultValues&lt;br /&gt;
&lt;br /&gt;
== Tabs in Backend Formularen ==&lt;br /&gt;
dividers2tabs(in types)&lt;br /&gt;
&lt;br /&gt;
== Funktionen vor oder nach der Backendeingabe ausführen ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Verwendete Dateien:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ext_localconf.php (register hook here)&lt;br /&gt;
class.tx_myExtension_post-or whatever.php (functionality)&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Dies kann mit Hooks realisiert werden.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/development/articles/how-to-use-existing-hooks/page/2/&lt;br /&gt;
&lt;br /&gt;
Daten die vom Backend übermittelt werden werden in der Klasse t3lib_tcemain bearbeitet. Das wäre der geeignete Ort um einzugreifen.&lt;br /&gt;
Diese liegt in &amp;#039;&amp;#039;&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;&amp;#039;&amp;#039;. Jetzt wäre es natürlich blöde in den Core Dateien herumzufuhrwerken. Aber es gibt ja das Hook Konzept, mit dem ein Programmierer Schnittstellen bereitstellen kann um die Funktionalität zu erweitern. Netterweise hat ein lieber Core Programmierer schon zwei Hooks vorgesehen die vor bzw. nachdem speichern der Daten im Backend genutzt werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es gibt 2 Möglichkeiten den Hook zu nutzen. &amp;#039;&amp;#039;&amp;#039;callUserFunction&amp;#039;&amp;#039;&amp;#039; und the &amp;#039;&amp;#039;&amp;#039;getUserObj&amp;#039;&amp;#039;&amp;#039;. Wobei zweitere die schickere (weil ansatzweise Objektorientiert) ist. Auf die callUserFunction gehen wir zunächst hier nicht ein.&lt;br /&gt;
&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;getUserObj Methode&amp;#039;&amp;#039;&amp;#039; stellt uns auch der folgende Hook zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schauen wir uns den Code des Post Process Hooks in der Datei class.t3li_tcemain.php an:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Hook: processDatamap_postProcessFieldArray&lt;br /&gt;
reset($hookObjectsArr);&lt;br /&gt;
while (list(,$hookObj) = each($hookObjectsArr)) {&lt;br /&gt;
    if (method_exists ($hookObj, &amp;#039;processDatamap_postProcessFieldArray&amp;#039;)) {&lt;br /&gt;
        $hookObj-&amp;gt;processDatamap_postProcessFieldArray ($status, $table, $id, $fieldArray, $this);&lt;br /&gt;
    } &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im obigen Code-Schnipsel aus TCE-Main wird ein Array $hookObjectsArr übergeben und eine Methode processDatamap_postProcessFieldArray wird aufgerufen wenn dieses Existiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1. Klasse schreiben ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wir schreiben einfach eine Klasse&amp;#039;&amp;#039;&amp;#039; in der wir die Funktion processDatamap_postProcessFieldArray überschreiben und hier unserer eigene Funktion bereitstellen.&lt;br /&gt;
&lt;br /&gt;
2.1 Funktion Registrieren&lt;br /&gt;
in der Core Datei wird die &amp;#039;&amp;#039;&amp;#039;Funktion im Globalen Array $TYPO3_CONF_VARS registriert&amp;#039;&amp;#039;&amp;#039;. Genauso müssen wir das mit unserer neuen Funktion machen. Die neuen Methoden Registrieren wir in &amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Typo 3 hat seine Klasse so registriert:&lt;br /&gt;
&lt;br /&gt;
process_datamap function des Typo3 Core (obige Datei):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 // First prepare user defined objects (if any) for hooks which extend this function:&lt;br /&gt;
$hookObjectsArr = array();&lt;br /&gt;
if (is_array ($TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;])) {&lt;br /&gt;
    foreach ($TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;] as $classRef) {&lt;br /&gt;
        $hookObjectsArr[] = &amp;amp;t3lib_div::getUserObj ($classRef);&lt;br /&gt;
    } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unserer neue Klasse soll genauso eine Instanz des Objekts in genau diesem Array $hookObjectsArr sein.&lt;br /&gt;
&lt;br /&gt;
Deshalb registrieren wir in der Datei &amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039;unserer Extension unsere Datei indem wir die Funktion genau wie oben im Array aufnehmen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $GLOBALS [&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;][] = &amp;#039;tx_myextension_tcemainprocdm&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Klassendatei laden ===&lt;br /&gt;
Jezt müssen wir noch aufpassen das die Klassendatei auch geladen wird wenn sie benötigt wird. Dazu können wir ein require_once statement in ext_tables.php unserer Extension hinzufügen oder besser folgendes machen.&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Laden und Registrieren der Klasse gleichzeitig ===&lt;br /&gt;
&lt;br /&gt;
Die getUserObj Methode erlaubt uns die beiden Schritte gleichzeitig auszuführen. Das können wir dann beides in &amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039; machen. Dann sieht die Zeile von vorhin &amp;#039;&amp;#039;&amp;#039;etwas anders&amp;#039;&amp;#039;&amp;#039; aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GLOBALS [&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;][] = &amp;#039;EXT:myextension/class.myextension_tcemainprocdm.php:tx_myextension_tcemainprocdm&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das hat zudem den Vorteil, das die Klasse nur dann aufgerufen wird wenn sie auch benötigt wird.&lt;br /&gt;
 &lt;br /&gt;
Another great advantage of this method is that your file will only be included if it&amp;#039;s really used! &lt;br /&gt;
postProcessFieldArray&amp;quot; in der Rubrik &amp;quot;processDatamap&lt;br /&gt;
&lt;br /&gt;
=== Wie Programmiert man ? ===&lt;br /&gt;
Für die Programmierung steht die Typo3 Core Engine zur Verfügung (TCE)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Das Konzept:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
When you are using TCE from your backend applications you need to prepare two arrays of information which contain the instructions to TCEmain of what actions to perform. They fall into two categories: Data and Commands.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Data&amp;quot; is when you want to write information to a database table or create a new record.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Commands&amp;quot; is when you want to move, copy or delete a record in the system.&lt;br /&gt;
&lt;br /&gt;
The data and commands are created as multidimensional arrays and to understand the API of TCEmain you simply need to understand the hierarchy of these two arrays.&lt;br /&gt;
&lt;br /&gt;
Commands Array ($cmd):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Syntax:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
$cmd[ tablename ][ uid ][ command ] = value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unsere Funktion:&lt;br /&gt;
Wird aufgerufen wenn Datensatz gespeichert wird&lt;br /&gt;
Parameter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$status-&amp;gt;update oder new, &lt;br /&gt;
$table -&amp;gt; die im Moment bearbeitete Tabelle, &lt;br /&gt;
$id-&amp;gt; bei status new ein Zufallscode Newxxxxx sonst die uid des Datensatzen, &lt;br /&gt;
&amp;amp;$fieldArray -&amp;gt; hier kann man einen Wert aus dem gerade zu speichernden Datensatz überschreiben&lt;br /&gt;
$reference -&amp;gt; das komplette cObj&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class tx_myextension_tcemainprocdm {&lt;br /&gt;
&lt;br /&gt;
    function processDatamap_postProcessFieldArray ($status, $table, $id, &amp;amp;$fieldArray, &amp;amp;$this) {&lt;br /&gt;
&lt;br /&gt;
        // here comes the code&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.71.42</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1286</id>
		<title>Typo3 Extensions - Backend Formulare und TCA Konfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1286"/>
		<updated>2008-02-14T12:58:00Z</updated>

		<summary type="html">&lt;p&gt;91.47.71.42: /* Aussehen von Backend Formularen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Aussehen von Backend Formularen ===&lt;br /&gt;
&lt;br /&gt;
Definiert im &amp;#039;&amp;#039;&amp;#039;TCA Array&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
In Extensions wird es in den Dateien &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;tca.php&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
festgelegt. In tca.php können die Werte aus ext_tables überschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Die Ebenen des Arrays sind wie folgt angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Verschiedenes ===&lt;br /&gt;
Bereich &amp;#039;&amp;#039;&amp;#039;ctrl&amp;#039;&amp;#039;&amp;#039; wird immer gleich geladen die anderen BEreiche erst dynamisch. Wenn sie benutzt werden mit &lt;br /&gt;
&lt;br /&gt;
 t3lib_loadTCA(&amp;#039;your_table_name&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
nachladen&lt;br /&gt;
&lt;br /&gt;
=== Level 1 ===&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;Schlüssel entsprechen den DB-Tabellen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Grundsätzliche Einstellungen in &amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Level 2 und 3 ===&lt;br /&gt;
&lt;br /&gt;
Diese beziehen sich auf die &amp;#039;&amp;#039;&amp;#039;Struktur eines Tabelleneintrags&amp;#039;&amp;#039;&amp;#039; (so sieht also ein Datensatz im Backend aus) und werden meist in &amp;#039;&amp;#039;tca.php&amp;#039;&amp;#039; festgelegt.&lt;br /&gt;
&lt;br /&gt;
== Validierung von Backend Formularen ==&lt;br /&gt;
Für Backendfelder steht der Bereich eval zur Verfügung. Dort gibt es vorgefertigte Evaluierungsmöglichkeiten. Es können auch mittels einer Extension eigene JavaScripte zur Evaluierung gebastelt werden. Eine Beispielextension steht auch zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/api/&lt;br /&gt;
&lt;br /&gt;
 [&amp;#039;columns&amp;#039;][fieldname][&amp;#039;config&amp;#039;] / TYPE: &amp;quot;input&amp;quot;&lt;br /&gt;
 eval=&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
=== Eine Klasse für eigene Validierung einbauen ===&lt;br /&gt;
Folgende Schritte sind notwendig:&lt;br /&gt;
# Eine &amp;#039;&amp;#039;&amp;#039;Klasse zur Evaluierung&amp;#039;&amp;#039;&amp;#039; in der Extension anlegen in der Art: class.tx_meineextension_extraeval1&lt;br /&gt;
&lt;br /&gt;
## Diese Klasse enthält &amp;#039;&amp;#039;&amp;#039;zwei Funktionen&amp;#039;&amp;#039;&amp;#039;. Eine für die Evaluierung per &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039; bei der Eingabe und eine &amp;#039;&amp;#039;&amp;#039;php&amp;#039;&amp;#039;&amp;#039; Evaluierung nachdem der Datensatz gespeichert wurde. Unten steht die Beispielklasse aus der typo3.org API Dokumentation aus; sie fügt den eingegebenen Werten die unten gezeigten Strings hinzu.&lt;br /&gt;
&lt;br /&gt;
## Die Funktion &amp;#039;&amp;#039;returnFieldJS()&amp;#039;&amp;#039; gibt den &amp;#039;&amp;#039;&amp;#039;JavaScript Code&amp;#039;&amp;#039;&amp;#039; zurück. Im JavaScript steht die Variable &amp;#039;&amp;#039;value&amp;#039;&amp;#039; zur Verfügung die den Wert des Feldes enthält.&lt;br /&gt;
&lt;br /&gt;
## Die Funktion &amp;#039;&amp;#039;evaluateFieldValue ($value, $is_in, &amp;amp;$set)&amp;#039;&amp;#039; hat folgende Übergabewerte: &amp;#039;&amp;#039;$value&amp;#039;&amp;#039; ist der Feldinhalt, &amp;#039;&amp;#039;$is_in&amp;#039;&amp;#039; enthält die Werte aus der Typo3 Eval Funktion is_in (Filtert Zeichen aus), &amp;#039;&amp;#039;&amp;amp;$set&amp;#039;&amp;#039; ist Boolean und legt fest ob der Wert in die Datenbank geschrieben wird oder nicht. Wird per Referenz übergeben. &lt;br /&gt;
&lt;br /&gt;
# In ext_localconf.php muß die Klasse registriert werden damit sie zur Verfügung steht&lt;br /&gt;
&lt;br /&gt;
# In tca.php kann nun den Backendeingabefeldern die Evaluierung zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;class.tx_exampleextraevaluations_extraeval1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class tx_exampleextraevaluations_extraeval1 {&lt;br /&gt;
    function returnFieldJS() {&lt;br /&gt;
        return &amp;#039;&lt;br /&gt;
        return value + &amp;quot; [added by JS]&amp;quot;;&lt;br /&gt;
        &amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
    function evaluateFieldValue($value, $is_in, &amp;amp;$set) {&lt;br /&gt;
        return $value.&amp;#039; [added by PHP]&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Register new evaluation method in the $TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;tce&amp;#039;][&amp;#039;formevals&amp;#039;] array.&lt;br /&gt;
$TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;tce&amp;#039;][&amp;#039;formevals&amp;#039;][&amp;#039;tx_exampleextraevaluations_extraeval1&amp;#039;] = &amp;#039;EXT:example_extraevaluations/class.tx_pupmanager_extraeval1.php&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Beispiel zum Aufruf in tca.php &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
 &amp;#039;eval&amp;#039; =&amp;gt; &amp;#039;trim,tx_exampleextraevaluations_extraeval1&amp;#039;,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felder in Abhängigkeit von anderen anzeigen oder verstecken ==&lt;br /&gt;
===Möglichkeit 1: in der Felddefinition===&lt;br /&gt;
Für jedes Feld das eventuell versteckt werden soll, wird eine Bedingung angegeben&lt;br /&gt;
Im TCA (tca.php) unter&lt;br /&gt;
 [&amp;#039;columns&amp;#039;][fieldname] &lt;br /&gt;
 displayCond&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiele:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This example will require the field named &amp;quot;tx_templavoila_ds&amp;quot; to be true, otherwise the field for which this rule is set will not be displayed:&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;displayCond&amp;#039; =&amp;gt; &amp;#039;FIELD:tx_templavoila_ds:REQ:true&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
This example requires the extension &amp;quot;static_info_tables&amp;quot; to be loaded, otherwise the field is not displayed. (This is useful if the field makes a look-up on a table coming from another extension!)&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;displayCond&amp;#039; =&amp;gt; &amp;#039;EXT:static_info_tables:LOADED:true&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
Wie man sieht ist der String mit : in verschiedene Bereiche aufgeteilt. &lt;br /&gt;
Teil 1 ist der Regeltyp. FIELD bezieht sich z.B. auf ein Feld im selben Datensatz. Je nachdem was im ersten Teil steht kann man weitere Teile angeben.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.1.0/view/4/2/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Möglichkeit 2: mit Paletten===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Möglichkeit 3: ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Reihenfolge der Felder im Backend ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;#039;types&amp;#039;][key]&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;#039;types&amp;#039; =&amp;gt; Array (&lt;br /&gt;
 &amp;#039;0&amp;#039; =&amp;gt; Array(&amp;#039;showitem&amp;#039; =&amp;gt; &amp;#039;hidden;;1, type, title, test_template&amp;#039;),&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The key &amp;quot;showitem&amp;quot; lists the order in which to define the fields: &amp;quot;hidden, type, title, test_template&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(nicht mit showRecordFieldList verwechseln - das legt nur Fest was überhaupt angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
== Default Werte in Backend-Feldern ==&lt;br /&gt;
useColumnsForDefaultValues&lt;br /&gt;
&lt;br /&gt;
== Tabs in Backend Formularen ==&lt;br /&gt;
dividers2tabs(in types)&lt;br /&gt;
&lt;br /&gt;
== Funktionen vor oder nach der Backendeingabe ausführen ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Verwendete Dateien:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ext_localconf.php (register hook here)&lt;br /&gt;
class.tx_myExtension_post-or whatever.php (functionality)&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Dies kann mit Hooks realisiert werden.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/development/articles/how-to-use-existing-hooks/page/2/&lt;br /&gt;
&lt;br /&gt;
Daten die vom Backend übermittelt werden werden in der Klasse t3lib_tcemain bearbeitet. Das wäre der geeignete Ort um einzugreifen.&lt;br /&gt;
Diese liegt in &amp;#039;&amp;#039;&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;&amp;#039;&amp;#039;. Jetzt wäre es natürlich blöde in den Core Dateien herumzufuhrwerken. Aber es gibt ja das Hook Konzept, mit dem ein Programmierer Schnittstellen bereitstellen kann um die Funktionalität zu erweitern. Netterweise hat ein lieber Core Programmierer schon zwei Hooks vorgesehen die vor bzw. nachdem speichern der Daten im Backend genutzt werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es gibt 2 Möglichkeiten den Hook zu nutzen. &amp;#039;&amp;#039;&amp;#039;callUserFunction&amp;#039;&amp;#039;&amp;#039; und the &amp;#039;&amp;#039;&amp;#039;getUserObj&amp;#039;&amp;#039;&amp;#039;. Wobei zweitere die schickere (weil ansatzweise Objektorientiert) ist. Auf die callUserFunction gehen wir zunächst hier nicht ein.&lt;br /&gt;
&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;getUserObj Methode&amp;#039;&amp;#039;&amp;#039; stellt uns auch der folgende Hook zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schauen wir uns den Code des Post Process Hooks in der Datei class.t3li_tcemain.php an:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Hook: processDatamap_postProcessFieldArray&lt;br /&gt;
reset($hookObjectsArr);&lt;br /&gt;
while (list(,$hookObj) = each($hookObjectsArr)) {&lt;br /&gt;
    if (method_exists ($hookObj, &amp;#039;processDatamap_postProcessFieldArray&amp;#039;)) {&lt;br /&gt;
        $hookObj-&amp;gt;processDatamap_postProcessFieldArray ($status, $table, $id, $fieldArray, $this);&lt;br /&gt;
    } &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im obigen Code-Schnipsel aus TCE-Main wird ein Array $hookObjectsArr übergeben und eine Methode processDatamap_postProcessFieldArray wird aufgerufen wenn dieses Existiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1. Klasse schreiben ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wir schreiben einfach eine Klasse&amp;#039;&amp;#039;&amp;#039; in der wir die Funktion processDatamap_postProcessFieldArray überschreiben und hier unserer eigene Funktion bereitstellen.&lt;br /&gt;
&lt;br /&gt;
2.1 Funktion Registrieren&lt;br /&gt;
in der Core Datei wird die &amp;#039;&amp;#039;&amp;#039;Funktion im Globalen Array $TYPO3_CONF_VARS registriert&amp;#039;&amp;#039;&amp;#039;. Genauso müssen wir das mit unserer neuen Funktion machen. Die neuen Methoden Registrieren wir in &amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Typo 3 hat seine Klasse so registriert:&lt;br /&gt;
&lt;br /&gt;
process_datamap function des Typo3 Core (obige Datei):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 // First prepare user defined objects (if any) for hooks which extend this function:&lt;br /&gt;
$hookObjectsArr = array();&lt;br /&gt;
if (is_array ($TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;])) {&lt;br /&gt;
    foreach ($TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;] as $classRef) {&lt;br /&gt;
        $hookObjectsArr[] = &amp;amp;t3lib_div::getUserObj ($classRef);&lt;br /&gt;
    } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unserer neue Klasse soll genauso eine Instanz des Objekts in genau diesem Array $hookObjectsArr sein.&lt;br /&gt;
&lt;br /&gt;
Deshalb registrieren wir in der Datei &amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039;unserer Extension unsere Datei indem wir die Funktion genau wie oben im Array aufnehmen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $GLOBALS [&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;][] = &amp;#039;tx_myextension_tcemainprocdm&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Klassendatei laden ===&lt;br /&gt;
Jezt müssen wir noch aufpassen das die Klassendatei auch geladen wird wenn sie benötigt wird. Dazu können wir ein require_once statement in ext_tables.php unserer Extension hinzufügen oder besser folgendes machen.&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Laden und Registrieren der Klasse gleichzeitig ===&lt;br /&gt;
&lt;br /&gt;
Die getUserObj Methode erlaubt uns die beiden Schritte gleichzeitig auszuführen. Das können wir dann beides in &amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039; machen. Dann sieht die Zeile von vorhin &amp;#039;&amp;#039;&amp;#039;etwas anders&amp;#039;&amp;#039;&amp;#039; aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GLOBALS [&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;][] = &amp;#039;EXT:myextension/class.myextension_tcemainprocdm.php:tx_myextension_tcemainprocdm&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das hat zudem den Vorteil, das die Klasse nur dann aufgerufen wird wenn sie auch benötigt wird.&lt;br /&gt;
 &lt;br /&gt;
Another great advantage of this method is that your file will only be included if it&amp;#039;s really used! &lt;br /&gt;
postProcessFieldArray&amp;quot; in der Rubrik &amp;quot;processDatamap&lt;br /&gt;
&lt;br /&gt;
=== Wie Programmiert man ? ===&lt;br /&gt;
Für die Programmierung steht die Typo3 Core Engine zur Verfügung (TCE)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Das Konzept:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
When you are using TCE from your backend applications you need to prepare two arrays of information which contain the instructions to TCEmain of what actions to perform. They fall into two categories: Data and Commands.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Data&amp;quot; is when you want to write information to a database table or create a new record.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Commands&amp;quot; is when you want to move, copy or delete a record in the system.&lt;br /&gt;
&lt;br /&gt;
The data and commands are created as multidimensional arrays and to understand the API of TCEmain you simply need to understand the hierarchy of these two arrays.&lt;br /&gt;
&lt;br /&gt;
Commands Array ($cmd):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Syntax:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
$cmd[ tablename ][ uid ][ command ] = value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unsere Funktion:&lt;br /&gt;
Wird aufgerufen wenn Datensatz gespeichert wird&lt;br /&gt;
Parameter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$status-&amp;gt;update oder new, &lt;br /&gt;
$table -&amp;gt; die im Moment bearbeitete Tabelle, &lt;br /&gt;
$id-&amp;gt; bei status new ein Zufallscode Newxxxxx sonst die uid des Datensatzen, &lt;br /&gt;
&amp;amp;$fieldArray -&amp;gt; hier kann man einen Wert aus dem gerade zu speichernden Datensatz überschreiben&lt;br /&gt;
$reference -&amp;gt; das komplette cObj&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class tx_myextension_tcemainprocdm {&lt;br /&gt;
&lt;br /&gt;
    function processDatamap_postProcessFieldArray ($status, $table, $id, &amp;amp;$fieldArray, &amp;amp;$this) {&lt;br /&gt;
&lt;br /&gt;
        // here comes the code&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.71.42</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1285</id>
		<title>Typo3 Extensions - Backend Formulare und TCA Konfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1285"/>
		<updated>2008-02-14T12:57:18Z</updated>

		<summary type="html">&lt;p&gt;91.47.71.42: /* Aussehen von Backend Formularen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Aussehen von Backend Formularen ===&lt;br /&gt;
&lt;br /&gt;
Definiert im &amp;#039;&amp;#039;&amp;#039;TCA Array&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
In Extensions wird es in den Dateien &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;tca.php&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
festgelegt.&lt;br /&gt;
&lt;br /&gt;
Die Ebenen des Arrays sind wie folgt angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Verschiedenes ===&lt;br /&gt;
Bereich &amp;#039;&amp;#039;&amp;#039;ctrl&amp;#039;&amp;#039;&amp;#039; wird immer gleich geladen die anderen BEreiche erst dynamisch. Wenn sie benutzt werden mit &lt;br /&gt;
&lt;br /&gt;
 t3lib_loadTCA(&amp;#039;your_table_name&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
nachladen&lt;br /&gt;
&lt;br /&gt;
=== Level 1 ===&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;Schlüssel entsprechen den DB-Tabellen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Grundsätzliche Einstellungen in &amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Level 2 und 3 ===&lt;br /&gt;
&lt;br /&gt;
Diese beziehen sich auf die &amp;#039;&amp;#039;&amp;#039;Struktur eines Tabelleneintrags&amp;#039;&amp;#039;&amp;#039; (so sieht also ein Datensatz im Backend aus) und werden meist in &amp;#039;&amp;#039;tca.php&amp;#039;&amp;#039; festgelegt.&lt;br /&gt;
&lt;br /&gt;
== Validierung von Backend Formularen ==&lt;br /&gt;
Für Backendfelder steht der Bereich eval zur Verfügung. Dort gibt es vorgefertigte Evaluierungsmöglichkeiten. Es können auch mittels einer Extension eigene JavaScripte zur Evaluierung gebastelt werden. Eine Beispielextension steht auch zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/api/&lt;br /&gt;
&lt;br /&gt;
 [&amp;#039;columns&amp;#039;][fieldname][&amp;#039;config&amp;#039;] / TYPE: &amp;quot;input&amp;quot;&lt;br /&gt;
 eval=&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
=== Eine Klasse für eigene Validierung einbauen ===&lt;br /&gt;
Folgende Schritte sind notwendig:&lt;br /&gt;
# Eine &amp;#039;&amp;#039;&amp;#039;Klasse zur Evaluierung&amp;#039;&amp;#039;&amp;#039; in der Extension anlegen in der Art: class.tx_meineextension_extraeval1&lt;br /&gt;
&lt;br /&gt;
## Diese Klasse enthält &amp;#039;&amp;#039;&amp;#039;zwei Funktionen&amp;#039;&amp;#039;&amp;#039;. Eine für die Evaluierung per &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039; bei der Eingabe und eine &amp;#039;&amp;#039;&amp;#039;php&amp;#039;&amp;#039;&amp;#039; Evaluierung nachdem der Datensatz gespeichert wurde. Unten steht die Beispielklasse aus der typo3.org API Dokumentation aus; sie fügt den eingegebenen Werten die unten gezeigten Strings hinzu.&lt;br /&gt;
&lt;br /&gt;
## Die Funktion &amp;#039;&amp;#039;returnFieldJS()&amp;#039;&amp;#039; gibt den &amp;#039;&amp;#039;&amp;#039;JavaScript Code&amp;#039;&amp;#039;&amp;#039; zurück. Im JavaScript steht die Variable &amp;#039;&amp;#039;value&amp;#039;&amp;#039; zur Verfügung die den Wert des Feldes enthält.&lt;br /&gt;
&lt;br /&gt;
## Die Funktion &amp;#039;&amp;#039;evaluateFieldValue ($value, $is_in, &amp;amp;$set)&amp;#039;&amp;#039; hat folgende Übergabewerte: &amp;#039;&amp;#039;$value&amp;#039;&amp;#039; ist der Feldinhalt, &amp;#039;&amp;#039;$is_in&amp;#039;&amp;#039; enthält die Werte aus der Typo3 Eval Funktion is_in (Filtert Zeichen aus), &amp;#039;&amp;#039;&amp;amp;$set&amp;#039;&amp;#039; ist Boolean und legt fest ob der Wert in die Datenbank geschrieben wird oder nicht. Wird per Referenz übergeben. &lt;br /&gt;
&lt;br /&gt;
# In ext_localconf.php muß die Klasse registriert werden damit sie zur Verfügung steht&lt;br /&gt;
&lt;br /&gt;
# In tca.php kann nun den Backendeingabefeldern die Evaluierung zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;class.tx_exampleextraevaluations_extraeval1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class tx_exampleextraevaluations_extraeval1 {&lt;br /&gt;
    function returnFieldJS() {&lt;br /&gt;
        return &amp;#039;&lt;br /&gt;
        return value + &amp;quot; [added by JS]&amp;quot;;&lt;br /&gt;
        &amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
    function evaluateFieldValue($value, $is_in, &amp;amp;$set) {&lt;br /&gt;
        return $value.&amp;#039; [added by PHP]&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Register new evaluation method in the $TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;tce&amp;#039;][&amp;#039;formevals&amp;#039;] array.&lt;br /&gt;
$TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;tce&amp;#039;][&amp;#039;formevals&amp;#039;][&amp;#039;tx_exampleextraevaluations_extraeval1&amp;#039;] = &amp;#039;EXT:example_extraevaluations/class.tx_pupmanager_extraeval1.php&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Beispiel zum Aufruf in tca.php &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
 &amp;#039;eval&amp;#039; =&amp;gt; &amp;#039;trim,tx_exampleextraevaluations_extraeval1&amp;#039;,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felder in Abhängigkeit von anderen anzeigen oder verstecken ==&lt;br /&gt;
===Möglichkeit 1: in der Felddefinition===&lt;br /&gt;
Für jedes Feld das eventuell versteckt werden soll, wird eine Bedingung angegeben&lt;br /&gt;
Im TCA (tca.php) unter&lt;br /&gt;
 [&amp;#039;columns&amp;#039;][fieldname] &lt;br /&gt;
 displayCond&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiele:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This example will require the field named &amp;quot;tx_templavoila_ds&amp;quot; to be true, otherwise the field for which this rule is set will not be displayed:&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;displayCond&amp;#039; =&amp;gt; &amp;#039;FIELD:tx_templavoila_ds:REQ:true&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
This example requires the extension &amp;quot;static_info_tables&amp;quot; to be loaded, otherwise the field is not displayed. (This is useful if the field makes a look-up on a table coming from another extension!)&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;displayCond&amp;#039; =&amp;gt; &amp;#039;EXT:static_info_tables:LOADED:true&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
Wie man sieht ist der String mit : in verschiedene Bereiche aufgeteilt. &lt;br /&gt;
Teil 1 ist der Regeltyp. FIELD bezieht sich z.B. auf ein Feld im selben Datensatz. Je nachdem was im ersten Teil steht kann man weitere Teile angeben.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.1.0/view/4/2/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Möglichkeit 2: mit Paletten===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Möglichkeit 3: ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Reihenfolge der Felder im Backend ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;#039;types&amp;#039;][key]&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;#039;types&amp;#039; =&amp;gt; Array (&lt;br /&gt;
 &amp;#039;0&amp;#039; =&amp;gt; Array(&amp;#039;showitem&amp;#039; =&amp;gt; &amp;#039;hidden;;1, type, title, test_template&amp;#039;),&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The key &amp;quot;showitem&amp;quot; lists the order in which to define the fields: &amp;quot;hidden, type, title, test_template&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(nicht mit showRecordFieldList verwechseln - das legt nur Fest was überhaupt angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
== Default Werte in Backend-Feldern ==&lt;br /&gt;
useColumnsForDefaultValues&lt;br /&gt;
&lt;br /&gt;
== Tabs in Backend Formularen ==&lt;br /&gt;
dividers2tabs(in types)&lt;br /&gt;
&lt;br /&gt;
== Funktionen vor oder nach der Backendeingabe ausführen ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Verwendete Dateien:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ext_localconf.php (register hook here)&lt;br /&gt;
class.tx_myExtension_post-or whatever.php (functionality)&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Dies kann mit Hooks realisiert werden.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/development/articles/how-to-use-existing-hooks/page/2/&lt;br /&gt;
&lt;br /&gt;
Daten die vom Backend übermittelt werden werden in der Klasse t3lib_tcemain bearbeitet. Das wäre der geeignete Ort um einzugreifen.&lt;br /&gt;
Diese liegt in &amp;#039;&amp;#039;&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;&amp;#039;&amp;#039;. Jetzt wäre es natürlich blöde in den Core Dateien herumzufuhrwerken. Aber es gibt ja das Hook Konzept, mit dem ein Programmierer Schnittstellen bereitstellen kann um die Funktionalität zu erweitern. Netterweise hat ein lieber Core Programmierer schon zwei Hooks vorgesehen die vor bzw. nachdem speichern der Daten im Backend genutzt werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es gibt 2 Möglichkeiten den Hook zu nutzen. &amp;#039;&amp;#039;&amp;#039;callUserFunction&amp;#039;&amp;#039;&amp;#039; und the &amp;#039;&amp;#039;&amp;#039;getUserObj&amp;#039;&amp;#039;&amp;#039;. Wobei zweitere die schickere (weil ansatzweise Objektorientiert) ist. Auf die callUserFunction gehen wir zunächst hier nicht ein.&lt;br /&gt;
&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;getUserObj Methode&amp;#039;&amp;#039;&amp;#039; stellt uns auch der folgende Hook zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schauen wir uns den Code des Post Process Hooks in der Datei class.t3li_tcemain.php an:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Hook: processDatamap_postProcessFieldArray&lt;br /&gt;
reset($hookObjectsArr);&lt;br /&gt;
while (list(,$hookObj) = each($hookObjectsArr)) {&lt;br /&gt;
    if (method_exists ($hookObj, &amp;#039;processDatamap_postProcessFieldArray&amp;#039;)) {&lt;br /&gt;
        $hookObj-&amp;gt;processDatamap_postProcessFieldArray ($status, $table, $id, $fieldArray, $this);&lt;br /&gt;
    } &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im obigen Code-Schnipsel aus TCE-Main wird ein Array $hookObjectsArr übergeben und eine Methode processDatamap_postProcessFieldArray wird aufgerufen wenn dieses Existiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1. Klasse schreiben ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wir schreiben einfach eine Klasse&amp;#039;&amp;#039;&amp;#039; in der wir die Funktion processDatamap_postProcessFieldArray überschreiben und hier unserer eigene Funktion bereitstellen.&lt;br /&gt;
&lt;br /&gt;
2.1 Funktion Registrieren&lt;br /&gt;
in der Core Datei wird die &amp;#039;&amp;#039;&amp;#039;Funktion im Globalen Array $TYPO3_CONF_VARS registriert&amp;#039;&amp;#039;&amp;#039;. Genauso müssen wir das mit unserer neuen Funktion machen. Die neuen Methoden Registrieren wir in &amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Typo 3 hat seine Klasse so registriert:&lt;br /&gt;
&lt;br /&gt;
process_datamap function des Typo3 Core (obige Datei):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 // First prepare user defined objects (if any) for hooks which extend this function:&lt;br /&gt;
$hookObjectsArr = array();&lt;br /&gt;
if (is_array ($TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;])) {&lt;br /&gt;
    foreach ($TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;] as $classRef) {&lt;br /&gt;
        $hookObjectsArr[] = &amp;amp;t3lib_div::getUserObj ($classRef);&lt;br /&gt;
    } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unserer neue Klasse soll genauso eine Instanz des Objekts in genau diesem Array $hookObjectsArr sein.&lt;br /&gt;
&lt;br /&gt;
Deshalb registrieren wir in der Datei &amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039;unserer Extension unsere Datei indem wir die Funktion genau wie oben im Array aufnehmen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $GLOBALS [&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;][] = &amp;#039;tx_myextension_tcemainprocdm&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Klassendatei laden ===&lt;br /&gt;
Jezt müssen wir noch aufpassen das die Klassendatei auch geladen wird wenn sie benötigt wird. Dazu können wir ein require_once statement in ext_tables.php unserer Extension hinzufügen oder besser folgendes machen.&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Laden und Registrieren der Klasse gleichzeitig ===&lt;br /&gt;
&lt;br /&gt;
Die getUserObj Methode erlaubt uns die beiden Schritte gleichzeitig auszuführen. Das können wir dann beides in &amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039; machen. Dann sieht die Zeile von vorhin &amp;#039;&amp;#039;&amp;#039;etwas anders&amp;#039;&amp;#039;&amp;#039; aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GLOBALS [&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;][] = &amp;#039;EXT:myextension/class.myextension_tcemainprocdm.php:tx_myextension_tcemainprocdm&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das hat zudem den Vorteil, das die Klasse nur dann aufgerufen wird wenn sie auch benötigt wird.&lt;br /&gt;
 &lt;br /&gt;
Another great advantage of this method is that your file will only be included if it&amp;#039;s really used! &lt;br /&gt;
postProcessFieldArray&amp;quot; in der Rubrik &amp;quot;processDatamap&lt;br /&gt;
&lt;br /&gt;
=== Wie Programmiert man ? ===&lt;br /&gt;
Für die Programmierung steht die Typo3 Core Engine zur Verfügung (TCE)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Das Konzept:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
When you are using TCE from your backend applications you need to prepare two arrays of information which contain the instructions to TCEmain of what actions to perform. They fall into two categories: Data and Commands.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Data&amp;quot; is when you want to write information to a database table or create a new record.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Commands&amp;quot; is when you want to move, copy or delete a record in the system.&lt;br /&gt;
&lt;br /&gt;
The data and commands are created as multidimensional arrays and to understand the API of TCEmain you simply need to understand the hierarchy of these two arrays.&lt;br /&gt;
&lt;br /&gt;
Commands Array ($cmd):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Syntax:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
$cmd[ tablename ][ uid ][ command ] = value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unsere Funktion:&lt;br /&gt;
Wird aufgerufen wenn Datensatz gespeichert wird&lt;br /&gt;
Parameter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$status-&amp;gt;update oder new, &lt;br /&gt;
$table -&amp;gt; die im Moment bearbeitete Tabelle, &lt;br /&gt;
$id-&amp;gt; bei status new ein Zufallscode Newxxxxx sonst die uid des Datensatzen, &lt;br /&gt;
&amp;amp;$fieldArray -&amp;gt; hier kann man einen Wert aus dem gerade zu speichernden Datensatz überschreiben&lt;br /&gt;
$reference -&amp;gt; das komplette cObj&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class tx_myextension_tcemainprocdm {&lt;br /&gt;
&lt;br /&gt;
    function processDatamap_postProcessFieldArray ($status, $table, $id, &amp;amp;$fieldArray, &amp;amp;$this) {&lt;br /&gt;
&lt;br /&gt;
        // here comes the code&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.71.42</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1284</id>
		<title>Typo3 Extensions - Backend Formulare und TCA Konfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Typo3_Extensions_-_Backend_Formulare_und_TCA_Konfiguration&amp;diff=1284"/>
		<updated>2008-02-14T12:29:20Z</updated>

		<summary type="html">&lt;p&gt;91.47.71.42: /* Felder in Abhängigkeit von anderen anzeigen oder verstecken */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Aussehen von Backend Formularen ===&lt;br /&gt;
&lt;br /&gt;
Definiert im TCA Array. In Extensions wird es in den Dateien &amp;#039;&amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;tca.php&amp;#039;&amp;#039;&amp;#039; festgelegt.&lt;br /&gt;
Die Ebenen des Arrays sind wie folgt angelegt.&lt;br /&gt;
&lt;br /&gt;
=== Verschiedenes ===&lt;br /&gt;
Bereich &amp;#039;&amp;#039;&amp;#039;ctrl&amp;#039;&amp;#039;&amp;#039; wird immer gleich geladen die anderen BEreiche erst dynamisch. Wenn sie benutzt werden mit &lt;br /&gt;
&lt;br /&gt;
 t3lib_loadTCA(&amp;#039;your_table_name&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
nachladen&lt;br /&gt;
&lt;br /&gt;
=== Level 1 ===&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;Schlüssel entsprechen den DB-Tabellen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Grundsätzliche Einstellungen in &amp;#039;&amp;#039;ext_tables.php&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Level 2 und 3 ===&lt;br /&gt;
&lt;br /&gt;
Diese beziehen sich auf die &amp;#039;&amp;#039;&amp;#039;Struktur eines Tabelleneintrags&amp;#039;&amp;#039;&amp;#039; (so sieht also ein Datensatz im Backend aus) und werden meist in &amp;#039;&amp;#039;tca.php&amp;#039;&amp;#039; festgelegt.&lt;br /&gt;
&lt;br /&gt;
== Validierung von Backend Formularen ==&lt;br /&gt;
Für Backendfelder steht der Bereich eval zur Verfügung. Dort gibt es vorgefertigte Evaluierungsmöglichkeiten. Es können auch mittels einer Extension eigene JavaScripte zur Evaluierung gebastelt werden. Eine Beispielextension steht auch zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/api/&lt;br /&gt;
&lt;br /&gt;
 [&amp;#039;columns&amp;#039;][fieldname][&amp;#039;config&amp;#039;] / TYPE: &amp;quot;input&amp;quot;&lt;br /&gt;
 eval=&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
=== Eine Klasse für eigene Validierung einbauen ===&lt;br /&gt;
Folgende Schritte sind notwendig:&lt;br /&gt;
# Eine &amp;#039;&amp;#039;&amp;#039;Klasse zur Evaluierung&amp;#039;&amp;#039;&amp;#039; in der Extension anlegen in der Art: class.tx_meineextension_extraeval1&lt;br /&gt;
&lt;br /&gt;
## Diese Klasse enthält &amp;#039;&amp;#039;&amp;#039;zwei Funktionen&amp;#039;&amp;#039;&amp;#039;. Eine für die Evaluierung per &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039; bei der Eingabe und eine &amp;#039;&amp;#039;&amp;#039;php&amp;#039;&amp;#039;&amp;#039; Evaluierung nachdem der Datensatz gespeichert wurde. Unten steht die Beispielklasse aus der typo3.org API Dokumentation aus; sie fügt den eingegebenen Werten die unten gezeigten Strings hinzu.&lt;br /&gt;
&lt;br /&gt;
## Die Funktion &amp;#039;&amp;#039;returnFieldJS()&amp;#039;&amp;#039; gibt den &amp;#039;&amp;#039;&amp;#039;JavaScript Code&amp;#039;&amp;#039;&amp;#039; zurück. Im JavaScript steht die Variable &amp;#039;&amp;#039;value&amp;#039;&amp;#039; zur Verfügung die den Wert des Feldes enthält.&lt;br /&gt;
&lt;br /&gt;
## Die Funktion &amp;#039;&amp;#039;evaluateFieldValue ($value, $is_in, &amp;amp;$set)&amp;#039;&amp;#039; hat folgende Übergabewerte: &amp;#039;&amp;#039;$value&amp;#039;&amp;#039; ist der Feldinhalt, &amp;#039;&amp;#039;$is_in&amp;#039;&amp;#039; enthält die Werte aus der Typo3 Eval Funktion is_in (Filtert Zeichen aus), &amp;#039;&amp;#039;&amp;amp;$set&amp;#039;&amp;#039; ist Boolean und legt fest ob der Wert in die Datenbank geschrieben wird oder nicht. Wird per Referenz übergeben. &lt;br /&gt;
&lt;br /&gt;
# In ext_localconf.php muß die Klasse registriert werden damit sie zur Verfügung steht&lt;br /&gt;
&lt;br /&gt;
# In tca.php kann nun den Backendeingabefeldern die Evaluierung zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;class.tx_exampleextraevaluations_extraeval1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class tx_exampleextraevaluations_extraeval1 {&lt;br /&gt;
    function returnFieldJS() {&lt;br /&gt;
        return &amp;#039;&lt;br /&gt;
        return value + &amp;quot; [added by JS]&amp;quot;;&lt;br /&gt;
        &amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
    function evaluateFieldValue($value, $is_in, &amp;amp;$set) {&lt;br /&gt;
        return $value.&amp;#039; [added by PHP]&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Register new evaluation method in the $TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;tce&amp;#039;][&amp;#039;formevals&amp;#039;] array.&lt;br /&gt;
$TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;tce&amp;#039;][&amp;#039;formevals&amp;#039;][&amp;#039;tx_exampleextraevaluations_extraeval1&amp;#039;] = &amp;#039;EXT:example_extraevaluations/class.tx_pupmanager_extraeval1.php&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Beispiel zum Aufruf in tca.php &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
 &amp;#039;eval&amp;#039; =&amp;gt; &amp;#039;trim,tx_exampleextraevaluations_extraeval1&amp;#039;,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Felder in Abhängigkeit von anderen anzeigen oder verstecken ==&lt;br /&gt;
===Möglichkeit 1: in der Felddefinition===&lt;br /&gt;
Für jedes Feld das eventuell versteckt werden soll, wird eine Bedingung angegeben&lt;br /&gt;
Im TCA (tca.php) unter&lt;br /&gt;
 [&amp;#039;columns&amp;#039;][fieldname] &lt;br /&gt;
 displayCond&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiele:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This example will require the field named &amp;quot;tx_templavoila_ds&amp;quot; to be true, otherwise the field for which this rule is set will not be displayed:&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;displayCond&amp;#039; =&amp;gt; &amp;#039;FIELD:tx_templavoila_ds:REQ:true&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
This example requires the extension &amp;quot;static_info_tables&amp;quot; to be loaded, otherwise the field is not displayed. (This is useful if the field makes a look-up on a table coming from another extension!)&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;displayCond&amp;#039; =&amp;gt; &amp;#039;EXT:static_info_tables:LOADED:true&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
Wie man sieht ist der String mit : in verschiedene Bereiche aufgeteilt. &lt;br /&gt;
Teil 1 ist der Regeltyp. FIELD bezieht sich z.B. auf ein Feld im selben Datensatz. Je nachdem was im ersten Teil steht kann man weitere Teile angeben.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.1.0/view/4/2/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Möglichkeit 2: mit Paletten===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Möglichkeit 3: ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Reihenfolge der Felder im Backend ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;#039;types&amp;#039;][key]&lt;br /&gt;
Beispiel:&lt;br /&gt;
 &amp;#039;types&amp;#039; =&amp;gt; Array (&lt;br /&gt;
 &amp;#039;0&amp;#039; =&amp;gt; Array(&amp;#039;showitem&amp;#039; =&amp;gt; &amp;#039;hidden;;1, type, title, test_template&amp;#039;),&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The key &amp;quot;showitem&amp;quot; lists the order in which to define the fields: &amp;quot;hidden, type, title, test_template&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(nicht mit showRecordFieldList verwechseln - das legt nur Fest was überhaupt angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
== Default Werte in Backend-Feldern ==&lt;br /&gt;
useColumnsForDefaultValues&lt;br /&gt;
&lt;br /&gt;
== Tabs in Backend Formularen ==&lt;br /&gt;
dividers2tabs(in types)&lt;br /&gt;
&lt;br /&gt;
== Funktionen vor oder nach der Backendeingabe ausführen ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Verwendete Dateien:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ext_localconf.php (register hook here)&lt;br /&gt;
class.tx_myExtension_post-or whatever.php (functionality)&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Dies kann mit Hooks realisiert werden.&lt;br /&gt;
&lt;br /&gt;
http://typo3.org/development/articles/how-to-use-existing-hooks/page/2/&lt;br /&gt;
&lt;br /&gt;
Daten die vom Backend übermittelt werden werden in der Klasse t3lib_tcemain bearbeitet. Das wäre der geeignete Ort um einzugreifen.&lt;br /&gt;
Diese liegt in &amp;#039;&amp;#039;&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;&amp;#039;&amp;#039;. Jetzt wäre es natürlich blöde in den Core Dateien herumzufuhrwerken. Aber es gibt ja das Hook Konzept, mit dem ein Programmierer Schnittstellen bereitstellen kann um die Funktionalität zu erweitern. Netterweise hat ein lieber Core Programmierer schon zwei Hooks vorgesehen die vor bzw. nachdem speichern der Daten im Backend genutzt werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es gibt 2 Möglichkeiten den Hook zu nutzen. &amp;#039;&amp;#039;&amp;#039;callUserFunction&amp;#039;&amp;#039;&amp;#039; und the &amp;#039;&amp;#039;&amp;#039;getUserObj&amp;#039;&amp;#039;&amp;#039;. Wobei zweitere die schickere (weil ansatzweise Objektorientiert) ist. Auf die callUserFunction gehen wir zunächst hier nicht ein.&lt;br /&gt;
&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;getUserObj Methode&amp;#039;&amp;#039;&amp;#039; stellt uns auch der folgende Hook zur Verfügung. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schauen wir uns den Code des Post Process Hooks in der Datei class.t3li_tcemain.php an:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Hook: processDatamap_postProcessFieldArray&lt;br /&gt;
reset($hookObjectsArr);&lt;br /&gt;
while (list(,$hookObj) = each($hookObjectsArr)) {&lt;br /&gt;
    if (method_exists ($hookObj, &amp;#039;processDatamap_postProcessFieldArray&amp;#039;)) {&lt;br /&gt;
        $hookObj-&amp;gt;processDatamap_postProcessFieldArray ($status, $table, $id, $fieldArray, $this);&lt;br /&gt;
    } &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im obigen Code-Schnipsel aus TCE-Main wird ein Array $hookObjectsArr übergeben und eine Methode processDatamap_postProcessFieldArray wird aufgerufen wenn dieses Existiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1. Klasse schreiben ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wir schreiben einfach eine Klasse&amp;#039;&amp;#039;&amp;#039; in der wir die Funktion processDatamap_postProcessFieldArray überschreiben und hier unserer eigene Funktion bereitstellen.&lt;br /&gt;
&lt;br /&gt;
2.1 Funktion Registrieren&lt;br /&gt;
in der Core Datei wird die &amp;#039;&amp;#039;&amp;#039;Funktion im Globalen Array $TYPO3_CONF_VARS registriert&amp;#039;&amp;#039;&amp;#039;. Genauso müssen wir das mit unserer neuen Funktion machen. Die neuen Methoden Registrieren wir in &amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Typo 3 hat seine Klasse so registriert:&lt;br /&gt;
&lt;br /&gt;
process_datamap function des Typo3 Core (obige Datei):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 // First prepare user defined objects (if any) for hooks which extend this function:&lt;br /&gt;
$hookObjectsArr = array();&lt;br /&gt;
if (is_array ($TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;])) {&lt;br /&gt;
    foreach ($TYPO3_CONF_VARS[&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;] as $classRef) {&lt;br /&gt;
        $hookObjectsArr[] = &amp;amp;t3lib_div::getUserObj ($classRef);&lt;br /&gt;
    } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unserer neue Klasse soll genauso eine Instanz des Objekts in genau diesem Array $hookObjectsArr sein.&lt;br /&gt;
&lt;br /&gt;
Deshalb registrieren wir in der Datei &amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039;unserer Extension unsere Datei indem wir die Funktion genau wie oben im Array aufnehmen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $GLOBALS [&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;][] = &amp;#039;tx_myextension_tcemainprocdm&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Klassendatei laden ===&lt;br /&gt;
Jezt müssen wir noch aufpassen das die Klassendatei auch geladen wird wenn sie benötigt wird. Dazu können wir ein require_once statement in ext_tables.php unserer Extension hinzufügen oder besser folgendes machen.&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Laden und Registrieren der Klasse gleichzeitig ===&lt;br /&gt;
&lt;br /&gt;
Die getUserObj Methode erlaubt uns die beiden Schritte gleichzeitig auszuführen. Das können wir dann beides in &amp;#039;&amp;#039;&amp;#039;ext_localconf.php&amp;#039;&amp;#039;&amp;#039; machen. Dann sieht die Zeile von vorhin &amp;#039;&amp;#039;&amp;#039;etwas anders&amp;#039;&amp;#039;&amp;#039; aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GLOBALS [&amp;#039;TYPO3_CONF_VARS&amp;#039;][&amp;#039;SC_OPTIONS&amp;#039;][&amp;#039;t3lib/class.t3lib_tcemain.php&amp;#039;][&amp;#039;processDatamapClass&amp;#039;][] = &amp;#039;EXT:myextension/class.myextension_tcemainprocdm.php:tx_myextension_tcemainprocdm&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das hat zudem den Vorteil, das die Klasse nur dann aufgerufen wird wenn sie auch benötigt wird.&lt;br /&gt;
 &lt;br /&gt;
Another great advantage of this method is that your file will only be included if it&amp;#039;s really used! &lt;br /&gt;
postProcessFieldArray&amp;quot; in der Rubrik &amp;quot;processDatamap&lt;br /&gt;
&lt;br /&gt;
=== Wie Programmiert man ? ===&lt;br /&gt;
Für die Programmierung steht die Typo3 Core Engine zur Verfügung (TCE)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Das Konzept:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
When you are using TCE from your backend applications you need to prepare two arrays of information which contain the instructions to TCEmain of what actions to perform. They fall into two categories: Data and Commands.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Data&amp;quot; is when you want to write information to a database table or create a new record.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Commands&amp;quot; is when you want to move, copy or delete a record in the system.&lt;br /&gt;
&lt;br /&gt;
The data and commands are created as multidimensional arrays and to understand the API of TCEmain you simply need to understand the hierarchy of these two arrays.&lt;br /&gt;
&lt;br /&gt;
Commands Array ($cmd):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Syntax:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
$cmd[ tablename ][ uid ][ command ] = value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unsere Funktion:&lt;br /&gt;
Wird aufgerufen wenn Datensatz gespeichert wird&lt;br /&gt;
Parameter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$status-&amp;gt;update oder new, &lt;br /&gt;
$table -&amp;gt; die im Moment bearbeitete Tabelle, &lt;br /&gt;
$id-&amp;gt; bei status new ein Zufallscode Newxxxxx sonst die uid des Datensatzen, &lt;br /&gt;
&amp;amp;$fieldArray -&amp;gt; hier kann man einen Wert aus dem gerade zu speichernden Datensatz überschreiben&lt;br /&gt;
$reference -&amp;gt; das komplette cObj&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class tx_myextension_tcemainprocdm {&lt;br /&gt;
&lt;br /&gt;
    function processDatamap_postProcessFieldArray ($status, $table, $id, &amp;amp;$fieldArray, &amp;amp;$this) {&lt;br /&gt;
&lt;br /&gt;
        // here comes the code&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.47.71.42</name></author>
	</entry>
</feed>