[TYPO3-german] Problem extbase bidirektionale mm Beziehung

Eike Starkmann starkmann at undkonsorten.com
Thu Mar 14 14:04:46 CET 2013


Das ist das das Statement vom extbase Tracker, falls jemand mal ein 
ähnliches Problem hat.

Jep, you need to use select, because type group is
not officially supported by extbase.


Bis denne, Eike Starkmann

On 14.03.2013 13:12, Eike Starkmann wrote:
> Ui ui ui, stimmt, nun aber:
>
> $TCA['tx_medialibrary_domain_model_media'] = array(
> ...
> "playlist" => Array (
>      "exclude" => 1,
>      "label" => "playlist",
>      "l10n_mode" => "exclude",
>      "config" => Array (
>          "type" => "select",
>          "allowed" => "tx_medialibrary_domain_model_playlist",
>          'foreign_table' => 'tx_medialibrary_domain_model_playlist',
>          "size" => 10,
>          "minitems" => 0,
>          "maxitems" => 100,
>          "MM" => "tx_medialibrary_media_playlist_mm",
>          "MM_opposite_field" => "media",
>          )
>      ),
> ...
> Leider immer noch die gleiche SQl-Fehlermeldung:
>
> SELECT .* FROM tx_medialibrary_media_playlist_mm LEFT JOIN ON
> tx_medialibrary_media_playlist_mm.uid_foreign = .uid ...
>
> Das liefert setManyToManyRelation() zurrück:
>
> Tx_Extbase_Persistence_Mapper_ColumnMap Object
> (
>      [propertyName:protected] => playlist
>      [columnName:protected] => playlist
>      [typeOfRelation:protected] => RELATION_HAS_AND_BELONGS_TO_MANY
>      [childClassName:protected] =>
>      [childTableName:protected] => tx_medialibrary_domain_model_playlist
>      [childTableWhereStatement:protected] =>
>      [childSortByFieldName:protected] => sorting_foreign
>      [relationTableName:protected] => tx_medialibrary_media_playlist_mm
>      [relationTablePageIdColumnName:protected] =>
>      [relationTableMatchFields:protected] =>
>      [relationTableInsertFields:protected] =>
>      [relationTableWhereStatement:protected] =>
>      [parentKeyFieldName:protected] => uid_foreign
>      [parentTableFieldName:protected] =>
>      [childKeyFieldName:protected] => uid_local
> )
>
> Tx_Extbase_Persistence_Mapper_ColumnMap Object
> (
>      [propertyName:protected] => media
>      [columnName:protected] => media
>      [typeOfRelation:protected] => RELATION_HAS_AND_BELONGS_TO_MANY
>      [childClassName:protected] =>
>      [childTableName:protected] =>
>      [childTableWhereStatement:protected] =>
>      [childSortByFieldName:protected] => sorting
>      [relationTableName:protected] => tx_medialibrary_media_playlist_mm
>      [relationTablePageIdColumnName:protected] =>
>      [relationTableMatchFields:protected] =>
>      [relationTableInsertFields:protected] =>
>      [relationTableWhereStatement:protected] =>
>      [parentKeyFieldName:protected] => uid_local
>      [parentTableFieldName:protected] =>
>      [childKeyFieldName:protected] => uid_foreign
> )
> Sieht richtig aus.
>
> Aber siehe da:
>
> Nachdem ich die group von playlist in select geändert habe läuft alles
> wie gewünscht. Aber wie du schon meintest, eigendlich sollte das kein
> Problem sein, oder?
>
> Gruß, Eike
>
> P.S.:Vielen Danke für die Hilfe.
>
>
>
> On 14.03.2013 12:57, Stephan Schuler wrote:
>> :) Du hast schon wieder den gleichen Fehler gemacht, diesmal nur in
>> der anderen Tabelle.
>> "Opposite field" heißt doch "in der gegnerischen Tabelle heißt das
>> korrespondierende Feld:".
>>
>> Du musst '"MM_opposite_field" => "media"' in die property "playlist"
>> der Tabelle "domain_model_media" schreiben.
>>
>> Vergleiche mal die beiden fehlerhaften SQL-Queries. Im Query von
>> gestern war "_mm.uid_local = .uid", in dem von gerade ist
>> "_mm.uid_foreign = .uid". Du hast also gestern die Beziehung in die
>> eine Richtung falsch definiert und heute die Beziehung in die andere.
>> Ich bin immer fester der Überzeugung, dass dein einziger Fehler die
>> Angabe des MM_opposite_field ist.
>>
>> Außerdem sehe ich gerade, dass du select und group mischst. Entweder
>> du verwendetst "select", dann brauchst du die referenzierte Tabelle in
>> "foreign_table", oder du brauchst "group", dann muss die referenzierte
>> Tabelle in "allowed" genannt werden. Das dürfte nicht weiter tragisch
>> sein, weil dein Select sich auf das angegebene "foreign_table"
>> verlässt und das (bei dir identisch hinterlegte) "allowed" ignoriert.
>>
>> Gruß,
>>
>>
>> Stephan Schuler
>>
>> Web-Entwickler
>>
>> Telefon: +49 (911) 539909 - 0
>> E-Mail: Stephan.Schuler at netlogix.de
>> Website: media.netlogix.de
>> -----Ursprüngliche Nachricht-----
>> Von: typo3-german-bounces at lists.typo3.org
>> [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Eike
>> Starkmann
>> Gesendet: Donnerstag, 14. März 2013 12:43
>> An: German TYPO3 Userlist
>> Betreff: Re: [TYPO3-german] Problem extbase bidirektionale mm Beziehung
>>
>> Hallo Stephan,
>>
>> ich habe jetzt opposite_field in playlist:
>>
>> $TCA['tx_medialibrary_domain_model_media'] = array( ...
>> "playlist" => Array (
>>          "exclude" => 1,
>>          "label" => "playlist",
>>          "l10n_mode" => "exclude",
>>          "config" => Array (
>>                  "type" => "select",
>>                  "allowed" => "tx_medialibrary_domain_model_playlist",
>>                  'foreign_table' =>
>> 'tx_medialibrary_domain_model_playlist',
>>                  "size" => 10,
>>                  "minitems" => 0,
>>                  "maxitems" => 100,
>>                  "MM" => "tx_medialibrary_media_playlist_mm",
>>                  "MM_opposite_field" => "playlist",
>>                  )
>> ),
>> ...
>>
>> Im Backend geht wieder alles.
>>
>> In setManyToManyRelation() liefert mir $columnConfiguration:
>>
>> Array
>> (
>>       [type] => select
>>       [allowed] => tx_medialibrary_domain_model_playlist
>>       [foreign_table] => tx_medialibrary_domain_model_playlist
>>       [size] => 10
>>       [minitems] => 0
>>       [maxitems] => 100
>>       [MM] => tx_medialibrary_media_playlist_mm
>> )
>>
>> und
>>
>> Array
>> (
>>       [type] => group
>>       [internal_type] => db
>>       [allowed] => tx_medialibrary_domain_model_media
>>       [size] => 10
>>       [minitems] => 0
>>       [maxitems] => 100
>>       [MM] => tx_medialibrary_media_playlist_mm
>>       [MM_opposite_field] => playlist
>> )
>>
>> Trotzdem erhalte ich wieder ein SQL-Fehlermeldung:
>>
>> SELECT .* FROM tx_medialibrary_media_playlist_mm LEFT JOIN ON
>> tx_medialibrary_media_playlist_mm.uid_foreign = .uid WHERE
>> tx_medialibrary_media_playlist_mm.uid_local = '1' AND
>> (tx_medialibrary_domain_model_media.type='Tx_Medialibrary_Domain_Model_Media'
>>
>> OR
>> tx_medialibrary_domain_model_media.type='Tx_Medialibrary_Domain_Model_Media_Video'
>>
>> OR
>> tx_medialibrary_domain_model_media.type='Tx_Medialibrary_Domain_Model_Media_Audio')
>>
>> ORDER BY tx_medialibrary_media_playlist_mm.sorting ASC
>>
>> Dabei ist doch schon SELECT .* FROM ein Problem, da ein Tabellenname
>> fehlt.
>>
>> Was ich machen will ist ja medum.playlist.media
>>
>> Gruß Eike Starkmann
>>
>>
>> On 14.03.2013 11:20, Stephan Schuler wrote:
>>> Hallo Eike.
>>>
>>> Das Feld "MM_opposite_field" zeigt auf den Spaltennamen des anderen
>>> Datensatzes.
>>> Du hast zwei Möglichkeiten:
>>> * "playlist.media[ohne opposite_field];
>>> media.playlist[opposite_field=media]", hier ist playlist.uid uid_local
>>> und media.uid uid_foreign
>>> * "media.playlist[ohne opposite_field];
>>> playlist.media[opposite_field=playlist]", hier ist media.uid uid_local
>>> und playlist.uid uid_foreign
>>>
>>> Beides kommt technisch zu keinem Fehler, obwohl der Name der
>>> MM-Tabelle die zweite Variante nahe legt.
>>>
>>> Du hast zur Zeit "playlist.media[opposite_field=media];
>>> media.playlist[ohne opposite_field]". Das ist falsch.
>>>
>>> Die Aussage von "playlist.media[opposite_field=media]" ist:
>>> Es gibt die Tabelle "playlist", die hat die Spalte "media" in der sich
>>> Media-Elemente befinden (soweit korrekt) Dazu muss es media-Elemente
>>> geben, in deren Spalte "media" sich die Playlist wieder findet (und
>>> das ist falsch).
>>>
>>> Die Aussage von "media.playlist[ohne opposite_field]" ist:
>>> Es gibt die Tabelle "media", die hat die spalte "playlist" in der sich
>>> Playlist-Elemente befinden (soweit korrekt) Da kein opposite_field
>>> angegeben ist, ist uns die Rückbeziehung egal.
>>>
>>> Den relevanten Teil kannst du in t3lib_loadDBGroup::start()
>>> nachvollziehen, bzw. anschließend in t3lib_loadDBGroup::readMM(). Die
>>> Tatsache dass du ein MM_opposite_field hast ist alleine genug, im
>>> Select im Backend uid_local und uid_foreign zu tauschen. Es gäbe zwar
>>> weitere Konfigurationsmöglichkeiten, die fallen aber aufgrund des
>>> falschen MM_opposite_field alle auf das jeweilige default. Vielleicht
>>> hilft dir ein Breakpoint da weiter.
>>>
>>> Weiterhin könntest du mal einen Breakpoint nach
>>> Tx_Extbase_Persistence_Mapper_DataMapFactory::
>>> setManyToManyRelation() machen. Ich nehme an, dass im Fehlerfall
>>> $columnConfiguration einfach kein gültiges foreign_table enthält.
>>> Grund dafür dürfte sein, dass Extbase im Mapping deutlich mehr prüft
>>> und umher schiebt als es das TCEMain tut. Das wiederum liegt daran,
>>> dass das TCEMain ja schon mit Tabellennamen arbeitet, während Extbase
>>> Objektkonfiguration aufgrund von PHP-Klassennamen beachtet.
>>>
>>> Ich bleibe also bei meiner Vermutung: Dein MM_opposite_field ist an
>>> der falschen Stelle.
>>>
>>> Gruß,
>>>
>>>
>>>
>>>
>>> Stephan Schuler
>>>
>>> Web-Entwickler
>>>
>>> Telefon: +49 (911) 539909 - 0
>>> E-Mail: Stephan.Schuler at netlogix.de
>>> Website: media.netlogix.de
>>> -----Ursprüngliche Nachricht-----
>>> Von: typo3-german-bounces at lists.typo3.org
>>> [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Eike
>>> Starkmann
>>> Gesendet: Donnerstag, 14. März 2013 10:49
>>> An: German TYPO3 Userlist
>>> Betreff: Re: [TYPO3-german] Problem extbase bidirektionale mm
>>> Beziehung
>>>
>>> Hallo Stephan,
>>>
>>> On 14.03.2013 01:31, Stephan Schuler wrote:
>>>> Hallo Eike.
>>>>
>>>> Hast du das TCA selbst geschrieben oder hast du es dir erzeugen lassen?
>>>> Funktioniert die Zuordnung denn im TYPO3-Backend oder ist die schon
>>>> dort leer, wenn du die Bearbeitung von der Playlist-Seite bearbeitest?
>>>>
>>> Ja habe ich selber geschrieben. Müsste aber trotzdem korrekt sein. Im
>>> Backend funktioniert ja auch alles und mit "manuellen" Queries kann
>>> ich die Daten auch anfragen.
>>>
>>>> Wenn deine MM-Tabelle "media_playlist_mm" heißt bedeutet das, dass
>>>> Media deine Local-Side ist und Playlist deine Foreign-Side.
>>>> Laut Dokumentation von MM_opposite_field gehört das ins TCA der
>>>> Foreign-Side und muss dort den Property-Name der Local-Side benennen.
>>>> Demnach muss das MM_opposite_field ins TCA von Playlist, nicht in
>>>> das von Media.
>>> Jupp, aber so ist es ja auch ;-)
>>>>
>>>> http://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Select/
>>>> I ndex.html Leider lässt das aktuelle Dokumentationsformat keine
>>>> Referenz auf ein Attribut zu.
>>>> Und ich hätte als Beispiel nicht unbedingt die Unterscheidung
>>>> zwischen "a.employees" und "b.employers" verwendet.
>>> Da hast du recht. Aber MM_opposite_field ist leider nicht das Problem.
>>> Ich glaube auch das es im Backend dann nicht funktionieren würde.
>>>
>>> Gruß, Eike Starkmann
>>>>
>>>> Gruß,
>>>>
>>>>
>>>> Stephan Schuler
>>>>
>>>> Web-Entwickler
>>>>
>>>> Telefon: +49 (911) 539909 - 0
>>>> E-Mail: Stephan.Schuler at netlogix.de
>>>> Website: media.netlogix.de
>>>>
>>>>
>>>> --
>>>> netlogix GmbH & Co. KG
>>>> IT-Services | IT-Training | Media
>>>> Andernacher Straße 53 | 90411 Nürnberg
>>>> Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
>>>> E-Mail: info at netlogix.de | Internet: http://www.netlogix.de
>>>>
>>>> netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA
>>>> 13338) Persönlich haftende Gesellschafterin: netlogix Verwaltungs
>>>> GmbH (HRB 20634)
>>>> Umsatzsteuer-Identifikationsnummer: DE 233472254
>>>> Geschäftsführer: Stefan Buchta, Matthias Schmidt
>>>>
>>>>
>>>>
>>>> ________________________________________
>>>> Von: typo3-german-bounces at lists.typo3.org
>>>> [typo3-german-bounces at lists.typo3.org]" im Auftrag von
>>>> "Eike Starkmann [starkmann at undkonsorten.com]
>>>> Gesendet: Mittwoch, 13. März 2013 17:54
>>>> An: German TYPO3 Userlist
>>>> Betreff: Re: [TYPO3-german] Problem extbase bidirektionale mm
>>>> Beziehung
>>>>
>>>> Ich habe dazu mal ein Ticket gemacht, da ich glaube das das Problem
>>>> in extbase liegt:
>>>> http://forge.typo3.org/issues/46243
>>>>
>>>> Bis denne, Eike
>>>>
>>>> On 08.03.2013 14:00, Eike Starkmann wrote:
>>>>>
>>>>> Hallo,
>>>>> ich habe ein Problem mit einer Extbase Extension die ich gerade
>>>>> schreibe.
>>>>> Folgende Situation:
>>>>>
>>>>> Ich habe ein Objekt Media und ein Objekt Playlist Zwischen diesen
>>>>> besteht eine bidirektionale M:M Beziehung.
>>>>>
>>>>> Ich möchte jetzt zu einem bestimmten Medium (M) alle anderen Medien
>>>>> ausgeben, die in der gleichen Playliste (P) sind.
>>>>>
>>>>> Naive Vorgehensweise (pseudocode):
>>>>>
>>>>> //alle Playlisten zu dem das Medium gehört for M.paylist as
>>>>> playlistItem {
>>>>>
>>>>>         //alle Medien in der aktuellen playliste
>>>>>         for playlistItem.media as mediaItem{
>>>>>             ausgabe mediaItem
>>>>>         }
>>>>> }
>>>>> Und genau die innere Schleife funktioniert nicht und liefert einen
>>>>> SQL-Fehler.
>>>>>
>>>>> Hier ist der relevante Code:
>>>>>
>>>>> class Tx_Medialibrary_Domain_Model_Playlist extends
>>>>> Tx_Extbase_DomainObject_AbstractEntity {
>>>>>
>>>>>         /**
>>>>>          * Media of the playlist
>>>>>          *
>>>>>          * @var
>>>>> Tx_Extbase_Persistence_ObjectStorage<Tx_Medialibrary_Domain_Model_Media>
>>>>>
>>>>>          * @lazy
>>>>>          */
>>>>>         protected $media;
>>>>>
>>>>>         /**
>>>>>          * Adds a Media
>>>>>          *
>>>>>          * @param Tx_Medialibrary_Domain_Model_Media $media
>>>>>          * @return void
>>>>>          */
>>>>>         public function addMedia(Tx_Medialibrary_Domain_Model_Media
>>>>> $media) {
>>>>>             $this->media->attach($media);
>>>>>         }
>>>>>
>>>>>         /**
>>>>>          * Removes a Media
>>>>>          *
>>>>>          * @param Tx_Medialibrary_Domain_Model_Media $mediaToRemove
>>>>> The Category to be removed
>>>>>          * @return void
>>>>>          */
>>>>>         public function
>>>>> removeMedia(Tx_Medialibrary_Domain_Model_Media
>>>>> $mediaToRemove) {
>>>>>             $this->media->detach($mediaToRemove);
>>>>>         }
>>>>>
>>>>>         /**
>>>>>          * Returns the Media
>>>>>          *
>>>>>          * @return
>>>>> Tx_Extbase_Persistence_ObjectStorage<Tx_Medialibrary_Domain_Model_Me
>>>>> d
>>>>> ia>
>>>>> $media
>>>>>          */
>>>>>         public function getMedia() {
>>>>>             return $this->media;
>>>>>         }
>>>>>
>>>>>         /**
>>>>>          * Sets the media
>>>>>          *
>>>>>          * @param
>>>>> Tx_Extbase_Persistence_ObjectStorage<Tx_Medialibrary_Domain_Model_Me
>>>>> d
>>>>> ia>
>>>>> $media
>>>>>          * @return void
>>>>>          */
>>>>>         public function setMedia(Tx_Extbase_Persistence_ObjectStorage
>>>>> $media) {
>>>>>             $this->media = $media;
>>>>>         }
>>>>>
>>>>> }
>>>>>
>>>>> TCA:
>>>>>
>>>>> $TCA['tx_medialibrary_domain_model_playlist'] = array( ...
>>>>> "media" => Array (
>>>>>                         "exclude" => 1,
>>>>>                         "label" =>
>>>>> "LLL:EXT:medialibrary/Resources/Private/Language/locallang_db.xml:tx
>>>>> _ medialibrary_domain_model_playlist.media",
>>>>>
>>>>>                         "l10n_mode" => "exclude",
>>>>>                         "config" => Array (
>>>>>                                 "type" => "group",
>>>>>                                 "internal_type" => "db",
>>>>>                                 "allowed" =>
>>>>> "tx_medialibrary_domain_model_media",
>>>>>                                 "size" => 10,
>>>>>                                 "minitems" => 0,
>>>>>                                 "maxitems" => 100,
>>>>>                                 "MM" =>
>>>>> "tx_medialibrary_media_playlist_mm",
>>>>>                                 "MM_opposite_field" => "media",
>>>>>                         )
>>>>>                 ),
>>>>> ...
>>>>>
>>>>> $TCA['tx_medialibrary_domain_model_media'] = array( ...
>>>>>         "playlist" => Array (
>>>>>                         "exclude" => 1,
>>>>>                         "label" => "playlist",
>>>>>                         "l10n_mode" => "exclude",
>>>>>                         "config" => Array (
>>>>>                                 "type" => "select",
>>>>>                                 "allowed" =>
>>>>> "tx_medialibrary_domain_model_playlist",
>>>>>                                 'foreign_table' =>
>>>>> 'tx_medialibrary_domain_model_playlist',
>>>>>                                 "size" => 10,
>>>>>                                 "minitems" => 0,
>>>>>                                 "maxitems" => 100,
>>>>>                                 "MM" =>
>>>>> "tx_medialibrary_media_playlist_mm",
>>>>>                         )
>>>>>                 ),
>>>>> ...
>>>>>
>>>>> Fluid showAction von Media:
>>>>>
>>>>> <f:for each="{media.playlist}" as="playlistItem">
>>>>>             {playlistItem}
>>>>>             <f:for each="{playlistItem.media}" as="mediaItem">
>>>>>                 {mediaItem}
>>>>>             </f:for>
>>>>>         </f:for>
>>>>>
>>>>> SQL Fehler:
>>>>>
>>>>> SELECT .* FROM tx_medialibrary_media_playlist_mm LEFT JOIN ON
>>>>> tx_medialibrary_media_playlist_mm.uid_local = .uid WHERE
>>>>> tx_medialibrary_media_playlist_mm.uid_foreign = '1' AND
>>>>> (tx_medialibrary_domain_model_media.type='Tx_Medialibrary_Domain_Model_Media'
>>>>>
>>>>> OR
>>>>> tx_medialibrary_domain_model_media.type='Tx_Medialibrary_Domain_Model_Media_Video'
>>>>>
>>>>> OR
>>>>> tx_medialibrary_domain_model_media.type='Tx_Medialibrary_Domain_Mode
>>>>> l
>>>>> _Media_Audio') ORDER BY
>>>>> tx_medialibrary_media_playlist_mm.sorting_foreign ASC
>>>>>
>>>>>
>>>>> Es scheint also so, das bei
>>>>> tx_medialibrary_media_playlist_mm.uid_local
>>>>> = .uid Tx_Medialibrary_Domain_Model_Media nicht aufgelöst wird.
>>>>>
>>>>> Es müsste doch tx_medialibrary_media_playlist_mm.uid_local =
>>>>> Tx_Medialibrary_Domain_Model_Media.uid heissen, oder?
>>>>>
>>>>>
>>>>> Ist das jetzt ein Bug ober mache ich hier grundlegend was Falsch?
>>>>>
>>>>> Bis denne, Eike
>>>>>
>>>>
>>>>
>>>> --
>>>> EIKE STARKMANN
>>>>      starkmann at undkonsorten.com
>>>>      +49.30.20236354 [fon]
>>>>
>>>> UNDKONSORTEN GBR
>>>>      Waldemarstr. 38
>>>>      10999 Berlin
>>>>
>>>>      www.undkonsorten.com
>>>>      +49.30.20236354 [fon]
>>>>      +49.30.20236354-9 [fax]
>>>>
>>>>      thomas alboth, felix althaus + jochen biedermann
>>>> [gesellschafter] _______________________________________________
>>>> TYPO3-german mailing list
>>>> TYPO3-german at lists.typo3.org
>>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>>> _______________________________________________
>>>> TYPO3-german mailing list
>>>> TYPO3-german at lists.typo3.org
>>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>>>
>>>
>>>
>>> --
>>> EIKE STARKMANN
>>>     starkmann at undkonsorten.com
>>>     +49.30.20236354 [fon]
>>>
>>> UNDKONSORTEN GBR
>>>     Waldemarstr. 38
>>>     10999 Berlin
>>>
>>>     www.undkonsorten.com
>>>     +49.30.20236354 [fon]
>>>     +49.30.20236354-9 [fax]
>>>
>>>     thomas alboth, felix althaus + jochen biedermann  [gesellschafter]
>>> _______________________________________________
>>> TYPO3-german mailing list
>>> TYPO3-german at lists.typo3.org
>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>> _______________________________________________
>>> TYPO3-german mailing list
>>> TYPO3-german at lists.typo3.org
>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>>
>>
>>
>> --
>> EIKE STARKMANN
>>    starkmann at undkonsorten.com
>>    +49.30.20236354 [fon]
>>
>> UNDKONSORTEN GBR
>>    Waldemarstr. 38
>>    10999 Berlin
>>
>>    www.undkonsorten.com
>>    +49.30.20236354 [fon]
>>    +49.30.20236354-9 [fax]
>>
>>    thomas alboth, felix althaus + jochen biedermann  [gesellschafter]
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>
>
>


-- 
EIKE STARKMANN
  starkmann at undkonsorten.com
  +49.30.20236354 [fon]

UNDKONSORTEN GBR
  Waldemarstr. 38
  10999 Berlin

  www.undkonsorten.com
  +49.30.20236354 [fon]
  +49.30.20236354-9 [fax]

  thomas alboth, felix althaus + jochen biedermann  [gesellschafter]


More information about the TYPO3-german mailing list