From e9dba080a77cd860a58d8d708b74b57898408d16 Mon Sep 17 00:00:00 2001 From: Las Zenow Date: Sat, 31 Aug 2013 01:45:15 +0200 Subject: [PATCH] Add selector for number of items per page on search view --- search.go | 33 +++++++++++++++++++++++---------- templates/search.html | 10 ++++++++++ 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/search.go b/search.go index dbfd040..08888c8 100644 --- a/search.go +++ b/search.go @@ -26,12 +26,13 @@ func buildQuery(q string) bson.M { } type searchData struct { - S Status - Found int - Books []Book - Page int - Next string - Prev string + S Status + Found int + Books []Book + ItemsPage int + Page int + Next string + Prev string } func searchHandler(w http.ResponseWriter, r *http.Request, sess *Session) { @@ -48,19 +49,21 @@ func searchHandler(w http.ResponseWriter, r *http.Request, sess *Session) { page = 0 } } - res, num, _ := db.GetBooks(buildQuery(req), SEARCH_ITEMS_PAGE, page*SEARCH_ITEMS_PAGE) + items_page := itemsPage(r) + res, num, _ := db.GetBooks(buildQuery(req), items_page, page*items_page) var data searchData data.S = GetStatus(w, r) data.S.Search = req data.Books = res + data.ItemsPage = items_page data.Found = num data.Page = page + 1 - if num > (page+1)*SEARCH_ITEMS_PAGE { - data.Next = "/search/?q=" + req + "&p=" + strconv.Itoa(page+1) + if num > (page+1)*items_page { + data.Next = "/search/?q=" + req + "&p=" + strconv.Itoa(page+1) + "&num=" + strconv.Itoa(items_page) } if page > 0 { - data.Prev = "/search/?q=" + req + "&p=" + strconv.Itoa(page-1) + data.Prev = "/search/?q=" + req + "&p=" + strconv.Itoa(page-1) + "&num=" + strconv.Itoa(items_page) } format := r.Form["fmt"] @@ -70,3 +73,13 @@ func searchHandler(w http.ResponseWriter, r *http.Request, sess *Session) { loadTemplate(w, "search", data) } } + +func itemsPage(r *http.Request) int { + if len(r.Form["num"]) > 0 { + items_page, err := strconv.Atoi(r.Form["num"][0]) + if err == nil { + return items_page + } + } + return SEARCH_ITEMS_PAGE +} diff --git a/templates/search.html b/templates/search.html index 80d8e5c..b1a9d6c 100644 --- a/templates/search.html +++ b/templates/search.html @@ -50,7 +50,17 @@ +{{else}} +
{{end}} +
+ +
+ + +
+ +
{{if .Next}}