diff --git a/router/changeLanguageHandler.go b/router/changeLanguageHandler.go new file mode 100644 index 00000000..8de035a3 --- /dev/null +++ b/router/changeLanguageHandler.go @@ -0,0 +1,46 @@ +package router; + +import ( + "net/http" + + "github.com/ewhal/nyaa/util/languages" + "github.com/ewhal/nyaa/service/user" + "github.com/gorilla/mux" +) + +func SeeLanguagesHandler(w http.ResponseWriter, r *http.Request) { + _, Tlang := languages.GetTfuncAndLanguageFromRequest(r, "en-us") + availableLanguages := languages.GetAvailableLanguages() + + clv := ChangeLanguageVariables{NewSearchForm(), Navigation{}, Tlang.Tag, availableLanguages, GetUser(r), r.URL, mux.CurrentRoute(r)} + languages.SetTranslationFromRequest(changeLanguageTemplate, r, "en-us") + err := changeLanguageTemplate.ExecuteTemplate(w, "index.html", clv) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } +} + +func ChangeLanguageHandler(w http.ResponseWriter, r *http.Request) { + lang := r.FormValue("language") + + availableLanguages := languages.GetAvailableLanguages() + if _, exists := availableLanguages[lang]; !exists { + http.Error(w, "Language not available", http.StatusInternalServerError) + return + } + + // If logged in, update user language; if not, set cookie. + user, err := userService.CurrentUser(r) + if err == nil { + user.Language = lang + // I don't know if I should use this... + userService.UpdateUserCore(&user) + } else { + http.SetCookie(w, &http.Cookie{Name: "lang", Value: lang}) + } + + url, _ := Router.Get("home").URL() + http.Redirect(w, r, url.String(), http.StatusSeeOther) +} + diff --git a/templates/change_language.html b/templates/change_language.html new file mode 100644 index 00000000..e6c12223 --- /dev/null +++ b/templates/change_language.html @@ -0,0 +1,24 @@ +{{define "title"}}{{T "change_language"}}{{end}} +{{define "content"}} +
+
+
+
+ +
+ +
+
+ + +
+
+
+{{end}} + +