Add basic html/rss support for book lists
This commit is contained in:
parent
c0a70a18e1
commit
46762ea17b
11 changed files with 254 additions and 78 deletions
86
lib/list.go
Normal file
86
lib/list.go
Normal file
|
@ -0,0 +1,86 @@
|
|||
package trantor
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"gitlab.com/trantor/trantor/lib/database"
|
||||
|
||||
log "github.com/cihub/seelog"
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
func listHandler(h handler) {
|
||||
listID := mux.Vars(h.r)["listID"]
|
||||
list, err := h.db.GetBookList(listID)
|
||||
if err != nil {
|
||||
log.Error("Error loading list ", listID, ": ", err)
|
||||
h.sess.Notify("Something went wrong!", "Could not load the list list", "error")
|
||||
http.Redirect(h.w, h.r, h.r.Referer(), http.StatusFound)
|
||||
return
|
||||
}
|
||||
if list == nil {
|
||||
notFound(h)
|
||||
return
|
||||
}
|
||||
|
||||
var data listData
|
||||
data.S = GetStatus(h)
|
||||
data.S.Title = list.Title + " -- " + data.S.Title
|
||||
data.List = list
|
||||
h.load("list", data)
|
||||
}
|
||||
|
||||
type listData struct {
|
||||
S Status
|
||||
List *database.BookList
|
||||
}
|
||||
|
||||
func listPostHandler(h handler) {
|
||||
if h.sess.User == "" {
|
||||
notFound(h)
|
||||
return
|
||||
}
|
||||
|
||||
listTitle := h.r.FormValue("list")
|
||||
bookID := h.r.FormValue("book_id")
|
||||
userLists, err := h.db.GetListsByUser(h.sess.User)
|
||||
if err != nil {
|
||||
log.Error("Error loading user (", h.sess.User, ") lists: ", err)
|
||||
h.sess.Notify("Something went wrong!", "Could not add book to the list", "error")
|
||||
http.Redirect(h.w, h.r, h.r.Referer(), http.StatusFound)
|
||||
return
|
||||
}
|
||||
|
||||
var list *database.BookList
|
||||
for _, l := range userLists {
|
||||
if strings.ToLower(l.Title) == strings.ToLower(listTitle) {
|
||||
list = &l
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
var listID string
|
||||
if list == nil {
|
||||
listID = genID()
|
||||
err = h.db.NewBookList(listID, listTitle, h.sess.User, []string{})
|
||||
if err != nil {
|
||||
log.Error("Error creating list ", listTitle, " by user ", h.sess.User, ": ", err)
|
||||
h.sess.Notify("Something went wrong!", "Could not add book to the list", "error")
|
||||
http.Redirect(h.w, h.r, h.r.Referer(), http.StatusFound)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
listID = list.ListID
|
||||
}
|
||||
|
||||
err = h.db.AddBookToList(listID, bookID)
|
||||
if err != nil {
|
||||
log.Error("Error adding book ", bookID, " to list ", listTitle, "(", listID, "): ", err)
|
||||
h.sess.Notify("Something went wrong!", "Could not add book to the list", "error")
|
||||
http.Redirect(h.w, h.r, h.r.Referer(), http.StatusFound)
|
||||
return
|
||||
}
|
||||
|
||||
http.Redirect(h.w, h.r, "/list/"+listID, http.StatusFound)
|
||||
}
|
Reference in a new issue