From f50e7fac2bf8c85f4939031db514219f1373ca82 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sat, 25 May 2013 00:38:11 +0200 Subject: [PATCH] search for user forum posts --- app/views/forum/layout.scala.html | 4 ++-- app/views/forum/search.scala.html | 9 +++++---- app/views/user/show.scala.html | 4 ++-- modules/forumSearch/src/main/Query.scala | 18 +++++++++++++----- public/stylesheets/common.css | 2 +- public/stylesheets/dark.css | 1 + public/stylesheets/forum.css | 4 ++++ todo | 1 + 8 files changed, 29 insertions(+), 14 deletions(-) diff --git a/app/views/forum/layout.scala.html b/app/views/forum/layout.scala.html index ba12003825..f31274d0fe 100644 --- a/app/views/forum/layout.scala.html +++ b/app/views/forum/layout.scala.html @@ -1,4 +1,4 @@ -@(title: String, moreJs: Html = Html(""))(body: Html)(implicit ctx: Context) +@(title: String, searchText: String = "", moreJs: Html = Html(""))(body: Html)(implicit ctx: Context) @moreCss = { @cssTag("forum.css") @@ -15,7 +15,7 @@ moreCss = moreCss, moreJs = forumJs, active = siteMenu.forum.some) {
- @forum.searchForm() + @forum.searchForm(searchText.trim) @body
} diff --git a/app/views/forum/search.scala.html b/app/views/forum/search.scala.html index ebf535d812..56948c7576 100644 --- a/app/views/forum/search.scala.html +++ b/app/views/forum/search.scala.html @@ -1,16 +1,17 @@ @(text: String, views: Paginator[lila.forum.PostView])(implicit ctx: Context) -@title = @{ trans.searchInForum.str() + " \"" + text + "\"" } +@title = @{ trans.searchInForum.str() + " \"" + text.trim + "\"" } @forum.layout( title = title, -moreJs = jsTag("vendor/jquery.infinitescroll.min.js") +moreJs = jsTag("vendor/jquery.infinitescroll.min.js"), +searchText = text ) { -@forum.searchForm(text) -

@title

+

@views.nbResults posts found

+ @if(views.nbResults > 0) { diff --git a/app/views/user/show.scala.html b/app/views/user/show.scala.html index a267fc168a..257b311a9a 100644 --- a/app/views/user/show.scala.html +++ b/app/views/user/show.scala.html @@ -56,8 +56,8 @@ evenMoreCss = evenMoreCss) {
@splitNumber(trans.nbFollowing(info.nbFollowing)) @splitNumber(trans.nbFollowers(info.nbFollowers)) - @splitNumber(u.toints + " " + trans.tournamentPoints()) - @splitNumber(info.nbPosts + " Forum posts") + @splitNumber(u.toints + " " + trans.tournamentPoints()) + @splitNumber(info.nbPosts + " Forum posts") @if(ctx.isAuth && !ctx.is(u)) {
@if(isGranted(_.UserSpy)) { diff --git a/modules/forumSearch/src/main/Query.scala b/modules/forumSearch/src/main/Query.scala index d5632cbcd7..84cb6288e5 100644 --- a/modules/forumSearch/src/main/Query.scala +++ b/modules/forumSearch/src/main/Query.scala @@ -16,15 +16,23 @@ private[forumSearch] final class Query private ( from = from, size = size) - def countRequest = ElasticSearch.Request.Count(makeQuery) + def countRequest = ElasticSearch.Request.Count(makeQuery, makeFilters) - private def makeQuery = terms.foldLeft(boolQuery()) { - case (query, term) ⇒ query must { - multiMatchQuery(term, fields.body, fields.topic, fields.author) - } + private def queryTerms = terms filterNot (_ startsWith "user:") + private def userSearch = terms find (_ startsWith "user:") flatMap { + _.drop(5).some.filter(_.size >= 2) } + private def makeQuery = + if (queryTerms.isEmpty) matchAllQuery + else queryTerms.foldLeft(boolQuery) { + case (query, term) ⇒ query must { + multiMatchQuery(term, fields.body, fields.topic, fields.author) + } + } + private def makeFilters = List( + userSearch map { termFilter(fields.author, _) }, !staff option termFilter(fields.staff, false), !troll option termFilter(fields.troll, false) ).flatten.toNel map { fs ⇒ andFilter(fs.list: _*) } diff --git a/public/stylesheets/common.css b/public/stylesheets/common.css index 636f01a251..f9454a9eb9 100644 --- a/public/stylesheets/common.css +++ b/public/stylesheets/common.css @@ -223,7 +223,7 @@ div.content_box_inter .intertab { text-transform: capitalize; } div.content_box_inter a.intertab:hover { - text-transform: underline; + background: #fff; } div.content_box_inter a.intertab.active { background: white; diff --git a/public/stylesheets/dark.css b/public/stylesheets/dark.css index 7d9ee5c909..58efc67883 100644 --- a/public/stylesheets/dark.css +++ b/public/stylesheets/dark.css @@ -153,6 +153,7 @@ body.dark #top .dropdown, body.dark #GameText a:hover, body.dark div.hooks_wrap a.filter:hover, body.dark div.hooks_wrap a.filter.active, +body.dark div.content_box_inter a.intertab:hover, body.dark #top .shown a.toggle { background: #000; } diff --git a/public/stylesheets/forum.css b/public/stylesheets/forum.css index df331c08a8..5248fa7b81 100644 --- a/public/stylesheets/forum.css +++ b/public/stylesheets/forum.css @@ -43,6 +43,10 @@ ol.crumbs li:first-child { vertical-align: middle; } +#lichess_forum .nb_results { + padding-left: 25px; +} + #lichess_forum form.search { float: right; margin: 20px; diff --git a/todo b/todo index c830dfa5aa..bdc57641c3 100644 --- a/todo +++ b/todo @@ -71,6 +71,7 @@ takeback/enpassant glitch http://en.lichess.org/forum/lichess-feedback/i-found-a show teams in user mini badges for top players in ELO and number of games top menu is too long in french with long username +captcha can only first click a piece DEPLOY p21 ----------