feat: add brand_color variable for the email templates (#33421)

* feat: add brand_color variable for the email templates

* test: fix tests assertations

---------

Co-authored-by: Eugene Dyudyunov <evgen.dyudyunov@raccoongang.com>
This commit is contained in:
bydawen
2024-01-23 10:21:06 +02:00
committed by GitHub
parent e00b79c12a
commit 4ec70eb98b
16 changed files with 113 additions and 95 deletions

View File

@@ -406,10 +406,9 @@ class EmailChangeRequestTests(EventTestMixin, EmailTemplateTagMixin, CacheIsolat
subject='Request to change édX account e-mail', subject='Request to change édX account e-mail',
body_fragments=[ body_fragments=[
'We received a request to change the e-mail associated with', 'We received a request to change the e-mail associated with',
'your édX account from {old_email} to {new_email}.'.format( 'your édX account from',
old_email=old_email, old_email,
new_email=new_email, new_email,
),
'If this is correct, please confirm your new e-mail address by visiting:', 'If this is correct, please confirm your new e-mail address by visiting:',
f'http://edx.org/email_confirm/{registration_key}', f'http://edx.org/email_confirm/{registration_key}',
'Please do not reply to this e-mail; if you require assistance,', 'Please do not reply to this e-mail; if you require assistance,',
@@ -467,13 +466,11 @@ class EmailChangeConfirmationTests(EmailTestMixin, EmailTemplateTagMixin, CacheI
# Text fragments we expect in the body of the confirmation email # Text fragments we expect in the body of the confirmation email
self.email_fragments = [ self.email_fragments = [
"This is to confirm that you changed the e-mail associated with {platform_name}" "This is to confirm that you changed the e-mail associated with ",
" from {old_email} to {new_email}. If you did not make this request, please contact us immediately." str(settings.PLATFORM_NAME),
" Contact information is listed at:".format( "If you did not make this request, please contact us immediately. Contact information is listed at:",
platform_name=settings.PLATFORM_NAME, self.user.email,
old_email=self.user.email, PendingEmailChange.objects.get(activation_key=self.key).new_email,
new_email=PendingEmailChange.objects.get(activation_key=self.key).new_email
),
"We keep a log of old e-mails, so if this request was unintentional, we can investigate." "We keep a log of old e-mails, so if this request was unintentional, we can investigate."
] ]

View File

@@ -50,7 +50,7 @@
{% blocktrans trimmed asvar assist_msg %} {% blocktrans trimmed asvar assist_msg %}
If you need help, please use our web form at {start_anchor_web}{{ support_url }}{end_anchor} or email {start_anchor_email}{{ support_email }}{end_anchor}. If you need help, please use our web form at {start_anchor_web}{{ support_url }}{end_anchor} or email {start_anchor_email}{{ support_email }}{end_anchor}.
{% endblocktrans %} {% endblocktrans %}
{% interpolate_html assist_msg start_anchor_web='<a href="'|add:support_url|add:'">'|safe start_anchor_email='<a href="mailto:'|add:support_email|add:'">'|safe end_anchor='</a>'|safe %} {% interpolate_html assist_msg start_anchor_web='<a style="color: '|add:brand_color|add:';" href="'|add:support_url|add:'">'|safe start_anchor_email='<a style="color: '|add:brand_color|add:';" href="mailto:'|add:support_email|add:'">'|safe end_anchor='</a>'|safe %}
<br /> <br />
</p> </p>
</td> </td>

View File

@@ -3,6 +3,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block content %} {% block content %}
{% with old_email='<a href="mailto:'|add:old_email|add:'" style="color: '|add:brand_color|add:';">'|add:old_email|add:'</a>'|safe new_email='<a href="mailto:'|add:new_email|add:'" style="color: '|add:brand_color|add:';">'|add:new_email|add:'</a>'|safe %}
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td> <td>
@@ -31,4 +32,5 @@
</td> </td>
</tr> </tr>
</table> </table>
{% endwith %}
{% endblock %} {% endblock %}

View File

@@ -3,6 +3,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block content %} {% block content %}
{% with old_email='<a href="mailto:'|add:old_email|add:'" style="color: '|add:brand_color|add:';">'|add:old_email|add:'</a>'|safe new_email='<a href="mailto:'|add:new_email|add:'" style="color: '|add:brand_color|add:';">'|add:new_email|add:'</a>'|safe %}
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td> <td>
@@ -30,4 +31,5 @@
</td> </td>
</tr> </tr>
</table> </table>
{% endwith %}
{% endblock %} {% endblock %}

View File

@@ -1228,14 +1228,17 @@ class TestInstructorAPIEnrollment(SharedModuleStoreTestCase, LoginEnrollmentTest
assert text_body.startswith('Dear NotEnrolled Student\n\n') assert text_body.startswith('Dear NotEnrolled Student\n\n')
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert f'You have been enrolled in {self.course.display_name} at edx.org by a member of the course staff.'\ assert f'You have been enrolled in {self.course.display_name} at ' in body
in body assert self.site_name in body
assert ' by a member of the course staff.' in body
assert 'This course will now appear on your edx.org dashboard.' in body assert 'This course will now appear on your ' in body
assert f'{protocol}://{self.site_name}{self.course_path}' in body assert f'{protocol}://{self.site_name}{self.course_path}' in body
assert 'To start accessing course materials, please visit' in text_body assert 'To start accessing course materials, please visit' in text_body
assert 'This email was automatically sent from edx.org to NotEnrolled Student\n\n' in text_body assert (
f'This email was automatically sent from {self.site_name} to {self.notenrolled_student.first_name} '
f'{self.notenrolled_student.last_name}\n\n'
) in text_body
@ddt.data('http', 'https') @ddt.data('http', 'https')
def test_enroll_with_email_not_registered(self, protocol): def test_enroll_with_email_not_registered(self, protocol):
@@ -1264,22 +1267,21 @@ class TestInstructorAPIEnrollment(SharedModuleStoreTestCase, LoginEnrollmentTest
assert register_url in html_body assert register_url in html_body
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been invited to join {course} at edx.org by a member of the course staff.'.format( assert 'You have been invited to join {course} at '.format(
course=self.course.display_name course=self.course.display_name
) in body ) in body
assert self.site_name in body
assert ('fill out the registration form making sure to use ' assert ' by a member of the course staff.' in body
'robot-not-an-email-yet@robot.org in the Email field') in body assert 'fill out the registration form making sure to use ' in body
assert self.notregistered_email in body
assert ' in the Email field' in body
assert 'Once you have registered and activated your account,' in body assert 'Once you have registered and activated your account,' in body
assert '{proto}://{site}{about_path}'.format( assert '{proto}://{site}{about_path}'.format(
proto=protocol, proto=protocol,
site=self.site_name, site=self.site_name,
about_path=self.about_path about_path=self.about_path
) in body ) in body
assert 'This email was automatically sent from ' in body
assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body
@ddt.data('http', 'https') @ddt.data('http', 'https')
@patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': True}) @patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': True})
@@ -1302,23 +1304,22 @@ class TestInstructorAPIEnrollment(SharedModuleStoreTestCase, LoginEnrollmentTest
assert 'Please finish your registration and fill' in html_body assert 'Please finish your registration and fill' in html_body
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been invited to join {display_name} at edx.org by a member of the course staff.'.format( assert 'You have been invited to join {display_name} at '.format(
display_name=self.course.display_name display_name=self.course.display_name
) in body ) in body
assert self.site_name in body
assert 'by a member of the course staff.' in body
assert '{proto}://{site}/register'.format( assert '{proto}://{site}/register'.format(
proto=protocol, proto=protocol,
site=self.site_name site=self.site_name
) in body ) in body
assert 'fill out the registration form making sure to use ' in body
assert ('fill out the registration form making sure to use ' assert self.notregistered_email in body
'robot-not-an-email-yet@robot.org in the Email field') in body assert ' in the Email field' in body
assert 'You can then enroll in {display_name}.'.format( assert 'You can then enroll in {display_name}.'.format(
display_name=self.course.display_name display_name=self.course.display_name
) in body ) in body
assert 'This email was automatically sent from ' in body
assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body
@ddt.data('http', 'https') @ddt.data('http', 'https')
def test_enroll_with_email_not_registered_autoenroll(self, protocol): def test_enroll_with_email_not_registered_autoenroll(self, protocol):
@@ -1353,20 +1354,19 @@ class TestInstructorAPIEnrollment(SharedModuleStoreTestCase, LoginEnrollmentTest
assert register_url in html_body assert register_url in html_body
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been invited to join {display_name} at edx.org by a member of the course staff.'.format( assert 'You have been invited to join {display_name} at '.format(
display_name=self.course.display_name display_name=self.course.display_name
) in body ) in body
assert self.site_name in body
assert (' and fill ' assert 'by a member of the course staff.' in body
'out the registration form making sure to use robot-not-an-email-yet@robot.org ' assert ' and fill out the registration form making sure to use ' in body
'in the Email field') in body assert self.notregistered_email in body
assert 'in the Email field' in body
assert ('Once you have registered and activated your account, ' assert ('Once you have registered and activated your account, '
'you will see {display_name} listed on your dashboard.').format( 'you will see {display_name} listed on your dashboard.').format(
display_name=self.course.display_name display_name=self.course.display_name
) in body ) in body
assert 'This email was automatically sent from ' in body
assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body
def test_unenroll_without_email(self): def test_unenroll_without_email(self):
url = reverse('students_update_enrollment', kwargs={'course_id': str(self.course.id)}) url = reverse('students_update_enrollment', kwargs={'course_id': str(self.course.id)})
@@ -1461,13 +1461,15 @@ class TestInstructorAPIEnrollment(SharedModuleStoreTestCase, LoginEnrollmentTest
assert text_body.startswith('Dear Enrolled Student') assert text_body.startswith('Dear Enrolled Student')
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been unenrolled from {display_name} at edx.org by a member of the course staff.'.format( assert 'You have been unenrolled from {display_name} at '.format(
display_name=self.course.display_name, display_name=self.course.display_name,
) in body ) in body
assert self.site_name in body
assert 'This course will no longer appear on your edx.org dashboard.' in body assert ' by a member of the course staff.' in body
assert 'This course will no longer appear on your ' in body
assert 'Your other courses have not been affected.' in body assert 'Your other courses have not been affected.' in body
assert 'This email was automatically sent from edx.org to Enrolled Student' in body assert 'This email was automatically sent from ' in body
assert f'to {self.enrolled_student.first_name} {self.enrolled_student.last_name}' in body
def test_unenroll_with_email_allowed_student(self): def test_unenroll_with_email_allowed_student(self):
url = reverse('students_update_enrollment', kwargs={'course_id': str(self.course.id)}) url = reverse('students_update_enrollment', kwargs={'course_id': str(self.course.id)})
@@ -1519,7 +1521,9 @@ class TestInstructorAPIEnrollment(SharedModuleStoreTestCase, LoginEnrollmentTest
) in body ) in body
assert 'Please disregard the invitation previously sent.' in body assert 'Please disregard the invitation previously sent.' in body
assert 'This email was automatically sent from edx.org to robot-allowed@robot.org' in body assert 'This email was automatically sent from ' in body
assert self.site_name in body
assert self.allowed_email in body
@ddt.data('http', 'https') @ddt.data('http', 'https')
@patch('lms.djangoapps.instructor.enrollment.uses_shib') @patch('lms.djangoapps.instructor.enrollment.uses_shib')
@@ -1551,11 +1555,13 @@ class TestInstructorAPIEnrollment(SharedModuleStoreTestCase, LoginEnrollmentTest
assert course_url in html_body assert course_url in html_body
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been invited to join {display_name} at edx.org by a member of the course staff.'.format( assert 'You have been invited to join {display_name} at '.format(
display_name=self.course.display_name, display_name=self.course.display_name,
) in body ) in body
assert self.site_name in body
assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body assert ' by a member of the course staff.' in body
assert 'This email was automatically sent from ' in body
assert self.notregistered_email in body
@patch('lms.djangoapps.instructor.enrollment.uses_shib') @patch('lms.djangoapps.instructor.enrollment.uses_shib')
@patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': True}) @patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': True})
@@ -1576,11 +1582,13 @@ class TestInstructorAPIEnrollment(SharedModuleStoreTestCase, LoginEnrollmentTest
assert text_body.startswith('Dear student,') assert text_body.startswith('Dear student,')
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been invited to join {display_name} at edx.org by a member of the course staff.'.format( assert 'You have been invited to join {display_name} at '.format(
display_name=self.course.display_name, display_name=self.course.display_name,
) in body ) in body
assert self.site_name in body
assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body assert ' by a member of the course staff.' in body
assert 'This email was automatically sent from ' in body
assert self.notregistered_email in body
@ddt.data('http', 'https') @ddt.data('http', 'https')
@patch('lms.djangoapps.instructor.enrollment.uses_shib') @patch('lms.djangoapps.instructor.enrollment.uses_shib')
@@ -1611,11 +1619,13 @@ class TestInstructorAPIEnrollment(SharedModuleStoreTestCase, LoginEnrollmentTest
assert 'To access this course click on the button below and login:' in html_body assert 'To access this course click on the button below and login:' in html_body
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been invited to join {display_name} at edx.org by a member of the course staff.'.format( assert 'You have been invited to join {display_name} at '.format(
display_name=self.course.display_name, display_name=self.course.display_name,
) in body ) in body
assert ' by a member of the course staff.' in body
assert 'This email was automatically sent from edx.org to robot-not-an-email-yet@robot.org' in body assert 'This email was automatically sent from ' in body
assert self.site_name in body
assert self.notregistered_email in body
def test_enroll_already_enrolled_student(self): def test_enroll_already_enrolled_student(self):
""" """
@@ -1998,22 +2008,19 @@ class TestInstructorAPIBulkBetaEnrollment(SharedModuleStoreTestCase, LoginEnroll
assert f'Visit {self.course.display_name}' in html_body assert f'Visit {self.course.display_name}' in html_body
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been invited to be a beta tester for {display_name} at edx.org'.format( assert 'You have been invited to be a beta tester for {display_name} at '.format(
display_name=self.course.display_name, display_name=self.course.display_name,
) in body ) in body
assert self.site_name in body
assert 'by a member of the course staff.' in body assert 'by a member of the course staff.' in body
assert 'enroll in this course and begin the beta test' in body assert 'enroll in this course and begin the beta test' in body
assert '{proto}://{site}{about_path}'.format( assert '{proto}://{site}{about_path}'.format(
proto=protocol, proto=protocol,
site=self.site_name, site=self.site_name,
about_path=self.about_path, about_path=self.about_path,
) in body ) in body
assert 'This email was automatically sent from ' in body
assert 'This email was automatically sent from edx.org to {student_email}'.format( assert self.notenrolled_student.email in body
student_email=self.notenrolled_student.email,
) in body
@ddt.data('http', 'https') @ddt.data('http', 'https')
def test_add_notenrolled_with_email_autoenroll(self, protocol): def test_add_notenrolled_with_email_autoenroll(self, protocol):
@@ -2050,22 +2057,19 @@ class TestInstructorAPIBulkBetaEnrollment(SharedModuleStoreTestCase, LoginEnroll
assert text_body.startswith(f'Dear {student_name}') assert text_body.startswith(f'Dear {student_name}')
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been invited to be a beta tester for {display_name} at edx.org'.format( assert 'You have been invited to be a beta tester for {display_name} at '.format(
display_name=self.course.display_name, display_name=self.course.display_name,
) in body ) in body
assert self.site_name in body
assert 'by a member of the course staff' in body assert 'by a member of the course staff' in body
assert 'To start accessing course materials, please visit' in body assert 'To start accessing course materials, please visit' in body
assert '{proto}://{site}{course_path}'.format( assert '{proto}://{site}{course_path}'.format(
proto=protocol, proto=protocol,
site=self.site_name, site=self.site_name,
course_path=self.course_path course_path=self.course_path
) )
assert 'This email was automatically sent from ' in body
assert 'This email was automatically sent from edx.org to {student_email}'.format( assert self.notenrolled_student.email in body
student_email=self.notenrolled_student.email,
) in body
@patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': True}) @patch.dict(settings.FEATURES, {'ENABLE_MKTG_SITE': True})
def test_add_notenrolled_email_mktgsite(self): def test_add_notenrolled_email_mktgsite(self):
@@ -2081,16 +2085,14 @@ class TestInstructorAPIBulkBetaEnrollment(SharedModuleStoreTestCase, LoginEnroll
assert text_body.startswith(f'Dear {student_name}') assert text_body.startswith(f'Dear {student_name}')
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been invited to be a beta tester for {display_name} at edx.org'.format( assert 'You have been invited to be a beta tester for {display_name} at '.format(
display_name=self.course.display_name, display_name=self.course.display_name,
) in body ) in body
assert self.site_name in body
assert 'by a member of the course staff.' in body assert 'by a member of the course staff.' in body
assert 'Visit edx.org' in body
assert 'enroll in this course and begin the beta test' in body assert 'enroll in this course and begin the beta test' in body
assert 'This email was automatically sent from edx.org to {student_email}'.format( assert 'This email was automatically sent from ' in body
student_email=self.notenrolled_student.email, assert self.notenrolled_student.email in body
) in body
def test_enroll_with_email_not_registered(self): def test_enroll_with_email_not_registered(self):
# User doesn't exist # User doesn't exist
@@ -2184,18 +2186,15 @@ class TestInstructorAPIBulkBetaEnrollment(SharedModuleStoreTestCase, LoginEnroll
assert text_body.startswith(f'Dear {self.beta_tester.profile.name}') assert text_body.startswith(f'Dear {self.beta_tester.profile.name}')
for body in [text_body, html_body]: for body in [text_body, html_body]:
assert 'You have been removed as a beta tester for {display_name} at edx.org'.format( assert 'You have been removed as a beta tester for {display_name} at '.format(
display_name=self.course.display_name, display_name=self.course.display_name,
) in body ) in body
assert self.site_name in body
assert ('This course will remain on your dashboard, but you will no longer be ' assert ('This course will remain on your dashboard, but you will no longer be '
'part of the beta testing group.') in body 'part of the beta testing group.') in body
assert 'Your other courses have not been affected.' in body assert 'Your other courses have not been affected.' in body
assert 'This email was automatically sent from ' in body
assert 'This email was automatically sent from edx.org to {email_address}'.format( assert self.beta_tester.email in body
email_address=self.beta_tester.email,
) in body
class TestInstructorAPILevelsAccess(SharedModuleStoreTestCase, LoginEnrollmentTestCase): class TestInstructorAPILevelsAccess(SharedModuleStoreTestCase, LoginEnrollmentTestCase):

View File

@@ -3,6 +3,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block content %} {% block content %}
{% with site_name='<a href="'|add:site_name|add:'" style="color: '|add:brand_color|add:';">'|safe|add:site_name|add:'</a>'|safe email_address='<a href="mailto:'|add:email_address|add:'" style="color: '|add:brand_color|add:';">'|safe|add:email_address|add:'</a>'|safe %}
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td> <td>
@@ -67,4 +68,5 @@
</td> </td>
</tr> </tr>
</table> </table>
{% endwith %}
{% endblock %} {% endblock %}

View File

@@ -3,6 +3,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block content %} {% block content %}
{% with site_name='<a href="'|add:site_name|add:'" style="color: '|add:brand_color|add:';">'|safe|add:site_name|add:'</a>'|safe email_address='<a href="mailto:'|add:email_address|add:'" style="color: '|add:brand_color|add:';">'|safe|add:email_address|add:'</a>'|safe %}
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td> <td>
@@ -81,4 +82,5 @@
</td> </td>
</tr> </tr>
</table> </table>
{% endwith %}
{% endblock %} {% endblock %}

View File

@@ -3,6 +3,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block content %} {% block content %}
{% with site_name='<a href="'|add:site_name|add:'" style="color: '|add:brand_color|add:';">'|safe|add:site_name|add:'</a>'|safe email_address='<a href="mailto:'|add:email_address|add:'" style="color: '|add:brand_color|add:';">'|safe|add:email_address|add:'</a>'|safe %}
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td> <td>
@@ -30,4 +31,5 @@
</td> </td>
</tr> </tr>
</table> </table>
{% endwith %}
{% endblock %} {% endblock %}

View File

@@ -3,6 +3,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block content %} {% block content %}
{% with site_name='<a href="'|add:site_name|add:'" style="color: '|add:brand_color|add:';">'|safe|add:site_name|add:'</a>'|safe %}
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td> <td>
@@ -39,4 +40,5 @@
</td> </td>
</tr> </tr>
</table> </table>
{% endwith %}
{% endblock %} {% endblock %}

View File

@@ -3,6 +3,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block content %} {% block content %}
{% with site_name='<a href="'|add:site_name|add:'" style="color: '|add:brand_color|add:';">'|safe|add:site_name|add:'</a>'|safe %}
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td> <td>
@@ -37,4 +38,5 @@
</td> </td>
</tr> </tr>
</table> </table>
{% endwith %}
{% endblock %} {% endblock %}

View File

@@ -3,6 +3,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block content %} {% block content %}
{% with site_name='<a href="'|add:site_name|add:'" style="color: '|add:brand_color|add:';">'|safe|add:site_name|add:'</a>'|safe email_address='<a href="mailto:'|add:email_address|add:'" style="color: '|add:brand_color|add:';">'|safe|add:email_address|add:'</a>'|safe %}
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td> <td>
@@ -44,4 +45,5 @@
</td> </td>
</tr> </tr>
</table> </table>
{% endwith %}
{% endblock %} {% endblock %}

View File

@@ -3,6 +3,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block content %} {% block content %}
{% with dashboard_link='<a href="'|add:dashboard_link|add:'" style="color: '|add:brand_color|add:';">'|add:dashboard_link|add:'</a>'|safe %}
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td> <td>
@@ -39,4 +40,5 @@
</td> </td>
</tr> </tr>
</table> </table>
{% endwith %}
{% endblock %} {% endblock %}

View File

@@ -29,6 +29,7 @@
{% google_analytics_tracking_pixel %} {% google_analytics_tracking_pixel %}
{% with brand_color="#005686" logo_max_height="65px" %}
<div bgcolor="#f5f5f5" lang="{{ LANGUAGE_CODE|default:"en" }}" dir="{{ LANGUAGE_BIDI|yesno:"rtl,ltr" }}" style=" <div bgcolor="#f5f5f5" lang="{{ LANGUAGE_CODE|default:"en" }}" dir="{{ LANGUAGE_BIDI|yesno:"rtl,ltr" }}" style="
margin: 0; margin: 0;
padding: 0; padding: 0;
@@ -79,7 +80,7 @@
<tr> <tr>
<td align="left" valign="top"> <td align="left" valign="top">
<a href="{% with_link_tracking homepage_url %}"> <a href="{% with_link_tracking homepage_url %}">
<img src="{{ logo_url }}" style="max-height: 65px;" height="auto" alt="{% filter force_escape %}{% blocktrans %}Go to {{ platform_name }} Home Page{% endblocktrans %}{% endfilter %}"/></a> <img src="{{ logo_url }}" style="max-height: {{ logo_max_height }};" height="auto" alt="{% filter force_escape %}{% blocktrans %}Go to {{ platform_name }} Home Page{% endblocktrans %}{% endfilter %}"/></a>
</td> </td>
</tr> </tr>
</table> </table>
@@ -218,8 +219,8 @@
{% get_action_links channel omit_unsubscribe_link=omit_unsubscribe_link as action_links %} {% get_action_links channel omit_unsubscribe_link=omit_unsubscribe_link as action_links %}
{% for action_link_url, action_link_text in action_links %} {% for action_link_url, action_link_text in action_links %}
<p> <p>
<a href="{{ action_link_url }}" style="color: #005686"> <a href="{{ action_link_url }}" style="color: {{ brand_color }};">
<font color="#005686"><b>{{ action_link_text }}</b></font> <font color="{{ brand_color }}"><b>{{ action_link_text }}</b></font>
</a> </a>
</p> </p>
{% endfor %} {% endfor %}
@@ -253,6 +254,7 @@
<![endif]--> <![endif]-->
</div> </div>
{% endwith %}
{# Debug info that is not user-visible #} {# Debug info that is not user-visible #}
<span id="ace-message-id" style="display:none;">{{ message.log_id }}</span> <span id="ace-message-id" style="display:none;">{{ message.log_id }}</span>

View File

@@ -21,11 +21,11 @@
border-radius: 4px; border-radius: 4px;
-webkit-border-radius: 4px; -webkit-border-radius: 4px;
-moz-border-radius: 4px; -moz-border-radius: 4px;
background-color: #005686; background-color: {{ brand_color }};
border-top: 12px solid #005686; border-top: 12px solid {{ brand_color }};
border-bottom: 12px solid #005686; border-bottom: 12px solid {{ brand_color }};
border-right: 50px solid #005686; border-right: 50px solid {{ brand_color }};
border-left: 50px solid #005686; border-left: 50px solid {{ brand_color }};
display: inline-block; display: inline-block;
"> ">
{# old email clients require the use of the font tag :( #} {# old email clients require the use of the font tag :( #}

View File

@@ -101,11 +101,11 @@
border-radius: 4px; border-radius: 4px;
-webkit-border-radius: 4px; -webkit-border-radius: 4px;
-moz-border-radius: 4px; -moz-border-radius: 4px;
background-color: #005686; background-color: {{ brand_color }};
border-top: 10px solid #005686; border-top: 10px solid {{ brand_color }};
border-bottom: 10px solid #005686; border-bottom: 10px solid {{ brand_color }};
border-right: 16px solid #005686; border-right: 16px solid {{ brand_color }};
border-left: 16px solid #005686; border-left: 16px solid {{ brand_color }};
display: inline-block; display: inline-block;
"> ">
{# old email clients require the use of the font tag :( #} {# old email clients require the use of the font tag :( #}

View File

@@ -2,6 +2,7 @@
{% load i18n %} {% load i18n %}
{% block content %} {% block content %}
{% with contact_email='<a href="'|add:contact_email|add:'" style="color: '|add:brand_color|add:';">'|safe|add:contact_email|add:'</a>'|safe %}
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation"> <table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr> <tr>
<td> <td>
@@ -44,4 +45,5 @@
</td> </td>
</tr> </tr>
</table> </table>
{% endwith %}
{% endblock %} {% endblock %}