2013-07-17 01:08:44 +02:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2014-06-29 19:41:29 -05:00
|
|
|
"git.gitorious.org/trantor/trantor.git/database"
|
2013-07-17 01:08:44 +02:00
|
|
|
"net/http"
|
|
|
|
)
|
|
|
|
|
|
|
|
type newsData struct {
|
|
|
|
S Status
|
2013-07-18 11:42:46 +02:00
|
|
|
News []newsEntry
|
2013-07-17 01:08:44 +02:00
|
|
|
}
|
|
|
|
|
2013-07-18 11:42:46 +02:00
|
|
|
type newsEntry struct {
|
2013-07-17 01:08:44 +02:00
|
|
|
Date string
|
|
|
|
Text string
|
|
|
|
}
|
|
|
|
|
2013-09-23 16:27:31 +02:00
|
|
|
func newsHandler(h handler) {
|
|
|
|
err := h.r.ParseForm()
|
2013-08-31 02:45:30 +02:00
|
|
|
if err != nil {
|
2013-09-23 16:27:31 +02:00
|
|
|
http.Error(h.w, err.Error(), http.StatusInternalServerError)
|
2013-08-31 02:45:30 +02:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2013-07-17 01:08:44 +02:00
|
|
|
var data newsData
|
2013-09-23 16:27:31 +02:00
|
|
|
data.S = GetStatus(h)
|
2013-07-17 01:08:44 +02:00
|
|
|
data.S.News = true
|
2013-09-23 16:27:31 +02:00
|
|
|
data.News = getNews(NUM_NEWS, 0, h.db)
|
2013-08-31 02:45:30 +02:00
|
|
|
|
2013-09-23 16:27:31 +02:00
|
|
|
format := h.r.Form["fmt"]
|
2013-08-31 02:45:30 +02:00
|
|
|
if (len(format) > 0) && (format[0] == "rss") {
|
2013-09-23 16:27:31 +02:00
|
|
|
loadTxtTemplate(h.w, "news_rss.xml", data)
|
2013-08-31 02:45:30 +02:00
|
|
|
} else {
|
2013-09-23 16:27:31 +02:00
|
|
|
loadTemplate(h.w, "news", data)
|
2013-08-31 02:45:30 +02:00
|
|
|
}
|
2013-07-17 01:08:44 +02:00
|
|
|
}
|
|
|
|
|
2013-09-23 16:27:31 +02:00
|
|
|
func editNewsHandler(h handler) {
|
|
|
|
if !h.sess.IsAdmin() {
|
|
|
|
notFound(h)
|
2013-07-17 01:08:44 +02:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var data statusData
|
2013-09-23 16:27:31 +02:00
|
|
|
data.S = GetStatus(h)
|
2013-07-17 01:08:44 +02:00
|
|
|
data.S.News = true
|
2013-09-23 16:27:31 +02:00
|
|
|
loadTemplate(h.w, "edit_news", data)
|
2013-07-17 01:08:44 +02:00
|
|
|
}
|
|
|
|
|
2013-09-23 16:27:31 +02:00
|
|
|
func postNewsHandler(h handler) {
|
|
|
|
if !h.sess.IsAdmin() {
|
|
|
|
notFound(h)
|
2013-07-17 01:08:44 +02:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2013-09-23 16:27:31 +02:00
|
|
|
text := h.r.FormValue("text")
|
|
|
|
h.db.AddNews(text)
|
|
|
|
http.Redirect(h.w, h.r, "/news/", http.StatusFound)
|
2013-07-17 01:08:44 +02:00
|
|
|
}
|
2013-07-18 11:42:46 +02:00
|
|
|
|
2014-06-29 19:41:29 -05:00
|
|
|
func getNews(num int, days int, db *database.DB) []newsEntry {
|
2013-07-18 11:42:46 +02:00
|
|
|
dbnews, _ := db.GetNews(num, days)
|
|
|
|
news := make([]newsEntry, len(dbnews))
|
|
|
|
for i, n := range dbnews {
|
|
|
|
news[i].Text = n.Text
|
2013-07-18 11:54:51 +02:00
|
|
|
news[i].Date = n.Date.Format("Jan 2, 2006")
|
2013-07-18 11:42:46 +02:00
|
|
|
}
|
|
|
|
return news
|
|
|
|
}
|