Fix edx-ace templates
This patch is part of multiple PR's to protect templates against xss attack PROD-465
This commit is contained in:
@@ -380,8 +380,6 @@ class EmailChangeRequestTests(EventTestMixin, EmailTemplateTagMixin, CacheIsolat
|
||||
),
|
||||
u'If this is correct, please confirm your new e-mail address by visiting:',
|
||||
u'http://edx.org/email_confirm/{key}'.format(key=registration_key),
|
||||
u'If you didn\'t request this, you don\'t need to do anything;',
|
||||
u'you won\'t receive any more email from us.',
|
||||
u'Please do not reply to this e-mail; if you require assistance,',
|
||||
u'check the help section of the édX web site.',
|
||||
],
|
||||
@@ -403,7 +401,6 @@ class EmailChangeRequestTests(EventTestMixin, EmailTemplateTagMixin, CacheIsolat
|
||||
html = message.alternatives[0][0]
|
||||
|
||||
assert message.subject == subject
|
||||
|
||||
for body in text, html:
|
||||
for fragment in body_fragments:
|
||||
assert fragment in body
|
||||
|
||||
@@ -124,8 +124,10 @@ class ResetPasswordTests(EventTestMixin, CacheIsolationTestCase):
|
||||
cache.clear()
|
||||
|
||||
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', "Test only valid in LMS")
|
||||
@ddt.data('plain_text', 'html')
|
||||
def test_reset_password_email(self, body_type):
|
||||
@ddt.data(('plain_text', "You're receiving this e-mail because you requested a password reset"),
|
||||
('html', "You're receiving this e-mail because you requested a password reset"))
|
||||
@ddt.unpack
|
||||
def test_reset_password_email(self, body_type, expected_output):
|
||||
"""Tests contents of reset password email, and that user is not active"""
|
||||
good_req = self.request_factory.post('/password_reset/', {'email': self.user.email})
|
||||
good_req.user = self.user
|
||||
@@ -157,7 +159,7 @@ class ResetPasswordTests(EventTestMixin, CacheIsolationTestCase):
|
||||
body = bodies[body_type]
|
||||
|
||||
self.assertIn("Password reset", sent_message.subject)
|
||||
self.assertIn("You're receiving this e-mail because you requested a password reset", body)
|
||||
self.assertIn(expected_output, body)
|
||||
self.assertEquals(sent_message.from_email, from_email)
|
||||
self.assertEquals(len(sent_message.to), 1)
|
||||
self.assertIn(self.user.email, sent_message.to)
|
||||
|
||||
@@ -7,28 +7,34 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% trans "Create Password" %}
|
||||
{% trans "Create Password" as tmsg %}{{ tmsg | force_escape }}
|
||||
</h1>
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You're receiving this e-mail because you requested to create a password for your user account at {{ platform_name }}.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}We've restored access to your {{ platform_name }} account using the recovery email you provided at registration.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Once you've created a password [below], you will be able to log in to {{ platform_name }} with this email ({{ email }}) and your new password.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% trans "If you didn't request this change, you can disregard this email - we have not yet reset your password." %}
|
||||
{% trans "If you didn't request this change, you can disregard this email - we have not yet reset your password." as tmsg %}{{ tmsg | force_escape }}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
## xss-lint: disable=django-trans-missing-escape
|
||||
{% trans "Create Password" as course_cta_text %}
|
||||
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_cta_text course_cta_url=reset_link %}
|
||||
|
||||
@@ -7,18 +7,22 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% trans "Email Change" %}
|
||||
{% trans "Email Change" as tmsg %}{{ tmsg | force_escape }}
|
||||
</h1>
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}We received a request to change the e-mail associated with your {{ platform_name }} account from {{ old_email }} to {{ new_email }}. If this is correct, please confirm your new e-mail address by visiting:{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
## xss-lint: disable=django-trans-missing-escape
|
||||
{% trans "Confirm Email Change" as course_cta_text %}
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_cta_text course_cta_url=confirm_link %}
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}If you didn't request this, you don't need to do anything; you won't receive any more email from us. Please do not reply to this e-mail; if you require assistance, check the help section of the {{ platform_name }} web site.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
|
||||
@@ -7,17 +7,23 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Email Change Confirmation for {{ platform_name }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</h1>
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}This is to confirm that you changed the e-mail associated with {{ platform_name }} from {{ old_email }} to {{ new_email }}. If you did not make this request, please contact us immediately. Contact information is listed at:{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<a href="{{ contact_link }}">{{ contact_link }}</a>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}We keep a log of old e-mails, so if this request was unintentional, we can investigate.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
|
||||
@@ -7,29 +7,33 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% trans "Password Reset" %}
|
||||
{% trans "Password Reset" as tmsg %}{{ tmsg | force_escape }}
|
||||
</h1>
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You're receiving this e-mail because you requested a password reset for your user account at {{ platform_name }}.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
{% if failed %}
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}However, there is currently no user account associated with your email address: {{ email_address }}.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% trans "If you did not request this change, you can ignore this email." %}
|
||||
{% trans "If you did not request this change, you can ignore this email." as tmsg %}{{ tmsg | force_escape }}
|
||||
<br />
|
||||
</p>
|
||||
{% else %}
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% trans "If you didn't request this change, you can disregard this email - we have not yet reset your password." %}
|
||||
{% trans "If you didn't request this change, you can disregard this email - we have not yet reset your password." as tmsg %}{{ tmsg | force_escape }}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
## xss-lint: disable=django-trans-missing-escape
|
||||
{% trans "Change my Password" as course_cta_text %}
|
||||
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_cta_text course_cta_url=reset_link %}
|
||||
|
||||
@@ -7,32 +7,44 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% blocktrans %}
|
||||
Welcome to {{ course_name }}
|
||||
{% endblocktrans %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Welcome to {{ course_name }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</h1>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}To get started, please visit https://{{ site_name }}.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}The login information for your account follows:{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}email: {{ email_address }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}password: {{ password }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}It is recommended that you change your password.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Sincerely yours, The {{ course_name }} Team{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
</td>
|
||||
|
||||
@@ -7,43 +7,60 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}
|
||||
You have been invited to be a beta tester for {{ course_name }} at {{ site_name }}
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</h1>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}The invitation has been sent by a member of the course staff.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
{% if auto_enroll %}
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}To start accessing course materials, please visit:{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=display_name|default:course.display_name_with_default course_cta_url=course_url %}
|
||||
{% elif course_about_url is not None %}
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}To enroll in this course and begin the beta test:{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
{% filter force_escape %}
|
||||
{% blocktrans asvar course_cta_text %}Visit {{ course_name }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_cta_text course_cta_url=course_about_url %}
|
||||
{% else %}
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}To enroll in this course and begin the beta test:{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans asvar course_cta_text %}Visit {{ site_name }}
|
||||
{% endblocktrans %}
|
||||
{%endfilter%}
|
||||
|
||||
{% blocktrans asvar course_cta_text %}Visit {{ site_name }}{% endblocktrans %}
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_cta_text course_cta_url=course_url %}
|
||||
{% endif %}
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}This email was automatically sent from {{ site_name }} to {{ email_address }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
</td>
|
||||
|
||||
@@ -7,25 +7,33 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You have been invited to {{ course_name }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</h1>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You have been invited to join {{ course_name }} at {{ site_name }} by a member of the course staff.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
{% if is_shib_course %}
|
||||
{% if auto_enroll %}
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}To access this course click on the button below and login:{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_name course_cta_url=course_url %}
|
||||
{% elif course_about_url is not None %}
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}To access this course visit it and register:{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
@@ -33,27 +41,37 @@
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Please finish your registration and fill out the registration form making sure to use {{ email_address }} in the Email field:{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
## xss-lint: disable=django-trans-missing-escape
|
||||
{% trans "Finish Your Registration" as button_cta_text %}
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=button_cta_text course_cta_url=registration_url %}
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% if auto_enroll %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Once you have registered and activated your account, you will see {{ course_name }} listed on your dashboard.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% elif course_about_url is not None %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Once you have registered and activated your account, you will be able to access this course:{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_name course_cta_url=course_about_url %}
|
||||
{% else %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You can then enroll in {{ course_name }}.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% endif %}
|
||||
<br />
|
||||
</p>
|
||||
{% endif %}
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}This email was automatically sent from {{ site_name }} to {{ email_address }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
</td>
|
||||
|
||||
@@ -7,16 +7,22 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You have been unenrolled from {{ course_name }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</h1>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You have been unenrolled from the course {{ course_name }} by a member of the course staff. Please disregard the invitation previously sent.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}This email was automatically sent from {{ site_name }} to {{ email_address }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
</td>
|
||||
|
||||
@@ -7,23 +7,31 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}
|
||||
You have been unenrolled from {{ course_name }}
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</h1>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You have been unenrolled from {{ course_name }} at {{ site_name }} by a member of the course staff. This course will no longer appear on your {{ site_name }} dashboard.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Your other courses have not been affected.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}This email was automatically sent from {{ site_name }} to {{ full_name }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
</td>
|
||||
|
||||
@@ -7,13 +7,17 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}
|
||||
You have been enrolled in {{ course_name }}
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</h1>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You have been enrolled in {{ course_name }} at {{ site_name }} by a member of the course staff. This course will now appear on your {{ site_name }} dashboard.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
@@ -21,7 +25,9 @@
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_cta_text course_cta_url=course_url %}
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}This email was automatically sent from {{ site_name }} to {{ full_name }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
</td>
|
||||
|
||||
@@ -7,26 +7,36 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You have been removed as a beta tester for {{ course_name }} at {{ site_name }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</h1>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}You have been removed as a beta tester for {{ course_name }} at {{ site_name }} by a member of the course staff.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}This course will remain on your dashboard, but you will no longer be part of the beta testing group.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Your other courses have not been affected.{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}This email was automatically sent from {{ site_name }} to {{ email_address }}{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
</td>
|
||||
|
||||
@@ -7,29 +7,39 @@
|
||||
<tr>
|
||||
<td>
|
||||
<h1>
|
||||
{% trans "Expired ID Verification" %}
|
||||
{% trans "Expired ID Verification" as tmsg %}{{ tmsg | force_escape }}
|
||||
</h1>
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Hello {{full_name}},{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Your {{platform_name}} ID verification has expired. {% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% trans "You must have a valid ID verification to take proctored exams and qualify for certificates."%}
|
||||
{% trans "Follow the link below to submit your photos and renew your ID verification." %}
|
||||
{% trans "You can also do this from your dashboard." %}
|
||||
{% trans "You must have a valid ID verification to take proctored exams and qualify for certificates." as tmsg %}{{ tmsg | force_escape }}
|
||||
{% trans "Follow the link below to submit your photos and renew your ID verification." as tmsg %}{{ tmsg | force_escape }}
|
||||
{% trans "You can also do this from your dashboard." as tmsg %}{{ tmsg | force_escape }}
|
||||
</p>
|
||||
<p style="color: rgba(0,0,0,.75);">
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}Resubmit Verification : {{lms_verification_link}} {% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}ID verification FAQ : {{help_center_link}} {% endblocktrans %}
|
||||
{% endfilter %}
|
||||
<br />
|
||||
</p>
|
||||
<p>
|
||||
{% trans "Thank you," %}
|
||||
{% trans "Thank you," as tmsg %}{{ tmsg | force_escape }}
|
||||
<br />
|
||||
{% filter force_escape %}
|
||||
{% blocktrans %}The {{ platform_name }} Team {% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<td width="70">
|
||||
<a href="{% with_link_tracking homepage_url %}"><img
|
||||
src="https://media.sailthru.com/595/1k1/8/o/599f355101b3f.png" width="70"
|
||||
height="30" alt="{% blocktrans %}Go to {{ platform_name }} Home Page{% endblocktrans %}"/></a>
|
||||
height="30" alt="{% filter force_escape %}{% blocktrans %}Go to {{ platform_name }} Home Page{% endblocktrans %}{% endfilter %}"/></a>
|
||||
</td>
|
||||
<td align="right" style="text-align: {{ LANGUAGE_BIDI|yesno:"left,right" }};">
|
||||
<a class="login" href="{% with_link_tracking dashboard_url %}" style="color: #005686;">{% trans "Sign In" %}</a>
|
||||
@@ -97,7 +97,7 @@
|
||||
<td height="32" width="42">
|
||||
<a href="{{ social_media_urls.linkedin|safe }}">
|
||||
<img src="https://media.sailthru.com/595/1k1/8/o/599f354ec70cb.png"
|
||||
width="32" height="32" alt="{% blocktrans %}{{ platform_name }} on LinkedIn{% endblocktrans %}"/>
|
||||
width="32" height="32" alt="{% filter force_escape %}{% blocktrans %}{{ platform_name }} on LinkedIn{% endblocktrans %}{% endfilter %}"/>
|
||||
</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
@@ -105,7 +105,7 @@
|
||||
<td height="32" width="42">
|
||||
<a href="{{ social_media_urls.twitter|safe }}">
|
||||
<img src="https://media.sailthru.com/595/1k1/8/o/599f354d9c26e.png"
|
||||
width="32" height="32" alt="{% blocktrans %}{{ platform_name }} on Twitter{% endblocktrans %}"/>
|
||||
width="32" height="32" alt="{% filter force_escape %}{% blocktrans %}{{ platform_name }} on Twitter{% endblocktrans %}{% endfilter %}"/>
|
||||
</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
@@ -113,7 +113,7 @@
|
||||
<td height="32" width="42">
|
||||
<a href="{{ social_media_urls.facebook|safe }}">
|
||||
<img src="https://media.sailthru.com/595/1k1/8/o/599f355052c8e.png"
|
||||
width="32" height="32" alt="{% blocktrans %}{{ platform_name }} on Facebook{% endblocktrans %}"/>
|
||||
width="32" height="32" alt="{% filter force_escape %}{% blocktrans %}{{ platform_name }} on Facebook{% endblocktrans %}{% endfilter %}"/>
|
||||
</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
@@ -121,7 +121,7 @@
|
||||
<td height="32" width="42">
|
||||
<a href="{{ social_media_urls.google_plus|safe }}">
|
||||
<img src="https://media.sailthru.com/595/1k1/8/o/599f354fc554a.png"
|
||||
width="32" height="32" alt="{% blocktrans %}{{ platform_name }} on Google Plus{% endblocktrans %}"/>
|
||||
width="32" height="32" alt="{% filter force_escape %}{% blocktrans %}{{ platform_name }} on Google Plus{% endblocktrans %}{% endfilter %}"/>
|
||||
</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
@@ -129,7 +129,7 @@
|
||||
<td height="32" width="42">
|
||||
<a href="{{ social_media_urls.reddit|safe }}">
|
||||
<img src="https://media.sailthru.com/595/1k1/8/o/599f354e326b9.png"
|
||||
width="32" height="32" alt="{% blocktrans %}{{ platform_name }} on Reddit{% endblocktrans %}"/>
|
||||
width="32" height="32" alt="{% filter force_escape %}{% blocktrans %}{{ platform_name }} on Reddit{% endblocktrans %}{% endfilter %}"/>
|
||||
</a>
|
||||
</td>
|
||||
{% endif %}
|
||||
@@ -143,14 +143,14 @@
|
||||
{% if mobile_store_urls.apple %}
|
||||
<a href="{{ mobile_store_urls.apple|safe }}" style="text-decoration: none">
|
||||
<img src="https://media.sailthru.com/595/1k1/6/2/5931cfbba391b.png"
|
||||
alt="{% trans "Download the iOS app on the Apple Store" %}"
|
||||
alt="{% trans "Download the iOS app on the Apple Store" as tmsg %}{{ tmsg | force_escape }}"
|
||||
width="136" height="50" style="margin-{{ LANGUAGE_BIDI|yesno:"left,right" }}: 10px"/>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if mobile_store_urls.google %}
|
||||
<a href="{{ mobile_store_urls.google|safe }}" style="text-decoration: none">
|
||||
<img src="https://media.sailthru.com/595/1k1/6/2/5931cf879a033.png"
|
||||
alt="{% trans "Download the Android app on the Google Play Store" %}"
|
||||
alt="{% trans "Download the Android app on the Google Play Store" as tmsg %}{{ tmsg | force_escape }}"
|
||||
width="136" height="50"/>
|
||||
</a>
|
||||
{% endif %}
|
||||
@@ -171,9 +171,9 @@
|
||||
<tr>
|
||||
<!-- COPYRIGHT -->
|
||||
<td>
|
||||
© {% now "Y" %} {{ platform_name }}, {% trans "All rights reserved" %}.<br/>
|
||||
© {% now "Y" %} {{ platform_name }}, {% trans "All rights reserved" as tmsg %}{{ tmsg | force_escape }}.<br/>
|
||||
<br/>
|
||||
{% trans "Our mailing address is" %}:<br/>
|
||||
{% trans "Our mailing address is" as tmsg %}{{ tmsg | force_escape }}:<br/>
|
||||
{{ contact_mailing_address }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
{% get_current_language as LANGUAGE_CODE %}
|
||||
<title lang="{{ LANGUAGE_CODE|default:"en" }}">
|
||||
{% block title %}
|
||||
{% trans "edX Email" %}
|
||||
{% trans "edX Email" as tmsg %}{{ tmsg | force_escape }}
|
||||
{% endblock %}
|
||||
</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
|
||||
@@ -3,10 +3,12 @@
|
||||
|
||||
{% if show_upsell %}
|
||||
<p>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
Don't miss the opportunity to highlight your new knowledge and skills by earning a verified
|
||||
certificate. Upgrade by {{ user_schedule_upgrade_deadline_time }}.
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</p>
|
||||
<p>
|
||||
<a href="{% with_link_tracking upsell_link %}"
|
||||
@@ -21,7 +23,7 @@
|
||||
display: inline-block;
|
||||
padding: 8px 65px;
|
||||
">
|
||||
<font color="#1e8142"><b>{% trans "Upgrade Now" %}</b></font>
|
||||
<font color="#1e8142"><b>{% trans "Upgrade Now" as tmsg %}{{ tmsg | force_escape }}</b></font>
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
{% extends 'ace_common/edx_ace/common/base_body.html' %}
|
||||
{% load i18n %}
|
||||
{% load django_markup %}
|
||||
|
||||
{% block preview_text %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
Welcome to week {{ week_num }} of {{ course_name }}!
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
@@ -12,10 +15,11 @@
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
{% blocktrans trimmed %}
|
||||
We hope you're enjoying <strong>{{ course_name }}</strong>!
|
||||
{% blocktrans trimmed asvar tmsg %}
|
||||
We hope you're enjoying {start_strong}{{ course_name }}{end_strong}!
|
||||
We want to let you know what you can look forward to in week {{ week_num }}:
|
||||
{% endblocktrans %}
|
||||
{% interpolate_html tmsg start_strong='<strong>'|safe end_strong='</strong>'|safe %}
|
||||
<ul>
|
||||
{% for highlight in week_highlights %}
|
||||
<li>{{ highlight }}</li>
|
||||
@@ -23,13 +27,15 @@
|
||||
</ul>
|
||||
</p>
|
||||
<p>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
With self-paced courses, you learn on your own schedule.
|
||||
We encourage you to spend time with the course each week.
|
||||
Your focused attention will pay off in the end!
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</p>
|
||||
|
||||
## xss-lint: disable=django-trans-missing-escape
|
||||
{% trans "Resume your course now" as course_cta_text %}
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_cta_text%}
|
||||
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
{% extends 'ace_common/edx_ace/common/base_body.html' %}
|
||||
{% load i18n %}
|
||||
{% load django_markup %}
|
||||
|
||||
{% block preview_text %}
|
||||
{% if course_ids|length > 1 %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
Many {{ platform_name }} learners are completing more problems every week, and
|
||||
participating in the discussion forums. What do you want to do to keep learning?
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% else %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
Many {{ platform_name }} learners in {{course_name}} are completing more problems every week, and
|
||||
participating in the discussion forums. What do you want to do to keep learning?
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -19,22 +24,25 @@
|
||||
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
<h1>{% trans "Keep up the momentum!" %}</h1>
|
||||
<h1>{% trans "Keep up the momentum!" as tmsg %}{{ tmsg | force_escape }}</h1>
|
||||
|
||||
<p>
|
||||
{% if course_ids|length > 1 %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
Many {{ platform_name }} learners are completing more problems every week, and
|
||||
participating in the discussion forums. What do you want to do to keep learning?
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% else %}
|
||||
{% blocktrans trimmed %}
|
||||
Many {{ platform_name }} learners in <strong>{{course_name}}</strong> are completing more problems every week, and
|
||||
{% blocktrans trimmed asvar tmsg %}
|
||||
Many {{ platform_name }} learners in {start_strong}{{course_name}}{end_strong} are completing more problems every week, and
|
||||
participating in the discussion forums. What do you want to do to keep learning?
|
||||
{% endblocktrans %}
|
||||
{% interpolate_html tmsg start_strong='<strong>'|safe end_strong='</strong>'|safe %}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
## xss-lint: disable=django-trans-missing-escape
|
||||
{% trans "Keep learning" as course_cta_text %}
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_cta_text%}
|
||||
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
{% extends 'ace_common/edx_ace/common/base_body.html' %}
|
||||
{% load i18n %}
|
||||
{% load django_markup %}
|
||||
|
||||
{% block preview_text %}
|
||||
{% if course_ids|length > 1 %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
Remember when you enrolled in {{ course_name }}, and other courses on {{ platform_name }}? We do, and we’re glad
|
||||
to have you! Come see what everyone is learning.
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% else %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
Remember when you enrolled in {{ course_name }} on {{ platform_name }}? We do, and we’re glad
|
||||
to have you! Come see what everyone is learning.
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -19,22 +24,24 @@
|
||||
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
<h1>{% trans "Keep learning today" %}.</h1>
|
||||
<h1>{% trans "Keep learning today" as tmsg %}{{ tmsg | force_escape}}.</h1>
|
||||
|
||||
<p>
|
||||
{% if course_ids|length > 1 %}
|
||||
{% blocktrans trimmed %}
|
||||
Remember when you enrolled in <strong>{{ course_name }}</strong>, and other courses on {{ platform_name }}? We do, and we’re glad
|
||||
{% blocktrans trimmed asvar tmsg %}
|
||||
Remember when you enrolled in {start_strong}{{ course_name }}{end_strong}, and other courses on {{ platform_name }}? We do, and we’re glad
|
||||
to have you! Come see what everyone is learning.
|
||||
{% endblocktrans %}
|
||||
{% interpolate_html tmsg start_strong='<strong>'|safe end_strong='</strong>'|safe %}
|
||||
{% else %}
|
||||
{% blocktrans trimmed %}
|
||||
Remember when you enrolled in <strong>{{ course_name }}</strong> on {{ platform_name }}? We do, and we’re glad
|
||||
{% blocktrans trimmed asvar tmsg %}
|
||||
Remember when you enrolled in {start_strong}{{ course_name }}{end_strong} on {{ platform_name }}? We do, and we’re glad
|
||||
to have you! Come see what everyone is learning.
|
||||
{% endblocktrans %}
|
||||
{% interpolate_html tmsg start_strong='<strong>'|safe end_strong='</strong>'|safe %}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
## xss-lint: disable=django-trans-missing-escape
|
||||
{% trans "Start learning now" as course_cta_text %}
|
||||
{% include "ace_common/edx_ace/common/return_to_course_cta.html" with course_cta_text=course_cta_text%}
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
{% extends 'ace_common/edx_ace/common/base_body.html' %}
|
||||
{% load i18n %}
|
||||
{% load django_markup %}
|
||||
{% load static %}
|
||||
{% load ace %}
|
||||
|
||||
{% block preview_text %}
|
||||
{% if course_ids|length > 1 %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
We hope you are enjoying learning with us so far on {{ platform_name }}! A verified certificate allows you to
|
||||
highlight your new knowledge and skills. An {{ platform_name }} certificate is official and easily
|
||||
@@ -12,7 +14,9 @@
|
||||
|
||||
Upgrade by {{ user_schedule_upgrade_deadline_time }}.
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% else %}
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
We hope you are enjoying learning with us so far in {{ first_course_name }}! A verified certificate allows
|
||||
you to highlight your new knowledge and skills. An {{ platform_name }} certificate is official and easily
|
||||
@@ -20,6 +24,7 @@
|
||||
|
||||
Upgrade by {{ user_schedule_upgrade_deadline_time }}.
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -27,32 +32,35 @@
|
||||
<table width="100%" align="left" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
<h1>{% trans "Upgrade now" %}</h1>
|
||||
<h1>{% trans "Upgrade now" as tmsg %}{{ tmsg | force_escape }}</h1>
|
||||
|
||||
<p>
|
||||
{% if course_ids|length > 1 %}
|
||||
{% blocktrans trimmed %}
|
||||
We hope you are enjoying learning with us so far on <strong>{{ platform_name }}</strong>! A
|
||||
{% blocktrans trimmed asvar tmsg %}
|
||||
We hope you are enjoying learning with us so far on {start_strong}{{ platform_name }}{end_strong}! A
|
||||
verified certificate allows you to highlight your new knowledge and skills. An
|
||||
{{ platform_name }} certificate is official and easily shareable.
|
||||
{% endblocktrans %}
|
||||
{% interpolate_html tmsg start_strong='<strong>'|safe end_strong='</strong>'|safe %}
|
||||
{% else %}
|
||||
{% blocktrans trimmed %}
|
||||
We hope you are enjoying learning with us so far in <strong>{{ first_course_name }}</strong>! A
|
||||
{% blocktrans trimmed asvar tmsg %}
|
||||
We hope you are enjoying learning with us so far in {start_strong}{{ first_course_name }}{end_strong}! A
|
||||
verified certificate allows you to highlight your new knowledge and skills. An
|
||||
{{ platform_name }} certificate is official and easily shareable.
|
||||
{% endblocktrans %}
|
||||
{% interpolate_html tmsg start_strong='<strong>'|safe end_strong='</strong>'|safe %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% blocktrans trimmed %}
|
||||
Upgrade by <strong>{{ user_schedule_upgrade_deadline_time }}</strong>.
|
||||
{% blocktrans trimmed asvar tmsg %}
|
||||
Upgrade by {start_strong}{{ user_schedule_upgrade_deadline_time }}{end_strong}.
|
||||
{% endblocktrans %}
|
||||
{% interpolate_html tmsg start_strong='<strong>'|safe end_strong='</strong>'|safe %}
|
||||
</p>
|
||||
|
||||
{% if course_ids|length > 1 and course_ids|length < 10 %}
|
||||
<p>
|
||||
{% trans "You are eligible to upgrade in these courses:" %}
|
||||
{% trans "You are eligible to upgrade in these courses:" as tmsg %}{{ tmsg | force_escape }}
|
||||
</p>
|
||||
<ul style="margin-bottom: 30px;">
|
||||
{% for course_link in course_links %}
|
||||
@@ -65,7 +73,7 @@
|
||||
|
||||
<img
|
||||
src="{{ cert_image }}"
|
||||
alt="{% trans 'Example of a verified certificate' %}"
|
||||
alt="{% trans 'Example of a verified certificate' as tmsg %}{{ tmsg | force_escape }}"
|
||||
style="
|
||||
display: block;
|
||||
margin-right: auto;
|
||||
@@ -76,7 +84,7 @@
|
||||
border-bottom: 3px solid lightgray;
|
||||
border-right: 3px solid lightgray;
|
||||
border-left: 1px solid lightgray;
|
||||
"
|
||||
"
|
||||
/>
|
||||
|
||||
<p>
|
||||
@@ -101,7 +109,7 @@
|
||||
display: inline-block;
|
||||
">
|
||||
{# old email clients require the use of the font tag :( #}
|
||||
<font color="#ffffff"><b>{% trans "Upgrade now" %}</b></font>
|
||||
<font color="#ffffff"><b>{% trans "Upgrade now" as tmsg %}{{ tmsg | force_escape }}</b></font>
|
||||
</a>
|
||||
</p>
|
||||
</td>
|
||||
|
||||
@@ -6,30 +6,40 @@
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
Hello {{full_name}},
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</p>
|
||||
<p>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
We received a deletion request for your account on {{platform_name}}. We're sorry to see you go!
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</p>
|
||||
<p>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
Your account will be deleted shortly. Account deletion, including removal from email lists, may take a few weeks to fully process through our system. If you want to opt-out of emails before then, please unsubscribe from the footer of any email.
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</p>
|
||||
<p>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
This is an informational email only. If you did not initiate this request, please contact {{contact_email}}.
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</p>
|
||||
<p>
|
||||
{% filter force_escape %}
|
||||
{% blocktrans trimmed %}
|
||||
Best,
|
||||
{{ platform_name }}
|
||||
{% endblocktrans %}
|
||||
{% endfilter %}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user