56 lines
1 KiB
Go
56 lines
1 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
type newsData struct {
|
|
S Status
|
|
News []newsEntry
|
|
}
|
|
|
|
type newsEntry struct {
|
|
Date string
|
|
Text string
|
|
}
|
|
|
|
func newsHandler(w http.ResponseWriter, r *http.Request, sess *Session) {
|
|
var data newsData
|
|
data.S = GetStatus(w, r)
|
|
data.S.News = true
|
|
data.News = getNews(NUM_NEWS, 0)
|
|
loadTemplate(w, "news", data)
|
|
}
|
|
|
|
func editNewsHandler(w http.ResponseWriter, r *http.Request, sess *Session) {
|
|
if !sess.IsAdmin() {
|
|
notFound(w, r)
|
|
return
|
|
}
|
|
|
|
var data statusData
|
|
data.S = GetStatus(w, r)
|
|
data.S.News = true
|
|
loadTemplate(w, "edit_news", data)
|
|
}
|
|
|
|
func postNewsHandler(w http.ResponseWriter, r *http.Request, sess *Session) {
|
|
if !sess.IsAdmin() {
|
|
notFound(w, r)
|
|
return
|
|
}
|
|
|
|
text := r.FormValue("text")
|
|
db.AddNews(text)
|
|
http.Redirect(w, r, "/news/", http.StatusFound)
|
|
}
|
|
|
|
func getNews(num int, days int) []newsEntry {
|
|
dbnews, _ := db.GetNews(num, days)
|
|
news := make([]newsEntry, len(dbnews))
|
|
for i, n := range dbnews {
|
|
news[i].Text = n.Text
|
|
news[i].Date = n.Date.Format("Jan 2, 2006")
|
|
}
|
|
return news
|
|
}
|