diff --git a/app/views/setup/clock.scala.html b/app/views/setup/clock.scala.html index 5586280fe8..cf994122ca 100644 --- a/app/views/setup/clock.scala.html +++ b/app/views/setup/clock.scala.html @@ -4,7 +4,7 @@
- + @setup.checkbox(form("clock"))
diff --git a/app/views/setup/hook.scala.html b/app/views/setup/hook.scala.html index 75b38f8144..6b14fbde24 100644 --- a/app/views/setup/hook.scala.html +++ b/app/views/setup/hook.scala.html @@ -12,22 +12,24 @@
@setup.radios(form("mode"), translatedModeChoices)
-
- @trans.eloRange(): ? - ? -
- @setup.input( - form("eloRange"), - Symbol("type") -> "hidden", - Symbol("data-min") -> EloRange.min, - Symbol("data-max") -> EloRange.max) +
+ @if(ctx.isAuth) { +
+ + @setup.checkbox(form("membersOnly")) +
+ } +
+ @trans.eloRange(): ? - ? +
+ @setup.input( + form("eloRange"), + Symbol("type") -> "hidden", + Symbol("data-min") -> EloRange.min, + Symbol("data-max") -> EloRange.max) +
-@if(ctx.isAuth) { -
- - @setup.checkbox(form("allowAnon")) -
-} } } diff --git a/conf/messages b/conf/messages index 10146b6be1..ea0c4c7307 100644 --- a/conf/messages +++ b/conf/messages @@ -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 diff --git a/conf/messages.af b/conf/messages.af index f1b0b3149b..858d298256 100644 --- a/conf/messages.af +++ b/conf/messages.af @@ -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 diff --git a/conf/messages.id b/conf/messages.id index 8aa329cacb..4929735d75 100644 --- a/conf/messages.id +++ b/conf/messages.id @@ -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 diff --git a/conf/messages.ja b/conf/messages.ja index 1742f597b6..5c021e57fa 100644 --- a/conf/messages.ja +++ b/conf/messages.ja @@ -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=盤面を保存 diff --git a/conf/messages.ro b/conf/messages.ro index d614617578..424125c5c4 100644 --- a/conf/messages.ro +++ b/conf/messages.ro @@ -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 diff --git a/conf/messages.sa b/conf/messages.sa index ad71f8c6bf..e406b83d82 100644 --- a/conf/messages.sa +++ b/conf/messages.sa @@ -1,7 +1,9 @@ -playWithAFriend=मित्रेण क्रीड -inviteAFriendToPlayWithYou=क्रीडार्थम् मित्रम् उपह्व्यस्व -playWithTheMachine=यन्त्रेण सह क्रीड +playWithAFriend=मित्रेण सह क्रीडतु +inviteAFriendToPlayWithYou=क्रीडार्थम् मित्रम् उपाह्वयताम् +playWithTheMachine=यन्त्रेण सह क्रीडतु challengeTheArtificialIntelligence=कृत्रिमाम् चेतनाम् समुपाह्वय -toInviteSomeoneToPlayGiveThisUrl=यं कंचित् क्रीडर्थम् उपाह्वयितुम् एतम् निर्देशम् प्रेषयतु +toInviteSomeoneToPlayGiveThisUrl=यं कंचित् क्रीडार्थम् उपाह्वयितुम् एनम् निर्देशम् प्रेषयतु gameOver=द्यूतम् समाप्तम् waitingForOpponent=प्रतियोधम् अपेक्ष्यते +waiting=अपेक्ष्यते +yourTurn=भवतो वारः diff --git a/conf/messages.sr b/conf/messages.sr index 86b2136b6a..b06a5e41e0 100644 --- a/conf/messages.sr +++ b/conf/messages.sr @@ -239,3 +239,8 @@ createdBy=Направљено од waitingForNbPlayers=Чекајући %s играча tournamentIsStarting=Турнир почиње nbMinutesPerSidePlusNbSecondsPerMove=%s минута сваки + % секунди по потезу +anonymousCanJoin=Анониман се може прикључити +boardEditor=Уредник табле +startPosition=Почетна позиција +clearBoard=Склони фигуре +savePosition=Сачувај позицију diff --git a/conf/messages.ta b/conf/messages.ta index f73ddb4257..8cc5eafe09 100644 --- a/conf/messages.ta +++ b/conf/messages.ta @@ -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=படைத்தவர் diff --git a/conf/messages.th b/conf/messages.th index c64553139e..078a4d24c9 100644 --- a/conf/messages.th +++ b/conf/messages.th @@ -240,3 +240,7 @@ waitingForNbPlayers=กำลังรอ %s ผู้เล่น tournamentIsStarting=ทัวร์นาเมนต์กำลังเริ่มต้น nbMinutesPerSidePlusNbSecondsPerMove=%s นาที/ข้าง + %s วินาที/การเดิน anonymousCanJoin=ผู้เล่นนิรนามสามารถเข้าร่วมได้ +boardEditor=ตัวแก้ไขกระดาน +startPosition=ตำแหน่งเริ่มต้น +clearBoard=ล้างกระดาน +savePosition=บันทึกตำแหน่ง diff --git a/modules/i18n/src/main/Contributors.scala b/modules/i18n/src/main/Contributors.scala index 5de3747770..75ad6ed060 100644 --- a/modules/i18n/src/main/Contributors.scala +++ b/modules/i18n/src/main/Contributors.scala @@ -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"), diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 659ff3c1a6..ca1fc48367 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -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) } diff --git a/modules/i18n/src/main/JsDump.scala b/modules/i18n/src/main/JsDump.scala index ea8144cf4b..b1556cac67 100644 --- a/modules/i18n/src/main/JsDump.scala +++ b/modules/i18n/src/main/JsDump.scala @@ -46,6 +46,8 @@ private[i18n] case class JsDump( keys.addToChrome, keys.createANewTournament, keys.join, + keys.joinTheGame, + keys.cancel, keys.withdraw, keys.tournamentIsStarting) diff --git a/modules/lobby/src/main/Env.scala b/modules/lobby/src/main/Env.scala index f2d1ec9735..b17175fb51 100644 --- a/modules/lobby/src/main/Env.scala +++ b/modules/lobby/src/main/Env.scala @@ -51,6 +51,9 @@ final class Env( scheduler.message(1 seconds) { lobby -> lila.socket.actorApi.Broom } + scheduler.message(10 seconds) { + lobby -> actorApi.Resync + } } } diff --git a/modules/lobby/src/main/Lobby.scala b/modules/lobby/src/main/Lobby.scala index a5027ffb71..859ec4ef75 100644 --- a/modules/lobby/src/main/Lobby.scala +++ b/modules/lobby/src/main/Lobby.scala @@ -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) = { diff --git a/modules/lobby/src/main/Socket.scala b/modules/lobby/src/main/Socket.scala index 509e595e07..7e289cb13d 100644 --- a/modules/lobby/src/main/Socket.scala +++ b/modules/lobby/src/main/Socket.scala @@ -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) { diff --git a/modules/lobby/src/main/actorApi.scala b/modules/lobby/src/main/actorApi.scala index 34b9793829..e046c925d8 100644 --- a/modules/lobby/src/main/actorApi.scala +++ b/modules/lobby/src/main/actorApi.scala @@ -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 diff --git a/modules/setup/src/main/FormFactory.scala b/modules/setup/src/main/FormFactory.scala index 455644a2cc..11ff59262f 100644 --- a/modules/setup/src/main/FormFactory.scala +++ b/modules/setup/src/main/FormFactory.scala @@ -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.<<)(_.>>) diff --git a/modules/setup/src/main/HookConfig.scala b/modules/setup/src/main/HookConfig.scala index 84af4292c2..01e621df94 100644 --- a/modules/setup/src/main/HookConfig.scala +++ b/modules/setup/src/main/HookConfig.scala @@ -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) } diff --git a/public/javascripts/big.js b/public/javascripts/big.js index 84427add4a..c2fc4e3aae 100644 --- a/public/javascripts/big.js +++ b/public/javascripts/big.js @@ -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 '' + _.map([ + var title = (hook.action == "join") ? $.trans('Join the game') : $.trans('cancel'); + return '' + _.map([ ['', ''], [hook.username, hook.elo ? '' + hook.username + '' : 'Anonymous'], [hook.elo || 0, hook.elo || ''], diff --git a/public/stylesheets/common.css b/public/stylesheets/common.css index 2b3b04059e..dd27fd4515 100644 --- a/public/stylesheets/common.css +++ b/public/stylesheets/common.css @@ -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); } diff --git a/public/stylesheets/dark.css b/public/stylesheets/dark.css index 30f022525b..bc51354836 100644 --- a/public/stylesheets/dark.css +++ b/public/stylesheets/dark.css @@ -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); } diff --git a/todo b/todo index 9d17a286bb..12cee06597 100644 --- a/todo +++ b/todo @@ -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