add canvas theme

pull/83/head
Thibault Duplessis 2012-10-21 14:05:37 +02:00
parent 89522c3254
commit acce2a91e1
9 changed files with 94 additions and 87 deletions

View File

@ -45,16 +45,14 @@ object Lobby extends LilaController with Results {
timeline = timelineRecent,
posts = forumRecent(ctx.me),
tours = openTours
).map(_.fold(
url Redirect(url), {
case (preload, posts, tours, featured) status(html.lobby.home(
toJson(preload),
myHook,
posts,
tours,
featured))
}
)).asPromise
).map(_.fold(Redirect(_), {
case (preload, posts, tours, featured) status(html.lobby.home(
toJson(preload),
myHook,
posts,
tours,
featured))
})).asPromise
def socket = WebSocket.async[JsValue] { implicit req
implicit val ctx = reqToCtx(req)

View File

@ -7,7 +7,7 @@ import play.api.templates.Html
trait AssetHelper {
val assetVersion = 6
val assetVersion = 7
def cssTag(name: String) = css("stylesheets/" + name)

View File

@ -3,16 +3,25 @@ package ui
import scalaz.NonEmptyLists
sealed class Theme private (val name: String) {
sealed class Theme private (val name: String, val image: Boolean = false) {
override def toString = name
def cssClass = name + image.fold(" txtr", "")
}
object Theme extends NonEmptyLists {
val all = nel("brown", "blue", "wood", "grey", "green") map { name
new Theme(name)
}
val all = nel(
"brown" -> false,
"blue" -> false,
"green" -> false,
"grey" -> false,
"wood" -> true,
"canvas" -> true
) map {
case (name, image) new Theme(name, image)
}
val list = all.list

View File

@ -17,7 +17,7 @@
<meta content="noindex, nofollow" name="robots">
}
</head>
<body class="@setting.theme.name @setting.bg" data-sound-file="@routes.Assets.at("sound/alert.ogg")">
<body class="@setting.theme.cssClass @setting.bg" data-sound-file="@routes.Assets.at("sound/alert.ogg")">
<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">

View File

@ -1,9 +1,9 @@
#! /usr/bin/python2
#config
schemeName = "wood"
bgImgWhite = "../images/woodenboard_white.jpg"
bgImgBlack = "../images/woodenboard_black.jpg"
schemeName = "canvas"
bgImgWhite = "../images/canvasboard_white.jpg"
bgImgBlack = "../images/canvasboard_black.jpg"
# adv. config
squareSize = 64 # width of a square in pixel
@ -18,6 +18,6 @@ for y in range(0,8):
img = bgImgWhite
else:
img = bgImgBlack
print "body." + schemeName + " #GameBoard #tcol"+str(x)+"trow"+str(y)+", body." + schemeName + " #"+str(chr(ord('a') + x))+str(8-y) + " { background-position: "+str((-x)*squareSize)+"px " +str((-y)*squareSize) +"px; }";
print "body." + schemeName + " #tcol"+str(x)+"trow"+str(y)+", body." + schemeName + " #"+str(chr(ord('a') + x))+str(8-y) + " { background-position: "+str((-x)*squareSize)+"px " +str((-y)*squareSize) +"px; }";
white = not white
white = not white

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -42,70 +42,73 @@ body.grey #GameBoard td.whiteSquare, body.grey #GameBoard td.highlightWhiteSquar
body.grey #GameBoard td.blackSquare, body.grey #GameBoard td.highlightBlackSquare, body.grey div.lcs.black, #top div.lcs.black.grey, body.grey span.theme_demo { background: #c4c4c4; }
body.wood #GameBoard td.whiteSquare, body.wood #GameBoard td.highlightWhiteSquare, body.wood div.lcs.white, #top div.lcs.white.wood, body.wood div.lichess_board { background: url(../images/woodenboard_white.jpg) no-repeat; }
body.wood #GameBoard td.blackSquare, body.wood #GameBoard td.highlightBlackSquare, body.wood div.lcs.black, #top div.lcs.black.wood, body.wood span.theme_demo { background: url(../images/woodenboard_black.jpg) no-repeat; }
body.wood #GameBoard #tcol0trow0, body.wood #a8 { background-position: 0px 0px; }
body.wood #GameBoard #tcol1trow0, body.wood #b8 { background-position: -64px 0px; }
body.wood #GameBoard #tcol2trow0, body.wood #c8 { background-position: -128px 0px; }
body.wood #GameBoard #tcol3trow0, body.wood #d8 { background-position: -192px 0px; }
body.wood #GameBoard #tcol4trow0, body.wood #e8 { background-position: -256px 0px; }
body.wood #GameBoard #tcol5trow0, body.wood #f8 { background-position: -320px 0px; }
body.wood #GameBoard #tcol6trow0, body.wood #g8 { background-position: -384px 0px; }
body.wood #GameBoard #tcol7trow0, body.wood #h8 { background-position: -448px 0px; }
body.wood #GameBoard #tcol0trow1, body.wood #a7 { background-position: 0px -64px; }
body.wood #GameBoard #tcol1trow1, body.wood #b7 { background-position: -64px -64px; }
body.wood #GameBoard #tcol2trow1, body.wood #c7 { background-position: -128px -64px; }
body.wood #GameBoard #tcol3trow1, body.wood #d7 { background-position: -192px -64px; }
body.wood #GameBoard #tcol4trow1, body.wood #e7 { background-position: -256px -64px; }
body.wood #GameBoard #tcol5trow1, body.wood #f7 { background-position: -320px -64px; }
body.wood #GameBoard #tcol6trow1, body.wood #g7 { background-position: -384px -64px; }
body.wood #GameBoard #tcol7trow1, body.wood #h7 { background-position: -448px -64px; }
body.wood #GameBoard #tcol0trow2, body.wood #a6 { background-position: 0px -128px; }
body.wood #GameBoard #tcol1trow2, body.wood #b6 { background-position: -64px -128px; }
body.wood #GameBoard #tcol2trow2, body.wood #c6 { background-position: -128px -128px; }
body.wood #GameBoard #tcol3trow2, body.wood #d6 { background-position: -192px -128px; }
body.wood #GameBoard #tcol4trow2, body.wood #e6 { background-position: -256px -128px; }
body.wood #GameBoard #tcol5trow2, body.wood #f6 { background-position: -320px -128px; }
body.wood #GameBoard #tcol6trow2, body.wood #g6 { background-position: -384px -128px; }
body.wood #GameBoard #tcol7trow2, body.wood #h6 { background-position: -448px -128px; }
body.wood #GameBoard #tcol0trow3, body.wood #a5 { background-position: 0px -192px; }
body.wood #GameBoard #tcol1trow3, body.wood #b5 { background-position: -64px -192px; }
body.wood #GameBoard #tcol2trow3, body.wood #c5 { background-position: -128px -192px; }
body.wood #GameBoard #tcol3trow3, body.wood #d5 { background-position: -192px -192px; }
body.wood #GameBoard #tcol4trow3, body.wood #e5 { background-position: -256px -192px; }
body.wood #GameBoard #tcol5trow3, body.wood #f5 { background-position: -320px -192px; }
body.wood #GameBoard #tcol6trow3, body.wood #g5 { background-position: -384px -192px; }
body.wood #GameBoard #tcol7trow3, body.wood #h5 { background-position: -448px -192px; }
body.wood #GameBoard #tcol0trow4, body.wood #a4 { background-position: 0px -256px; }
body.wood #GameBoard #tcol1trow4, body.wood #b4 { background-position: -64px -256px; }
body.wood #GameBoard #tcol2trow4, body.wood #c4 { background-position: -128px -256px; }
body.wood #GameBoard #tcol3trow4, body.wood #d4 { background-position: -192px -256px; }
body.wood #GameBoard #tcol4trow4, body.wood #e4 { background-position: -256px -256px; }
body.wood #GameBoard #tcol5trow4, body.wood #f4 { background-position: -320px -256px; }
body.wood #GameBoard #tcol6trow4, body.wood #g4 { background-position: -384px -256px; }
body.wood #GameBoard #tcol7trow4, body.wood #h4 { background-position: -448px -256px; }
body.wood #GameBoard #tcol0trow5, body.wood #a3 { background-position: 0px -320px; }
body.wood #GameBoard #tcol1trow5, body.wood #b3 { background-position: -64px -320px; }
body.wood #GameBoard #tcol2trow5, body.wood #c3 { background-position: -128px -320px; }
body.wood #GameBoard #tcol3trow5, body.wood #d3 { background-position: -192px -320px; }
body.wood #GameBoard #tcol4trow5, body.wood #e3 { background-position: -256px -320px; }
body.wood #GameBoard #tcol5trow5, body.wood #f3 { background-position: -320px -320px; }
body.wood #GameBoard #tcol6trow5, body.wood #g3 { background-position: -384px -320px; }
body.wood #GameBoard #tcol7trow5, body.wood #h3 { background-position: -448px -320px; }
body.wood #GameBoard #tcol0trow6, body.wood #a2 { background-position: 0px -384px; }
body.wood #GameBoard #tcol1trow6, body.wood #b2 { background-position: -64px -384px; }
body.wood #GameBoard #tcol2trow6, body.wood #c2 { background-position: -128px -384px; }
body.wood #GameBoard #tcol3trow6, body.wood #d2 { background-position: -192px -384px; }
body.wood #GameBoard #tcol4trow6, body.wood #e2 { background-position: -256px -384px; }
body.wood #GameBoard #tcol5trow6, body.wood #f2 { background-position: -320px -384px; }
body.wood #GameBoard #tcol6trow6, body.wood #g2 { background-position: -384px -384px; }
body.wood #GameBoard #tcol7trow6, body.wood #h2 { background-position: -448px -384px; }
body.wood #GameBoard #tcol0trow7, body.wood #a1 { background-position: 0px -448px; }
body.wood #GameBoard #tcol1trow7, body.wood #b1 { background-position: -64px -448px; }
body.wood #GameBoard #tcol2trow7, body.wood #c1 { background-position: -128px -448px; }
body.wood #GameBoard #tcol3trow7, body.wood #d1 { background-position: -192px -448px; }
body.wood #GameBoard #tcol4trow7, body.wood #e1 { background-position: -256px -448px; }
body.wood #GameBoard #tcol5trow7, body.wood #f1 { background-position: -320px -448px; }
body.wood #GameBoard #tcol6trow7, body.wood #g1 { background-position: -384px -448px; }
body.wood #GameBoard #tcol7trow7, body.wood #h1 { background-position: -448px -448px; }
body.canvas #GameBoard td.whiteSquare, body.canvas #GameBoard td.highlightWhiteSquare, body.canvas div.lcs.white, #top div.lcs.white.canvas, body.canvas div.lichess_board { background: url(../images/canvasboard_white.jpg) no-repeat; }
body.canvas #GameBoard td.blackSquare, body.canvas #GameBoard td.highlightBlackSquare, body.canvas div.lcs.black, #top div.lcs.black.canvas, body.canvas span.theme_demo { background: url(../images/canvasboard_black.jpg) no-repeat; }
body.txtr #tcol0trow0, body.txtr #a8 { background-position: 0px 0px; }
body.txtr #tcol1trow0, body.txtr #b8 { background-position: -64px 0px; }
body.txtr #tcol2trow0, body.txtr #c8 { background-position: -128px 0px; }
body.txtr #tcol3trow0, body.txtr #d8 { background-position: -192px 0px; }
body.txtr #tcol4trow0, body.txtr #e8 { background-position: -256px 0px; }
body.txtr #tcol5trow0, body.txtr #f8 { background-position: -320px 0px; }
body.txtr #tcol6trow0, body.txtr #g8 { background-position: -384px 0px; }
body.txtr #tcol7trow0, body.txtr #h8 { background-position: -448px 0px; }
body.txtr #tcol0trow1, body.txtr #a7 { background-position: 0px -64px; }
body.txtr #tcol1trow1, body.txtr #b7 { background-position: -64px -64px; }
body.txtr #tcol2trow1, body.txtr #c7 { background-position: -128px -64px; }
body.txtr #tcol3trow1, body.txtr #d7 { background-position: -192px -64px; }
body.txtr #tcol4trow1, body.txtr #e7 { background-position: -256px -64px; }
body.txtr #tcol5trow1, body.txtr #f7 { background-position: -320px -64px; }
body.txtr #tcol6trow1, body.txtr #g7 { background-position: -384px -64px; }
body.txtr #tcol7trow1, body.txtr #h7 { background-position: -448px -64px; }
body.txtr #tcol0trow2, body.txtr #a6 { background-position: 0px -128px; }
body.txtr #tcol1trow2, body.txtr #b6 { background-position: -64px -128px; }
body.txtr #tcol2trow2, body.txtr #c6 { background-position: -128px -128px; }
body.txtr #tcol3trow2, body.txtr #d6 { background-position: -192px -128px; }
body.txtr #tcol4trow2, body.txtr #e6 { background-position: -256px -128px; }
body.txtr #tcol5trow2, body.txtr #f6 { background-position: -320px -128px; }
body.txtr #tcol6trow2, body.txtr #g6 { background-position: -384px -128px; }
body.txtr #tcol7trow2, body.txtr #h6 { background-position: -448px -128px; }
body.txtr #tcol0trow3, body.txtr #a5 { background-position: 0px -192px; }
body.txtr #tcol1trow3, body.txtr #b5 { background-position: -64px -192px; }
body.txtr #tcol2trow3, body.txtr #c5 { background-position: -128px -192px; }
body.txtr #tcol3trow3, body.txtr #d5 { background-position: -192px -192px; }
body.txtr #tcol4trow3, body.txtr #e5 { background-position: -256px -192px; }
body.txtr #tcol5trow3, body.txtr #f5 { background-position: -320px -192px; }
body.txtr #tcol6trow3, body.txtr #g5 { background-position: -384px -192px; }
body.txtr #tcol7trow3, body.txtr #h5 { background-position: -448px -192px; }
body.txtr #tcol0trow4, body.txtr #a4 { background-position: 0px -256px; }
body.txtr #tcol1trow4, body.txtr #b4 { background-position: -64px -256px; }
body.txtr #tcol2trow4, body.txtr #c4 { background-position: -128px -256px; }
body.txtr #tcol3trow4, body.txtr #d4 { background-position: -192px -256px; }
body.txtr #tcol4trow4, body.txtr #e4 { background-position: -256px -256px; }
body.txtr #tcol5trow4, body.txtr #f4 { background-position: -320px -256px; }
body.txtr #tcol6trow4, body.txtr #g4 { background-position: -384px -256px; }
body.txtr #tcol7trow4, body.txtr #h4 { background-position: -448px -256px; }
body.txtr #tcol0trow5, body.txtr #a3 { background-position: 0px -320px; }
body.txtr #tcol1trow5, body.txtr #b3 { background-position: -64px -320px; }
body.txtr #tcol2trow5, body.txtr #c3 { background-position: -128px -320px; }
body.txtr #tcol3trow5, body.txtr #d3 { background-position: -192px -320px; }
body.txtr #tcol4trow5, body.txtr #e3 { background-position: -256px -320px; }
body.txtr #tcol5trow5, body.txtr #f3 { background-position: -320px -320px; }
body.txtr #tcol6trow5, body.txtr #g3 { background-position: -384px -320px; }
body.txtr #tcol7trow5, body.txtr #h3 { background-position: -448px -320px; }
body.txtr #tcol0trow6, body.txtr #a2 { background-position: 0px -384px; }
body.txtr #tcol1trow6, body.txtr #b2 { background-position: -64px -384px; }
body.txtr #tcol2trow6, body.txtr #c2 { background-position: -128px -384px; }
body.txtr #tcol3trow6, body.txtr #d2 { background-position: -192px -384px; }
body.txtr #tcol4trow6, body.txtr #e2 { background-position: -256px -384px; }
body.txtr #tcol5trow6, body.txtr #f2 { background-position: -320px -384px; }
body.txtr #tcol6trow6, body.txtr #g2 { background-position: -384px -384px; }
body.txtr #tcol7trow6, body.txtr #h2 { background-position: -448px -384px; }
body.txtr #tcol0trow7, body.txtr #a1 { background-position: 0px -448px; }
body.txtr #tcol1trow7, body.txtr #b1 { background-position: -64px -448px; }
body.txtr #tcol2trow7, body.txtr #c1 { background-position: -128px -448px; }
body.txtr #tcol3trow7, body.txtr #d1 { background-position: -192px -448px; }
body.txtr #tcol4trow7, body.txtr #e1 { background-position: -256px -448px; }
body.txtr #tcol5trow7, body.txtr #f1 { background-position: -320px -448px; }
body.txtr #tcol6trow7, body.txtr #g1 { background-position: -384px -448px; }
body.txtr #tcol7trow7, body.txtr #h1 { background-position: -448px -448px; }
div.lcsi {
position: absolute;

3
todo
View File

@ -50,7 +50,4 @@ lobby game filters http://en.lichess.org/forum/lichess-feedback/feature-request-
not possible to copy the link URL invite when using a iOS device. Can this be easily fixed by adding an automatic "copy" button next to the link?
search bug http://en.lichess.org/games/search?players.a=&players.b=&players.winner=&eloMin=&eloMax=&hasAi=&aiLevelMin=&aiLevelMax=&variant=&mode=1&opening=&turnsMin=&turnsMax=&durationMin=&durationMax=&status=35&dateMin=&dateMax=&sort.field=tu&sort.order=asc
takeback substract time for person granting
computer analysis reproducible failure http://en.lichess.org/analyse/3xr4jf80/black
detect added script and push it to server logs
add fullscreen mode for spectators and load new games in a loop (based on certain filter options) - thus creating a chess tv channel