use flashes for notice edits

This commit is contained in:
Henry 2021-04-12 10:50:09 +02:00
parent 2c96b93102
commit 60010a7787
4 changed files with 28 additions and 11 deletions

View File

@ -25,8 +25,6 @@ type aliasesHandler struct {
db roomdb.AliasesService
}
const redirectToAliases = "/admin/aliases"
func (h aliasesHandler) revokeConfirm(rw http.ResponseWriter, req *http.Request) (interface{}, error) {
if req.Method != "GET" {
return nil, weberrors.ErrBadRequest{Where: "HTTP Method", Details: fmt.Errorf("expected GET request")}
@ -41,7 +39,7 @@ func (h aliasesHandler) revokeConfirm(rw http.ResponseWriter, req *http.Request)
entry, err := h.db.GetByID(req.Context(), id)
if err != nil {
return nil, weberrors.ErrRedirect{
Path: redirectToAliases,
Path: redirectToMembers,
Reason: err,
}
}
@ -102,5 +100,5 @@ func (h aliasesHandler) revoke(rw http.ResponseWriter, req *http.Request) {
h.flashes.AddMessage(rw, req, "AdminAliasRevoked")
}
http.Redirect(rw, req, redirectToAliases, status)
http.Redirect(rw, req, redirectToMembers, status)
}

View File

@ -123,14 +123,20 @@ func (h noticeHandler) edit(rw http.ResponseWriter, req *http.Request) (interfac
contentBytes := []byte(fixedContent)
preview := blackfriday.Run(contentBytes)
return map[string]interface{}{
pageData := map[string]interface{}{
"SubmitAction": router.AdminNoticeSave,
"Notice": n,
"ContentPreview": template.HTML(preview),
// "Debug": string(preview),
// "DebugHex": hex.Dump(contentBytes),
csrf.TemplateTag: csrf.TemplateField(req),
}, nil
}
pageData["Flashes"], err = h.flashes.GetAll(rw, req)
if err != nil {
return nil, err
}
return pageData, nil
}
func (h noticeHandler) save(rw http.ResponseWriter, req *http.Request) {
@ -150,14 +156,16 @@ func (h noticeHandler) save(rw http.ResponseWriter, req *http.Request) {
n.ID, err = strconv.ParseInt(req.FormValue("id"), 10, 64)
if err != nil {
err = weberrors.ErrBadRequest{Where: "id", Details: err}
h.r.Error(rw, req, http.StatusInternalServerError, err)
h.flashes.AddError(rw, req, err)
http.Redirect(rw, req, redirect, http.StatusSeeOther)
return
}
n.Title = req.FormValue("title")
if n.Title == "" {
err = weberrors.ErrBadRequest{Where: "title", Details: fmt.Errorf("title can't be empty")}
h.r.Error(rw, req, http.StatusInternalServerError, err)
h.flashes.AddError(rw, req, err)
http.Redirect(rw, req, redirect, http.StatusSeeOther)
return
}
@ -165,24 +173,29 @@ func (h noticeHandler) save(rw http.ResponseWriter, req *http.Request) {
n.Language = req.FormValue("language")
if n.Language == "" {
err = weberrors.ErrBadRequest{Where: "language", Details: fmt.Errorf("language can't be empty")}
h.r.Error(rw, req, http.StatusInternalServerError, err)
h.flashes.AddError(rw, req, err)
http.Redirect(rw, req, redirect, http.StatusSeeOther)
return
}
n.Content = req.FormValue("content")
if n.Content == "" {
err = weberrors.ErrBadRequest{Where: "content", Details: fmt.Errorf("content can't be empty")}
h.r.Error(rw, req, http.StatusInternalServerError, err)
h.flashes.AddError(rw, req, err)
http.Redirect(rw, req, redirect, http.StatusSeeOther)
return
}
// https://github.com/russross/blackfriday/issues/575
n.Content = strings.Replace(n.Content, "\r\n", "\n", -1)
err = h.noticeDB.Save(req.Context(), &n)
if err != nil {
h.r.Error(rw, req, http.StatusInternalServerError, err)
h.flashes.AddError(rw, req, err)
http.Redirect(rw, req, redirect, http.StatusSeeOther)
return
}
h.flashes.AddMessage(rw, req, "NoticeUpdated")
http.Redirect(rw, req, redirect, http.StatusSeeOther)
}

View File

@ -1,5 +1,8 @@
{{ define "title" }}{{i18n "NoticeEditTitle"}}{{ end }}
{{ define "content" }}
{{ template "flashes" . }}
<form method="POST" action={{urlTo .SubmitAction}} class="flex flex-col items-stretch">
{{.csrfField}}

View File

@ -1,5 +1,8 @@
{{ define "title" }}{{.Title}}{{ end }}
{{ define "content" }}
{{ template "flashes" . }}
<h1
class="text-3xl tracking-tight font-black text-black mt-2 mb-4"
>{{.Title}}</h1>