hilight accepted languages
This commit is contained in:
parent
4b147bd3c5
commit
d557bf3beb
|
@ -7,7 +7,7 @@ import controllers.routes
|
|||
|
||||
trait AssetHelper {
|
||||
|
||||
val assetVersion = 38
|
||||
val assetVersion = 39
|
||||
|
||||
def cssTag(name: String) = css("stylesheets/" + name)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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%;
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue