diff options
author | =Corey Hulen <corey@hulen.com> | 2016-01-21 14:15:44 -0600 |
---|---|---|
committer | =Corey Hulen <corey@hulen.com> | 2016-01-21 14:15:44 -0600 |
commit | 221985435966dbf583d3e367c243822e338b6bc4 (patch) | |
tree | 140d0b1318df0d5b11ef21eacf7cfa7545498585 | |
parent | 8cc45a2e08c3eaaa66619cc7ee9dfc7ff49b388f (diff) | |
download | chat-221985435966dbf583d3e367c243822e338b6bc4.tar.gz chat-221985435966dbf583d3e367c243822e338b6bc4.tar.bz2 chat-221985435966dbf583d3e367c243822e338b6bc4.zip |
PLT-7 client side infra
-rw-r--r-- | api/context.go | 3 | ||||
-rw-r--r-- | api/post.go | 2 | ||||
-rw-r--r-- | utils/i18n.go | 18 | ||||
-rw-r--r-- | web/react/components/login.jsx | 17 | ||||
-rw-r--r-- | web/static/i18n/en.json | 4 | ||||
-rw-r--r-- | web/static/i18n/es.json | 4 | ||||
-rw-r--r-- | web/web.go | 34 |
7 files changed, 48 insertions, 34 deletions
diff --git a/api/context.go b/api/context.go index 5880842b6..f47ed1c30 100644 --- a/api/context.go +++ b/api/context.go @@ -31,6 +31,7 @@ type Context struct { siteURL string SessionTokenIndex int64 T goi18n.TranslateFunc + Locale string } type Page struct { @@ -87,7 +88,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { l4g.Debug("%v", r.URL.Path) c := &Context{} - c.T = utils.GetTranslations(w, r) + c.T, c.Locale = utils.GetTranslationsAndLocale(w, r) c.RequestId = model.NewId() c.IpAddress = GetIpAddress(r) diff --git a/api/post.go b/api/post.go index 42c3c304d..ecdb0925a 100644 --- a/api/post.go +++ b/api/post.go @@ -392,7 +392,7 @@ func handleWebhookEventsAndForget(c *Context, post *model.Post, team *model.Team // copy the context and create a mock session for posting the message mockSession := model.Session{UserId: hook.CreatorId, TeamId: hook.TeamId, IsOAuth: false} - newContext := &Context{mockSession, model.NewId(), "", c.Path, nil, c.teamURLValid, c.teamURL, c.siteURL, 0, c.T} + newContext := &Context{mockSession, model.NewId(), "", c.Path, nil, c.teamURLValid, c.teamURL, c.siteURL, 0, c.T, c.Locale} if text, ok := respProps["text"]; ok { if _, err := CreateWebhookPost(newContext, post.ChannelId, text, respProps["username"], respProps["icon_url"], post.Props, post.Type); err != nil { diff --git a/utils/i18n.go b/utils/i18n.go index 4b7b187a8..7c6db66f6 100644 --- a/utils/i18n.go +++ b/utils/i18n.go @@ -44,7 +44,7 @@ func GetTranslationsBySystemLocale() i18n.TranslateFunc { } } - if locales[model.DEFAULT_LOCALE] == "" { + if locales[locale] == "" { panic("Failed to load system translations for '" + model.DEFAULT_LOCALE + "'") } @@ -62,14 +62,14 @@ func SetTranslations(locale string) i18n.TranslateFunc { return translations } -func GetTranslations(w http.ResponseWriter, r *http.Request) i18n.TranslateFunc { - translations, _ := getTranslationsAndLocale(w, r) - return translations -} +// func GetTranslations(w http.ResponseWriter, r *http.Request) i18n.TranslateFunc { +// translations, _ := getTranslationsAndLocale(w, r) +// return translations +// } -func GetTranslationsAndLocale(w http.ResponseWriter, r *http.Request) (i18n.TranslateFunc, string) { - return getTranslationsAndLocale(w, r) -} +// func GetTranslationsAndLocale(w http.ResponseWriter, r *http.Request) (i18n.TranslateFunc, string) { +// return getTranslationsAndLocale(w, r) +// } func SetLocaleCookie(w http.ResponseWriter, lang string, sessionCacheInMinutes int) { maxAge := (sessionCacheInMinutes * 60) @@ -116,7 +116,7 @@ func SetLocaleCookie(w http.ResponseWriter, lang string, sessionCacheInMinutes i // }) // } -func getTranslationsAndLocale(w http.ResponseWriter, r *http.Request) (i18n.TranslateFunc, string) { +func GetTranslationsAndLocale(w http.ResponseWriter, r *http.Request) (i18n.TranslateFunc, string) { var translations i18n.TranslateFunc var _ error localeCookie := "" diff --git a/web/react/components/login.jsx b/web/react/components/login.jsx index 1d9b3e906..6887489a7 100644 --- a/web/react/components/login.jsx +++ b/web/react/components/login.jsx @@ -7,6 +7,8 @@ import LoginLdap from './login_ldap.jsx'; import * as Utils from '../utils/utils.jsx'; import Constants from '../utils/constants.jsx'; +var FormattedMessage = ReactIntl.FormattedMessage; + export default class Login extends React.Component { constructor(props) { super(props); @@ -86,7 +88,12 @@ export default class Login extends React.Component { if (emailSignup) { forgotPassword = ( <div className='form-group'> - <a href={'/' + teamName + '/reset_password'}>{'I forgot my password'}</a> + <a href={'/' + teamName + '/reset_password'}> + <FormattedMessage + id='login.forgot_password' + defaultMessage='I forgot my password' + /> + </a> </div> ); } @@ -141,7 +148,13 @@ export default class Login extends React.Component { {ldapLogin} {userSignUp} <div className='form-group margin--extra form-group--small'> - <span><a href='/find_team'>{'Find your other teams'}</a></span> + <span> + <a href='/find_team'> + <FormattedMessage + id='login.find_teams' + defaultMessage='Find your other teams' + /> + </a></span> </div> {forgotPassword} {teamSignUp} diff --git a/web/static/i18n/en.json b/web/static/i18n/en.json index 4b3397a08..038b1342d 100644 --- a/web/static/i18n/en.json +++ b/web/static/i18n/en.json @@ -1,4 +1,4 @@ { - "about.close": "Close", - "about.date": "Build Date:" + "login.find_teams": "Find your other teams", + "login.forgot_password": "I forgot my password" }
\ No newline at end of file diff --git a/web/static/i18n/es.json b/web/static/i18n/es.json index 4b3397a08..b849489cb 100644 --- a/web/static/i18n/es.json +++ b/web/static/i18n/es.json @@ -1,4 +1,4 @@ { - "about.close": "Close", - "about.date": "Build Date:" + "login.find_teams": "Find your other teams (spanish!)", + "login.forgot_password": "I forgot my password (spanish!)" }
\ No newline at end of file diff --git a/web/web.go b/web/web.go index a02019730..391b268cd 100644 --- a/web/web.go +++ b/web/web.go @@ -24,7 +24,7 @@ var Templates *template.Template type HtmlTemplatePage api.Page -func NewHtmlTemplatePage(templateName string, title string) *HtmlTemplatePage { +func NewHtmlTemplatePage(templateName string, title string, locale string) *HtmlTemplatePage { if len(title) > 0 { title = utils.Cfg.TeamSettings.SiteName + " - " + title @@ -37,7 +37,7 @@ func NewHtmlTemplatePage(templateName string, title string) *HtmlTemplatePage { Props: props, ClientCfg: utils.ClientCfg, ClientLicense: utils.ClientLicense, - Locale: model.DEFAULT_LOCALE, + Locale: locale, } } @@ -171,7 +171,7 @@ func root(c *api.Context, w http.ResponseWriter, r *http.Request) { } if len(c.Session.UserId) == 0 { - page := NewHtmlTemplatePage("signup_team", "Signup") + page := NewHtmlTemplatePage("signup_team", "Signup", c.Locale) if result := <-api.Srv.Store.Team().GetAllTeamListing(); result.Err != nil { c.Err = result.Err @@ -210,7 +210,7 @@ func root(c *api.Context, w http.ResponseWriter, r *http.Request) { user = ur.Data.(*model.User) } - page := NewHtmlTemplatePage("home", "Home") + page := NewHtmlTemplatePage("home", "Home", c.Locale) page.Team = team page.User = user page.Render(c, w) @@ -223,7 +223,7 @@ func signup(c *api.Context, w http.ResponseWriter, r *http.Request) { return } - page := NewHtmlTemplatePage("signup_team", "Signup") + page := NewHtmlTemplatePage("signup_team", "Signup", c.Locale) page.Render(c, w) } @@ -258,7 +258,7 @@ func login(c *api.Context, w http.ResponseWriter, r *http.Request) { return } - page := NewHtmlTemplatePage("login", "Login") + page := NewHtmlTemplatePage("login", "Login", c.Locale) page.Props["TeamDisplayName"] = team.DisplayName page.Props["TeamName"] = team.Name @@ -272,7 +272,7 @@ func login(c *api.Context, w http.ResponseWriter, r *http.Request) { func signupTeamConfirm(c *api.Context, w http.ResponseWriter, r *http.Request) { email := r.FormValue("email") - page := NewHtmlTemplatePage("signup_team_confirm", "Signup Email Sent") + page := NewHtmlTemplatePage("signup_team_confirm", "Signup Email Sent", c.Locale) page.Props["Email"] = email page.Render(c, w) } @@ -294,7 +294,7 @@ func signupTeamComplete(c *api.Context, w http.ResponseWriter, r *http.Request) return } - page := NewHtmlTemplatePage("signup_team_complete", "Complete Team Sign Up") + page := NewHtmlTemplatePage("signup_team_complete", "Complete Team Sign Up", c.Locale) page.Props["Email"] = props["email"] page.Props["Data"] = data page.Props["Hash"] = hash @@ -344,7 +344,7 @@ func signupUserComplete(c *api.Context, w http.ResponseWriter, r *http.Request) } } - page := NewHtmlTemplatePage("signup_user_complete", "Complete User Sign Up") + page := NewHtmlTemplatePage("signup_user_complete", "Complete User Sign Up", c.Locale) page.Props["Email"] = props["email"] page.Props["TeamDisplayName"] = props["display_name"] page.Props["TeamName"] = props["name"] @@ -528,7 +528,7 @@ func doLoadChannel(c *api.Context, w http.ResponseWriter, r *http.Request, team user = ur.Data.(*model.User) } - page := NewHtmlTemplatePage("channel", "") + page := NewHtmlTemplatePage("channel", "", c.Locale) page.Props["Title"] = channel.DisplayName + " - " + team.DisplayName + " " + page.ClientCfg["SiteName"] page.Props["TeamDisplayName"] = team.DisplayName page.Props["ChannelName"] = channel.Name @@ -585,7 +585,7 @@ func verifyEmail(c *api.Context, w http.ResponseWriter, r *http.Request) { } } - page := NewHtmlTemplatePage("verify", "Email Verified") + page := NewHtmlTemplatePage("verify", "Email Verified", c.Locale) page.Props["TeamURL"] = c.GetTeamURLFromTeam(team) page.Props["UserEmail"] = email page.Props["ResendSuccess"] = resendSuccess @@ -593,7 +593,7 @@ func verifyEmail(c *api.Context, w http.ResponseWriter, r *http.Request) { } func findTeam(c *api.Context, w http.ResponseWriter, r *http.Request) { - page := NewHtmlTemplatePage("find_team", "Find Team") + page := NewHtmlTemplatePage("find_team", "Find Team", c.Locale) page.Render(c, w) } @@ -601,7 +601,7 @@ func docs(c *api.Context, w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) doc := params["doc"] - page := NewHtmlTemplatePage("docs", "Documentation") + page := NewHtmlTemplatePage("docs", "Documentation", c.Locale) page.Props["Site"] = doc page.Render(c, w) } @@ -643,7 +643,7 @@ func resetPassword(c *api.Context, w http.ResponseWriter, r *http.Request) { teamDisplayName = team.DisplayName } - page := NewHtmlTemplatePage("password_reset", "") + page := NewHtmlTemplatePage("password_reset", "", c.Locale) page.Props["Title"] = "Reset Password " + page.ClientCfg["SiteName"] page.Props["TeamDisplayName"] = teamDisplayName page.Props["TeamName"] = teamName @@ -821,7 +821,7 @@ func adminConsole(c *api.Context, w http.ResponseWriter, r *http.Request) { activeTab := params["tab"] teamId := params["team"] - page := NewHtmlTemplatePage("admin_console", "Admin Console") + page := NewHtmlTemplatePage("admin_console", "Admin Console", c.Locale) page.User = user page.Team = team page.Props["ActiveTab"] = activeTab @@ -867,7 +867,7 @@ func authorizeOAuth(c *api.Context, w http.ResponseWriter, r *http.Request) { team = result.Data.(*model.Team) } - page := NewHtmlTemplatePage("authorize", "Authorize Application") + page := NewHtmlTemplatePage("authorize", "Authorize Application", c.Locale) page.Props["TeamName"] = team.Name page.Props["AppName"] = app.Name page.Props["ResponseType"] = responseType @@ -1165,7 +1165,7 @@ func claimAccount(c *api.Context, w http.ResponseWriter, r *http.Request) { } } - page := NewHtmlTemplatePage("claim_account", "Claim Account") + page := NewHtmlTemplatePage("claim_account", "Claim Account", c.Locale) page.Props["Email"] = email page.Props["CurrentType"] = authType page.Props["NewType"] = newType |