Bug #92943
closedRTE ckeditor does not respect YAML configuration
100%
Description
Hello Core-Team,
the rte_ckeditor does not respect my YAML configuration. In following some examples.
The default value of bloclElementList is a comma separated list of HTML tags: "DIV,TABLE,BLOCKQUOTE,PRE,UL,OL,H1,H2,H3,H4,H5,H6,ADDRESS,DL,DD,HEADER,SECTION,FOOTER,NAV,ARTICLE,ASIDE"
I override these tags inside of YAML:
processing: blockElementList: - table - blockquote - ul - ol - h3 - h4 - h5
As we have YAML, these values will be converted into an array and will be processed by core that way:
$tags = array_unique(GeneralUtility::trimExplode(',', $tag, true));
Which results into $tags with a value of: [0 => "1"]
In case of "allowTagsOutside" it is working correct, as you check against "allowTagsOutside.":
// Override tags which are allowed outside of <p> tags if (isset($this->procOptions['allowTagsOutside'])) { if (!isset($this->procOptions['allowTagsOutside.'])) { $this->allowedTagsOutsideOfParagraphs = GeneralUtility::trimExplode(',', strtolower($this->procOptions['allowTagsOutside']), true); } else { $this->allowedTagsOutsideOfParagraphs = (array)$this->procOptions['allowTagsOutside.']; } }
In case of "allowAttribute" you only allow array. There is no check on string and no trimExplode on ",":
// Define which attributes are allowed on <p> tags if (isset($this->procOptions['allowAttributes.'])) { $this->allowedAttributesForParagraphTags = $this->procOptions['allowAttributes.']; }
Ok, another example
processing: HTMLparser_db: tags: p: fixAttrib: style: list: - 'text-align: left;' - 'text-align: right;'
This will be converted to an array, too. But this will break "range" and "list" processing as they expect a string value:
if ((string)$keepTags[$key]['fixAttrib'][$atName]['range'] !== '') { $keepTags[$key]['fixAttrib'][$atName]['range'] = GeneralUtility::trimExplode(',', $keepTags[$key]['fixAttrib'][$atName]['range']); } if ((string)$keepTags[$key]['fixAttrib'][$atName]['list'] !== '') { $keepTags[$key]['fixAttrib'][$atName]['list'] = GeneralUtility::trimExplode(',', $keepTags[$key]['fixAttrib'][$atName]['list']); }
Either all values must be compatible with string AND array, or we should deliver a new example of TYPO3s default YAML files where all properties are declared as string only.
Stefan