About page

This commit is contained in:
Meutel 2017-08-06 16:05:58 +02:00
parent f67d3f7aad
commit 7b78861384
5 changed files with 27 additions and 12 deletions

View File

@ -4,7 +4,6 @@ Bouquins in Go
## TODO ## TODO
* About
* translations * translations
* tests * tests
* UI book: cover in background * UI book: cover in background

View File

@ -21,6 +21,7 @@ const (
TPL_SERIES = "series.html" TPL_SERIES = "series.html"
TPL_INDEX = "index.html" TPL_INDEX = "index.html"
TPL_SEARCH = "search.html" TPL_SEARCH = "search.html"
TPL_ABOUT = "about.html"
PARAM_LIST = "list" PARAM_LIST = "list"
PARAM_ORDER = "order" PARAM_ORDER = "order"
@ -38,6 +39,7 @@ const (
URL_AUTHORS = "/authors/" URL_AUTHORS = "/authors/"
URL_SERIES = "/series/" URL_SERIES = "/series/"
URL_SEARCH = "/search/" URL_SEARCH = "/search/"
URL_ABOUT = "/about/"
URL_JS = "/js/" URL_JS = "/js/"
URL_CSS = "/css/" URL_CSS = "/css/"
URL_FONTS = "/fonts/" URL_FONTS = "/fonts/"
@ -134,12 +136,13 @@ type SeriesFull struct {
} }
type BouquinsModel struct { type BouquinsModel struct {
Title string `json:"title,omitempty"` Title string
Page string
} }
// Constructor BouquinsModel // Constructor BouquinsModel
func NewBouquinsModel(title string) *BouquinsModel { func NewBouquinsModel(title, page string) *BouquinsModel {
return &BouquinsModel{title} return &BouquinsModel{title, page}
} }
type IndexModel struct { type IndexModel struct {
@ -149,7 +152,7 @@ type IndexModel struct {
// Constructor IndexModel // Constructor IndexModel
func NewIndexModel(title string, count int64) *IndexModel { func NewIndexModel(title string, count int64) *IndexModel {
return &IndexModel{*NewBouquinsModel(title), count} return &IndexModel{*NewBouquinsModel(title, "index"), count}
} }
type SearchModel struct { type SearchModel struct {
@ -157,7 +160,7 @@ type SearchModel struct {
} }
func NewSearchModel() *SearchModel { func NewSearchModel() *SearchModel {
return &SearchModel{*NewBouquinsModel("Recherche")} return &SearchModel{*NewBouquinsModel("Recherche", "search")}
} }
type ResultsModel struct { type ResultsModel struct {
@ -320,7 +323,7 @@ func (app *Bouquins) BookPage(idParam string, res http.ResponseWriter, req *http
if err != nil { if err != nil {
return nil return nil
} }
return app.render(res, TPL_BOOKS, &BookModel{*NewBouquinsModel(book.Title), book}) return app.render(res, TPL_BOOKS, &BookModel{*NewBouquinsModel(book.Title, "book"), book})
} }
func (app *Bouquins) BooksPage(res http.ResponseWriter, req *http.Request) { func (app *Bouquins) BooksPage(res http.ResponseWriter, req *http.Request) {
var err error var err error
@ -359,7 +362,7 @@ func (app *Bouquins) AuthorPage(idParam string, res http.ResponseWriter, req *ht
if err != nil { if err != nil {
return err return err
} }
return app.render(res, TPL_AUTHORS, &AuthorModel{*NewBouquinsModel(author.Name), author}) return app.render(res, TPL_AUTHORS, &AuthorModel{*NewBouquinsModel(author.Name, "author"), author})
} }
func (app *Bouquins) AuthorsPage(res http.ResponseWriter, req *http.Request) { func (app *Bouquins) AuthorsPage(res http.ResponseWriter, req *http.Request) {
var err error var err error
@ -398,7 +401,7 @@ func (app *Bouquins) SeriePage(idParam string, res http.ResponseWriter, req *htt
if err != nil { if err != nil {
return err return err
} }
return app.render(res, TPL_SERIES, &SeriesModel{*NewBouquinsModel(series.Name), series}) return app.render(res, TPL_SERIES, &SeriesModel{*NewBouquinsModel(series.Name, "series"), series})
} }
func (app *Bouquins) SeriesPage(res http.ResponseWriter, req *http.Request) { func (app *Bouquins) SeriesPage(res http.ResponseWriter, req *http.Request) {
var err error var err error
@ -425,3 +428,9 @@ func (app *Bouquins) SearchPage(res http.ResponseWriter, req *http.Request) {
log.Println(err) log.Println(err)
} }
} }
func (app *Bouquins) AboutPage(res http.ResponseWriter, req *http.Request) {
err := app.render(res, TPL_ABOUT, NewBouquinsModel("A propos", "about"))
if err != nil {
log.Println(err)
}
}

View File

@ -89,6 +89,7 @@ func router(app *Bouquins) {
http.HandleFunc(URL_AUTHORS, app.AuthorsPage) http.HandleFunc(URL_AUTHORS, app.AuthorsPage)
http.HandleFunc(URL_SERIES, app.SeriesPage) http.HandleFunc(URL_SERIES, app.SeriesPage)
http.HandleFunc(URL_SEARCH, app.SearchPage) http.HandleFunc(URL_SEARCH, app.SearchPage)
http.HandleFunc(URL_ABOUT, app.AboutPage)
} }
func main() { func main() {

6
templates/about.html Normal file
View File

@ -0,0 +1,6 @@
{{ template "header.html" . }}
<div class="container" id="about">
<p><b>bouquins</b> est une interface web pour le gestionnaire de livres numériques <a href="https://calibre-ebook.com/">calibre</a>. Cette version utilise le langage <a href="https://golang.org/">Go</a>, le framework <a href="https://getbootstrap.com/">bootstap</a> et le framework <a href="https://vuejs.org/">Vue.js</a>.</p>
<p>Ce logiciel est open-source et distribué sous <a href="https://opensource.org/licenses/BSD-3-Clause">license BSD</a>. Le code source est disponible ici: <a href="https://git.meutel.net/meutel/go-bouquins">https://git.meutel.net/meutel/go-bouquins</a>.
</div>
{{ template "footer.html" . }}

View File

@ -14,9 +14,9 @@
<nav class="navbar navbar-inverse" id="nav"> <nav class="navbar navbar-inverse" id="nav">
<div class="container"> <div class="container">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li class="active"><a href="/">Accueil</a></li> <li{{ if ne .Page "search" }}{{ if (ne .Page "about") }} class="active"{{ end }}{{ end }}><a href="/">Accueil</a></li>
<li><a href="/search">Recherche</a></li> <li{{ if eq .Page "search" }} class="active"{{ end }}><a href="/search/">Recherche</a></li>
<li><a href="#">A propos</a></li> <li{{ if eq .Page "about" }} class="active"{{ end }}><a href="/about/">A propos</a></li>
</ul> </ul>
<form class="navbar-form navbar-right" role="search" method="get" action="/search/"> <form class="navbar-form navbar-right" role="search" method="get" action="/search/">
<div class="form-group"> <div class="form-group">