hilight accepted languages

This commit is contained in:
Thibault Duplessis 2013-06-06 17:24:07 +02:00
parent 4b147bd3c5
commit d557bf3beb
6 changed files with 28 additions and 9 deletions

View file

@ -7,7 +7,7 @@ import controllers.routes
trait AssetHelper {
val assetVersion = 38
val assetVersion = 39
def cssTag(name: String) = css("stylesheets/" + name)

View file

@ -38,21 +38,23 @@ trait I18nHelper {
def langLinks(lang: Lang)(implicit ctx: Context) = Html {
langLinksCache.getOrElseUpdate(lang.language, {
val i18nDomain = I18nDomain(ctx.req.domain)
pool.names.toList sortBy (_._1) collect {
case (code, name) """<li><a lang="%s" href="%s"%s>%s</a></li>""".format(
code,
langUrl(Lang(code))(i18nDomain),
langUrl(Lang(code))(I18nDomain(ctx.req.domain)),
(code == lang.language) ?? """ class="current"""",
name)
} mkString
} mkString ""
}).replace(uriPlaceholder, ctx.req.uri)
}
def commonDomain(implicit ctx: Context): String =
I18nDomain(ctx.req.domain).commonDomain
val uriPlaceholder = "[URI]"
def acceptLanguages(implicit ctx: Context): String =
ctx.req.acceptLanguages.map(_.language).distinct mkString ","
private val uriPlaceholder = "[URI]"
private def langUrl(lang: Lang)(i18nDomain: I18nDomain) =
protocol + (i18nDomain withLang lang).domain + uriPlaceholder

View file

@ -27,14 +27,18 @@ signedJs: Option[String] = None)(body: Html)(implicit ctx: Context)
<meta content="noindex, nofollow" name="robots">
}
</head>
<body class="@setting.theme.cssClass @setting.bg" data-sound-file="@routes.Assets.at("sound/alert.ogg")" data-troll="@ctx.troll.toString" data-port="@netPort">
<body class="@setting.theme.cssClass @setting.bg"
data-sound-file="@routes.Assets.at("sound/alert.ogg")"
data-troll="@ctx.troll.toString"
data-port="@netPort"
data-accept-languages="@acceptLanguages">
<div id="site_description">@trans.freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents()</div>
<div id="top" class="clearfix">
<a href="@routes.Setting.set("sound")" title="@trans.toggleSound()" id="sound_state" class="available @soundString">
<span></span>
</a>
<div class="lichess_language">
<a class="toggle_language toggle" href="#">
<a class="toggle" href="#">
<span class="s16 ddown">@langName(lang)</span>
</a>
<ul class="language_links dropdown">

View file

@ -536,6 +536,13 @@ var lichess_sri = Math.random().toString(36).substring(5); // 8 chars
});
});
$('#top .lichess_language').one('mouseover', function() {
var $t = $(this);
_.each($('body').data('accept-languages').split(','), function(lang) {
$t.find('a[lang="' + lang + '"]').addClass('accepted');
});
});
$('#lichess_translation_form_code').change(function() {
if ("0" != $(this).val()) {
location.href = $(this).closest('form').attr('data-change-url').replace(/__/, $(this).val());

View file

@ -661,12 +661,15 @@ ul.language_links a {
padding: 0.4em 0.5em;
text-decoration: none;
}
ul.language_links a.current {
ul.language_links a.current, ul.language_links a.accepted {
font-weight: bold;
color: #444;
}
ul.language_links a.accepted {
text-decoration: underline;
}
ul.language_links a:hover, ul.language_links a.current {
background: #F0F0F0;
color: #444;
}
ul.language_links li {
width: 25%;

View file

@ -130,6 +130,9 @@ body.dark #top ul.language_links a.current
background-color: #3e3e3e;
color: #b0b0b0;
}
body.dark #top ul.language_links a.accepted {
color: #b0b0b0;
}
body.dark #site_title,
body.dark #site_baseline,