Skip to content

fix(ckeditor): preserve summary and aria-* in Text plugin HTML - #1180

Merged
wesleyboar merged 1 commit into
mainfrom
fix/wysiwyg-details-summary
Jun 12, 2026
Merged

fix(ckeditor): preserve summary and aria-* in Text plugin HTML#1180
wesleyboar merged 1 commit into
mainfrom
fix/wysiwyg-details-summary

Conversation

@wesleyboar

@wesleyboar wesleyboar commented Jun 11, 2026

Copy link
Copy Markdown
Member

Overview

Text plugin saves were turning <summary> into escaped text and stripping aria-* because html5lib’s default allowlist includes <details> but not <summary> or WAI-ARIA attributes. This adds the minimum server and editor hooks so disclosure markup survives save and reload.

Changes

  • added configuration to allow <summary> for some aspect
  • added configuration to allow <summary> for another aspect
  • added configuration to support aria- attributes

Testing

  1. make start (or use running core_cms).
  2. Log in, open a page with ?edit, add or edit a Text plugin.
  3. In Source, paste:
    <details>
    <summary>Abstract</summary>
    <p aria-label="anything">Body text.</p>
    </details>
  4. Save, reopen the plugin, open Source again.
  5. Confirm <summary> is still a tag (not &lt;summary&gt;).
  6. Confirm aria-* attributes remain.

UI

before.mov
after.mov

Tip

I tested aria- too (and class and id), just didn't video that.

html5lib drops <summary> and aria-* on save; teach CKEditor 4 DTD for summary only.
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@wesleyboar
wesleyboar merged commit 48829e1 into main Jun 12, 2026
@wesleyboar
wesleyboar deleted the fix/wysiwyg-details-summary branch June 12, 2026 00:06
wesleyboar added a commit that referenced this pull request Jul 13, 2026
## Overview

Sortable tables get sort buttons and optional JS-built filter UI via
[`@tacc/html-filter-sort`](https://github.com/wesleyboar/Core-HTML-Filter-Sort);
`assets_core_delayed.html` loads the package from jsDelivr CDN.

## Related

- [RT
#42216](https://tickets.tacc.utexas.edu/Ticket/Display.html?id=42216)
- mimicked by TACC/tup-ui#558

<details>

- requires
    - #1180
    - https://github.com/wesleyboar/Core-HTML-Filter-Sort
- improves #1167
- simplified by #1202
- simplified by #1203

</details>

## Changes

- **deleted** `sortableTable.js`, `sortableTable.css`,
`sortable_table_filter_templates.html`, and the orphaned
`modules/sortableTable.html` demo doc (referenced the deleted CSS file
and pre-rename API names)
- **updated** `assets_core_delayed.html` to load
[`@tacc/html-filter-sort`](https://github.com/wesleyboar/Core-HTML-Filter-Sort)
JS and CSS from the npm CDN (package renamed twice: `sort-table` →
`filter-sort` → `html-filter-sort`; now on npm instead of a pinned
commit SHA), and pass `buttonClass` so sort buttons pick up Core-Styles'
link-button class
- **updated** `tmp/pr-1169.html` to use `data-filtersort-search` and
`data-filtersort-select-cols` (current library API; supersedes the
`data-sortable-*` names used in earlier iterations)

## Testing

1. Open `tmp/pr-1169.html` with a local static server.
2. Confirm sort, search, column selects, and result count update.
3. After deploy, any page with delayed core assets gets the filter UI
from `@tacc/html-filter-sort`.

## UI

Screenshots: pending upload

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant