Add pagination on moderation page
This commit is contained in:
parent
5abab5f5dd
commit
bbe10b76ff
4 changed files with 51 additions and 15 deletions
22
admin.go
22
admin.go
|
@ -5,6 +5,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
type settingsData struct {
|
type settingsData struct {
|
||||||
|
@ -159,6 +160,9 @@ type newData struct {
|
||||||
S Status
|
S Status
|
||||||
Found int
|
Found int
|
||||||
Books []newBook
|
Books []newBook
|
||||||
|
Page int
|
||||||
|
Next string
|
||||||
|
Prev string
|
||||||
}
|
}
|
||||||
|
|
||||||
func newHandler(w http.ResponseWriter, r *http.Request) {
|
func newHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
@ -173,7 +177,16 @@ func newHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
res, num, _ := db.GetNewBooks()
|
page := 0
|
||||||
|
if len(r.Form["p"]) != 0 {
|
||||||
|
var err error
|
||||||
|
page, err = strconv.Atoi(r.Form["p"][0])
|
||||||
|
if err != nil {
|
||||||
|
page = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res, num, _ := db.GetNewBooks(NEW_ITEMS_PAGE, page*NEW_ITEMS_PAGE)
|
||||||
|
|
||||||
var data newData
|
var data newData
|
||||||
data.S = GetStatus(w, r)
|
data.S = GetStatus(w, r)
|
||||||
data.Found = num
|
data.Found = num
|
||||||
|
@ -183,6 +196,13 @@ func newHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
_, data.Books[i].TitleFound, _ = db.GetBooks(buildQuery("title:"+b.Title), 1)
|
_, data.Books[i].TitleFound, _ = db.GetBooks(buildQuery("title:"+b.Title), 1)
|
||||||
_, data.Books[i].AuthorFound, _ = db.GetBooks(buildQuery("author:"+strings.Join(b.Author, " author:")), 1)
|
_, data.Books[i].AuthorFound, _ = db.GetBooks(buildQuery("author:"+strings.Join(b.Author, " author:")), 1)
|
||||||
}
|
}
|
||||||
|
data.Page = page+1
|
||||||
|
if num > (page+1)*NEW_ITEMS_PAGE {
|
||||||
|
data.Next = "/new/?p=" + strconv.Itoa(page+1)
|
||||||
|
}
|
||||||
|
if page > 0 {
|
||||||
|
data.Prev = "/new/?p=" + strconv.Itoa(page-1)
|
||||||
|
}
|
||||||
loadTemplate(w, "new", data)
|
loadTemplate(w, "new", data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ const (
|
||||||
PASS_SALT = "ImperialLibSalt"
|
PASS_SALT = "ImperialLibSalt"
|
||||||
TAGS_DISPLAY = 50
|
TAGS_DISPLAY = 50
|
||||||
SEARCH_ITEMS_PAGE = 10
|
SEARCH_ITEMS_PAGE = 10
|
||||||
|
NEW_ITEMS_PAGE = 50
|
||||||
TEMPLATE_PATH = "templates/"
|
TEMPLATE_PATH = "templates/"
|
||||||
BOOKS_PATH = "books/"
|
BOOKS_PATH = "books/"
|
||||||
COVER_PATH = "cover/"
|
COVER_PATH = "cover/"
|
||||||
|
|
19
database.go
19
database.go
|
@ -151,21 +151,12 @@ func (d *DB) GetDownloadedBooks(num int) (books []Book, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns: list of books, number found and err
|
/* optional parameters: length and start index
|
||||||
|
*
|
||||||
|
* Returns: list of books, number found and err
|
||||||
*/
|
*/
|
||||||
func (d *DB) GetNewBooks() (books []Book, num int, err error) {
|
func (d *DB) GetNewBooks(r ...int) (books []Book, num int, err error) {
|
||||||
var q *mgo.Query
|
return d.GetBooks(bson.M{"$nor": []bson.M{{"active": true}}}, r...)
|
||||||
q = d.books.Find(bson.M{"$nor": []bson.M{{"active": true}}}).Sort("-_id")
|
|
||||||
num, err = q.Count()
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err = q.All(&books)
|
|
||||||
for i, b := range books {
|
|
||||||
books[i].Id = bson.ObjectId(b.Id).Hex()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DB) BookActive(id bson.ObjectId) bool {
|
func (d *DB) BookActive(id bson.ObjectId) bool {
|
||||||
|
|
|
@ -7,6 +7,18 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
<p class="centered">Found {{.Found}} books.<br /></p>
|
<p class="centered">Found {{.Found}} books.<br /></p>
|
||||||
|
<ul class="pager">
|
||||||
|
{{if .Prev}}
|
||||||
|
<li class="previous">
|
||||||
|
<a href="{{.Prev}}">← Prev</a>
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
{{if .Next}}
|
||||||
|
<li class="next">
|
||||||
|
<a href="{{.Next}}">Next →</a>
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
</ul>
|
||||||
|
|
||||||
{{range .Books}}
|
{{range .Books}}
|
||||||
{{$titleFound := .TitleFound}}
|
{{$titleFound := .TitleFound}}
|
||||||
|
@ -41,6 +53,18 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
<ul class="pager">
|
||||||
|
{{if .Prev}}
|
||||||
|
<li class="previous">
|
||||||
|
<a href="{{.Prev}}">← Prev</a>
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
{{if .Next}}
|
||||||
|
<li class="next">
|
||||||
|
<a href="{{.Next}}">Next →</a>
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
</ul>
|
||||||
{{if .Books}}
|
{{if .Books}}
|
||||||
<div class="centered btn-group">
|
<div class="centered btn-group">
|
||||||
<a href="/store/{{range .Books}}{{.B.Id}}/{{end}}" class="btn btn-large btn-success"><i class="icon-ok"></i> Save All</a>
|
<a href="/store/{{range .Books}}{{.B.Id}}/{{end}}" class="btn btn-large btn-success"><i class="icon-ok"></i> Save All</a>
|
||||||
|
|
Reference in a new issue