Skip to content

Fixed: Order view page CSS leak from embedded email communication content (OFBIZ-13390)#1213

Merged
mridulpathak merged 1 commit into
apache:trunkfrom
toaditi:fix-order-conversation-css-leak
May 16, 2026
Merged

Fixed: Order view page CSS leak from embedded email communication content (OFBIZ-13390)#1213
mridulpathak merged 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) <[email protected]>
@JacquesLeRoux JacquesLeRoux changed the title Fixed: Order view page CSS leak from embedded email communication content Fixed: Order view page CSS leak from embedded email communication content (OFBIZ-13390) May 16, 2026
@mridulpathak mridulpathak merged commit 9659f49 into apache:trunk May 16, 2026
5 checks passed
mridulpathak pushed a commit that referenced this pull request May 16, 2026
…tent (OFBIZ-13390) (#1214)

Backport of [#1213](#1213)
to release24.09.

## 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).

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
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.

2 participants