overleaf/services/web/app/coffee/Features/Email/EmailBuilder.coffee

185 lines
5.3 KiB
CoffeeScript
Raw Normal View History

_ = require('underscore')
settings = require("settings-sharelatex")
PersonalEmailLayout = require("./Layouts/PersonalEmailLayout")
NotificationEmailLayout = require("./Layouts/NotificationEmailLayout")
BaseWithHeaderEmailLayout = require("./Layouts/" + settings.brandPrefix + "BaseWithHeaderEmailLayout")
2016-06-28 12:07:27 -04:00
SingleCTAEmailBody = require("./Bodies/" + settings.brandPrefix + "SingleCTAEmailBody")
2016-06-28 12:07:27 -04:00
templates = {}
2016-08-03 09:06:08 -04:00
templates.registered =
subject: _.template "Activate your #{settings.appName} Account"
layout: PersonalEmailLayout
type: "notification"
2016-10-27 09:41:13 -04:00
plainTextTemplate: _.template """
Congratulations, you've just had an account created for you on #{settings.appName} with the email address "<%= to %>".
Click here to set your password and log in: <%= setNewPasswordUrl %>
If you have any questions or problems, please contact #{settings.adminEmail}
"""
compiledTemplate: _.template """
<p>Congratulations, you've just had an account created for you on #{settings.appName} with the email address "<%= to %>".</p>
2014-10-16 07:46:38 -04:00
<p><a href="<%= setNewPasswordUrl %>">Click here to set your password and log in.</a></p>
<p>If you have any questions or problems, please contact <a href="mailto:#{settings.adminEmail}">#{settings.adminEmail}</a>.</p>
"""
2016-10-27 09:41:13 -04:00
2016-08-03 09:06:08 -04:00
templates.canceledSubscription =
subject: _.template "ShareLaTeX thoughts"
layout: PersonalEmailLayout
type:"lifecycle"
2016-10-27 09:41:13 -04:00
plainTextTemplate: _.template """
Hi <%= first_name %>,
I'm sorry to see you cancelled your ShareLaTeX premium account. Would you mind giving me some advice on what the site is lacking at the moment via this survey?:
https://sharelatex.typeform.com/to/f5lBiZ
Thank you in advance.
Henry
ShareLaTeX Co-founder
"""
compiledTemplate: _.template '''
2014-10-16 07:46:38 -04:00
<p>Hi <%= first_name %>,</p>
2016-09-14 05:51:19 -04:00
<p>I'm sorry to see you cancelled your ShareLaTeX premium account. Would you mind giving me some advice on what the site is lacking at the moment via <a href="https://sharelatex.typeform.com/to/f5lBiZ">this survey</a>?</p>
2014-10-16 07:46:38 -04:00
<p>Thank you in advance.</p>
<p>
Henry <br>
ShareLaTeX Co-founder
2014-10-16 07:46:38 -04:00
</p>
'''
2016-10-27 09:41:13 -04:00
2016-08-03 09:06:08 -04:00
templates.passwordResetRequested =
subject: _.template "Password Reset - #{settings.appName}"
layout: BaseWithHeaderEmailLayout
type:"notification"
2016-10-27 09:41:13 -04:00
plainTextTemplate: _.template """
Password Reset
We got a request to reset your #{settings.appName} password.
Click this link to reset your password: <%= setNewPasswordUrl %>
If you ignore this message, your password won't be changed.
If you didn't request a password reset, let us know.
Thank you
#{settings.appName} - <%= siteUrl %>
"""
compiledTemplate: (opts) ->
SingleCTAEmailBody({
title: "Password Reset"
greeting: "Hi,"
message: "We got a request to reset your #{settings.appName} password."
secondaryMessage: "If you ignore this message, your password won't be changed.<br>If you didn't request a password reset, let us know."
ctaText: "Reset password"
ctaURL: opts.setNewPasswordUrl
gmailGoToAction: null
})
2016-10-27 09:41:13 -04:00
templates.projectInvite =
subject: _.template "<%= project.name %> - shared by <%= owner.email %>"
layout: BaseWithHeaderEmailLayout
type:"notification"
2016-12-16 10:15:06 -05:00
plainTextTemplate: _.template """
Hi, <%= owner.email %> wants to share '<%= project.name %>' with you.
Follow this link to view the project: <%= inviteUrl %>
Thank you
#{settings.appName} - <%= siteUrl %>
"""
compiledTemplate: (opts) ->
SingleCTAEmailBody({
title: "#{ opts.project.name } &ndash; shared by #{ opts.owner.email }"
greeting: "Hi,"
message: "#{ opts.owner.email } wants to share &ldquo;#{ opts.project.name }&rdquo; with you."
secondaryMessage: null
2016-12-16 05:06:56 -05:00
ctaText: "View project"
ctaURL: opts.inviteUrl
gmailGoToAction:
target: opts.inviteUrl
name: "View project"
description: "Join #{ opts.project.name } at ShareLaTeX"
})
templates.verifyEmailToJoinTeam =
2018-06-01 11:17:11 -04:00
subject: _.template "<%= inviterName %> has invited you to join a team on #{settings.appName}"
layout: BaseWithHeaderEmailLayout
type:"notification"
plainTextTemplate: _.template """
2018-06-06 12:11:25 -04:00
Please click the button below to join the team and enjoy the benefits of an upgraded <%= appName %> account.
2018-06-06 07:47:59 -04:00
<%= acceptInviteUrl %>
Thank You
#{settings.appName} - <%= siteUrl %>
"""
compiledTemplate: (opts) ->
SingleCTAEmailBody({
2018-06-01 11:17:11 -04:00
title: "#{opts.inviterName} has invited you to join a team on #{settings.appName}"
greeting: "Hi,"
2018-06-06 07:47:59 -04:00
message: "Join the Team"
secondaryMessage: null
ctaText: "Verify now"
ctaURL: opts.acceptInviteUrl
gmailGoToAction: null
})
2017-01-17 05:52:04 -05:00
templates.testEmail =
2017-01-18 10:28:51 -05:00
subject: _.template "A Test Email from ShareLaTeX"
layout: BaseWithHeaderEmailLayout
type:"notification"
2017-01-17 05:52:04 -05:00
plainTextTemplate: _.template """
Hi,
2017-01-18 10:28:51 -05:00
This is a test email sent from ShareLaTeX.
2017-01-17 05:52:04 -05:00
#{settings.appName} - <%= siteUrl %>
"""
compiledTemplate: (opts) ->
2017-01-18 10:28:51 -05:00
SingleCTAEmailBody({
title: "A Test Email from ShareLaTeX"
greeting: "Hi,"
message: "This is a test email sent from ShareLaTeX"
secondaryMessage: null
ctaText: "Open ShareLaTeX"
ctaURL: "/"
gmailGoToAction: null
})
2017-01-17 05:52:04 -05:00
module.exports =
templates: templates
buildEmail: (templateName, opts)->
template = templates[templateName]
2014-06-17 11:28:52 -04:00
opts.siteUrl = settings.siteUrl
opts.body = template.compiledTemplate(opts)
2016-06-28 12:07:27 -04:00
if settings.email?.templates?.customFooter?
opts.body += settings.email?.templates?.customFooter
return {
subject : template.subject(opts)
html: template.layout(opts)
text: template?.plainTextTemplate?(opts)
type:template.type
2017-01-17 05:52:04 -05:00
}