2014-03-04 13:10:06 -05:00
_ = require ( ' underscore ' )
2017-12-21 05:26:14 -05:00
settings = require ( " settings-sharelatex " )
2018-06-19 08:52:56 -04:00
marked = require ( ' marked ' )
2016-12-15 12:22:39 -05:00
2014-03-04 13:10:06 -05:00
PersonalEmailLayout = require ( " ./Layouts/PersonalEmailLayout " )
NotificationEmailLayout = require ( " ./Layouts/NotificationEmailLayout " )
2017-12-21 05:26:14 -05:00
BaseWithHeaderEmailLayout = require ( " ./Layouts/ " + settings . brandPrefix + " BaseWithHeaderEmailLayout " )
2016-06-28 12:07:27 -04:00
2017-12-21 05:26:14 -05:00
SingleCTAEmailBody = require ( " ./Bodies/ " + settings . brandPrefix + " SingleCTAEmailBody " )
2016-06-28 12:07:27 -04:00
2018-06-19 08:52:56 -04:00
CTAEmailTemplate = (content) ->
content . greeting ? = () -> ' Hi, '
content . secondaryMessage ? = () -> " "
return {
subject: (opts) -> content . subject ( opts ) ,
layout: BaseWithHeaderEmailLayout ,
plainTextTemplate: (opts) -> """
#{content.greeting(opts)}
#{content.message(opts).trim()}
#{content.ctaText(opts)}: #{content.ctaURL(opts)}
#{content.secondaryMessage?(opts).trim() or ""}
Regards ,
The #{settings.appName} Team - #{settings.siteUrl}
"""
compiledTemplate: (opts) ->
SingleCTAEmailBody ( {
title: content . title ? ( opts )
greeting: content . greeting ( opts )
message: marked ( content . message ( opts ) . trim ( ) )
secondaryMessage: marked ( content . secondaryMessage ( opts ) . trim ( ) )
ctaText: content . ctaText ( opts )
ctaURL: content . ctaURL ( opts )
gmailGoToAction: content . gmailGoToAction ? ( opts )
} )
}
2016-10-27 09:41:13 -04:00
2018-06-19 08:52:56 -04:00
templates = { }
2014-10-16 07:46:38 -04:00
2018-09-10 05:58:50 -04:00
templates.accountMergeToOverleafAddress = CTAEmailTemplate ( {
subject: () -> " Confirm Account Merge - #{ settings . appName } "
title: () -> " Confirm Account Merge "
message: () -> " To merge your ShareLaTeX and Overleaf accounts, click the link below. "
ctaText: () -> " Confirm Account Merge "
ctaURL: (opts) -> opts . tokenLinkUrl
} )
2018-06-19 08:52:56 -04:00
templates.registered = CTAEmailTemplate ( {
subject: () -> " Activate your #{ settings . appName } Account "
message: (opts) -> """
Congratulations , you ' ve just had an account created for you on # {settings.appName} with the email address ' #{opts.to}'.
2014-03-04 13:10:06 -05:00
2018-06-19 08:52:56 -04:00
Click here to set your password and log in :
2015-03-19 10:22:48 -04:00
"""
2018-06-19 08:52:56 -04:00
secondaryMessage: () -> " If you have any questions or problems, please contact #{ settings . adminEmail } "
ctaText: () -> " Set password "
ctaURL: (opts) -> opts . setNewPasswordUrl
} )
templates.canceledSubscription = CTAEmailTemplate ( {
subject: () -> " #{ settings . appName } thoughts "
message: () -> """
I ' m sorry to see you cancelled your # {settings.appName} premium account. Would you mind giving us some feedback on what the site is lacking at the moment via this quick survey?
2016-10-27 09:41:13 -04:00
"""
2018-06-19 08:52:56 -04:00
secondaryMessage: () -> " Thank you in advance! "
ctaText: () -> " Leave Feedback "
2018-08-23 12:34:13 -04:00
ctaURL: (opts) -> " https://docs.google.com/forms/d/e/1FAIpQLScqU6Je1r4Afz6ul6oY0RAfN7RabdWv_oL1u7Rj1YBmXS4fiQ/viewform?usp=sf_link "
2018-06-19 08:52:56 -04:00
} )
templates.passwordResetRequested = CTAEmailTemplate ( {
subject: () -> " Password Reset - #{ settings . appName } "
title: () -> " Password Reset "
message: () -> " We got a request to reset your #{ settings . appName } password. "
secondaryMessage: () -> """
2016-10-27 09:41:13 -04:00
If you ignore this message , your password won ' t be changed.
If you didn ' t request a password reset, let us know.
2018-05-30 06:29:21 -04:00
"""
2018-06-19 08:52:56 -04:00
ctaText: () -> " Reset password "
ctaURL: (opts) -> opts . setNewPasswordUrl
} )
templates.confirmEmail = CTAEmailTemplate ( {
subject: () -> " Confirm Email - #{ settings . appName } "
title: () -> " Confirm Email "
message: () -> " Please confirm your email on #{ settings . appName } . "
ctaText: () -> " Confirm Email "
ctaURL: (opts) -> opts . confirmEmailUrl
} )
templates.projectInvite = CTAEmailTemplate ( {
subject: (opts) -> " #{ opts . project . name } - shared by #{ opts . owner . email } "
title: (opts) -> " #{ opts . project . name } - shared by #{ opts . owner . email } "
message: (opts) -> " #{ opts . owner . email } wants to share ' #{ opts . project . name } ' with you. "
ctaText: () -> " View project "
ctaURL: (opts) -> opts . inviteUrl
gmailGoToAction: (opts) ->
target: opts . inviteUrl
name: " View project "
description: " Join #{ opts . project . name } at #{ settings . appName } "
} )
templates.verifyEmailToJoinTeam = CTAEmailTemplate ( {
subject: (opts) -> " #{ opts . inviterName } has invited you to join a team on #{ settings . appName } "
title: (opts) -> " #{ opts . inviterName } has invited you to join a team on #{ settings . appName } "
message: (opts) -> " Please click the button below to join the team and enjoy the benefits of an upgraded #{ settings . appName } account. "
ctaText: (opts) -> " Join now "
ctaURL: (opts) -> opts . acceptInviteUrl
} )
templates.testEmail = CTAEmailTemplate ( {
subject: () -> " A Test Email from #{ settings . appName } "
title: () -> " A Test Email from #{ settings . appName } "
greeting: () -> " Hi, "
message: () -> " This is a test Email from #{ settings . appName } "
ctaText: () -> " Open #{ settings . appName } "
ctaURL: () -> settings . siteUrl
} )
2017-01-17 05:52:04 -05:00
2014-03-04 13:10:06 -05:00
module.exports =
2015-03-19 13:19:56 -04:00
templates: templates
2018-06-19 08:52:56 -04:00
CTAEmailTemplate: CTAEmailTemplate
2014-03-04 13:10:06 -05:00
buildEmail: (templateName, opts)->
template = templates [ templateName ]
2014-06-17 11:28:52 -04:00
opts.siteUrl = settings . siteUrl
2014-03-04 13:10:06 -05:00
opts.body = template . compiledTemplate ( opts )
2016-06-28 12:07:27 -04:00
if settings . email ? . templates ? . customFooter ?
opts . body += settings . email ? . templates ? . customFooter
2014-03-04 13:10:06 -05:00
return {
subject : template . subject ( opts )
html: template . layout ( opts )
2016-10-03 10:25:38 -04:00
text: template ? . plainTextTemplate ? ( opts )
2017-01-17 05:52:04 -05:00
}