Problem mit RTE bei eigener Extension (basierend auf IRRE) [Gelöst]

  • Gregor Gregor
    R2-D2
    0 x
    65 Beiträge
    0 Hilfreiche Beiträge
    30. 04. 2007, 23:20

    Hallo zusammen,

    habe mich zwar schon an die Mailinglist zum Thema gewandt, aber evtl. kann mir hier jemand weiterhelfen, der die nicht abonniert hat.

    Ich erstelle mir momentan meine erste eigene Extension, die auf dem neuen Inline Relational Record Editing-Konzept basiert. Bisher überraschend einfach und komfortabel zu nutzen, aber ich habe ein klitzekleines und dennoch massives Problem.

    Und zwar betrifft dies den RTE in Parent- und Child-Objekten. Folgendes Szenario:

    Ich habe eine Tabelle, die Downloads beinhaltet und den RTE für Beschreibungen nutzt. Als Child-Element habe ich eine "Credits"-Tabelle angelegt, bei der Credit-Listen über den RTE erzeugt werden von den Redakteuren.

    Jetzt zum eigentlichen Problem:

    Wenn ich einen neuen Download anlege, die Beschreibung ausfülle und dann ein Child-Element für die Credits erstelle, wird jeder Zugriff auf den Parent-RTE unmöglich. Sobald ich in das Textfeld klicke, springt er zum Child-RTE. Die Buttons oberhalb lassen sich anklicken. Minimiere ich das Child-Objekt, ist wieder ein Zugriff auf den Parent-RTE möglich.

    Das wäre ja noch akzeptabel, kritisch wird es allerdings beim abspeichern. Dann überschreibt er den Inhalt des Parent-RTE-Felds mit dem Content des Child-RTE-Felds. Egal, ob Child-Element offen oder minimiert.

    Bearbeitet man anschließend das Objekt, hat man Zugriff auf beide RTE-Felder gleichzeitig, kann in beiden Texte OHNE Überschreiben von Fremdfeldern verändern etc.

    Legt man ein weiteres Child-Element mit RTE an, geht das gleiche Spiel aber wieder von vorne los, wobei grundsätzlich nur das Parent-RTE-Feld überschrieben wird, nicht jedoch die RTE-Felder von anderen Child-Elementen.

    Hat jemand schon ein auf IRRE basierende Extension mit RTEs in Child- und Parent-Elementen zum laufen gebracht? Ich schätze nämlich, dass ich irgendwo einen extrem simplen Fehler gemacht habe, aber ich finde beim besten Willen nichts. Nachfolgend mal meine TCA in Auszügen (die relevanten Teile). Wäre nett, wenn da mal jemand grob drübergucken könnte, ob ihm was auffällt. Im Zweifelsfall kann ich auch die komplette Extension zur Verfügung stellen.

    Gruß
    Gregor

    [b]Parent-Element[/b]

    1. $TCA["tx_pmsdownloads_downloads"] = array (
    2. "ctrl" => $TCA["tx_pmsdownloads_downloads"]["ctrl"],
    3. "interface" => array (
    4. "showRecordFieldList" => "hidden,starttime,title,teaser,description,main_image,package,creator,
    5. overallsort,category,required_expansion,secondary_images,credits,
    6. house_details,recolors,creator_codex"
    7. ),
    8. "feInterface" => $TCA["tx_pmsdownloads_downloads"]["feInterface"],
    9. "columns" => array (
    10. 'hidden' => array (
    11. 'exclude' => 1,
    12. 'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.hidden',
    13. 'config' => array (
    14. 'type' => 'check',
    15. 'default' => '0'
    16. )
    17. ),
    18. 'starttime' => array (
    19. 'exclude' => 1,
    20. 'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.starttime',
    21. 'config' => array (
    22. 'type' => 'input',
    23. 'size' => '8',
    24. 'max' => '20',
    25. 'eval' => 'date',
    26. 'default' => '0',
    27. 'checkbox' => '0'
    28. )
    29. ),
    30. "title" => Array (
    31. "exclude" => 0,
    32. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.title",
    33. "config" => Array (
    34. "type" => "input",
    35. "size" => "30",
    36. "eval" => "required",
    37. )
    38. ),
    39. "teaser" => Array (
    40. "exclude" => 0,
    41. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.teaser",
    42. "config" => Array (
    43. "type" => "text",
    44. "cols" => "30",
    45. "rows" => "5",
    46. )
    47. ),
    48. "description" => Array (
    49. "exclude" => 0,
    50. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.description",
    51. "config" => Array (
    52. "type" => "text",
    53. "wrap" => "OFF",
    54. "cols" => "30",
    55. "rows" => "5",
    56. )
    57. ),
    58. "main_image" => Array (
    59. "exclude" => 0,
    60. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.main_image",
    61. "config" => Array (
    62. "type" => "group",
    63. "internal_type" => "file",
    64. "allowed" => "gif,png,jpeg,jpg",
    65. "max_size" => 1000,
    66. "uploadfolder" => "uploads/tx_pmsdownloads",
    67. "show_thumbs" => 1,
    68. "size" => 3,
    69. "minitems" => 1,
    70. "maxitems" => 1,
    71. )
    72. ),
    73. "package" => Array (
    74. "exclude" => 0,
    75. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.package",
    76. "config" => Array (
    77. "type" => "group",
    78. "internal_type" => "file",
    79. "allowed" => "",
    80. "disallowed" => "php,php3",
    81. "max_size" => 10000,
    82. "uploadfolder" => "downloadfolder",
    83. "size" => 3,
    84. "minitems" => 1,
    85. "maxitems" => 1,
    86. )
    87. ),
    88. "creator" => Array (
    89. "exclude" => 0,
    90. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.creator",
    91. "config" => Array (
    92. "type" => "select",
    93. "foreign_table" => "tx_pmsdownloads_creators",
    94. "foreign_table_where" => "ORDER BY tx_pmsdownloads_creators.uid",
    95. "size" => 5,
    96. "minitems" => 1,
    97. "maxitems" => 1,
    98. )
    99. ),
    100. "overallsort" => Array (
    101. "exclude" => 0,
    102. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort",
    103. "config" => Array (
    104. "type" => "radio",
    105. "items" => Array (
    106. Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.0", "HOUSE"),
    107. Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.1", "OBJECT"),
    108. Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.2", "SETS"),
    109. Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.3", "SKINS"),
    110. Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.4", "PETS"),
    111. Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.5", "GENETICS"),
    112. Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.6", "ACCESSORIES"),
    113. Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.7", "WALLS"),
    114. Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.8", "RECOLOR"),
    115. ),
    116. )
    117. ),
    118. "category" => Array (
    119. "exclude" => 0,
    120. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.category",
    121. "config" => Array (
    122. "type" => "select",
    123. "foreign_table" => "tx_pmsdownloads_categories",
    124. "foreign_table_where" => "ORDER BY tx_pmsdownloads_categories.uid",
    125. "size" => 10,
    126. "minitems" => 1,
    127. "maxitems" => 10,
    128. "MM" => "tx_pmsdownloads_downloads_category_mm",
    129. )
    130. ),
    131. "required_expansion" => Array (
    132. "exclude" => 0,
    133. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.required_expansion",
    134. "config" => Array (
    135. "type" => "select",
    136. "items" => Array (
    137. Array("",0),
    138. ),
    139. "foreign_table" => "tx_pmsdownloads_expansionpacks",
    140. "foreign_table_where" => "ORDER BY tx_pmsdownloads_expansionpacks.uid",
    141. "size" => 3,
    142. "minitems" => 1,
    143. "maxitems" => 1,
    144. )
    145. ),
    146. "secondary_images" => Array (
    147. "exclude" => 0,
    148. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.secondary_images",
    149. "config" => Array (
    150. "type" => "inline",
    151. "foreign_table" => "tx_pmsdownloads_secondaryimages",
    152. "foreign_field" => "parentid",
    153. "foreign_table_field" => "parenttable",
    154. )
    155. ),
    156. "credits" => Array (
    157. "exclude" => 0,
    158. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.credits",
    159. "config" => Array (
    160. "type" => "inline",
    161. "foreign_table" => "tx_pmsdownloads_credits",
    162. "foreign_field" => "parentid",
    163. "foreign_table_field" => "parenttable",
    164. )
    165. ),
    166. "house_details" => Array (
    167. "exclude" => 0,
    168. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.house_details",
    169. "config" => Array (
    170. "type" => "inline",
    171. "foreign_table" => "tx_pmsdownloads_housedetails",
    172. "foreign_field" => "parentid",
    173. "foreign_table_field" => "parenttable",
    174. )
    175. ),
    176. "recolors" => Array (
    177. "exclude" => 0,
    178. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.recolors",
    179. "config" => Array (
    180. "type" => "inline",
    181. "foreign_table" => "tx_pmsdownloads_recolors",
    182. "foreign_field" => "parentid",
    183. "foreign_table_field" => "parenttable",
    184. )
    185. ),
    186. "creator_codex" => Array (
    187. "exclude" => 0,
    188. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.creator_codex",
    189. "config" => Array (
    190. "type" => "inline",
    191. "foreign_table" => "tx_pmsdownloads_creatorcodex",
    192. "foreign_field" => "parentid",
    193. "foreign_table_field" => "parenttable",
    194. )
    195. ),
    196. ),
    197. "types" => array (
    198. "0" => array("showitem" => "hidden;;1;;1-1-1, title;;;;2-2-2, teaser;;;;3-3-3, description;;;richtext[cut|copy|paste|formatblock|textcolor|bold|italic|underline|left|center|right|orderedlist|unorderedlist|outdent|indent|
    199. link|table|image|line|chMode]:rte_transform[mode=ts_css], main_image, package, creator, overallsort, category, required_expansion, secondary_images, credits, house_details, recolors, creator_codex")
    200. ),
    201. "palettes" => array (
    202. "1" => array("showitem" => "starttime")
    203. )
    204. );

    [b]Child-Element[/b]

    1. $TCA["tx_pmsdownloads_credits"] = array (
    2. "ctrl" => $TCA["tx_pmsdownloads_credits"]["ctrl"],
    3. "interface" => array (
    4. "showRecordFieldList" => "hidden,parentid,parenttable,credits"
    5. ),
    6. "feInterface" => $TCA["tx_pmsdownloads_credits"]["feInterface"],
    7. "columns" => array (
    8. 'hidden' => array (
    9. 'exclude' => 1,
    10. 'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.hidden',
    11. 'config' => array (
    12. 'type' => 'check',
    13. 'default' => '0'
    14. )
    15. ),
    16. "parentid" => Array (
    17. "config" => Array (
    18. "type" => "passthrough",
    19. )
    20. ),
    21. "parenttable" => Array (
    22. "config" => Array (
    23. "type" => "passthrough",
    24. )
    25. ),
    26. "credits" => Array (
    27. "exclude" => 0,
    28. "label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_credits.credits",
    29. "config" => Array (
    30. "type" => "text",
    31. "cols" => "30",
    32. "rows" => "5",
    33. )
    34. ),
    35. ),
    36. "types" => array (
    37. "0" => array("showitem" => "hidden;;1;;1-1-1, parentid, parenttable, credits;;;richtext[cut|copy|paste|formatblock|textcolor|bold|italic|underline|left|center|right|orderedlist|unorderedlist|outdent|indent|
    38. link|table|image|line|chMode]:rte_transform[mode=ts_css]")
    39. ),
    40. "palettes" => array (
    41. "1" => array("showitem" => "")
    42. )
    43. );
    [/code][/TS]


  • 1
  • Gregor Gregor
    R2-D2
    0 x
    65 Beiträge
    0 Hilfreiche Beiträge
    04. 05. 2007, 10:34

    Falls jemand das gleiche Problem haben sollte:

    Es ist/war ein Bug in der aktuellen Typo3 Version. Oliver Harder hat aber bereits einen Patch zur Verfügung gestellt, mit dem das Problem, dass RTE-Felder sich gegenseitig in IRRE-Objekten überschreiben, behoben wird.

    Infos und Patch gibt es hier: http://bugs.typo3.org/view.php?id=5556

    Gruß
    Gregor

  • semidark semidark
    R2-D2
    0 x
    116 Beiträge
    0 Hilfreiche Beiträge
    06. 07. 2007, 16:04

    Hallo Gregor,

    ich kämpfe auch bereits seit einiger zeit mit den RTE Problemen die mit IRRE einher gehen und bin antürlich auch in der Bug Datenbank fündig geworden.

    Allerdings weiß ich nicht wie ich den Patch auf meinem TYPO3 System anwenden kann.

    Könntest du mir da eventuell ein bisserl auf die Sprünge helfen?

    Danke im Voraus.

    Gruß Semidark

  • Gregor Gregor
    R2-D2
    0 x
    65 Beiträge
    0 Hilfreiche Beiträge
    06. 07. 2007, 16:09

    Man kann das direkt im Server über diese dif-Dateien durchlaufen lassen.

    Da ich von sowas keine Ahnung habe, hab ich einfach die Patch-Datei geöffnet (da steht ja, auf welche Datei und welche Zeilen sich das bezieht) und das dann in die Original-Datei (vorher Backup angelegt) kopiert bzw. dort ausgetauscht und anschließend wieder auf den Server geladen.

    Hat einwandfrei funktioniert, waren ja glaube ich nur 2 oder 3 Dateien, die angepasst werden mussten.

  • semidark semidark
    R2-D2
    0 x
    116 Beiträge
    0 Hilfreiche Beiträge
    06. 07. 2007, 16:32

    Hmmm schade.

    So hatte ich das auch probiert. Leider nur mit mäßigem erfolg.
    Als zweiten versuch habe ich mir dann die betroffenen Dateien aus Subversion
    reprository gezogen. Leider auch ohne Erfolg.

    Naja dann warte ich (oder Primär der Kunde) halt weiter auf den release der 4.1.2er version.

    Jemand ne idee wann die nächste version erscheinen soll. Habe schon überall nach einem Release date gesucht. In der Typo3 Bug Database hieß es in einer woche. Das war aber dummerweise bereits vor 2,5 Wochen.

    Bis dahin habe ich den RTE erstmal in den IRRE childs abgeschaltet.

    Gruß Semidark

  • 1