Skip to content

Fixed: Order view page CSS leak from embedded email communication content#1213

Open
toaditi wants to merge 1 commit into
apache:trunkfrom
toaditi:fix-order-conversation-css-leak
Open

Fixed: Order view page CSS leak from embedded email communication content#1213
toaditi wants to merge 1 commit into
apache:trunkfrom
toaditi:fix-order-conversation-css-leak

Conversation

@toaditi
Copy link
Copy Markdown
Contributor

@toaditi toaditi commented May 15, 2026

Summary

When a CommunicationEvent exists on an order, the OrderConversations screen dumps the stored email HTML (a full <!DOCTYPE html> document, with its own <style> block containing a global CSS reset) directly inline into the order view page. Browsers parse that <style> at document scope — not div scope — so the email's reset cascades into the parent page and breaks the order layout: tables lose padding, the body background changes, .screenlet styling is overridden, etc.

Fix

Render the email body inside an <iframe> so its CSS lives in its own document context and cannot leak. The stored content is HTML-entity-encoded, so it's decoded client-side via a <textarea> before being assigned to srcdoc.

One file changed: applications/party/template/party/DisplayCommunicationContent.ftl.

Test plan

  • Open an order that has at least one communication event (e.g. send an order confirmation email, then revisit the order view).
  • Expand the "All Communication Events" section.
  • Verify the email body renders inside a bordered iframe with the email's own styling (heading, cards, items table).
  • Verify the parent order view page styling is unaffected — tables, padding, screenlets all render normally.
  • Verify the iframe auto-resizes to fit the email content (onload handler).

…tent

When a communication event exists on an order, OrderConversations dumps the
stored email HTML (a full <!DOCTYPE html> document with its own <style>
block) directly into the order view page. That global CSS reset cascades
to the parent page and breaks the order layout — tables lose padding,
the body background changes, screenlets re-style, etc.

Render the email body inside an iframe so its styles are isolated. Decode
the HTML-entity-encoded content client-side via a textarea before assigning
to srcdoc, since the content is stored encoded in the DB.

Co-Authored-By: Claude Opus 4.7 (1M context) <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