Added ability to reject and rework article
This commit is contained in:
@ -10,7 +10,7 @@ import (
|
||||
"streifling.com/jason/cpolis/cmd/model"
|
||||
)
|
||||
|
||||
func ShowHub(s *control.CookieStore) http.HandlerFunc {
|
||||
func ShowHub(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
session, err := s.Get(r, "cookie")
|
||||
if err != nil {
|
||||
@ -20,7 +20,7 @@ func ShowHub(s *control.CookieStore) http.HandlerFunc {
|
||||
}
|
||||
|
||||
tmpl, err := template.ParseFiles("web/templates/hub.html")
|
||||
template.Must(tmpl, err).ExecuteTemplate(w, "page-content", session.Values["role"])
|
||||
template.Must(tmpl, err).ExecuteTemplate(w, "page-content", session.Values["role"].(int))
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,32 +38,8 @@ func WriteArticle(db *model.DB) http.HandlerFunc {
|
||||
}
|
||||
}
|
||||
|
||||
func FinishArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
func SubmitArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
article := new(model.Article)
|
||||
var err error
|
||||
|
||||
article.Title, err = control.ConvertToPlain(r.PostFormValue("editor-title"))
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
article.Desc, err = control.ConvertToPlain(r.PostFormValue("editor-desc"))
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
article.Content, err = control.ConvertToHTML(r.PostFormValue("editor-text"))
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
session, err := s.Get(r, "cookie")
|
||||
if err != nil {
|
||||
tmpl, err := template.ParseFiles("web/templates/login.html")
|
||||
@ -71,7 +47,15 @@ func FinishArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
template.Must(tmpl, err).ExecuteTemplate(w, "page-content", msg)
|
||||
}
|
||||
|
||||
article.AuthorID = session.Values["id"].(int64)
|
||||
article := &model.Article{
|
||||
Title: r.PostFormValue("article-title"),
|
||||
Description: r.PostFormValue("article-description"),
|
||||
Content: r.PostFormValue("article-content"),
|
||||
Published: false,
|
||||
Rejected: false,
|
||||
AuthorID: session.Values["id"].(int64),
|
||||
}
|
||||
|
||||
article.ID, err = db.AddArticle(article)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
@ -102,20 +86,74 @@ func FinishArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
}
|
||||
}
|
||||
|
||||
func ShowUnpublishedArticles(db *model.DB) http.HandlerFunc {
|
||||
func ResubmitArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
articles, err := db.GetCertainArticles(false)
|
||||
id, err := strconv.ParseInt(r.PostFormValue("article-id"), 10, 64)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
tmpl, err := template.ParseFiles("web/templates/unpublished-articles.html")
|
||||
template.Must(tmpl, err).ExecuteTemplate(w, "page-content", articles)
|
||||
|
||||
title := r.PostFormValue("article-title")
|
||||
description := r.PostFormValue("article-description")
|
||||
content := r.PostFormValue("article-content")
|
||||
|
||||
if err := db.UpdateAttributes(
|
||||
&model.Attribute{Table: "articles", ID: id, AttName: "title", Value: title},
|
||||
&model.Attribute{Table: "articles", ID: id, AttName: "description", Value: description},
|
||||
&model.Attribute{Table: "articles", ID: id, AttName: "content", Value: content},
|
||||
&model.Attribute{Table: "articles", ID: id, AttName: "rejected", Value: false},
|
||||
); err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
session, err := s.Get(r, "cookie")
|
||||
if err != nil {
|
||||
tmpl, err := template.ParseFiles("web/templates/login.html")
|
||||
msg := "Session nicht mehr gültig. Bitte erneut anmelden."
|
||||
template.Must(tmpl, err).ExecuteTemplate(w, "page-content", msg)
|
||||
}
|
||||
|
||||
tmpl, err := template.ParseFiles("web/templates/hub.html")
|
||||
tmpl = template.Must(tmpl, err)
|
||||
tmpl.ExecuteTemplate(w, "page-content", session.Values["role"])
|
||||
}
|
||||
}
|
||||
|
||||
func ReviewArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
func ShowUnpublishedArticles(db *model.DB) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
unpublishedArticles, err := db.GetCertainArticles(false, false)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
tmpl, err := template.ParseFiles("web/templates/unpublished-articles.html")
|
||||
tmpl = template.Must(tmpl, err)
|
||||
tmpl.ExecuteTemplate(w, "page-content", unpublishedArticles)
|
||||
}
|
||||
}
|
||||
|
||||
func ShowRejectedArticles(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
rejectedArticles, err := db.GetCertainArticles(false, true)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
tmpl, err := template.ParseFiles("web/templates/rejected-articles.html")
|
||||
tmpl = template.Must(tmpl, err)
|
||||
tmpl.ExecuteTemplate(w, "page-content", rejectedArticles)
|
||||
}
|
||||
}
|
||||
|
||||
func ReviewUnpublishedArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
id, err := strconv.ParseInt(r.PostFormValue("id"), 10, 64)
|
||||
if err != nil {
|
||||
@ -131,19 +169,34 @@ func ReviewArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
// session, err := s.Get(r, "cookie")
|
||||
// if err != nil {
|
||||
// tmpl, err := template.ParseFiles("web/templates/login.html")
|
||||
// msg := "Session nicht mehr gültig. Bitte erneut anmelden."
|
||||
// template.Must(tmpl, err).ExecuteTemplate(w, "page-content", msg)
|
||||
// }
|
||||
|
||||
tmpl, err := template.ParseFiles("web/templates/to-be-published.html")
|
||||
tmpl = template.Must(tmpl, err)
|
||||
tmpl.ExecuteTemplate(w, "page-content", article)
|
||||
}
|
||||
}
|
||||
|
||||
func ReviewRejectedArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
id, err := strconv.ParseInt(r.PostFormValue("id"), 10, 64)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
article, err := db.GetArticle(id)
|
||||
if err != nil {
|
||||
tmpl, err := template.ParseFiles("web/templates/to-be-published.html")
|
||||
template.Must(tmpl, err).ExecuteTemplate(w, "page-content", article)
|
||||
return
|
||||
}
|
||||
|
||||
tmpl, err := template.ParseFiles("web/templates/rework-article.html")
|
||||
tmpl = template.Must(tmpl, err)
|
||||
tmpl.ExecuteTemplate(w, "page-content", article)
|
||||
}
|
||||
}
|
||||
|
||||
func PublishArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
id, err := strconv.ParseInt(r.PostFormValue("id"), 10, 64)
|
||||
@ -160,7 +213,36 @@ func PublishArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
template.Must(tmpl, err).ExecuteTemplate(w, "page-content", msg)
|
||||
}
|
||||
|
||||
db.UpdateAttribute("articles", id, "published", true)
|
||||
db.UpdateAttributes(
|
||||
&model.Attribute{Table: "articles", ID: id, AttName: "published", Value: true},
|
||||
&model.Attribute{Table: "articles", ID: id, AttName: "rejected", Value: false},
|
||||
)
|
||||
|
||||
tmpl, err := template.ParseFiles("web/templates/hub.html")
|
||||
tmpl = template.Must(tmpl, err)
|
||||
tmpl.ExecuteTemplate(w, "page-content", session.Values["role"])
|
||||
}
|
||||
}
|
||||
|
||||
func RejectArticle(db *model.DB, s *control.CookieStore) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
id, err := strconv.ParseInt(r.PostFormValue("id"), 10, 64)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
session, err := s.Get(r, "cookie")
|
||||
if err != nil {
|
||||
tmpl, err := template.ParseFiles("web/templates/login.html")
|
||||
msg := "Session nicht mehr gültig. Bitte erneut anmelden."
|
||||
template.Must(tmpl, err).ExecuteTemplate(w, "page-content", msg)
|
||||
}
|
||||
|
||||
db.UpdateAttributes(
|
||||
&model.Attribute{Table: "articles", ID: id, AttName: "rejected", Value: true},
|
||||
)
|
||||
|
||||
tmpl, err := template.ParseFiles("web/templates/hub.html")
|
||||
tmpl = template.Must(tmpl, err)
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"time"
|
||||
|
||||
"git.streifling.com/jason/rss"
|
||||
"streifling.com/jason/cpolis/cmd/control"
|
||||
"streifling.com/jason/cpolis/cmd/model"
|
||||
)
|
||||
|
||||
@ -19,7 +20,7 @@ func ShowRSS(db *model.DB, title, link, desc string) http.HandlerFunc {
|
||||
Items: make([]*rss.Item, 0),
|
||||
}
|
||||
|
||||
articles, err := db.GetCertainArticles(true)
|
||||
articles, err := db.GetCertainArticles(true, false)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
@ -45,12 +46,33 @@ func ShowRSS(db *model.DB, title, link, desc string) http.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
articleTitle, err := control.ConvertToPlain(article.Title)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
articleDescription, err := control.ConvertToPlain(article.Description)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
articleContent, err := control.ConvertToHTML(article.Content)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
channel.Items = append(channel.Items, &rss.Item{
|
||||
Title: article.Title,
|
||||
Title: articleTitle,
|
||||
Author: user.FirstName + user.LastName,
|
||||
PubDate: article.Created.Format(time.RFC1123Z),
|
||||
Description: article.Desc,
|
||||
Content: &rss.Content{Value: article.Content},
|
||||
Description: articleDescription,
|
||||
Content: &rss.Content{Value: articleContent},
|
||||
Categories: tagNames,
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user