Commit a3f1f660 by Diana Huang

Integrate new LinkedIn e-mail template

parent a18bce81
......@@ -6,14 +6,18 @@ LinkedIn profiles.
import json
import urllib
from django.conf import settings
from django.core.mail import send_mail
from django.core.management.base import BaseCommand
from django.template import Context
from django.template.loader import get_template
from django.core.urlresolvers import reverse
from optparse import make_option
from edxmako.shortcuts import render_to_string
from certificates.models import GeneratedCertificate
from courseware.courses import get_course_by_id
from courseware.courses import get_course_by_id, course_image_url
from ...models import LinkedIn
from . import LinkedInAPI
......@@ -101,15 +105,31 @@ class Command(BaseCommand):
Send the 'grandfathered' email informing historical students that they
may now post their certificates on their LinkedIn profiles.
"""
template = get_template("linkedin_grandfather_email.html")
links = [
{'course_name': certificate.name,
'url': self.certificate_url(certificate, grandfather=True)}
for certificate in certificates]
context = Context({
'student_name': user.profile.name,
'certificates': links})
body = template.render(context)
courses_list = []
for cert in certificates:
course = get_course_by_id(cert.course_id)
course_url = 'https://{}{}'.format(
settings.SITE_NAME,
reverse('course_root', kwargs={'course_id': cert.course_id})
)
course_title = course.display_name
course_img_url = 'https://{}{}'.format(settings.SITE_NAME, course_image_url(course))
course_end_date = course.end.strftime('%b %Y')
course_org = course.display_organization
courses_list.append({
'course_url': course_url,
'course_org': course_org,
'course_title': course_title,
'course_image_url': course_img_url,
'course_end_date': course_end_date,
'linkedin_add_url': self.certificate_url(cert),
})
context = {'courses_list': courses_list, 'num_courses': len(courses_list)}
body = render_to_string('linkedin/linkedin_email.html', context)
subject = 'Congratulations! Put your certificates on LinkedIn'
self.send_email(user, subject, body)
......
......@@ -7,36 +7,39 @@ import mock
from certificates.models import GeneratedCertificate
from django.contrib.auth.models import User
from django.conf import settings
from django.test.utils import override_settings
from django.core import mail
from django.utils.timezone import utc
from django.test import TestCase
from xmodule.modulestore.tests.factories import CourseFactory
from student.models import UserProfile
from linkedin.models import LinkedIn
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, mixed_store_config
from linkedin.management.commands import linkedin_mailusers as mailusers
MODULE = 'linkedin.management.commands.linkedin_mailusers.'
TEST_DATA_MIXED_MODULESTORE = mixed_store_config(settings.COMMON_TEST_DATA_ROOT, {})
@override_settings(MODULESTORE=TEST_DATA_MIXED_MODULESTORE)
class MailusersTests(TestCase):
"""
Test mail users command.
"""
def setUp(self):
courses = {
'TEST1': mock.Mock(
org='TestX', number='1',
start=datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc)),
'TEST2': mock.Mock(org='TestX', number='2'),
'TEST3': mock.Mock(org='TestX', number='3'),
}
def get_course_by_id(id):
return courses.get(id)
patcher = mock.patch(MODULE + 'get_course_by_id', get_course_by_id)
patcher.start()
self.addCleanup(patcher.stop)
CourseFactory.create(org='TESTX', number='1', display_name='TEST1',
start=datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc),
end=datetime.datetime(2011, 5, 12, 2, 42, tzinfo=utc))
CourseFactory.create(org='TESTX', number='2', display_name='TEST2',
start=datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc),
end=datetime.datetime(2011, 5, 12, 2, 42, tzinfo=utc))
CourseFactory.create(org='TESTX', number='3', display_name='TEST3',
start=datetime.datetime(2010, 5, 12, 2, 42, tzinfo=utc),
end=datetime.datetime(2011, 5, 12, 2, 42, tzinfo=utc))
self.fred = fred = User(username='fred', email='fred@bedrock.gov')
fred.save()
......@@ -51,19 +54,19 @@ class MailusersTests(TestCase):
self.cert1 = cert1 = GeneratedCertificate(
status='downloadable',
user=fred,
course_id='TEST1',
course_id='TESTX/1/TEST1',
name='TestX/Intro101',
download_url='http://test.foo/test')
cert1.save()
cert2 = GeneratedCertificate(
status='downloadable',
user=fred,
course_id='TEST2')
course_id='TESTX/2/TEST2')
cert2.save()
cert3 = GeneratedCertificate(
status='downloadable',
user=barney,
course_id='TEST3')
course_id='TESTX/3/TEST3')
cert3.save()
def test_mail_users(self):
......@@ -73,9 +76,9 @@ class MailusersTests(TestCase):
fut = mailusers.Command().handle
fut()
self.assertEqual(
json.loads(self.fred.linkedin.emailed_courses), ['TEST1', 'TEST2'])
json.loads(self.fred.linkedin.emailed_courses), ['TESTX/1/TEST1', 'TESTX/2/TEST2'])
self.assertEqual(
json.loads(self.barney.linkedin.emailed_courses), ['TEST3'])
json.loads(self.barney.linkedin.emailed_courses), ['TESTX/3/TEST3'])
self.assertEqual(len(mail.outbox), 3)
self.assertEqual(mail.outbox[0].from_email, 'The Team <team@test.foo>')
self.assertEqual(
......@@ -94,7 +97,7 @@ class MailusersTests(TestCase):
fut = mailusers.Command().handle
fut()
self.assertEqual(
json.loads(self.barney.linkedin.emailed_courses), ['TEST3'])
json.loads(self.barney.linkedin.emailed_courses), ['TESTX/3/TEST3'])
self.assertEqual(len(mail.outbox), 1)
self.assertEqual(
mail.outbox[0].to, ['Barney Rubble <barney@bedrock.gov>'])
......@@ -106,9 +109,9 @@ class MailusersTests(TestCase):
fut = mailusers.Command().handle
fut(grandfather=True)
self.assertEqual(
json.loads(self.fred.linkedin.emailed_courses), ['TEST1', 'TEST2'])
json.loads(self.fred.linkedin.emailed_courses), ['TESTX/1/TEST1', 'TESTX/2/TEST2'])
self.assertEqual(
json.loads(self.barney.linkedin.emailed_courses), ['TEST3'])
json.loads(self.barney.linkedin.emailed_courses), ['TESTX/3/TEST3'])
self.assertEqual(len(mail.outbox), 2)
self.assertEqual(
mail.outbox[0].to, ['Fred Flintstone <fred@bedrock.gov>'])
......@@ -120,15 +123,15 @@ class MailusersTests(TestCase):
Test emailing users, making sure they are only emailed about new
certificates.
"""
self.fred.linkedin.emailed_courses = json.dumps(['TEST1'])
self.fred.linkedin.emailed_courses = json.dumps(['TESTX/1/TEST1'])
self.fred.linkedin.save()
fut = mailusers.Command().handle
fut()
fred = User.objects.get(username='fred')
self.assertEqual(
json.loads(fred.linkedin.emailed_courses), ['TEST1', 'TEST2'])
json.loads(fred.linkedin.emailed_courses), ['TESTX/1/TEST1', 'TESTX/2/TEST2'])
self.assertEqual(
json.loads(self.barney.linkedin.emailed_courses), ['TEST3'])
json.loads(self.barney.linkedin.emailed_courses), ['TESTX/3/TEST3'])
self.assertEqual(len(mail.outbox), 2)
self.assertEqual(
mail.outbox[0].to, ['Fred Flintstone <fred@bedrock.gov>'])
......@@ -140,15 +143,15 @@ class MailusersTests(TestCase):
Test emailing users, making sure they are only emailed about new
certificates.
"""
self.barney.linkedin.emailed_courses = json.dumps(['TEST3'])
self.barney.linkedin.emailed_courses = json.dumps(['TESTX/3/TEST3'])
self.barney.linkedin.save()
fut = mailusers.Command().handle
fut()
fred = User.objects.get(username='fred')
self.assertEqual(
json.loads(fred.linkedin.emailed_courses), ['TEST1', 'TEST2'])
json.loads(fred.linkedin.emailed_courses), ['TESTX/1/TEST1', 'TESTX/2/TEST2'])
self.assertEqual(
json.loads(self.barney.linkedin.emailed_courses), ['TEST3'])
json.loads(self.barney.linkedin.emailed_courses), ['TESTX/3/TEST3'])
self.assertEqual(len(mail.outbox), 2)
self.assertEqual(
mail.outbox[0].to, ['Fred Flintstone <fred@bedrock.gov>'])
......@@ -165,6 +168,6 @@ class MailusersTests(TestCase):
'http://www.linkedin.com/profile/guided?'
'pfCertificationName=TestX%2FIntro101&pfAuthorityName=edX&'
'pfAuthorityId=0000000&'
'pfCertificationUrl=http%3A%2F%2Ftest.foo%2Ftest&pfLicenseNo=TEST1&'
'pfCertificationUrl=http%3A%2F%2Ftest.foo%2Ftest&pfLicenseNo=TESTX%2F1%2FTEST1&'
'pfCertStartDate=201005&_mSplash=1&'
'trk=eml-prof-TestX-1-T&startTask=CERTIFICATION_NAME&force=true')
'trk=eml-prof-TESTX-1-T&startTask=CERTIFICATION_NAME&force=true')
{% load i18n %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="initial-scale=1.0">
</head>
<body>
<p>{% blocktrans with name=student_name %}
Dear {{student_name}},
{% endblocktrans %}</p>
<p>{% blocktrans with name=course_name %}
We've partnered with LinkedIn and now you can put your certificates on
your LinkedIn profile. Just use the links below.
{% endblocktrans %}</p>
{% for cert in certificates %}
<p>
<b>{{cert.course_name}}</b>:
<a href="{{cert.url|safe}}">
<span>in<span>
{% blocktrans %}Add to profile{% endblocktrans %}
</a>
</p>
{% endfor %}
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraph.org/schema/"> <head>
<meta property="og:title" content="Start 2014 with edX! Sign up for brand new courses."/>
<meta property="fb:page_id" content="43929265776" />
## NAME: 1 COLUMN
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Share Your edX Success on LinkedIn</title>
<style type="text/css">
body,#bodyTable,#bodyCell{
height:100% !important;
margin:0;
padding:0;
width:100% !important;
}
table{
border-collapse:collapse;
}
img,a img{
border:0;
outline:none;
text-decoration:none;
}
h1,h2,h3,h4,h5,h6{
margin:0;
padding:0;
}
p{
margin:1em 0;
padding:0;
}
a{
word-wrap:break-word;
}
.ReadMsgBody{
width:100%;
}
.ExternalClass{
width:100%;
}
.ExternalClass,.ExternalClass p,.ExternalClass span,.ExternalClass font,.ExternalClass td,.ExternalClass div{
line-height:100%;
}
table,td{
mso-table-lspace:0pt;
mso-table-rspace:0pt;
}
#outlook a{
padding:0;
}
img{
-ms-interpolation-mode:bicubic;
}
body,table,td,p,a,li,blockquote{
-ms-text-size-adjust:100%;
-webkit-text-size-adjust:100%;
}
#bodyCell{
padding:20px;
}
.mcnImage{
vertical-align:bottom;
}
.mcnTextContent img{
height:auto !important;
}
body,#bodyTable{
background-color:#f5f5f5;
}
#bodyCell{
border-top:0;
}
#templateContainer{
border:0;
}
h1{
color:#606060 !important;
display:block;
font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;
font-size:40px;
font-style:normal;
font-weight:bold;
line-height:125%;
letter-spacing:-1px;
margin:0;
text-align:left;
}
h2{
color:#606060 !important;
display:block;
font-family:Helvetica;
font-size:26px;
font-style:normal;
font-weight:bold;
line-height:125%;
letter-spacing:-.75px;
margin:0;
text-align:left;
}
h3{
color:#606060 !important;
display:block;
font-family:Helvetica;
font-size:18px;
font-style:normal;
font-weight:bold;
line-height:125%;
letter-spacing:-.5px;
margin:0;
text-align:left;
}
h4{
color:#808080 !important;
display:block;
font-family:Helvetica;
font-size:16px;
font-style:normal;
font-weight:bold;
line-height:125%;
letter-spacing:normal;
margin:0;
text-align:left;
}
#templatePreheader{
background-color:#0f6a93;
border-top:0;
border-bottom:0;
}
.preheaderContainer .mcnTextContent,.preheaderContainer .mcnTextContent p{
color:#ffffff;
font-family:Helvetica;
font-size:11px;
line-height:125%;
text-align:left;
}
.preheaderContainer .mcnTextContent a{
color:#f0f0f0;
font-weight:normal;
text-decoration:underline;
}
#templateHeader{
background-color:#ffffff;
border-top:0;
border-bottom:0;
}
.headerContainer .mcnTextContent,.headerContainer .mcnTextContent p{
color:#606060;
font-family:Helvetica;
font-size:15px;
line-height:150%;
text-align:left;
}
.headerContainer .mcnTextContent a{
color:#6DC6DD;
font-weight:normal;
text-decoration:underline;
}
#templateBody{
background-color:#ffffff;
border-top:0;
border-bottom:0;
}
.bodyContainer .mcnTextContent,.bodyContainer .mcnTextContent p{
color:#606060;
font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;
font-size:14px;
line-height:150%;
text-align:left;
}
.bodyContainer .mcnTextContent a{
color:#126f9a;
font-weight:normal;
text-decoration:underline;
}
#templateFooter{
background-color:#0f6a93;
border-top:0;
border-bottom:0;
}
.footerContainer .mcnTextContent,.footerContainer .mcnTextContent p{
color:#f2f2f2;
font-family:Helvetica;
font-size:11px;
line-height:125%;
text-align:left;
}
.footerContainer .mcnTextContent a{
color:#ffffff;
font-weight:normal;
text-decoration:underline;
}
@media only screen and (max-width: 480px){
body,table,td,p,a,li,blockquote{
-webkit-text-size-adjust:none !important;
}
}@media only screen and (max-width: 480px){
body{
width:100% !important;
min-width:100% !important;
}
}@media only screen and (max-width: 480px){
td[id=bodyCell]{
padding:10px !important;
}
}@media only screen and (max-width: 480px){
table[class=mcnTextContentContainer]{
width:100% !important;
}
}@media only screen and (max-width: 480px){
table[class=mcnBoxedTextContentContainer]{
width:100% !important;
}
}@media only screen and (max-width: 480px){
table[class=mcpreview-image-uploader]{
width:100% !important;
display:none !important;
}
}@media only screen and (max-width: 480px){
img[class=mcnImage]{
width:100% !important;
}
}@media only screen and (max-width: 480px){
table[class=mcnImageGroupContentContainer]{
width:100% !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnImageGroupContent]{
padding:9px !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnImageGroupBlockInner]{
padding-bottom:0 !important;
padding-top:0 !important;
}
}@media only screen and (max-width: 480px){
tbody[class=mcnImageGroupBlockOuter]{
padding-bottom:9px !important;
padding-top:9px !important;
}
}@media only screen and (max-width: 480px){
table[class=mcnCaptionTopContent],table[class=mcnCaptionBottomContent]{
width:100% !important;
}
}@media only screen and (max-width: 480px){
table[class=mcnCaptionLeftTextContentContainer],table[class=mcnCaptionRightTextContentContainer],table[class=mcnCaptionLeftImageContentContainer],table[class=mcnCaptionRightImageContentContainer],table[class=mcnImageCardLeftTextContentContainer],table[class=mcnImageCardRightTextContentContainer]{
width:100% !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnImageCardLeftImageContent],td[class=mcnImageCardRightImageContent]{
padding-right:18px !important;
padding-left:18px !important;
padding-bottom:0 !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnImageCardBottomImageContent]{
padding-bottom:9px !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnImageCardTopImageContent]{
padding-top:18px !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnImageCardLeftImageContent],td[class=mcnImageCardRightImageContent]{
padding-right:18px !important;
padding-left:18px !important;
padding-bottom:0 !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnImageCardBottomImageContent]{
padding-bottom:9px !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnImageCardTopImageContent]{
padding-top:18px !important;
}
}@media only screen and (max-width: 480px){
table[class=mcnCaptionLeftContentOuter] td[class=mcnTextContent],table[class=mcnCaptionRightContentOuter] td[class=mcnTextContent]{
padding-top:9px !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnCaptionBlockInner] table[class=mcnCaptionTopContent]:last-child td[class=mcnTextContent]{
padding-top:18px !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnBoxedTextContentColumn]{
padding-left:18px !important;
padding-right:18px !important;
}
}@media only screen and (max-width: 480px){
td[class=mcnTextContent]{
padding-right:18px !important;
padding-left:18px !important;
}
}@media only screen and (max-width: 480px){
table[id=templateContainer],table[id=templatePreheader],table[id=templateHeader],table[id=templateBody],table[id=templateFooter]{
max-width:600px !important;
width:100% !important;
}
}@media only screen and (max-width: 480px){
h1{
font-size:18px !important;
line-height:125% !important;
}
}@media only screen and (max-width: 480px){
h2{
font-size:16px !important;
line-height:125% !important;
}
}@media only screen and (max-width: 480px){
h3{
font-size:14px !important;
line-height:125% !important;
}
}@media only screen and (max-width: 480px){
h4{
font-size:12px !important;
line-height:125% !important;
}
}@media only screen and (max-width: 480px){
table[class=mcnBoxedTextContentContainer] td[class=mcnTextContent],td[class=mcnBoxedTextContentContainer] td[class=mcnTextContent] p{
font-size:18px !important;
line-height:125% !important;
}
}@media only screen and (max-width: 480px){
table[id=templatePreheader]{
display:block !important;
}
}@media only screen and (max-width: 480px){
td[class=preheaderContainer] td[class=mcnTextContent],td[class=preheaderContainer] td[class=mcnTextContent] p{
font-size:14px !important;
line-height:115% !important;
}
}@media only screen and (max-width: 480px){
td[class=headerContainer] td[class=mcnTextContent],td[class=headerContainer] td[class=mcnTextContent] p{
font-size:18px !important;
line-height:125% !important;
}
}@media only screen and (max-width: 480px){
td[class=bodyContainer] td[class=mcnTextContent],td[class=bodyContainer] td[class=mcnTextContent] p{
font-size:18px !important;
line-height:125% !important;
}
}@media only screen and (max-width: 480px){
td[class=footerContainer] td[class=mcnTextContent],td[class=footerContainer] td[class=mcnTextContent] p{
font-size:14px !important;
line-height:115% !important;
}
}@media only screen and (max-width: 480px){
td[class=footerContainer] a[class=utilityLink]{
display:block !important;
}
}</style> <script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var _gaq = _gaq || [];
_gaq.push(["_setAccount", "UA-329148-88"]);
_gaq.push(["_setDomainName", ".campaign-archive.com"]);
_gaq.push(["_trackPageview"]);
_gaq.push(["_setAllowLinker", true]);
} catch(err) {console.log(err);}</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script src="http://us5.campaign-archive1.com/js/mailchimp/fancyzoom.mc.js"></script> <script type="text/javascript">
function incrementFacebookLikeCount() {
var current = parseInt($('#campaign-fb-like-btn span').html());
$('#campaign-fb-like-btn span').fadeOut().html(++current).fadeIn();
}
function getUrlParams(str) {
var vars = {}, hash;
if (!str) return vars;
var hashes = str.slice(str.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars[hash[0]] = hash[1];
}
return vars;
}
function setupSocialSharingStuffs() {
var numSocialElems = $('a[rel=socialproxy]').length;
var numSocialInitialized = 0;
var urlParams = getUrlParams(window.document.location.href);
var paramsToCopy = {'e':true, 'eo':true};
$('a[rel=socialproxy]').each(function() {
var href = $(this).attr('href');
var newHref = decodeURIComponent(href.match(/socialproxy=(.*)/)[1]);
// for facebook insanity to work well, it needs to all be run against just campaign-archive
newHref = newHref.replace(/campaign-archive(\d)/gi, 'campaign-archive');
var newHrefParams = getUrlParams(newHref);
for(var param in urlParams) {
if ((param in paramsToCopy) && !(param in newHrefParams)) {
newHref += '&' + param + '=' + urlParams[param];
}
}
$(this).attr('href', newHref);
if (href.indexOf('facebook-comment') !== -1) {
$(this).fancyZoom({"zoom_id": "social-proxy", "width":620, "height":450, "iframe_height": 450});
} else {
$(this).fancyZoom({"zoom_id": "social-proxy", "width":500, "height":200, "iframe_height": 500});
}
numSocialInitialized++;
});
}
if (window.top!=window.self){
$(function() {
var iframeOffset = $("#archive", window.parent.document).offset();
$("a").each(function () {
var link = $(this);
var href = link.attr("href");
if (href && href[0] == "#") {
var name = href.substring(1);
$(this).click(function () {
var nameElement = $("[name='" + name + "']");
var idElement = $("#" + name);
var element = null;
if (nameElement.length > 0) {
element = nameElement;
} else if (idElement.length > 0) {
element = idElement;
}
if (element) {
var offset = element.offset();
var height = element.height();
//3 is totally arbitrary, but seems to work best.
window.parent.scrollTo(offset.left, (offset.top + iframeOffset.top - (height*3)) );
}
return false;
});
}
});
});
}
</script> <script type="text/javascript">
$(document).ready(function() {
setupSocialSharingStuffs();
});
</script> <style type="text/css">
/* Facebook/Google+ Modals */
#social-proxy { background:#fff; -webkit-box-shadow: 4px 4px 8px 2px rgba(0,0,0,.2); box-shadow: 4px 4px 8px 2px rgba(0,0,0,.2); padding-bottom:35px; z-index:1000; }
#social-proxy_close { display:block; position:absolute; top:0; right:0; height:30px; width:32px; background:transparent url(http://cdn-images.mailchimp.com/awesomebar-sprite.png) 0 -200px; text-indent:-9999px; outline:none; font-size:1px; }
#social-proxy_close:hover { background-position:0 -240px; }
body { padding-bottom:50px !important; }
</style> </head>
<body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0" style="margin: 0;padding: 0;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #f5f5f5;height: 100% !important;width: 100% !important;">
<center>
<table align="center" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" id="bodyTable" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;margin: 0;padding: 0;background-color: #f5f5f5;height: 100% !important;width: 100% !important;">
<tr>
<td align="center" valign="top" id="bodyCell" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;margin: 0;padding: 20px;border-top: 0;height: 100% !important;width: 100% !important;">
## BEGIN TEMPLATE //
<table border="0" cellpadding="0" cellspacing="0" width="600" id="templateContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;border: 0;">
<tr>
<td align="center" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
## BEGIN PREHEADER //
<table border="0" cellpadding="0" cellspacing="0" width="600" id="templatePreheader" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #0f6a93;border-top: 0;border-bottom: 0;">
<tr>
<td valign="top" class="preheaderContainer" style="padding-top: 9px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnTextBlockOuter">
<tr>
<td valign="top" class="mcnTextBlockInner" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table align="right" border="0" cellpadding="0" cellspacing="0" width="366" class="mcnTextContentContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #ffffff;font-family: Helvetica;font-size: 11px;line-height: 125%;text-align: left;">
<div style="text-align: right;">&nbsp;<span style="text-align: right; font-size: 11px;"><span style="color:#fofofo;">Connect with us on:</span><span style="color: #00A0E3;">&nbsp;</span></span><span style="text-align: right;">&nbsp;</span><a href="http://facebook.com/edxonline" style="text-align: right;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #f0f0f0;font-weight: normal;text-decoration: underline;" target="_blank"><img align="none" height="18" src="https://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/Facebook_Gray.png" style="width: 18px;height: 18px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="18"></a><span style="text-align: right;">&nbsp;&nbsp;</span><a href="http://twitter.com/edxonline" style="text-align: right;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #f0f0f0;font-weight: normal;text-decoration: underline;" target="_blank"><img align="none" height="18" src="https://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/Twitter_Gray.png" style="width: 18px;height: 18px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="18"></a><span style="text-align: right;">&nbsp;&nbsp;</span><a href="https://plus.google.com/108235383044095082735" style="text-align: right;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #f0f0f0;font-weight: normal;text-decoration: underline;" target="_blank"><img align="none" height="18" src="https://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/Google_Gray.png" style="width: 18px;height: 18px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="18"></a><span style="text-align: right;">&nbsp;&nbsp;</span><a href="http://www.linkedin.com/company/edx?trk=nav_account_sub_nav_company_admin" style="text-align: right;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #f0f0f0;font-weight: normal;text-decoration: underline;" target="_blank"><img align="none" height="18" src="https://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/LinkedIn_Gray.png" style="width: 18px;height: 18px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="18"></a><span style="text-align: right;">&nbsp;&nbsp;</span><a href="http://vk.com/edxrussia" style="text-align: right;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #f0f0f0;font-weight: normal;text-decoration: underline;" target="_blank"><img align="none" height="18" src="https://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/VK_Grayd3c9a7.png" style="opacity: 0.9;width: 18px;height: 18px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="18"></a><span style="text-align: right;">&nbsp;&nbsp;</span><a href="http://www.meetup.com/edX-Communities/" style="text-align: right;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #f0f0f0;font-weight: normal;text-decoration: underline;" target="_blank"><img align="none" height="18" src="https://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/Meetup_Gray.png" style="width: 18px;height: 18px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="18"></a></div>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table></td>
</tr>
</table>
## // END PREHEADER
</td>
</tr>
<tr>
<td align="center" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
## BEGIN HEADER //
<table border="0" cellpadding="0" cellspacing="0" width="600" id="templateHeader" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #ffffff;border-top: 0;border-bottom: 0;">
<tr>
<td valign="top" class="headerContainer" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnImageBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnImageBlockOuter">
<tr>
<td valign="top" style="padding: 9px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnImageBlockInner">
<table align="left" width="100%" border="0" cellpadding="0" cellspacing="0" class="mcnImageContentContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td class="mcnImageContent" valign="top" style="padding-right: 9px;padding-left: 9px;padding-top: 0;padding-bottom: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<img align="left" alt="edX - Connect To A Better Future" src="https://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/edxeb0b919494099d631b.png" width="100" style="max-width: 100px;padding-bottom: 0;display: inline !important;vertical-align: bottom;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" class="mcnImage">
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnTextBlockOuter">
<tr>
<td valign="top" class="mcnTextBlockInner" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="600" class="mcnTextContentContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td valign="top" class="mcnTextContent" style="padding: 9px 18px;line-height: 110%;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #606060;font-family: Helvetica;font-size: 15px;text-align: left;">
<font size="6">Share Your edX Success on LinkedIn</font>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table></td>
</tr>
</table>
## // END HEADER
</td>
</tr>
<tr>
<td align="center" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
## BEGIN BODY //
<table border="0" cellpadding="0" cellspacing="0" width="600" id="templateBody" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #ffffff;border-top: 0;border-bottom: 0;">
<tr>
<td valign="top" class="bodyContainer" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnTextBlockOuter">
<tr>
<td valign="top" class="mcnTextBlockInner" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="600" class="mcnTextContentContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #606060;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-size: 14px;line-height: 150%;text-align: left;">
%if num_courses==1:
<span style="font-size:12px;">Through a partnership with <a href="https://www.linkedin.com/">LinkedIn</a>, the world's largest professional network, we've now made it even easier for you to showcase your success. We encourage you to share your edX certificate on your LinkedIn profile. Simply click the "Add to profile" button below.</span>
%else:
<span style="font-size:12px;">Through a partnership with <a href="https://www.linkedin.com/">LinkedIn</a>, the world's largest professional network, we've now made it even easier for you to showcase your success. We encourage you to share your edX certificates on your LinkedIn profile. Simply click the "Add to profile" buttons below.</span>
%endif
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table>
%for course_dict in courses_list:
<%
course_url = course_dict['course_url']
course_title = course_dict['course_title']
course_image_url = course_dict['course_image_url']
course_org = course_dict['course_org']
course_end_date = course_dict['course_end_date']
linkedin_add_url = course_dict['linkedin_add_url']
%>
## Begin table for single class
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnCaptionBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnCaptionBlockOuter">
<tr>
<td class="mcnCaptionBlockInner" valign="top" style="padding: 9px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table border="0" cellpadding="0" cellspacing="0" class="mcnCaptionRightContentOuter" width="100%" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td valign="top" class="mcnCaptionRightContentInner" style="padding: 0 9px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table align="left" border="0" cellpadding="0" cellspacing="0" class="mcnCaptionRightImageContentContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td class="mcnCaptionRightImageContent" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<a href="${course_url}" title="" class="" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<img alt="${course_title}" src="${course_image_url}" width="264" style="max-width: 378px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;vertical-align: bottom;" class="mcnImage">
</a>
</td>
</tr>
</tbody></table>
<table class="mcnCaptionRightTextContentContainer" align="right" border="0" cellpadding="0" cellspacing="0" width="264" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td valign="top" class="mcnTextContent" style="line-height: 150%;text-align: left;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #606060;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-size: 14px;">
<span style="font-size:14px;"><strong>${course_title}</strong></span><br>
<span style="font-size:12px;"><b><i>${course_org}</i></b></span><br>
<strong style="font-size: 12px;">Completed ${course_end_date}</strong><br>
<br>
## TODO put path/to/real/source/file here
<div align="right"><a href="${linkedin_add_url}" style="font-size: 12px;word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;" target="_blank"><img align="none" src="file://localhost/Users/sarina/Desktop/linkedin_add_to_profile.png"></a></div>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table>
## End table for single class cell
%endfor
## a really complicated hr
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnDividerBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnDividerBlockOuter">
<tr>
<td class="mcnDividerBlockInner" style="padding: 18px 18px 28px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table class="mcnDividerContent" border="0" cellpadding="0" cellspacing="0" width="100%" style="border-top-width: 1px;border-top-style: solid;border-top-color: #999999;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<span></span>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table>
## text for congrats on your accomplishment
<table border="0" cellpadding="0" cellspacing="0" width="600" id="templateBody" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #ffffff;border-top: 0;border-bottom: 0;">
<tr>
<td valign="top" class="bodyContainer" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnTextBlockOuter">
<tr>
<td valign="top" class="mcnTextBlockInner" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="600" class="mcnTextContentContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #606060;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-size: 14px;line-height: 150%;text-align: left;">
<span style="font-size:12px;">Congratulations on your accomplishment! Adding this to your profile will help get the word out about your impressive edX achievement. -The edX Team-</span>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnTextBlockOuter">
<tr>
<td valign="top" class="mcnTextBlockInner" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="600" class="mcnTextContentContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #606060;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-size: 14px;line-height: 150%;text-align: left;">
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnDividerBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnDividerBlockOuter">
<tr>
<td class="mcnDividerBlockInner" style="padding: 18px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table class="mcnDividerContent" border="0" cellpadding="0" cellspacing="0" width="100%" style="border-top-width: 1px;border-top-style: solid;border-top-color: #666666;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<span></span>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnTextBlockOuter">
<tr>
<td valign="top" class="mcnTextBlockInner" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="600" class="mcnTextContentContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #606060;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-size: 14px;line-height: 150%;text-align: left;">
<div style="text-align: center;">
<span style="font-size:12px;">Stay connected on <a href="http://www.linkedin.com/company/edx" target="_self" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;">LinkedIn</a>,
<a href="https://www.facebook.com/EdxOnline" target="_self" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;">Facebook</a>, <a href="https://twitter.com/edXOnline" target="_self" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;">Twitter</a>, <a href="https://plus.google.com/b/108235383044095082735/108235383044095082735" target="_self" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;">Google+</a> and more for news and updates.</span></div>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnDividerBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnDividerBlockOuter">
<tr>
<td class="mcnDividerBlockInner" style="padding: 18px 18px 3px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table class="mcnDividerContent" border="0" cellpadding="0" cellspacing="0" width="100%" style="border-top-width: 1px;border-top-style: solid;border-top-color: #666666;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<span></span>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnTextBlockOuter">
<tr>
<td valign="top" class="mcnTextBlockInner" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="600" class="mcnTextContentContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #606060;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-size: 14px;line-height: 150%;text-align: left;">
<div style="text-align: right;">
<a href="http://facebook.com/edxonline" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;"><img align="none" height="16" src="http://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/social_facebook.png" style="width: 16px;height: 16px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="16"></a>&nbsp;&nbsp;<a href="http://twitter.com/edxonline" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;"><img align="none" height="16" src="http://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/social_twitter.png" style="width: 16px;height: 16px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="16"></a>&nbsp;&nbsp;<a href="https://plus.google.com/108235383044095082735" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;"><img align="none" height="16" src="http://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/social_googleplus.png" style="width: 16px;height: 16px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="16"></a>&nbsp;&nbsp;<a href="http://www.linkedin.com/company/edx?trk=nav_account_sub_nav_company_admin" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;"><img align="none" height="16" src="http://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/social_linkedin.png" style="width: 16px;height: 16px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="16"></a>&nbsp;&nbsp;<a href="http://vk.com/edxrussia" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;"><img align="none" height="16" src="http://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/social_vkontakte.png" style="width: 16px;height: 16px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="16"></a>&nbsp;&nbsp;<a href="http://www.meetup.com/edX-Communities/" target="_blank" style="word-wrap: break-word;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #126f9a;font-weight: normal;text-decoration: underline;"><img align="none" height="16" src="http://gallery.mailchimp.com/1822a33c054dc20e223ca40e2/images/social_meetup.png" style="width: 16px;height: 16px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="16"></a></div>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table></td>
</tr>
</table>
## // END BODY
</td>
</tr>
<tr>
<td align="center" valign="top" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
## BEGIN FOOTER //
<table border="0" cellpadding="0" cellspacing="0" width="600" id="templateFooter" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #0f6a93;border-top: 0;border-bottom: 0;">
<tr>
<td valign="top" class="footerContainer" style="padding-bottom: 9px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody class="mcnTextBlockOuter">
<tr>
<td valign="top" class="mcnTextBlockInner" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="600" class="mcnTextContentContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<tbody><tr>
<td valign="top" class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #f2f2f2;font-family: Helvetica;font-size: 11px;line-height: 125%;text-align: left;">
<br>
<em>Copyright © 2014 edX, All rights reserved.</em><br>
<br>
<b>Our mailing address is:</b><br>
edX<br>
11 Cambridge Center, Suite 101<br>
Cambridge, MA, USA 02142<br>
<br>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody>
</table></td>
</tr>
</table>
## // END FOOTER
</td>
</tr>
</table>
## // END TEMPLATE
</td>
</tr>
</table>
</center>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment