Issue #6415178: Add a creatable element for each tag used in styles.
Problem
It should be implicit that any tag used in Styles be allowed by the HTML
filter. The Style plugin just isn't telling the validator which tags it
creates.
In this case, Style::getElementsSubset returns these elements:
<span class="text-large">
<span class="text-primary">
<span class="text-secondary">
None of these are considered createable because they all have attributes.
The plain, creatable, element is missing, i.e.
<span>
Solution
To fix this, Style::getElementsSubset could add a plain element for each
tag used in the styles list.
e.g.
public function getElementsSubset(): array {
$elements = array_column($this->configuration['styles'], 'element');
// Add a creatable element for each tag used in styles.
$ghs_config = HTMLRestrictions::fromString(implode($elements))->toGeneralHtmlSupportConfig();
$tags = array_column($ghs_config, 'name');
foreach ($tags as $tag) {
$elements[] = "<{$tag}>";
}
return $elements;
}
The tags and classes used in Styles are automatically added to/removed from
the HTML filter's list of allowed HTML tags as the list of Styles is updated by
the user.
Edited by Brad Treloar