Problem/Motivation
When adding the "elements" to a CKE5 plugin definition, you might want to use a wildcard to, for example, whitelist a set of classes on all HTML elements:
my_plugin:
ckeditor5:
plugins: [ htmlSupport.GeneralHtmlSupport ]
config:
htmlSupport:
allow:
- name:
regexp:
pattern: /.*/
classes: [my, whitelisted, classes]
drupal:
label: Whitelisted elements
library: core/ckeditor5.htmlSupport
elements:
- <* class="my whitelisted classes">
This is a not so strange scenario: think for example about keeping backwards compatibility with CKE4 while retaining some control on the markup.
But this will fail constraint validation, as it seems the <*> wildcard has already other two attributes whitelisted (lang and dir) by Drupal core CKE5 plugins, and it looks like the validator is searching for a exact match and won't consider <* class="my whitelisted classes">
to be a valid subset of <* dir="ltr rtl" lang class="my whitelisted classes">
:
The message:
The current CKEditor 5 build requires the following elements and attributes:
(...) <* dir="ltr rtl" lang class="my whitelisted classes"> (...)
The following elements are missing:
<* class="my whitelisted classes">
Steps to reproduce
- Create a format with Limit HTML allowed tags filter and CKE5
- Create a custom plugin that whitelists classes on all HTML elements by using the <* class="my class">
notation on the elements property.
- Try to save the format. It will fail as it won't pass constraint validation.
Proposed resolution
The validator should consider <* class="my whitelisted classes">
to be valid even if there are more attributes whitelisted on the same definition, i.e: <* dir="ltr rtl" lang class="my whitelisted classes">
.
Remaining tasks
User interface changes
None