diff --git a/web/handlers/http.go b/web/handlers/http.go index 85fe85a..3f35bd6 100644 --- a/web/handlers/http.go +++ b/web/handlers/http.go @@ -7,6 +7,7 @@ import ( "html/template" "net/http" "net/url" + "strings" "time" "github.com/go-kit/kit/log/level" @@ -122,6 +123,37 @@ func New( } }), + render.InjectTemplateFunc("listLanguages", func(r *http.Request) interface{} { + urlTo := web.NewURLTo(m) + route := urlTo(router.CompleteSetLanguage).String() + csrfElement := csrf.TemplateField(r) + + createFormElement := func (tag, translation string) string { + return fmt.Sprintf(` +
+ %s + + +
+ `, route, csrfElement, tag, translation) + } + return func () template.HTML { + languages := locHelper.ListLanguages() + languageOptions := make([]string, len(languages)) + for tag, translation := range languages { + languageOptions = append(languageOptions, createFormElement(tag, translation)) + } + return (template.HTML)(strings.Join(languageOptions, "\n")) + } + }), + render.InjectTemplateFunc("urlToNotice", func(r *http.Request) interface{} { return func(name string) *url.URL { noticeName := roomdb.PinnedNoticeName(name) @@ -237,6 +269,11 @@ func New( ) mainMux.Handle("/admin/", members.AuthenticateFromContext(r)(adminHandler)) + // handle setting language + m.Get(router.CompleteSetLanguage).HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + fmt.Println("set das language jaaa") + }) + // landing page m.Get(router.CompleteIndex).Handler(r.HTML("landing/index.tmpl", func(w http.ResponseWriter, req *http.Request) (interface{}, error) { // TODO: try websocket upgrade (issue #) diff --git a/web/router/complete.go b/web/router/complete.go index 61575a6..754953a 100644 --- a/web/router/complete.go +++ b/web/router/complete.go @@ -14,6 +14,8 @@ const ( CompleteNoticeShow = "complete:notice:show" CompleteNoticeList = "complete:notice:list" + CompleteSetLanguage = "complete:set-language" + CompleteAliasResolve = "complete:alias:resolve" CompleteInviteFacade = "complete:invite:accept" @@ -42,5 +44,7 @@ func CompleteApp() *mux.Router { m.Path("/notice/show").Methods("GET").Name(CompleteNoticeShow) m.Path("/notice/list").Methods("GET").Name(CompleteNoticeList) + m.Path("/set-language").Methods("POST").Name(CompleteSetLanguage) + return m } diff --git a/web/templates/base.tmpl b/web/templates/base.tmpl index 21337c2..5d77a93 100644 --- a/web/templates/base.tmpl +++ b/web/templates/base.tmpl @@ -95,16 +95,8 @@ class="mb-2 mx-auto px-3 py-1 text-gray-500 w-32 rounded shadow bg-gray-50 ring-1 ring-gray-300 hover:bg-gray-100 cursor-pointer"> Language -
- English - Hmong - Унáҥам Тунý - Suomi - Русский - xapaitíiso - Português - Svenska +
+ {{ listLanguages }}