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
Parent-Element
$TCA["tx_pmsdownloads_downloads"] = array (
"ctrl" => $TCA["tx_pmsdownloads_downloads"]["ctrl"],
"interface" => array (
"showRecordFieldList" => "hidden,starttime,title,teaser,description,main_image,package,creator,
overallsort,category,required_expansion,secondary_images,credits,
house_details,recolors,creator_codex"
),
"feInterface" => $TCA["tx_pmsdownloads_downloads"]["feInterface"],
"columns" => array (
'hidden' => array (
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.hidden',
'config' => array (
'type' => 'check',
'default' => '0'
)
),
'starttime' => array (
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.starttime',
'config' => array (
'type' => 'input',
'size' => '8',
'max' => '20',
'eval' => 'date',
'default' => '0',
'checkbox' => '0'
)
),
"title" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.title",
"config" => Array (
"type" => "input",
"size" => "30",
"eval" => "required",
)
),
"teaser" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.teaser",
"config" => Array (
"type" => "text",
"cols" => "30",
"rows" => "5",
)
),
"description" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.description",
"config" => Array (
"type" => "text",
"wrap" => "OFF",
"cols" => "30",
"rows" => "5",
)
),
"main_image" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.main_image",
"config" => Array (
"type" => "group",
"internal_type" => "file",
"allowed" => "gif,png,jpeg,jpg",
"max_size" => 1000,
"uploadfolder" => "uploads/tx_pmsdownloads",
"show_thumbs" => 1,
"size" => 3,
"minitems" => 1,
"maxitems" => 1,
)
),
"package" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.package",
"config" => Array (
"type" => "group",
"internal_type" => "file",
"allowed" => "",
"disallowed" => "php,php3",
"max_size" => 10000,
"uploadfolder" => "downloadfolder",
"size" => 3,
"minitems" => 1,
"maxitems" => 1,
)
),
"creator" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.creator",
"config" => Array (
"type" => "select",
"foreign_table" => "tx_pmsdownloads_creators",
"foreign_table_where" => "ORDER BY tx_pmsdownloads_creators.uid",
"size" => 5,
"minitems" => 1,
"maxitems" => 1,
)
),
"overallsort" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort",
"config" => Array (
"type" => "radio",
"items" => Array (
Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.0", "HOUSE"),
Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.1", "OBJECT"),
Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.2", "SETS"),
Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.3", "SKINS"),
Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.4", "PETS"),
Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.5", "GENETICS"),
Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.6", "ACCESSORIES"),
Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.7", "WALLS"),
Array("LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.overallsort.I.8", "RECOLOR"),
),
)
),
"category" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.category",
"config" => Array (
"type" => "select",
"foreign_table" => "tx_pmsdownloads_categories",
"foreign_table_where" => "ORDER BY tx_pmsdownloads_categories.uid",
"size" => 10,
"minitems" => 1,
"maxitems" => 10,
"MM" => "tx_pmsdownloads_downloads_category_mm",
)
),
"required_expansion" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.required_expansion",
"config" => Array (
"type" => "select",
"items" => Array (
Array("",0),
),
"foreign_table" => "tx_pmsdownloads_expansionpacks",
"foreign_table_where" => "ORDER BY tx_pmsdownloads_expansionpacks.uid",
"size" => 3,
"minitems" => 1,
"maxitems" => 1,
)
),
"secondary_images" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.secondary_images",
"config" => Array (
"type" => "inline",
"foreign_table" => "tx_pmsdownloads_secondaryimages",
"foreign_field" => "parentid",
"foreign_table_field" => "parenttable",
)
),
"credits" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.credits",
"config" => Array (
"type" => "inline",
"foreign_table" => "tx_pmsdownloads_credits",
"foreign_field" => "parentid",
"foreign_table_field" => "parenttable",
)
),
"house_details" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.house_details",
"config" => Array (
"type" => "inline",
"foreign_table" => "tx_pmsdownloads_housedetails",
"foreign_field" => "parentid",
"foreign_table_field" => "parenttable",
)
),
"recolors" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.recolors",
"config" => Array (
"type" => "inline",
"foreign_table" => "tx_pmsdownloads_recolors",
"foreign_field" => "parentid",
"foreign_table_field" => "parenttable",
)
),
"creator_codex" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_downloads.creator_codex",
"config" => Array (
"type" => "inline",
"foreign_table" => "tx_pmsdownloads_creatorcodex",
"foreign_field" => "parentid",
"foreign_table_field" => "parenttable",
)
),
),
"types" => array (
"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|
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")
),
"palettes" => array (
"1" => array("showitem" => "starttime")
)
);
Child-Element
$TCA["tx_pmsdownloads_credits"] = array (
"ctrl" => $TCA["tx_pmsdownloads_credits"]["ctrl"],
"interface" => array (
"showRecordFieldList" => "hidden,parentid,parenttable,credits"
),
"feInterface" => $TCA["tx_pmsdownloads_credits"]["feInterface"],
"columns" => array (
'hidden' => array (
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.hidden',
'config' => array (
'type' => 'check',
'default' => '0'
)
),
"parentid" => Array (
"config" => Array (
"type" => "passthrough",
)
),
"parenttable" => Array (
"config" => Array (
"type" => "passthrough",
)
),
"credits" => Array (
"exclude" => 0,
"label" => "LLL:EXT:pms_downloads/locallang_db.xml:tx_pmsdownloads_credits.credits",
"config" => Array (
"type" => "text",
"cols" => "30",
"rows" => "5",
)
),
),
"types" => array (
"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|
link|table|image|line|chMode]:rte_transform[mode=ts_css]")
),
"palettes" => array (
"1" => array("showitem" => "")
)
);