Merge branch 'master' into userlist

* master:
  remove duplicated Evropi :p
  allow casual hook elo range
  change own hook color
  fix lobby hook resync
  Revert "Revert "resync lobby hooks on schedule""
  try to keep chrome hooks in sync
  Revert "resync lobby hooks on schedule"
  resync lobby hooks on schedule
  ro "Română" translation #3401. Author: Anonymous.
  id "Bahasa Indonesia" translation #3399. Author: Krystal_Jung. hihihi
  sr "српски јези" translation #3398. Author: Anonymous.
  ja "日本語" translation #3397. Author: atholic. 誤翻訳があるかもしれません。発見したら修正お願いします。
  sa "संस्कृत" translation #3396. Author: Periannan Chandrasekaran.
  ta "தமி" translation #3395. Author: பெரியண்ணன் சந்திரசேகரன்.
  th "ไท" translation #3393. Author: ชาว สยาม.
  hilight own hook
  fix draggable issue on game end
This commit is contained in:
Thibault Duplessis 2013-07-24 16:43:28 +02:00
commit 404b6b3cf0
24 changed files with 308 additions and 115 deletions

View file

@ -4,7 +4,7 @@
<div class="clock_config optional_config">
<div class="clock_choice">
<label class="required" for="clock">@trans.timeControl()</label>
<label class="required pointer" for="clock">@trans.timeControl()</label>
@setup.checkbox(form("clock"))
</div>
<div class="time_choice">

View file

@ -12,22 +12,24 @@
<div class="mode_choice buttons">
@setup.radios(form("mode"), translatedModeChoices)
</div>
<div class="elo_range_config optional_config">
@trans.eloRange(): <span class="range">? - ?</span>
<div class="elo_range">
@setup.input(
form("eloRange"),
Symbol("type") -> "hidden",
Symbol("data-min") -> EloRange.min,
Symbol("data-max") -> EloRange.max)
<div class="range_and_members optional_config">
@if(ctx.isAuth) {
<div class="members_only">
<label class="required pointer" for="@form("membersOnly").name">@trans.membersOnly()</label>
@setup.checkbox(form("membersOnly"))
</div>
}
<div class="elo_range_config">
@trans.eloRange(): <span class="range">? - ?</span>
<div class="elo_range">
@setup.input(
form("eloRange"),
Symbol("type") -> "hidden",
Symbol("data-min") -> EloRange.min,
Symbol("data-max") -> EloRange.max)
</div>
</div>
</div>
@if(ctx.isAuth) {
<div class="allow_anon_config optional_config">
<label class="required" for="@form("allowAnon").name">@trans.anonymousCanJoin()</label>
@setup.checkbox(form("allowAnon"))
</div>
}
}
}

View file

@ -239,7 +239,7 @@ createdBy=Created by
waitingForNbPlayers=Waiting for %s players
tournamentIsStarting=Tournament is starting
nbMinutesPerSidePlusNbSecondsPerMove=%s minutes/side + %s seconds/move
anonymousCanJoin=Anonymous can join
membersOnly=Members only
boardEditor=Board editor
startPosition=Start position
clearBoard=Clear board

View file

@ -45,6 +45,12 @@ shareThisUrlToLetSpectatorsSeeTheGame=Deel die link vir toeskouers
youAreViewingThisGameAsASpectator=Jy is 'n toeskouer van hierdie spel
replayAndAnalyse=Speel weer en ondersoek
computerAnalysisInProgress=Analise de computador em progresso
theComputerAnalysisYouRequestedIsNowAvailable=Die aangevraagde rekenaar analise is nou beskikbaar
theComputerAnalysisHasFailed=Die rekenaar analise het misluk
viewTheComputerAnalysis=Sien die rekenaar analise
requestAComputerAnalysis=Versoek 'n rekenaar analise
mistakes=Foute
inaccuracies=Onakurate
viewGameStats=Sien spel statistieke
flipBoard=Draai bord
threefoldRepetition=Herhaal drie keer
@ -64,14 +70,18 @@ bookmarkedByNbPlayers=Deur %s spelers geboekmerk
viewInFullSize=Sien vol-grootte
logOut=Teken uit
signIn=Teken in
newToLichess=Nuut by Lichess?
youNeedAnAccountToDoThat=Jy het 'n rekening nodig om dit te doen
signUp=Registreer
people=Mense
games=Spelle
forum=Forum
xPostedInForumY=%S het 'n boodskak gepos in forum %s
chessPlayers=Skaak spelers
minutesPerSide=Minute per kant
variant=Wissel
timeControl=Teen tyd
time=Tyd
start=Begin
username=Gebruiker
password=Wagwoord
@ -80,6 +90,7 @@ allYouNeedIsAUsernameAndAPassword=Dis vinnig, jy't net 'n gebruiker-naam en wagw
learnMoreAboutLichess=Leer meer oor Lichess
rank=Vlak
gamesPlayed=Gespeel
nbGamesWithYou=%s spelle vir jou
declineInvitation=Nee dankie
cancel=Moenie
timeOut=Tyd verby
@ -91,6 +102,7 @@ yourOpponentOffersADraw=Jou teenstander bied gelykop aan
accept=Aanvaar
decline=Verwerp
playingRightNow=In spel
finished=Klaar
abortGame=Staak spel
gameAborted=Spel gestaak
standard=Standaard
@ -112,6 +124,10 @@ chatRoom=Chat kamer
spectatorRoom=Toeskouer kamer
composeMessage=Tik boodskap
sentMessages=Stuur boodskappe
noNewMessages=Geen nuwe booskappe
subject=Onderwerp
recipient=Ontvanger
send=Stuur
incrementInSeconds=Tel in sekondes
freeOnlineChess=Gratis Aanlyn Skaak
spectators=Toeskouers
@ -136,9 +152,12 @@ takebackPropositionCanceled=Terug-vat aanbod gekanselleer
yourOpponentProposesATakeback=Jou teenstander stel 'n terug-vat voor
bookmarkThisGame=Boekmerk die spel
toggleBackground=Agetgrond kleur aan/af
search=Soek
advancedSearch=Gevorderde soek
tournament=Toernooi
tournaments=Toernooie
tournamentPoints=Toernooi punte
viewTournament=Sien tornooi
freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents=Gratis aanlyn Skaak spel. Speel nou Skaak met 'n maklike skerm. Geen registrasie nodig, geen advertensies, niks om te installeer. Speel Skaak teen rekenaar, vriende of nuwe uitdagers.
teams=Spanne
nbMembers=%s lede
@ -154,6 +173,8 @@ joiningPolicy=Voorwaardes vir aansluiting
teamLeader=Spanleier
teamBestPlayers=Beste spanlede
teamRecentMembers=Onlangse spanlede
xJoinedTeamY=%s het aangesluit by span %s
xCreatedTeamY=%s het span %s geskep
averageElo=Gemiddelde Elo
location=Plek
settings=Stellings
@ -161,3 +182,57 @@ filterGames=Spel filter
reset=Herstel
apply=Pas toe
leaderboard=Leierbord
pasteTheFenStringHere=Plak die FEN string hier
pasteThePgnStringHere=Plak die PGN string hier
fromPosition=Van posisie
continueFromHere=Gaan voort van hier af
importGame=Trek spel in
nbImportedGames=%s het spelle ingetrek
thisIsAChessCaptcha=Dit is 'n skaak CAPTCHA
clickOnTheBoardToMakeYourMove=Kliek op die bord om jou skuif te maak, en te bewys jy is 'n mens
notACheckmate=Nie skaakmat nie
colorPlaysCheckmateInOne=%s se skuif; mat in een
retry=Probeer weer
reconnecting=Konnekteer weer
onlineFriends=Aanlyn vriende
noFriendsOnline=Geen vriende aanlyn
findFriends=Vind friende
favoriteOpponents=Gunsteling oponente
follow=Volg
following=Volgend
unfollow=Ontvolg
block=Blokeer
blocked=Geblok
unblock=Ontblok
followsYou=Volg jou
xStartedFollowingY=%s het begin om %s te volg
nbFollowers=%s volgeninge
nbFollowing=volg %s
profile=Profiel
more=Meer
memberSince=Lid vanaf
lastLogin=Laaste in teken
challengeToPlay=Daag uit vir 'n spel
player=Speler
list=Lys
graph=Grafiek
all=Alles
lessThanNbMinutes=Minder as %s minute
xToYMinutes=%s tot %s minute
textIsTooShort=Teks is te min.
textIsTooLong=Teks is te veel.
required=Vereiste.
addToChrome=Voeg by Chrome by
openTournaments=Oop tornooie
duration=Duur
winner=Wenner
standing=Stand
createANewTournament=Skep 'n nuwe tornooi
join=Sluit aan
withdraw=Ontrek
points=Punte
wins=Oorwinnings
losses=Verliese
winStreak=Segetog
createdBy=Geskep deur
waitingForNbPlayers=Op wag vir %s spelers

View file

@ -240,3 +240,7 @@ waitingForNbPlayers=Menunggu %s pemain lagi
tournamentIsStarting=Kejuaraan sudah dimulai
nbMinutesPerSidePlusNbSecondsPerMove=%s menit/sisi + %s detik/langkah
anonymousCanJoin=Anonymous dapat masuk
boardEditor=papan edit
startPosition=Posisi memulai
clearBoard=Bersihkan papan
savePosition=Simpan posisi

View file

@ -18,7 +18,7 @@ stalemate=ステイルメイト
white=白
black=黒
createAGame=対局を作成する
noGameAvailableRightNowCreateOne=現在参加できる対局はありません。対局を作成してください。
noGameAvailableRightNowCreateOne=現在参加できる対局はありません 対局を作成してください
whiteIsVictorious=白の勝ちです
blackIsVictorious=黒の勝ちです
playWithTheSameOpponentAgain=もう一度同じ相手と対局する
@ -44,7 +44,14 @@ blackLeftTheGame=黒が対局からいなくなりました
shareThisUrlToLetSpectatorsSeeTheGame=観覧者に対局を観せたいならこのURLをシェアしてください
youAreViewingThisGameAsASpectator=この対局を観覧者として観ています
replayAndAnalyse=棋譜再生と解析
viewTheComputerAnalysis=コンピューターの分析を見る
computerAnalysisInProgress=コンピューターの解析が進行中です
theComputerAnalysisYouRequestedIsNowAvailable=あなたがリクエストしたコンピューター解析が利用可能になりました
theComputerAnalysisHasFailed=コンピューター解析に失敗しました
viewTheComputerAnalysis=コンピューターの解析を見る
requestAComputerAnalysis=コンピューター解析をリクエスト
blunders=大悪手
mistakes=悪手
inaccuracies=疑問手
viewGameStats=対局の統計を見る
flipBoard=盤を反転させる
threefoldRepetition=スリーフォールド・レピティション
@ -58,18 +65,21 @@ gamesBeingPlayedRightNow=現在対局中
viewAllNbGames=全ての%s対局を見る
viewNbCheckmates=全ての%sチェックメイトを見る
nbBookmarks=%s ブックマーク
nbPopularGames=%s ポピュラーな対局の割合
nbAnalysedGames=%s 解析済み対局の割合
nbPopularGames=%s ポピュラーな対局
nbAnalysedGames=%s 解析済み対局
bookmarkedByNbPlayers=%s プレイヤーにブックマークされています
viewInFullSize=フルサイズで見る
logOut=ログアウト
signIn=ログイン
newToLichess=lichessは初めてですか
youNeedAnAccountToDoThat=アカウントが必要です
signUp=登録
people=プレイヤー
games=対局
forum=掲示板
games=ゲーム
forum=フォーラム
xPostedInForumY=%s 掲示板への投稿 %s
chessPlayers=チェスプレイヤー
minutesPerSide=各側の持ち時間
minutesPerSide=持ち時間
variant=バリアント
timeControl=時間調整
time=時間
@ -81,6 +91,7 @@ allYouNeedIsAUsernameAndAPassword=必要なのはユーザー名とパスワー
learnMoreAboutLichess=lichessについて
rank=ランク
gamesPlayed=過去の対局
nbGamesWithYou=%s ゲームあなたと対局
declineInvitation=招待を断る
cancel=キャンセル
timeOut=時間切れ
@ -92,6 +103,7 @@ yourOpponentOffersADraw=相手が引き分けを申し込みました
accept=合意
decline=断る
playingRightNow=対局中
finished=終了しました
abortGame=対局を中止する
gameAborted=対局を中止しました
standard=スタンダード
@ -107,15 +119,17 @@ rematchOfferCanceled=再対局キャンセル
rematchOfferDeclined=再対局拒否
cancelRematchOffer=再対局の申し込みをキャンセルする
viewRematch=再対局を鑑賞
play=対局
play=プレイ
inbox=受信箱
chatRoom=チャットルーム
spectatorRoom=観戦席
composeMessage=メッセージを作成する
sentMessages=送信済みのメッセージ
noNewMessages=メッセージはありません
subject=件名
recipient=受信者
send=送信する
incrementInSeconds=秒で増加する
incrementInSeconds=1手毎に増える秒数
freeOnlineChess=無料オンラインチェス
spectators=観覧者数:
nbWins=%sの勝ち
@ -123,28 +137,29 @@ nbLosses=%sの負け
nbDraws=%sの引き分け
exportGames=対局をエクスポートする
color=色
eloRange=イロレーティング範囲
eloRange=Eloレーティングの範囲
giveNbSeconds=%s秒を与える
whoIsOnline=オンライン中のプレイヤー
allPlayers=全プレイヤー
premoveEnabledClickAnywhereToCancel=次の指しを予約しました-キャンセルするならどこかをクリックしてください
thisPlayerUsesChessComputerAssistance=このプレイヤーはチェスソフトを使用しています
premoveEnabledClickAnywhereToCancel=次のを予約しました-キャンセルするならどこかをクリックしてください
thisPlayerUsesChessComputerAssistance=このプレイヤーはチェスソフトを使用しています
opening=序盤
takeback=待った
proposeATakeback=待ったのお願い
takebackPropositionSent=待ったをお願いを送りました
proposeATakeback=待ったの申請
takebackPropositionSent=待ったの申請を送りました
takebackPropositionDeclined=待ったを拒否
takebackPropositionAccepted=待ったを受け入れる
takebackPropositionCanceled=待った申請をキャンセル
takebackPropositionCanceled=待った申請をキャンセル
yourOpponentProposesATakeback=対戦相手は待ったを提案しています
bookmarkThisGame=この対局をブックマークする
toggleBackground=背景色を切り替える
search=探す
advancedSearch=アドバンスサーチ
tournament=トーナメント
tournaments=トーナメント
tournamentPoints=トーナメントポイント
viewTournament=トーナメント閲覧
freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents=無料オンラインチェスゲーム。今すぐ綺麗なインターフェースでチェスをすることが出来ます。登録、プラグイン不要。広告し。AI、友達、あるいはランダムな相手とチェスの対局することが出来ます。
viewTournament=トーナメントを見る
freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents=無料オンラインチェスゲーム。今すぐ綺麗なインターフェースでチェスをすることが出来ます。登録、プラグイン不要。広告し。AI、友達、あるいはランダムな相手とチェスの対局することが出来ます。
teams=チーム
nbMembers=%s メンバー
allTeams=すべてのチーム
@ -159,21 +174,25 @@ joiningPolicy=参加ポリシー
teamLeader=チームリーダー
teamBestPlayers=チームベストプレイヤー
teamRecentMembers=最新チームメンバー
averageElo=平均レーティング
xJoinedTeamY=%s チームに参加しました %s
xCreatedTeamY=%s チームを作成しました %s
averageElo=平均Eloレーティング
location=住所
settings=設定
filterGames=条件で絞り込む
reset=リセット
apply=適用
leaderboard=スコアボード
pasteTheFenStringHere=FEN形式棋譜をペースト
pasteThePgnStringHere=ここにPGNをペースト
pasteTheFenStringHere=ここにFEN形式棋譜をペースト
pasteThePgnStringHere=ここにPGN形式の棋譜をペースト
fromPosition=特定の局面から
continueFromHere=中断した所から再開
importGame=ゲームをインポート
nbImportedGames=%s(インポートしたゲームの割合)
nbImportedGames=%s インポートしたゲーム
thisIsAChessCaptcha=これはチェスのキャプチャです。
clickOnTheBoardToMakeYourMove=駒を動かしてあなたが人間である事を証明して下さい。
notACheckmate=チェックメイトではありません
colorPlaysCheckmateInOne=%s の番; 1手でチェックメイト
retry=もう一度
reconnecting=再接続
onlineFriends=オンラインにいる友達
@ -187,7 +206,41 @@ block=ブロックする
blocked=ブロックされています
unblock=ブロックを外す
followsYou=あなたをフォローしています
xStartedFollowingY=%s フォローを開始 %s
nbFollowers=%s フォロワー
nbFollowing=%s フォロー
profile=プロフィール
more=その他
memberSince=登録日
lastLogin=最後のログイン
challengeToPlay=対戦を申し込む
player=プレイヤー
list=リスト
graph=グラフ
all=全て
lessThanNbMinutes=%s 分未満
xToYMinutes=%s から %s 分
textIsTooShort=テキストが短すぎます。
textIsTooLong=テキストが長すぎます。
required=要求されました。
addToChrome=クロームに追加
openTournaments=オープントーナメント
duration=期限
winner=勝者
standing=順位
createANewTournament=新しいトーナメントを作る
join=参加
withdraw=辞退
points=ポイント
wins=勝
losses=敗
winStreak=連勝数
createdBy=トーナメント作成者
waitingForNbPlayers=%s プレイヤー待機中
tournamentIsStarting=トーナメント開始
nbMinutesPerSidePlusNbSecondsPerMove=%s 分/サイド + %s 秒/移動
anonymousCanJoin=未登録ユーザーの参加を許可する
boardEditor=盤面編集
startPosition=盤面編集
clearBoard=盤面をクリア
savePosition=盤面を保存

View file

@ -239,3 +239,8 @@ createdBy=Creat de
waitingForNbPlayers=Așteptând încă %s jucători
tournamentIsStarting=Campionatul începe
nbMinutesPerSidePlusNbSecondsPerMove=%s minute + %s secunde/mutare
anonymousCanJoin=anonimii se pot alatura
boardEditor=editorul de tabla
startPosition=pozitia de start
clearBoard=curata tabla
savePosition=salveaza pozitia

View file

@ -1,7 +1,9 @@
playWithAFriend=मित्रेण क्रीड
inviteAFriendToPlayWithYou=क्रीडार्थम् मित्रम् उपह्व्यस्व
playWithTheMachine=यन्त्रेण सह क्रीड
playWithAFriend=मित्रेण सह क्रीडतु
inviteAFriendToPlayWithYou=क्रीडार्थम् मित्रम् उपाह्वयताम्
playWithTheMachine=यन्त्रेण सह क्रीडतु
challengeTheArtificialIntelligence=कृत्रिमाम् चेतनाम् समुपाह्वय
toInviteSomeoneToPlayGiveThisUrl=यं कंचित् क्रीडर्थम् उपाह्वयितुम् एतम् निर्देशम् प्रेषयतु
toInviteSomeoneToPlayGiveThisUrl=यं कंचित् क्रीडर्थम् उपाह्वयितुम् एनम् निर्देशम् प्रेषयतु
gameOver=द्यूतम् समाप्तम्
waitingForOpponent=प्रतियोधम् अपेक्ष्यते
waiting=अपेक्ष्यते
yourTurn=भवतो वारः

View file

@ -239,3 +239,8 @@ createdBy=Направљено од
waitingForNbPlayers=Чекајући %s играча
tournamentIsStarting=Турнир почиње
nbMinutesPerSidePlusNbSecondsPerMove=%s минута сваки + % секунди по потезу
anonymousCanJoin=Анониман се може прикључити
boardEditor=Уредник табле
startPosition=Почетна позиција
clearBoard=Склони фигуре
savePosition=Сачувај позицију

View file

@ -1,11 +1,11 @@
playWithAFriend=ஒரு தோழரோடு விளையாடு
inviteAFriendToPlayWithYou=ஒரு தோழரைத் தங்களோடு விளையாட அழை
inviteAFriendToPlayWithYou=ஒரு தோழரை நும்மோடு விளையாட அழைக்க
playWithTheMachine=கணினியோடு விளையாடு
challengeTheArtificialIntelligence=செயற்கையறிவோடு பந்தயம் வை
toInviteSomeoneToPlayGiveThisUrl=விளையாட்டுக்கு அழைக்க இந்தச்சுட்டியை அனுப்பு
gameOver=ஆட்டம் முடிந்தது
waitingForOpponent=எதிராளிக்காகக் காத்திருக்கிறது
waiting=காத்திருக்கிறது
waitingForOpponent=எதிராளிக்காகக் காத்திருக்கின்றது
waiting=காத்திருக்கின்றது
yourTurn=தங்கள் முறை
aiNameLevelAiLevel=%s நிலைமட்டம் %s
level=நிலைமட்டம்
@ -24,10 +24,10 @@ blackIsVictorious=கருப்பு வென்றது
playWithTheSameOpponentAgain=அதே எதிராளியோடு மீண்டும் விளையாடு
newOpponent=புது எதிராளி
playWithAnotherOpponent=வேறோர் எதிராளியோடு விளையாடு
yourOpponentWantsToPlayANewGameWithYou=தங்கள் எதிராளி தங்களோடு புது ஆட்டமாட விரும்புகிறார்
yourOpponentWantsToPlayANewGameWithYou=நும் எதிராளி நும்மோடு புது ஆட்டமாட விரும்புகிறார்
joinTheGame=ஆட்டத்திலே சேர்
whitePlays=வெள்ளை விளையாடுகிறது
blackPlays=கருப்பு விளையாடுகிறது
whitePlays=வெள்ளை விளையாடுகின்றது
blackPlays=கருப்பு விளையாடுகின்றது
theOtherPlayerHasLeftTheGameYouCanForceResignationOrWaitForHim=எதிராளி ஆட்டத்தை விட்டுவிட்டார். அவரை விலக வற்புறுத்தலாம் அல்லது காத்திருக்கலாம்
makeYourOpponentResign=எதிராளியை விலகவை
forceResignation=வலுக்கட்டாயமாக விலகவை
@ -42,7 +42,7 @@ blackResigned=கருப்பு விலகிற்று
whiteLeftTheGame=வெள்ளை ஆட்டத்தை விட்டது
blackLeftTheGame=கருப்பு ஆட்டத்தை விட்டது
shareThisUrlToLetSpectatorsSeeTheGame=பார்வையாளர்கள் ஆட்டத்தைப் பார்க்க இந்தச் சுட்டியைத் தெரிவி
youAreViewingThisGameAsASpectator=நீர் பார்வையாளராக இந்த ஆட்டத்தைப் பார்க்கின்றீர்
youAreViewingThisGameAsASpectator=நீர் பார்வையாளராக இந்த ஆட்டத்தைப் பார்க்கின்றீர்
replayAndAnalyse=மீள்விளையாடிப் பகுத்தாய்க
computerAnalysisInProgress=கணினிப் பகுப்பாய்வு நிகழ்கின்றது
theComputerAnalysisYouRequestedIsNowAvailable=நீர் கோரின கணினிப் பகுப்பாய்வு இப்பொழுது கிட்டும்
@ -65,13 +65,13 @@ gamesBeingPlayedRightNow=இப்பொழுதைய ஆட்டங்கள
viewAllNbGames=%s ஆட்டங்கள்
viewNbCheckmates=%s முழுத்தடைகள்
nbBookmarks=%s நினைவுக்குறிகள்
nbPopularGames=%s பரவலான விளையாட்டுகள்
nbPopularGames=%s பிரபலமான விளையாட்டுகள்
nbAnalysedGames=%s பகுத்தாய்ந்த ஆட்டங்கள்
bookmarkedByNbPlayers=%s விளையாடிகளால் நினைவுக்குறியானது
bookmarkedByNbPlayers=%s விளையாடிகள் இதனை நினைவுக்குறியாக்கினர்
viewInFullSize=முழு அளவில் காண்க
logOut=வெளியேறு
signIn=உள்நுழை
newToLichess=நீர் இலைச்செசுக்குப் புதியவரா?
newToLichess=நீர் இலைச்செசுக்குப் (Lichess) புதியவரா?
youNeedAnAccountToDoThat=அதைச் செய்யக் கணக்கொன்று தேவை
signUp=பதிக
people=மக்கள்
@ -80,7 +80,7 @@ forum=மன்றம்
xPostedInForumY=%s இடுகைகள் %s என்ற மன்றத்தில்
chessPlayers=சதுரங்க விளையாடிகள்
minutesPerSide=ஒவ்வொரு கட்சிக்குமான நிமிடங்கள்
variant=வகை
variant=ஆட்ட வகை
timeControl=நேர வரம்பு
time=நேரம்
start=தொடங்கு
@ -95,11 +95,11 @@ nbGamesWithYou=%s ஆட்டங்கள் நும்மோடு
declineInvitation=அழைப்பை மறு
cancel=கழி
timeOut=நேரந் தீர்வு
drawOfferSent=இழுபறியளிப்புத் தெரிவிப்பு
drawOfferDeclined=இழுபறியளிப்பு மறுப்பு
drawOfferAccepted=இழுபறியளிப்பு எற்பு
drawOfferCanceled=இழுபறி அளிப்பு கழிப்பு
yourOpponentOffersADraw=நும் எதிராளி இழுபறி அளிக்கிறார்
drawOfferSent=இழுபறி முன்வரவு தெரிவிப்பு
drawOfferDeclined=இழுபறி முன்வரவு மறுப்பு
drawOfferAccepted=இழுபறி முன்வரவு எற்பு
drawOfferCanceled=இழுபறி முன்வரவு கழிப்பு
yourOpponentOffersADraw=நும் எதிராளி இழுபறிக்கு முன்வருகின்றார்
accept=ஏல்
decline=மறு
playingRightNow=இப்பொழுது ஆடுகின்றது
@ -108,7 +108,7 @@ abortGame=ஆட்டத்தைக் கலை
gameAborted=ஆட்டம் கலைந்தது
standard=மரபு
unlimited=வரம்பில்லை
mode=போக்கு
mode=மதிப்பீட்டுநிலை
casual=மதிப்பீடின்றி
rated=மதிப்பீட்டோடு
thisGameIsRated=இந்த ஆட்டம் மதிப்பிடுகின்றது
@ -121,7 +121,7 @@ cancelRematchOffer=மறுவாட்ட அளிப்பைக் கழ
viewRematch=மறுவாட்டங்களைக் காண்
play=ஆடு
inbox=உள்வரத்து
chatRoom=உரையாட்டறை
chatRoom=உரையாடறை
spectatorRoom=பார்வையாளர் அறை
composeMessage=செய்தி இயற்று
sentMessages=அனுப்பின செய்திகள்
@ -135,10 +135,10 @@ spectators=பார்வையாளர்கள்
nbWins=%s வெற்றிகள்
nbLosses=%s தோல்விகள்
nbDraws=%s இழுபறிகள்
exportGames=ஆட்டங்களை வெளியமைப்புக்கு மாற்று
exportGames=ஆட்டங்களை வெளியற்று
color=நிறம்
eloRange=Elo அளவு
giveNbSeconds=%s நொடிகளாகத் தெரிவி
eloRange=ஏலோ (Elo) அளவு
giveNbSeconds=%s நொடிகள் அளி
whoIsOnline=இணையத்திலே உள்ளவர்கள்
allPlayers=எல்லா விளையாடிகளும்
premoveEnabledClickAnywhereToCancel=முன்னகர்வு இயலும் - கழிக்க எங்கேயும் சொடுக்குக
@ -200,15 +200,15 @@ noFriendsOnline=இணையத் தோழர் யாருமிலர்
findFriends=தோழர்களைத் தேடு
favoriteOpponents=பிடித்தமான எதிராளிகள்
follow=பின்தொடர்
following=பின்தொடருநர்
following=பின்தொடர்கின்றார்
unfollow=பின்தொடராதே
block=தடு
blocked=தடுபட்டது
unblock=தடைநீக்கி
unblock=தடைநீக்க
followsYou=நும்மைப் பின்தொடர்கின்றார்
xStartedFollowingY=%s என்பவர் %s-ஐப் பின்தொடர்கின்றார்
xStartedFollowingY=%s என்பவர் %s-ஐப் பின்தொடரத் தொடங்கினார்
nbFollowers=%s பின்தொடர்நர்கள்
nbFollowing=%s பின் தொடர்கின்றார்
nbFollowing=%s -ஐப் பின்தொடர்கின்றார்
profile=குறிப்புகள்
more=மேலும்
memberSince=உறுப்பினரான காலம்
@ -232,7 +232,7 @@ createANewTournament=புதுப்போட்டி ஒன்றைப்
join=சேர்
withdraw=விலகு
points=புள்ளிகள்
wins=வெல்கிறார்
wins=வெல்கின்றார்
losses=தோல்விகள்
winStreak=வெற்றித் தொடர்கள்
createdBy=படைத்தவர்

View file

@ -240,3 +240,7 @@ waitingForNbPlayers=กำลังรอ %s ผู้เล่น
tournamentIsStarting=ทัวร์นาเมนต์กำลังเริ่มต้น
nbMinutesPerSidePlusNbSecondsPerMove=%s นาที/ข้าง + %s วินาที/การเดิน
anonymousCanJoin=ผู้เล่นนิรนามสามารถเข้าร่วมได้
boardEditor=ตัวแก้ไขกระดาน
startPosition=ตำแหน่งเริ่มต้น
clearBoard=ล้างกระดาน
savePosition=บันทึกตำแหน่ง

View file

@ -30,7 +30,7 @@ private[i18n] object Contributors {
"nn" -> List("Peropaal"),
"eo" -> List("LaPingvino"),
"tp" -> List("jan Mimoku"),
"el" -> List("Yannis Anthymidis", "Tzortzakos Fivos", "Γιάννης Ανθυμίδης"),
"el" -> List("Tzortzakos Fivos", "Γιάννης Ανθυμίδης"),
"fp" -> List("Alex"),
"lt" -> List("Anonymous"),
"nb" -> List("sundaune"),

View file

@ -263,11 +263,11 @@ final class I18nKeys(translator: Translator) {
val waitingForNbPlayers = new Key("waitingForNbPlayers")
val tournamentIsStarting = new Key("tournamentIsStarting")
val nbMinutesPerSidePlusNbSecondsPerMove = new Key("nbMinutesPerSidePlusNbSecondsPerMove")
val anonymousCanJoin = new Key("anonymousCanJoin")
val membersOnly = new Key("membersOnly")
val boardEditor = new Key("boardEditor")
val startPosition = new Key("startPosition")
val clearBoard = new Key("clearBoard")
val savePosition = new Key("savePosition")
def keys = List(playWithAFriend, inviteAFriendToPlayWithYou, playWithTheMachine, challengeTheArtificialIntelligence, toInviteSomeoneToPlayGiveThisUrl, gameOver, waitingForOpponent, waiting, yourTurn, aiNameLevelAiLevel, level, toggleTheChat, toggleSound, chat, resign, checkmate, stalemate, white, black, createAGame, noGameAvailableRightNowCreateOne, whiteIsVictorious, blackIsVictorious, playWithTheSameOpponentAgain, newOpponent, playWithAnotherOpponent, yourOpponentWantsToPlayANewGameWithYou, joinTheGame, whitePlays, blackPlays, theOtherPlayerHasLeftTheGameYouCanForceResignationOrWaitForHim, makeYourOpponentResign, forceResignation, talkInChat, theFirstPersonToComeOnThisUrlWillPlayWithYou, whiteCreatesTheGame, blackCreatesTheGame, whiteJoinsTheGame, blackJoinsTheGame, whiteResigned, blackResigned, whiteLeftTheGame, blackLeftTheGame, shareThisUrlToLetSpectatorsSeeTheGame, youAreViewingThisGameAsASpectator, replayAndAnalyse, computerAnalysisInProgress, theComputerAnalysisYouRequestedIsNowAvailable, theComputerAnalysisHasFailed, viewTheComputerAnalysis, requestAComputerAnalysis, blunders, mistakes, inaccuracies, viewGameStats, flipBoard, threefoldRepetition, claimADraw, offerDraw, draw, nbConnectedPlayers, talkAboutChessAndDiscussLichessFeaturesInTheForum, seeTheGamesBeingPlayedInRealTime, gamesBeingPlayedRightNow, viewAllNbGames, viewNbCheckmates, nbBookmarks, nbPopularGames, nbAnalysedGames, bookmarkedByNbPlayers, viewInFullSize, logOut, signIn, newToLichess, youNeedAnAccountToDoThat, signUp, people, games, forum, xPostedInForumY, chessPlayers, minutesPerSide, variant, timeControl, time, start, username, password, haveAnAccount, allYouNeedIsAUsernameAndAPassword, learnMoreAboutLichess, rank, gamesPlayed, nbGamesWithYou, declineInvitation, cancel, timeOut, drawOfferSent, drawOfferDeclined, drawOfferAccepted, drawOfferCanceled, yourOpponentOffersADraw, accept, decline, playingRightNow, finished, abortGame, gameAborted, standard, unlimited, mode, casual, rated, thisGameIsRated, rematch, rematchOfferSent, rematchOfferAccepted, rematchOfferCanceled, rematchOfferDeclined, cancelRematchOffer, viewRematch, play, inbox, chatRoom, spectatorRoom, composeMessage, sentMessages, noNewMessages, subject, recipient, send, incrementInSeconds, freeOnlineChess, spectators, nbWins, nbLosses, nbDraws, exportGames, color, eloRange, giveNbSeconds, whoIsOnline, allPlayers, premoveEnabledClickAnywhereToCancel, thisPlayerUsesChessComputerAssistance, opening, takeback, proposeATakeback, takebackPropositionSent, takebackPropositionDeclined, takebackPropositionAccepted, takebackPropositionCanceled, yourOpponentProposesATakeback, bookmarkThisGame, toggleBackground, search, advancedSearch, tournament, tournaments, tournamentPoints, viewTournament, freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents, teams, nbMembers, allTeams, newTeam, myTeams, noTeamFound, joinTeam, quitTeam, anyoneCanJoin, aConfirmationIsRequiredToJoin, joiningPolicy, teamLeader, teamBestPlayers, teamRecentMembers, xJoinedTeamY, xCreatedTeamY, averageElo, location, settings, filterGames, reset, apply, leaderboard, pasteTheFenStringHere, pasteThePgnStringHere, fromPosition, continueFromHere, importGame, nbImportedGames, thisIsAChessCaptcha, clickOnTheBoardToMakeYourMove, notACheckmate, colorPlaysCheckmateInOne, retry, reconnecting, onlineFriends, noFriendsOnline, findFriends, favoriteOpponents, follow, following, unfollow, block, blocked, unblock, followsYou, xStartedFollowingY, nbFollowers, nbFollowing, profile, more, memberSince, lastLogin, challengeToPlay, player, list, graph, all, lessThanNbMinutes, xToYMinutes, textIsTooShort, textIsTooLong, required, addToChrome, openTournaments, duration, winner, standing, createANewTournament, join, withdraw, points, wins, losses, winStreak, createdBy, waitingForNbPlayers, tournamentIsStarting, nbMinutesPerSidePlusNbSecondsPerMove, anonymousCanJoin, boardEditor, startPosition, clearBoard, savePosition)
def keys = List(playWithAFriend, inviteAFriendToPlayWithYou, playWithTheMachine, challengeTheArtificialIntelligence, toInviteSomeoneToPlayGiveThisUrl, gameOver, waitingForOpponent, waiting, yourTurn, aiNameLevelAiLevel, level, toggleTheChat, toggleSound, chat, resign, checkmate, stalemate, white, black, createAGame, noGameAvailableRightNowCreateOne, whiteIsVictorious, blackIsVictorious, playWithTheSameOpponentAgain, newOpponent, playWithAnotherOpponent, yourOpponentWantsToPlayANewGameWithYou, joinTheGame, whitePlays, blackPlays, theOtherPlayerHasLeftTheGameYouCanForceResignationOrWaitForHim, makeYourOpponentResign, forceResignation, talkInChat, theFirstPersonToComeOnThisUrlWillPlayWithYou, whiteCreatesTheGame, blackCreatesTheGame, whiteJoinsTheGame, blackJoinsTheGame, whiteResigned, blackResigned, whiteLeftTheGame, blackLeftTheGame, shareThisUrlToLetSpectatorsSeeTheGame, youAreViewingThisGameAsASpectator, replayAndAnalyse, computerAnalysisInProgress, theComputerAnalysisYouRequestedIsNowAvailable, theComputerAnalysisHasFailed, viewTheComputerAnalysis, requestAComputerAnalysis, blunders, mistakes, inaccuracies, viewGameStats, flipBoard, threefoldRepetition, claimADraw, offerDraw, draw, nbConnectedPlayers, talkAboutChessAndDiscussLichessFeaturesInTheForum, seeTheGamesBeingPlayedInRealTime, gamesBeingPlayedRightNow, viewAllNbGames, viewNbCheckmates, nbBookmarks, nbPopularGames, nbAnalysedGames, bookmarkedByNbPlayers, viewInFullSize, logOut, signIn, newToLichess, youNeedAnAccountToDoThat, signUp, people, games, forum, xPostedInForumY, chessPlayers, minutesPerSide, variant, timeControl, time, start, username, password, haveAnAccount, allYouNeedIsAUsernameAndAPassword, learnMoreAboutLichess, rank, gamesPlayed, nbGamesWithYou, declineInvitation, cancel, timeOut, drawOfferSent, drawOfferDeclined, drawOfferAccepted, drawOfferCanceled, yourOpponentOffersADraw, accept, decline, playingRightNow, finished, abortGame, gameAborted, standard, unlimited, mode, casual, rated, thisGameIsRated, rematch, rematchOfferSent, rematchOfferAccepted, rematchOfferCanceled, rematchOfferDeclined, cancelRematchOffer, viewRematch, play, inbox, chatRoom, spectatorRoom, composeMessage, sentMessages, noNewMessages, subject, recipient, send, incrementInSeconds, freeOnlineChess, spectators, nbWins, nbLosses, nbDraws, exportGames, color, eloRange, giveNbSeconds, whoIsOnline, allPlayers, premoveEnabledClickAnywhereToCancel, thisPlayerUsesChessComputerAssistance, opening, takeback, proposeATakeback, takebackPropositionSent, takebackPropositionDeclined, takebackPropositionAccepted, takebackPropositionCanceled, yourOpponentProposesATakeback, bookmarkThisGame, toggleBackground, search, advancedSearch, tournament, tournaments, tournamentPoints, viewTournament, freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents, teams, nbMembers, allTeams, newTeam, myTeams, noTeamFound, joinTeam, quitTeam, anyoneCanJoin, aConfirmationIsRequiredToJoin, joiningPolicy, teamLeader, teamBestPlayers, teamRecentMembers, xJoinedTeamY, xCreatedTeamY, averageElo, location, settings, filterGames, reset, apply, leaderboard, pasteTheFenStringHere, pasteThePgnStringHere, fromPosition, continueFromHere, importGame, nbImportedGames, thisIsAChessCaptcha, clickOnTheBoardToMakeYourMove, notACheckmate, colorPlaysCheckmateInOne, retry, reconnecting, onlineFriends, noFriendsOnline, findFriends, favoriteOpponents, follow, following, unfollow, block, blocked, unblock, followsYou, xStartedFollowingY, nbFollowers, nbFollowing, profile, more, memberSince, lastLogin, challengeToPlay, player, list, graph, all, lessThanNbMinutes, xToYMinutes, textIsTooShort, textIsTooLong, required, addToChrome, openTournaments, duration, winner, standing, createANewTournament, join, withdraw, points, wins, losses, winStreak, createdBy, waitingForNbPlayers, tournamentIsStarting, nbMinutesPerSidePlusNbSecondsPerMove, membersOnly, boardEditor, startPosition, clearBoard, savePosition)
}

View file

@ -46,6 +46,8 @@ private[i18n] case class JsDump(
keys.addToChrome,
keys.createANewTournament,
keys.join,
keys.joinTheGame,
keys.cancel,
keys.withdraw,
keys.tournamentIsStarting)

View file

@ -51,6 +51,9 @@ final class Env(
scheduler.message(1 seconds) {
lobby -> lila.socket.actorApi.Broom
}
scheduler.message(10 seconds) {
lobby -> actorApi.Resync
}
}
}

View file

@ -2,10 +2,9 @@ package lila.lobby
import scala.concurrent.duration._
import actorApi._
import akka.actor._
import akka.pattern.{ ask, pipe }
import actorApi._
import lila.db.api._
import lila.hub.actorApi.GetUids
import lila.memo.ExpireSetMemo
@ -18,7 +17,7 @@ private[lobby] final class Lobby(
def receive = {
case GetOpen sender ! HookRepo.allOpen
case GetOpen sender ! HookRepo.allOpen
case msg @ AddHook(hook) {
HookRepo byUid hook.uid foreach remove
@ -47,6 +46,8 @@ private[lobby] final class Lobby(
HookRepo.cleanupOld foreach remove
}
}
case Resync socket ! HookIds(HookRepo.list map (_.id))
}
private def remove(hook: Hook) = {

View file

@ -2,13 +2,9 @@ package lila.lobby
import scala.concurrent.duration._
import actorApi._
import akka.actor._
import akka.pattern.ask
import play.api.libs.iteratee._
import play.api.libs.json._
import play.api.templates.Html
import actorApi._
import lila.game.actorApi._
import lila.hub.actorApi.lobby._
import lila.hub.actorApi.router.{ Homepage, Player }
@ -16,6 +12,9 @@ import lila.hub.actorApi.timeline._
import lila.socket.actorApi.{ Connected _, _ }
import lila.socket.{ SocketActor, History, Historical }
import makeTimeout.short
import play.api.libs.iteratee._
import play.api.libs.json._
import play.api.templates.Html
private[lobby] final class Socket(
val history: History,
@ -58,9 +57,11 @@ private[lobby] final class Socket(
}
case ChangeFeatured(html) notifyFeatured(html)
case HookIds(ids) notifyVersion("hook_list", ids)
}
private def playerUrl(fullId: String) =
private def playerUrl(fullId: String) =
router ? Player(fullId) mapTo manifest[String]
private def notifyFeatured(html: Html) {

View file

@ -26,5 +26,7 @@ case class CancelHook(uid: String)
case class BiteHook(hookId: String, uid: String, userId: Option[String])
case class JoinHook(uid: String, hook: Hook, game: Game)
case class Join(uid: String, user: Option[User])
case object Resync
case class HookIds(ids: List[String])
case object GetOpen

View file

@ -80,7 +80,7 @@ private[setup] final class FormFactory {
"time" -> time,
"increment" -> increment,
"mode" -> mode(ctx.isAuth),
"allowAnon" -> boolean,
"membersOnly" -> boolean,
"eloRange" -> eloRange,
"color" -> nonEmptyText.verifying(Color.names contains _)
)(HookConfig.<<)(_.>>)

View file

@ -16,7 +16,8 @@ case class HookConfig(
color: Color,
eloRange: EloRange) extends HumanConfig {
def >> = (variant.id, clock, time, increment, mode.id.some, allowAnon, eloRange.toString.some, color.name).some
// allowAnons -> membersOnly
def >> = (variant.id, clock, time, increment, mode.id.some, !allowAnon, eloRange.toString.some, color.name).some
def hook(uid: String, user: Option[User], sid: Option[String]) = Hook.make(
uid = uid,
@ -43,16 +44,17 @@ case class HookConfig(
object HookConfig extends BaseHumanConfig {
def <<(v: Int, k: Boolean, t: Int, i: Int, m: Option[Int], a: Boolean, e: Option[String], c: String) = {
def <<(v: Int, k: Boolean, t: Int, i: Int, m: Option[Int], membersOnly: Boolean, e: Option[String], c: String) = {
val realMode = m.fold(Mode.default)(Mode.orDefault)
val useEloRange = realMode.rated || membersOnly
new HookConfig(
variant = Variant(v) err "Invalid game variant " + v,
clock = k,
time = t,
increment = i,
mode = realMode,
allowAnon = a,
eloRange = e.filter(_ realMode.rated).fold(EloRange.default)(EloRange.orDefault),
allowAnon = !membersOnly, // membersOnly
eloRange = e.filter(_ useEloRange).fold(EloRange.default)(EloRange.orDefault),
color = Color(c) err "Invalid color " + c)
}

View file

@ -6,24 +6,32 @@
// declare now, populate later in a distinct script.
var lichess_translations = lichess_translations || [];
var lichess_sri = Math.random().toString(36).substring(5); // 8 chars
function withStorage(f) {
// can throw an exception when storage is full
try {
return !!window.localStorage ? f(window.localStorage) : null;
} catch(e) {
} catch (e) {
console.debug(e);
}
}
var storage = {
get: function(k) {
return withStorage(function(s) { return s.getItem(k); });
return withStorage(function(s) {
return s.getItem(k);
});
},
remove: function(k) {
withStorage(function(s) { s.removeItem(k); });
withStorage(function(s) {
s.removeItem(k);
});
},
set: function(k, v) {
// removing first may help http://stackoverflow.com/questions/2603682/is-anyone-else-receiving-a-quota-exceeded-err-on-their-ipad-when-accessing-local
withStorage(function(s) { s.removeItem(k); s.setItem(k, v); });
withStorage(function(s) {
s.removeItem(k);
s.setItem(k, v);
});
}
};
@ -315,14 +323,14 @@ var storage = {
}
},
challengeReminder: function(data) {
if (!storage.get('challenge-refused-'+data.id) && !$('div.lichess_overboard.joining').length) {
if (!storage.get('challenge-refused-' + data.id) && !$('div.lichess_overboard.joining').length) {
$('#challenge_reminder').each(function() {
clearTimeout($(this).data('timeout'));
$(this).remove();
});
$('div.notifications').append(data.html).find("a.decline").click(function() {
$.post($(this).attr("href"));
storage.set('challenge-refused-'+data.id, 1)
storage.set('challenge-refused-' + data.id, 1)
$('#challenge_reminder').remove();
return false;
});
@ -485,11 +493,11 @@ var storage = {
}
$(document).idleTimer(lichess.idleTime)
.on('idle.idleTimer', function() {
lichess.socket.destroy();
})
lichess.socket.destroy();
})
.on('active.idleTimer', function() {
lichess.socket.connect();
});
lichess.socket.connect();
});
}, 500);
if ($board = $('div.with_marks').orNot()) {
@ -702,7 +710,7 @@ var storage = {
var enabled = !soundEnabled();
$soundToggle.toggleClass('sound_state_on', enabled);
$.playSound();
if(enabled) storage.set('sound', 1);
if (enabled) storage.set('sound', 1);
else storage.remove('sound');
return false;
});
@ -936,7 +944,12 @@ var storage = {
.find("div.lichess_table").addClass("finished").end()
.find(".moretime").remove().end()
.find('div.clock').clock('stop');
self.element.find("div.ui-draggable").draggable("destroy");
try {
self.element.find("div.ui-draggable").draggable("destroy");
} catch (e) { }
setTimeout(function() {
self.element.find('.ui-draggable-dragging').remove();
}, 500);
// But enqueue the visible changes
self.element.queue(function() {
self.changeTitle($.trans("Game Over"));
@ -1502,7 +1515,7 @@ var storage = {
var enabled = $toggle.is(':checked');
self.element.toggleClass('hidden', !enabled);
self.options.onToggle(enabled);
if(!enabled) storage.set('nochat', 1);
if (!enabled) storage.set('nochat', 1);
else storage.remove('nochat');
});
$toggle[0].checked = storage.get('nochat') != 1;
@ -1851,13 +1864,14 @@ var storage = {
}
});
var $eloRangeConfig = $this.parent();
$modeChoices.on('change', function() {
$modeChoices.add($form.find('.members_only input')).on('change', function() {
var rated = $rated.prop('checked');
$eloRangeConfig.toggle(rated);
var membersOnly = $form.find('.members_only input').prop('checked');
$eloRangeConfig.toggle(rated || membersOnly);
if (isHook && rated && !$clockCheckbox.prop('checked')) {
$clockCheckbox.click();
}
$form.find('.allow_anon_config').toggle(!rated);
$form.find('.members_only').toggle(!rated);
$.centerOverboard();
}).trigger('change');
});
@ -2068,6 +2082,7 @@ var storage = {
},
hook_add: addHook,
hook_remove: removeHook,
hook_list: syncHookIds,
featured: changeFeatured,
redirect: function(e) {
$.lichessOpeningPreventClicks();
@ -2105,8 +2120,15 @@ var storage = {
}
function removeHook(id) {
pool = _.reject(pool, function(h) {
return h.id == id;
});
drawHooks();
}
function syncHookIds(ids) {
pool = _.filter(pool, function(h) {
return h.id != id;
return _.contains(ids, h.id);
});
drawHooks();
}
@ -2120,12 +2142,12 @@ var storage = {
drawHooks(inBatch || false);
}
function undrawHook(hook) {
$('#' + hook.id).not('.hiding').addClass('hiding').fadeOut(animation, function() {
function undrawHook(id) {
$('#' + id).not('.hiding').addClass('hiding').fadeOut(animation, function() {
$.powerTip.destroy($(this));
$(this).remove();
});
$tbody.children('.' + hook.id).remove();
$tbody.children('.' + id).remove();
}
function drawHooks(inBatch) {
@ -2140,7 +2162,7 @@ var storage = {
(filter.eloDiff > 0 && (!hook.elo || hook.elo > (myElo + filter.eloDiff) || hook.elo < (myElo - filter.eloDiff)));
var hash = hook.mode + hook.variant + hook.time + hook.elo;
if (hide && hook.action != 'cancel') {
undrawHook(hook);
undrawHook(hook.id);
hidden++;
} else if (_.contains(seen, hash) && hook.action != 'cancel') {
$('#' + hook.id).filter(':visible').hide();
@ -2158,13 +2180,15 @@ var storage = {
}
if (hook.action != 'cancel') seen.push(hash);
});
$canvas.find('>span.plot').each(function() {
var id = $(this).attr('id');
if (!_.find(pool, function(h) {
return h.id == id;
})) {
undrawHook($(this).data('hook'));
}
_.each(_.union(
_.map($canvas.find('>span.plot'), function(o) {
return $(o).attr('id');
}),
_.map($tbody.children(), function(o) {
return $(o).data('id');
})
), function(id) {
if (!_.findWhere(pool, {id: id})) undrawHook(id);
});
if (!(inBatch || false)) {
@ -2252,7 +2276,8 @@ var storage = {
}
function renderTr(hook) {
return '<tr data-id="' + hook.id + '" class="' + hook.id + '">' + _.map([
var title = (hook.action == "join") ? $.trans('Join the game') : $.trans('cancel');
return '<tr title="' + title + '" data-id="' + hook.id + '" class="' + hook.id + ' ' + hook.action + '">' + _.map([
['', '<span class="s16 ' + (hook.color || 'random') + '"></span>'],
[hook.username, hook.elo ? '<a href="/@/' + hook.username + '" class="ulink">' + hook.username + '</a>' : 'Anonymous'],
[hook.elo || 0, hook.elo || ''],

View file

@ -1358,8 +1358,7 @@ div.game_config .time_choice, div.game_config .increment_choice, div.game_config
div.game_config .time_choice span {
font-weight: bold;
}
div.game_config .allow_anon_config label,
div.game_config .clock_config label {
div.game_config label.pointer {
cursor: pointer;
}
div.game_config button.submit {
@ -1532,6 +1531,9 @@ div.game_config div.color_submits button.random span {
#hooks_table tr:nth-child(even) td {
background: rgba(230, 230, 230, 0.5);
}
#hooks_table tr.cancel td {
background: rgba(200, 255, 200, 0.7);
}
#hooks_table tr:hover td {
background: rgba(255, 255, 200, 0.7);
}

View file

@ -191,6 +191,9 @@ body.dark #hooks_table tr:nth-child(even) td {
body.dark #hooks_table tr:nth-child(odd) td {
background: rgba(40, 40, 40, 0.6);
}
body.dark #hooks_table tr.cancel td {
background: rgba(0, 80, 0, 0.7);
}
body.dark #hooks_table tr:hover td {
background: rgba(50, 50, 20, 0.7);
}

2
todo
View file

@ -57,3 +57,5 @@ customize sound notifications http://imgur.com/70WVyb5
opera issue http://en.lichess.org/forum/lichess-feedback/new-game-wont-show-on-games-list-opera#1
embedded games links http://2ls.ru/chessonline/
filter ranges http://en.lichess.org/forum/lichess-feedback/my-proposed-changes-with-filter-window#1
hooks resync (chrome does not remove them all)
casual games elo range