From e20f7d4572f31298cafa0bc30b20fe094cd19b31 Mon Sep 17 00:00:00 2001 From: Unihedron Date: Mon, 25 Jan 2016 11:36:09 +0800 Subject: [PATCH 1/5] Adds several new pages --- app/controllers/Page.scala | 8 ++++++++ app/views/game/variantLink.scala.html | 6 +++--- conf/routes | 4 ++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/controllers/Page.scala b/app/controllers/Page.scala index 140550b8ce..f3f4e8dc25 100644 --- a/app/controllers/Page.scala +++ b/app/controllers/Page.scala @@ -23,10 +23,18 @@ object Page extends LilaController { def contact = page("contact") + def master = page("master") + def kingOfTheHill = page("king-of-the-hill") def atomic = page("atomic") + def antichess = page("antichess") + + def chess960 = page("chess960") + + def horde = page("horde") + def racingKings = page("racing-kings") def crazyhouse = page("crazyhouse") diff --git a/app/views/game/variantLink.scala.html b/app/views/game/variantLink.scala.html index dd8ab54f92..e5fd60ddd3 100644 --- a/app/views/game/variantLink.scala.html +++ b/app/views/game/variantLink.scala.html @@ -2,13 +2,13 @@ @url = { @variant match { case chess.variant.Standard => {https://en.wikipedia.org/wiki/Chess} -case chess.variant.Chess960 => {https://en.wikipedia.org/wiki/Chess960} +case chess.variant.Chess960 => {@routes.Page.chess960} case chess.variant.KingOfTheHill => {@routes.Page.kingOfTheHill} case chess.variant.ThreeCheck => {http://en.wikipedia.org/wiki/Three-check_chess} -case chess.variant.Antichess => {http://en.wikipedia.org/wiki/Losing_chess} +case chess.variant.Antichess => {@routes.Page.antichess} case chess.variant.FromPosition => {@routes.Editor.index?fen=@initialFen.map(_.replace(" ", "_"))} case chess.variant.Atomic => {@routes.Page.atomic} -case chess.variant.Horde => {http://en.wikipedia.org/wiki/Dunsany%27s_chess#Horde_variant} +case chess.variant.Horde => {@routes.Page.horde} case chess.variant.RacingKings => {@routes.Page.racingKings} case chess.variant.Crazyhouse => {@routes.Page.crazyhouse} case _ => {} diff --git a/conf/routes b/conf/routes index ac117c6d4a..dd8436944d 100644 --- a/conf/routes +++ b/conf/routes @@ -393,8 +393,12 @@ GET /help-lichess controllers.Page.helpLichess GET /terms-of-service controllers.Page.tos GET /how-to-stream-on-lichess controllers.Page.streamHowTo GET /contact controllers.Page.contact +GET /master controllers.Page.master GET /king-of-the-hill controllers.Page.kingOfTheHill GET /atomic controllers.Page.atomic +GET /antichess controllers.Page.antichess +GET /chess960 controllers.Page.chess960 +GET /horde controllers.Page.horde GET /racing-kings controllers.Page.racingKings GET /crazyhouse controllers.Page.crazyhouse GET /privacy controllers.Page.privacy From 1d71f835e817e8a806d10cdc9133a33ed24048f1 Mon Sep 17 00:00:00 2001 From: Unihedron Date: Mon, 25 Jan 2016 12:04:09 +0800 Subject: [PATCH 2/5] Move pages router to save chess960 --- app/controllers/Page.scala | 2 +- app/views/game/variantLink.scala.html | 2 +- conf/routes | 32 +++++++++++++-------------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/controllers/Page.scala b/app/controllers/Page.scala index f3f4e8dc25..1052aeaf2e 100644 --- a/app/controllers/Page.scala +++ b/app/controllers/Page.scala @@ -31,7 +31,7 @@ object Page extends LilaController { def antichess = page("antichess") - def chess960 = page("chess960") + def fischerrandom = page("chess960") def horde = page("horde") diff --git a/app/views/game/variantLink.scala.html b/app/views/game/variantLink.scala.html index e5fd60ddd3..c6eac64ed0 100644 --- a/app/views/game/variantLink.scala.html +++ b/app/views/game/variantLink.scala.html @@ -2,7 +2,7 @@ @url = { @variant match { case chess.variant.Standard => {https://en.wikipedia.org/wiki/Chess} -case chess.variant.Chess960 => {@routes.Page.chess960} +case chess.variant.Chess960 => {@routes.Page.fischerrandom} case chess.variant.KingOfTheHill => {@routes.Page.kingOfTheHill} case chess.variant.ThreeCheck => {http://en.wikipedia.org/wiki/Three-check_chess} case chess.variant.Antichess => {@routes.Page.antichess} diff --git a/conf/routes b/conf/routes index dd8436944d..edc4418f9d 100644 --- a/conf/routes +++ b/conf/routes @@ -88,6 +88,22 @@ GET /blog controllers.Blog.index(ref: Option[String GET /blog/:id/:slug controllers.Blog.show(id: String, slug: String, ref: Option[String] ?= None) GET /blog.atom controllers.Blog.atom(ref: Option[String] ?= None) +# Pages +GET /thanks controllers.Page.thanks +GET /help-lichess controllers.Page.helpLichess +GET /terms-of-service controllers.Page.tos +GET /how-to-stream-on-lichess controllers.Page.streamHowTo +GET /contact controllers.Page.contact +GET /master controllers.Page.master +GET /king-of-the-hill controllers.Page.kingOfTheHill +GET /atomic controllers.Page.atomic +GET /antichess controllers.Page.antichess +GET /chess960 controllers.Page.fischerrandom +GET /horde controllers.Page.horde +GET /racing-kings controllers.Page.racingKings +GET /crazyhouse controllers.Page.crazyhouse +GET /privacy controllers.Page.privacy + # Training - Opening GET /training/opening controllers.Opening.home GET /training/opening/history controllers.Opening.history @@ -387,22 +403,6 @@ GET /network/stream controllers.WorldMap.stream POST /mobile/register/:platform/:deviceId controllers.Main.mobileRegister(platform: String, deviceId: String) POST /mobile/unregister controllers.Main.mobileUnregister -# Pages -GET /thanks controllers.Page.thanks -GET /help-lichess controllers.Page.helpLichess -GET /terms-of-service controllers.Page.tos -GET /how-to-stream-on-lichess controllers.Page.streamHowTo -GET /contact controllers.Page.contact -GET /master controllers.Page.master -GET /king-of-the-hill controllers.Page.kingOfTheHill -GET /atomic controllers.Page.atomic -GET /antichess controllers.Page.antichess -GET /chess960 controllers.Page.chess960 -GET /horde controllers.Page.horde -GET /racing-kings controllers.Page.racingKings -GET /crazyhouse controllers.Page.crazyhouse -GET /privacy controllers.Page.privacy - # Donate GET /donate controllers.Donation.index GET /donate/thanks controllers.Donation.thanks From 6882b9b918a009d73ff37cd5ca18d2f0bcc9ec4f Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 25 Jan 2016 13:40:59 +0700 Subject: [PATCH 3/5] reorganize content pages --- app/controllers/Page.scala | 2 +- conf/routes | 36 ++++++++++++++++++++---------------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/app/controllers/Page.scala b/app/controllers/Page.scala index 1052aeaf2e..0118fe4444 100644 --- a/app/controllers/Page.scala +++ b/app/controllers/Page.scala @@ -17,7 +17,7 @@ object Page extends LilaController { def tos = page("tos") - def helpLichess = page("help") + def contribute = page("help") def streamHowTo = page("stream-howto") diff --git a/conf/routes b/conf/routes index edc4418f9d..d04a0dac7d 100644 --- a/conf/routes +++ b/conf/routes @@ -88,22 +88,6 @@ GET /blog controllers.Blog.index(ref: Option[String GET /blog/:id/:slug controllers.Blog.show(id: String, slug: String, ref: Option[String] ?= None) GET /blog.atom controllers.Blog.atom(ref: Option[String] ?= None) -# Pages -GET /thanks controllers.Page.thanks -GET /help-lichess controllers.Page.helpLichess -GET /terms-of-service controllers.Page.tos -GET /how-to-stream-on-lichess controllers.Page.streamHowTo -GET /contact controllers.Page.contact -GET /master controllers.Page.master -GET /king-of-the-hill controllers.Page.kingOfTheHill -GET /atomic controllers.Page.atomic -GET /antichess controllers.Page.antichess -GET /chess960 controllers.Page.fischerrandom -GET /horde controllers.Page.horde -GET /racing-kings controllers.Page.racingKings -GET /crazyhouse controllers.Page.crazyhouse -GET /privacy controllers.Page.privacy - # Training - Opening GET /training/opening controllers.Opening.home GET /training/opening/history controllers.Opening.history @@ -409,6 +393,26 @@ GET /donate/thanks controllers.Donation.thanks POST /donate/thanks controllers.Donation.thanksRedirect POST /donate/ipn controllers.Donation.ipn +# Pages +GET /thanks controllers.Page.thanks +GET /terms-of-service controllers.Page.tos +GET /privacy controllers.Page.privacy +GET /contact controllers.Page.contact + +# Variants +GET /variant/king-of-the-hill controllers.Page.kingOfTheHill +GET /variant/atomic controllers.Page.atomic +GET /variant/antichess controllers.Page.antichess +GET /variant/chess960 controllers.Page.fischerrandom +GET /variant/horde controllers.Page.horde +GET /variant/racing-kings controllers.Page.racingKings +GET /variant/crazyhouse controllers.Page.crazyhouse + +# Help +GET /help/contribute controllers.Page.contribute +GET /help/master controllers.Page.master +GET /help/stream-on-lichess controllers.Page.streamHowTo + POST /jslog/$id<\w{12}> controllers.Main.jslog(id) # Assets From a9c73f12345580ad0c38fb0a3ba454cb798e7fc8 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 25 Jan 2016 13:45:24 +0700 Subject: [PATCH 4/5] rename Page functions --- app/controllers/Page.scala | 32 +++++++++++++-------------- app/views/game/variantLink.scala.html | 2 +- conf/routes | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/controllers/Page.scala b/app/controllers/Page.scala index 0118fe4444..4d866c5a3f 100644 --- a/app/controllers/Page.scala +++ b/app/controllers/Page.scala @@ -7,37 +7,37 @@ import views._ object Page extends LilaController { - private def page(bookmark: String) = Open { implicit ctx => - OptionOk(Prismic oneShotBookmark bookmark) { + private def bookmark(name: String) = Open { implicit ctx => + OptionOk(Prismic oneShotBookmark name) { case (doc, resolver) => views.html.site.page(doc, resolver) } } - def thanks = page("thanks") + def thanks = bookmark("thanks") - def tos = page("tos") + def tos = bookmark("tos") - def contribute = page("help") + def contribute = bookmark("help") - def streamHowTo = page("stream-howto") + def streamHowTo = bookmark("stream-howto") - def contact = page("contact") + def contact = bookmark("contact") - def master = page("master") + def master = bookmark("master") - def kingOfTheHill = page("king-of-the-hill") + def kingOfTheHill = bookmark("king-of-the-hill") - def atomic = page("atomic") + def atomic = bookmark("atomic") - def antichess = page("antichess") + def antichess = bookmark("antichess") - def fischerrandom = page("chess960") + def chess960 = bookmark("chess960") - def horde = page("horde") + def horde = bookmark("horde") - def racingKings = page("racing-kings") + def racingKings = bookmark("racing-kings") - def crazyhouse = page("crazyhouse") + def crazyhouse = bookmark("crazyhouse") - def privacy = page("privacy") + def privacy = bookmark("privacy") } diff --git a/app/views/game/variantLink.scala.html b/app/views/game/variantLink.scala.html index c6eac64ed0..e5fd60ddd3 100644 --- a/app/views/game/variantLink.scala.html +++ b/app/views/game/variantLink.scala.html @@ -2,7 +2,7 @@ @url = { @variant match { case chess.variant.Standard => {https://en.wikipedia.org/wiki/Chess} -case chess.variant.Chess960 => {@routes.Page.fischerrandom} +case chess.variant.Chess960 => {@routes.Page.chess960} case chess.variant.KingOfTheHill => {@routes.Page.kingOfTheHill} case chess.variant.ThreeCheck => {http://en.wikipedia.org/wiki/Three-check_chess} case chess.variant.Antichess => {@routes.Page.antichess} diff --git a/conf/routes b/conf/routes index d04a0dac7d..a8f9e656a2 100644 --- a/conf/routes +++ b/conf/routes @@ -403,7 +403,7 @@ GET /contact controllers.Page.contact GET /variant/king-of-the-hill controllers.Page.kingOfTheHill GET /variant/atomic controllers.Page.atomic GET /variant/antichess controllers.Page.antichess -GET /variant/chess960 controllers.Page.fischerrandom +GET /variant/chess960 controllers.Page.chess960 GET /variant/horde controllers.Page.horde GET /variant/racing-kings controllers.Page.racingKings GET /variant/crazyhouse controllers.Page.crazyhouse From d0a1c43a13cfbf08c35a4dd53ed0098a64b0fa3b Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 25 Jan 2016 17:46:31 +0700 Subject: [PATCH 5/5] add daily crazyhouse to tournament winners leaderboard --- modules/tournament/src/main/PlayerRepo.scala | 2 +- modules/tournament/src/main/TournamentRepo.scala | 10 ++++++++-- modules/tournament/src/main/Winners.scala | 8 +++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/tournament/src/main/PlayerRepo.scala b/modules/tournament/src/main/PlayerRepo.scala index 376828ed48..da76eb4c2f 100644 --- a/modules/tournament/src/main/PlayerRepo.scala +++ b/modules/tournament/src/main/PlayerRepo.scala @@ -124,7 +124,7 @@ object PlayerRepo { b += (u.get.asInstanceOf[BSONString].value -> r) r = r + 1 } - b.result() + b.result case _ => Map.empty } } diff --git a/modules/tournament/src/main/TournamentRepo.scala b/modules/tournament/src/main/TournamentRepo.scala index bf9bb07af7..90345555f1 100644 --- a/modules/tournament/src/main/TournamentRepo.scala +++ b/modules/tournament/src/main/TournamentRepo.scala @@ -2,6 +2,7 @@ package lila.tournament import org.joda.time.DateTime import reactivemongo.bson.{ BSONDocument, BSONArray, BSONInteger } +import chess.variant.Variant import BSONHandlers._ import lila.common.paginator.Paginator @@ -25,7 +26,7 @@ object TournamentRepo { private val unfinishedSelect = BSONDocument("status" -> BSONDocument("$ne" -> Status.Finished.id)) private[tournament] val scheduledSelect = BSONDocument("schedule" -> BSONDocument("$exists" -> true)) private def sinceSelect(date: DateTime) = BSONDocument("startsAt" -> BSONDocument("$gt" -> date)) - private def variantSelect(variant: chess.variant.Variant) = + private def variantSelect(variant: Variant) = if (variant.standard) BSONDocument("variant" -> BSONDocument("$exists" -> false)) else BSONDocument("variant" -> variant.id) @@ -177,13 +178,18 @@ object TournamentRepo { }._1.reverse } - def lastFinishedScheduledByFreqStandard(freq: Schedule.Freq, since: DateTime): Fu[List[Tournament]] = coll.find( + def lastFinishedScheduledByFreq(freq: Schedule.Freq, since: DateTime): Fu[List[Tournament]] = coll.find( finishedSelect ++ sinceSelect(since) ++ variantSelect(chess.variant.Standard) ++ BSONDocument( "schedule.freq" -> freq.name, "schedule.speed" -> BSONDocument("$in" -> Schedule.Speed.mostPopular.map(_.name)) ) ).sort(BSONDocument("startsAt" -> -1)).toList[Tournament](Schedule.Speed.mostPopular.size.some) + def lastFinishedDaily(variant: Variant): Fu[Option[Tournament]] = coll.find( + finishedSelect ++ sinceSelect(DateTime.now minusDays 1) ++ variantSelect(variant) ++ + BSONDocument("schedule.freq" -> Schedule.Freq.Daily.name) + ).sort(BSONDocument("startsAt" -> -1)).one[Tournament] + def update(tour: Tournament) = coll.update(BSONDocument("_id" -> tour.id), tour) def insert(tour: Tournament) = coll.insert(tour) diff --git a/modules/tournament/src/main/Winners.scala b/modules/tournament/src/main/Winners.scala index 28beb4bbb5..8154151172 100644 --- a/modules/tournament/src/main/Winners.scala +++ b/modules/tournament/src/main/Winners.scala @@ -21,9 +21,11 @@ final class Winners( import Schedule.Freq private def fetchScheduled(nb: Int): Fu[List[Winner]] = { val since = DateTime.now minusMonths 1 - List(Freq.Marathon, Freq.Monthly, Freq.Weekly, Freq.Daily).map { freq => - TournamentRepo.lastFinishedScheduledByFreqStandard(freq, since) flatMap toursToWinners - }.sequenceFu.map(_.flatten) + List(Freq.Monthly, Freq.Weekly, Freq.Daily).map { freq => + TournamentRepo.lastFinishedScheduledByFreq(freq, since) + }.sequenceFu.map(_.flatten) flatMap { stds => + TournamentRepo.lastFinishedDaily(chess.variant.Crazyhouse) map (stds ::: _.toList) + } flatMap toursToWinners } private def toursToWinners(tours: List[Tournament]): Fu[List[Winner]] =