From 8c2b22cd18d9f4f52618a781f6c77b75b9f5c5c4 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 2 Jan 2015 10:25:46 +0100 Subject: [PATCH] proper language selection for anonymous --- app/controllers/I18n.scala | 23 +++++++++++-------- .../i18n/src/main/I18nRequestHandler.scala | 8 ++----- public/stylesheets/common.css | 1 + 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/controllers/I18n.scala b/app/controllers/I18n.scala index fb3f38222f..5b08ecc442 100644 --- a/app/controllers/I18n.scala +++ b/app/controllers/I18n.scala @@ -12,17 +12,20 @@ object I18n extends LilaController { private def env = Env.i18n - def select = AuthBody { implicit ctx => - me => - import play.api.data.Forms._ - import play.api.data._ - implicit val req = ctx.body - Form(single("lang" -> text.verifying(env.pool contains _))).bindFromRequest.fold( - _ => funit, - lang => lila.user.UserRepo.setLang(me.id, lang) - ) inject Redirect { - HTTPRequest referer ctx.req getOrElse routes.Lobby.home.url + def select = OpenBody { implicit ctx => + import play.api.data.Forms._ + import play.api.data._ + implicit val req = ctx.body + Form(single("lang" -> text.verifying(env.pool contains _))).bindFromRequest.fold( + _ => notFound, + lang => (ctx.me ?? { me => lila.user.UserRepo.setLang(me.id, lang) }) inject Redirect { + s"${Env.api.Net.Protocol}${lang}.${Env.api.Net.Domain}" + { + HTTPRequest.referer(ctx.req).fold(routes.Lobby.home.url) { str => + new java.net.URL(str).getPath + } } + } + ) } def contribute = Open { implicit ctx => diff --git a/modules/i18n/src/main/I18nRequestHandler.scala b/modules/i18n/src/main/I18nRequestHandler.scala index 19fa935025..297b8aa559 100644 --- a/modules/i18n/src/main/I18nRequestHandler.scala +++ b/modules/i18n/src/main/I18nRequestHandler.scala @@ -23,12 +23,8 @@ final class I18nRequestHandler( } yield Redirect(redirectUrlLang(req, userLang)) private def redirectUrl(req: RequestHeader) = - protocol + - I18nDomain(req.domain).withLang(pool preferred req).domain + - req.uri + redirectUrlLang(req, pool.preferred(req).language) private def redirectUrlLang(req: RequestHeader, lang: String) = - protocol + - I18nDomain(req.domain).withLang(lang).domain + - req.uri + s"$protocol${I18nDomain(req.domain).withLang(lang).domain}${req.uri}" } diff --git a/public/stylesheets/common.css b/public/stylesheets/common.css index 35ef5ec309..82b667cc40 100644 --- a/public/stylesheets/common.css +++ b/public/stylesheets/common.css @@ -1253,6 +1253,7 @@ div.lichess_language { .language_links li:last-child { width: 50%; font-weight: bold; + padding-top: 10px; } #themepicker { float: right;