Project

General

Profile

Actions

Bug #92943

open

RTE ckeditor does not respect YAML configuration

Added by Stefan Froemken over 3 years ago. Updated over 3 years ago.

Status:
New
Priority:
Must have
Assignee:
-
Category:
RTE (rtehtmlarea + ckeditor)
Start date:
2020-11-27
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
10
PHP Version:
7.3
Tags:
Complexity:
Is Regression:
Sprint Focus:

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


Related issues 3 (3 open0 closed)

Related to TYPO3 Core - Bug #87400: CKEditor: assign correct CSS class to tags with entryHTMLparser_dbNew2019-01-11

Actions
Related to TYPO3 Core - Feature #87314: allowedAttribs / allowAttributes usage in configNew2018-12-31

Actions
Related to TYPO3 Core - Bug #97499: Wrong notation for value of allowedAttribs in Processing.yamlUnder Review2022-04-28

Actions
Actions #1

Updated by Stefan Froemken over 3 years ago

Same problem with "denyTags":

$denyTags = GeneralUtility::trimExplode(',', $this->procOptions['denyTags'] ?? '', true);

But in case of "allowTags" it works as you convert it back to comma separated list:

if (isset($this->procOptions['allowTags.']) && is_array($this->procOptions['allowTags.'])) {
    $keepTags = implode(',', $this->procOptions['allowTags.']);
} else {
    $keepTags = $this->procOptions['allowTags'] ?? '';
}
$keepTags = array_flip(GeneralUtility::trimExplode(',', $this->defaultAllowedTagsList . ',' . strtolower($keepTags), true));
Actions #2

Updated by Benni Mack about 2 years ago

  • Related to Bug #87400: CKEditor: assign correct CSS class to tags with entryHTMLparser_db added
Actions #3

Updated by Benni Mack about 2 years ago

  • Related to Feature #87314: allowedAttribs / allowAttributes usage in config added
Actions #4

Updated by Eric Harrer almost 2 years ago

  • Related to Bug #97499: Wrong notation for value of allowedAttribs in Processing.yaml added
Actions

Also available in: Atom PDF