Repository navigation
Tenant-branded card frame for invite and course-messages emails - #111
Merged
AliAlfaifi merged 1 commit intoSep 16, 2026
Merged
Conversation
Override the edx-ace templates for the instructor enrolment invite (enrollenrolled, allowedenroll) and the bulk course-messages email (bulkemail) with a centred card frame: the tenant's logo (lms_configs.logo_image_url, absolute + non-SVG, else the platform logo), a greeting, the course name in #1B8354, a #1B8354 CTA button, the stock opt-out lines, and a footer "All rights reserved to <PLATFORM_NAME> © <year>". Tenant values are read through eox-tenant's `ednx` template tags so they resolve in both the web-request and Celery send paths. The templates are pure Django templates: an IS_FILE_RENDERED hook keeps Tutor's Jinja pass off them locally (prod clones the repo raw). Five new msgids are added to the theme catalogs (ar/en/fr) and the .mo files recompiled. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Redesigns two learner emails — the instructor enrolment invite (
enrollenrolled,allowedenroll) and the bulk "course messages" email (bulkemail) — as a centred card: tenant logo at the top, greeting, bold title, course name in#1B8354, a#1B8354CTA button, the stock opt-out lines, and a footer "All rights reserved to © ". Every other edx-ace email keeps the stock frame.How it works
ace_common/edx_ace/common/fx_base_body.html+ CTA partialfx_cta.html; the three leafbody.htmlfiles extend the new frame (they shadow core by template name through comprehensive theming). Stockbase_body.html/return_to_course_cta.htmlare untouched.{% load ednx %}tags (tenant_get_value,get_lms_root_url), i.e. from the tenant-patchedsettings, so they resolve in both the web-request path (invites) and the Celery path (bulk email).lms_configs.logo_image_url(the theme-editor logo) when it is absolute and not SVG — mail clients do not render SVG — with root-relative values prefixed by the tenant root; otherwise the platform logo.lms_configs.PLATFORM_NAME, the same key the stock templates use (measured: set on 533/536 tenants, Arabic wins where both languages exist).plugin.py: anIS_FILE_RENDEREDhook keeps Tutor's Jinja pass off these Django templates (and.mofiles) locally; production clones this repo raw (PICASSO_THEME_DIRS), where Jinja never runs — so no{% raw %}anywhere.conf/locale/{ar,en,fr}with recompiled.mo(the image build compiles catalogs before copying themes, so the committed.mois what runs).Coverage (prod, 2026-09-16)
indigo); the 19 tenants onnelp-edx-theme-bragikeep the stock invite.theming_sitetheme(site_id=1, theme_dir_name='indigo')— because the Celery path resolves the global site'sSiteTheme(none today →DEFAULT_SITE_THEME = nelp-edx-theme). Only the coreCurrentSiteThemeMiddlewareused byemulate_http_requestreads that row; web/Studio requests use eox-theming and ignore it.logo_image_url; 88 of those are SVG and fall back to the platform logo until a PNG/JPG is uploaded.Verification
aranden(plus logo/name edge cases, 14 variants) insideoverhangio/openedx:20.0.5-indigowith the Tutor production settings: no template errors, RTL/LTR correct, frame markerid="fx-email-frame"present, translations resolved.tutor config savecopies the templates and.mobyte-for-byte (verbatim-copy check).id="fx-email-frame"in the raw source; the bulk one proves theSiteThemerow.🤖 Generated with Claude Code