- Issue created by @codesmith
- πΊπΈUnited States codesmith San Francisco
I got this working by creating a custom Twig filter for html_entity_decode and then adding it to a filter-caption.html.twig template override. Bit clunky though. Looks like Drupal Media can handle HTML in captions just fine.
- πΊπΈUnited States ericpugh
I had the same problem after moving from Drupal 9.5 to 10.2.
I can't figure out why this abruptly changed the way it rendered (some Twig 3 change?) but it's happening because the value is passed through escapeValue.
You could always remove the validate from the element, but of course... that's probably a bad idea.
function my_module_form_entity_embed_dialog_alter(&$form, FormStateInterface $form_state, $form_id) { $storage = $form_state->getStorage(); // On step three of the modal form remove validation from the caption field. if (isset($storage['step']) && $storage['step'] === 'embed') { if (isset($storage['entity_element']['data-caption'])) { unset($form['attributes']['data-caption']['#element_validate']); } } }
The source of this issue appears to be that the
data-caption
value is getting double-encoded, e.g.&<strong&>
instead of<strong>
as it used to be with CKEditor 4.This is because the dataDowncast step in the CKEditor 5 plugin is encoding the already-encoded
data-caption
value. Removing the escapeValue validation function as @ericpugh mentions should fix this, since it's handled by CKEditor already like Drupal's Core media module.I've created an MR which removes the
escapeValue
function and fixes the issue.There is an existing test for HTML in captions, but it didn't catch this issue since it's just testing a raw
<drupal-entity>
tag that has a correctly encodeddata-caption
attribute. This issue only manifests if the caption is set via the entity embed dialog.I'm not familiar enough with the tests here to know how to set up something that would cover this case, since it would need to interface with both the dialog and the CKEditor integration at the same time, and right now there only appear to be separate tests for each.
- Merge request !54Issue #3413647: Fix HTML tags getting double-encoded in data-caption β (Open) created by odensc