Skip to content

Commit

Permalink
Break HTML blocks to individual strings (#8903)
Browse files Browse the repository at this point in the history
* Modifying message and templates about mfa_change

* Modifying message and templates about password_change

* Modify message and template about password_reset

* Modify message and template about singin_change

* Modify message and template about email_info

* Modify message and template about change_username

* Modify message about change_email

* Add missing props

* Add argument

* Modify message and template about token_added

* Modify messages and template about notification_email

* Modify message and template about deactivate_email

* Fix style

* Remove unused message

* Remove br tags

* Modify message and code about invite_mail

* Add missing message
  • Loading branch information
kaakaa authored and enahum committed Jul 20, 2018
1 parent 908a682 commit 6104c37
Show file tree
Hide file tree
Showing 15 changed files with 120 additions and 73 deletions.
41 changes: 27 additions & 14 deletions app/email.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,9 @@ func (a *App) SendChangeUsernameEmail(oldUsername, newUsername, email, locale, s
bodyPage := a.NewEmailTemplate("email_change_body", locale)
bodyPage.Props["SiteURL"] = siteURL
bodyPage.Props["Title"] = T("api.templates.username_change_body.title")
bodyPage.Html["Info"] = utils.TranslateAsHtml(T, "api.templates.username_change_body.info",
bodyPage.Props["Info"] = T("api.templates.username_change_body.info",
map[string]interface{}{"TeamDisplayName": a.Config().TeamSettings.SiteName, "NewUsername": newUsername})
bodyPage.Props["Warning"] = T("api.templates.email_warning")

if err := a.SendMail(email, subject, bodyPage.Render()); err != nil {
return model.NewAppError("SendChangeUsernameEmail", "api.user.send_email_change_username_and_forget.error", nil, err.Error(), http.StatusInternalServerError)
Expand Down Expand Up @@ -99,8 +100,9 @@ func (a *App) SendEmailChangeEmail(oldEmail, newEmail, locale, siteURL string) *
bodyPage := a.NewEmailTemplate("email_change_body", locale)
bodyPage.Props["SiteURL"] = siteURL
bodyPage.Props["Title"] = T("api.templates.email_change_body.title")
bodyPage.Html["Info"] = utils.TranslateAsHtml(T, "api.templates.email_change_body.info",
bodyPage.Props["Info"] = T("api.templates.email_change_body.info",
map[string]interface{}{"TeamDisplayName": a.Config().TeamSettings.SiteName, "NewEmail": newEmail})
bodyPage.Props["Warning"] = T("api.templates.email_warning")

if err := a.SendMail(oldEmail, subject, bodyPage.Render()); err != nil {
return model.NewAppError("SendEmailChangeEmail", "api.user.send_email_change_email_and_forget.error", nil, err.Error(), http.StatusInternalServerError)
Expand Down Expand Up @@ -142,8 +144,9 @@ func (a *App) SendSignInChangeEmail(email, method, locale, siteURL string) *mode
bodyPage := a.NewEmailTemplate("signin_change_body", locale)
bodyPage.Props["SiteURL"] = siteURL
bodyPage.Props["Title"] = T("api.templates.signin_change_email.body.title")
bodyPage.Html["Info"] = utils.TranslateAsHtml(T, "api.templates.signin_change_email.body.info",
bodyPage.Props["Info"] = T("api.templates.signin_change_email.body.info",
map[string]interface{}{"SiteName": a.ClientConfig()["SiteName"], "Method": method})
bodyPage.Props["Warning"] = T("api.templates.email_warning")

if err := a.SendMail(email, subject, bodyPage.Render()); err != nil {
return model.NewAppError("SendSignInChangeEmail", "api.user.send_sign_in_change_email_and_forget.error", nil, err.Error(), http.StatusInternalServerError)
Expand Down Expand Up @@ -201,8 +204,9 @@ func (a *App) SendPasswordChangeEmail(email, method, locale, siteURL string) *mo
bodyPage := a.NewEmailTemplate("password_change_body", locale)
bodyPage.Props["SiteURL"] = siteURL
bodyPage.Props["Title"] = T("api.templates.password_change_body.title")
bodyPage.Html["Info"] = utils.TranslateAsHtml(T, "api.templates.password_change_body.info",
bodyPage.Props["Info"] = T("api.templates.password_change_body.info",
map[string]interface{}{"TeamDisplayName": a.Config().TeamSettings.SiteName, "TeamURL": siteURL, "Method": method})
bodyPage.Props["Warning"] = T("api.templates.email_warning")

if err := a.SendMail(email, subject, bodyPage.Render()); err != nil {
return model.NewAppError("SendPasswordChangeEmail", "api.user.send_password_change_email_and_forget.error", nil, err.Error(), http.StatusInternalServerError)
Expand All @@ -211,16 +215,18 @@ func (a *App) SendPasswordChangeEmail(email, method, locale, siteURL string) *mo
return nil
}

func (a *App) SendUserAccessTokenAddedEmail(email, locale string) *model.AppError {
func (a *App) SendUserAccessTokenAddedEmail(email, locale, siteURL string) *model.AppError {
T := utils.GetUserTranslations(locale)

subject := T("api.templates.user_access_token_subject",
map[string]interface{}{"SiteName": a.ClientConfig()["SiteName"]})

bodyPage := a.NewEmailTemplate("password_change_body", locale)
bodyPage.Props["SiteURL"] = siteURL
bodyPage.Props["Title"] = T("api.templates.user_access_token_body.title")
bodyPage.Html["Info"] = utils.TranslateAsHtml(T, "api.templates.user_access_token_body.info",
map[string]interface{}{"SiteName": a.ClientConfig()["SiteName"], "SiteURL": a.GetSiteURL()})
bodyPage.Props["Info"] = T("api.templates.user_access_token_body.info",
map[string]interface{}{"SiteName": a.ClientConfig()["SiteName"], "SiteURL": siteURL})
bodyPage.Props["Warning"] = T("api.templates.email_warning")

if err := a.SendMail(email, subject, bodyPage.Render()); err != nil {
return model.NewAppError("SendUserAccessTokenAddedEmail", "api.user.send_user_access_token.error", nil, err.Error(), http.StatusInternalServerError)
Expand All @@ -241,7 +247,8 @@ func (a *App) SendPasswordResetEmail(email string, token *model.Token, locale, s
bodyPage := a.NewEmailTemplate("reset_body", locale)
bodyPage.Props["SiteURL"] = siteURL
bodyPage.Props["Title"] = T("api.templates.reset_body.title")
bodyPage.Html["Info"] = utils.TranslateAsHtml(T, "api.templates.reset_body.info", nil)
bodyPage.Props["Info1"] = utils.TranslateAsHtml(T, "api.templates.reset_body.info1", nil)
bodyPage.Props["Info2"] = T("api.templates.reset_body.info2")
bodyPage.Props["ResetUrl"] = link
bodyPage.Props["Button"] = T("api.templates.reset_body.button")

Expand All @@ -262,12 +269,13 @@ func (a *App) SendMfaChangeEmail(email string, activated bool, locale, siteURL s
bodyPage.Props["SiteURL"] = siteURL

if activated {
bodyPage.Html["Info"] = utils.TranslateAsHtml(T, "api.templates.mfa_activated_body.info", map[string]interface{}{"SiteURL": siteURL})
bodyPage.Props["Info"] = T("api.templates.mfa_activated_body.info", map[string]interface{}{"SiteURL": siteURL})
bodyPage.Props["Title"] = T("api.templates.mfa_activated_body.title")
} else {
bodyPage.Html["Info"] = utils.TranslateAsHtml(T, "api.templates.mfa_deactivated_body.info", map[string]interface{}{"SiteURL": siteURL})
bodyPage.Props["Info"] = T("api.templates.mfa_deactivated_body.info", map[string]interface{}{"SiteURL": siteURL})
bodyPage.Props["Title"] = T("api.templates.mfa_deactivated_body.title")
}
bodyPage.Props["Warning"] = T("api.templates.email_warning")

if err := a.SendMail(email, subject, bodyPage.Render()); err != nil {
return model.NewAppError("SendMfaChangeEmail", "api.user.send_mfa_change_email.error", nil, err.Error(), http.StatusInternalServerError)
Expand Down Expand Up @@ -311,7 +319,8 @@ func (a *App) SendInviteEmails(team *model.Team, senderName string, senderUserId
bodyPage.Props["Info"] = map[string]interface{}{}
bodyPage.Props["Button"] = utils.T("api.templates.invite_body.button")
bodyPage.Html["ExtraInfo"] = utils.TranslateAsHtml(utils.T, "api.templates.invite_body.extra_info",
map[string]interface{}{"TeamDisplayName": team.DisplayName, "TeamURL": siteURL + "/" + team.Name})
map[string]interface{}{"TeamDisplayName": team.DisplayName})
bodyPage.Props["TeamURL"] = siteURL + "/" + team.Name

token := model.NewToken(
TOKEN_TYPE_TEAM_INVITATION,
Expand Down Expand Up @@ -359,8 +368,11 @@ func (a *App) NewEmailTemplate(name, locale string) *utils.HTMLTemplate {
t.Props["Organization"] = ""
}

t.Html["EmailInfo"] = utils.TranslateAsHtml(localT, "api.templates.email_info",
map[string]interface{}{"SupportEmail": *a.Config().SupportSettings.SupportEmail, "SiteName": a.Config().TeamSettings.SiteName})
t.Props["EmailInfo1"] = localT("api.templates.email_info1")
t.Props["EmailInfo2"] = localT("api.templates.email_info2")
t.Props["EmailInfo3"] = localT("api.templates.email_info3",
map[string]interface{}{"SiteName": a.Config().TeamSettings.SiteName})
t.Props["SupportEmail"] = *a.Config().SupportSettings.SupportEmail

return t
}
Expand All @@ -377,8 +389,9 @@ func (a *App) SendDeactivateAccountEmail(email string, locale, siteURL string) *
bodyPage := a.NewEmailTemplate("deactivate_body", locale)
bodyPage.Props["SiteURL"] = siteURL
bodyPage.Props["Title"] = T("api.templates.deactivate_body.title", map[string]interface{}{"ServerURL": rawUrl.Host})
bodyPage.Html["Info"] = utils.TranslateAsHtml(T, "api.templates.deactivate_body.info",
bodyPage.Props["Info"] = T("api.templates.deactivate_body.info",
map[string]interface{}{"SiteURL": siteURL})
bodyPage.Props["Warning"] = T("api.templates.deactivate_body.warning")

if err := a.SendMail(email, subject, bodyPage.Render()); err != nil {
return model.NewAppError("SendDeactivateEmail", "api.user.send_deactivate_email_and_forget.failed.error", nil, err.Error(), http.StatusInternalServerError)
Expand Down
60 changes: 31 additions & 29 deletions app/notification.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ package app
import (
"fmt"
"html"
"html/template"
"net/http"
"net/url"
"path/filepath"
Expand Down Expand Up @@ -550,12 +549,11 @@ func (a *App) getNotificationEmailBody(recipient *model.User, post *model.Post,

t := getFormattedPostTime(recipient, post, useMilitaryTime, translateFunc)

var bodyText string
var info template.HTML
if channel.Type == model.CHANNEL_DIRECT {
if emailNotificationContentsType == model.EMAIL_NOTIFICATION_CONTENTS_FULL {
bodyText = translateFunc("app.notification.body.intro.direct.full")
info = utils.TranslateAsHtml(translateFunc, "app.notification.body.text.direct.full",
bodyPage.Props["BodyText"] = translateFunc("app.notification.body.intro.direct.full")
bodyPage.Props["Info1"] = ""
bodyPage.Props["Info2"] = translateFunc("app.notification.body.text.direct.full",
map[string]interface{}{
"SenderName": senderName,
"Hour": t.Hour,
Expand All @@ -565,10 +563,10 @@ func (a *App) getNotificationEmailBody(recipient *model.User, post *model.Post,
"Day": t.Day,
})
} else {
bodyText = translateFunc("app.notification.body.intro.direct.generic", map[string]interface{}{
bodyPage.Props["BodyText"] = translateFunc("app.notification.body.intro.direct.generic", map[string]interface{}{
"SenderName": senderName,
})
info = utils.TranslateAsHtml(translateFunc, "app.notification.body.text.direct.generic",
bodyPage.Props["Info"] = translateFunc("app.notification.body.text.direct.generic",
map[string]interface{}{
"Hour": t.Hour,
"Minute": t.Minute,
Expand All @@ -579,22 +577,25 @@ func (a *App) getNotificationEmailBody(recipient *model.User, post *model.Post,
}
} else if channel.Type == model.CHANNEL_GROUP {
if emailNotificationContentsType == model.EMAIL_NOTIFICATION_CONTENTS_FULL {
bodyText = translateFunc("app.notification.body.intro.group_message.full")
info = utils.TranslateAsHtml(translateFunc, "app.notification.body.text.group_message.full",
bodyPage.Props["BodyText"] = translateFunc("app.notification.body.intro.group_message.full")
bodyPage.Props["Info1"] = translateFunc("app.notification.body.text.group_message.full",
map[string]interface{}{
"ChannelName": channelName,
"SenderName": senderName,
"Hour": t.Hour,
"Minute": t.Minute,
"TimeZone": t.TimeZone,
"Month": t.Month,
"Day": t.Day,
})
bodyPage.Props["Info2"] = translateFunc("app.notification.body.text.group_message.full2",
map[string]interface{}{
"SenderName": senderName,
"Hour": t.Hour,
"Minute": t.Minute,
"TimeZone": t.TimeZone,
"Month": t.Month,
"Day": t.Day,
})
} else {
bodyText = translateFunc("app.notification.body.intro.group_message.generic", map[string]interface{}{
bodyPage.Props["BodyText"] = translateFunc("app.notification.body.intro.group_message.generic", map[string]interface{}{
"SenderName": senderName,
})
info = utils.TranslateAsHtml(translateFunc, "app.notification.body.text.group_message.generic",
bodyPage.Props["Info"] = translateFunc("app.notification.body.text.group_message.generic",
map[string]interface{}{
"Hour": t.Hour,
"Minute": t.Minute,
Expand All @@ -605,22 +606,25 @@ func (a *App) getNotificationEmailBody(recipient *model.User, post *model.Post,
}
} else {
if emailNotificationContentsType == model.EMAIL_NOTIFICATION_CONTENTS_FULL {
bodyText = translateFunc("app.notification.body.intro.notification.full")
info = utils.TranslateAsHtml(translateFunc, "app.notification.body.text.notification.full",
bodyPage.Props["BodyText"] = translateFunc("app.notification.body.intro.notification.full")
bodyPage.Props["Info1"] = translateFunc("app.notification.body.text.notification.full",
map[string]interface{}{
"ChannelName": channelName,
"SenderName": senderName,
"Hour": t.Hour,
"Minute": t.Minute,
"TimeZone": t.TimeZone,
"Month": t.Month,
"Day": t.Day,
})
bodyPage.Props["Info2"] = translateFunc("app.notification.body.text.notification.full2",
map[string]interface{}{
"SenderName": senderName,
"Hour": t.Hour,
"Minute": t.Minute,
"TimeZone": t.TimeZone,
"Month": t.Month,
"Day": t.Day,
})
} else {
bodyText = translateFunc("app.notification.body.intro.notification.generic", map[string]interface{}{
bodyPage.Props["BodyText"] = translateFunc("app.notification.body.intro.notification.generic", map[string]interface{}{
"SenderName": senderName,
})
info = utils.TranslateAsHtml(translateFunc, "app.notification.body.text.notification.generic",
bodyPage.Props["Info"] = translateFunc("app.notification.body.text.notification.generic",
map[string]interface{}{
"Hour": t.Hour,
"Minute": t.Minute,
Expand All @@ -631,8 +635,6 @@ func (a *App) getNotificationEmailBody(recipient *model.User, post *model.Post,
}
}

bodyPage.Props["BodyText"] = bodyText
bodyPage.Html["Info"] = info
bodyPage.Props["Button"] = translateFunc("api.templates.post_body.button")

return bodyPage.Render()
Expand Down
2 changes: 1 addition & 1 deletion app/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ func (a *App) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAc
mlog.Error(result.Err.Error())
} else {
user := result.Data.(*model.User)
if err := a.SendUserAccessTokenAddedEmail(user.Email, user.Locale); err != nil {
if err := a.SendUserAccessTokenAddedEmail(user.Email, user.Locale, a.GetSiteURL()); err != nil {
mlog.Error(err.Error())
}
}
Expand Down
Loading

0 comments on commit 6104c37

Please sign in to comment.