diff options
Diffstat (limited to 'internal/web/handlers_pages.go')
| -rw-r--r-- | internal/web/handlers_pages.go | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/internal/web/handlers_pages.go b/internal/web/handlers_pages.go index db46097..f2f82d1 100644 --- a/internal/web/handlers_pages.go +++ b/internal/web/handlers_pages.go @@ -59,14 +59,17 @@ func (s *Server) handlePageSave(w http.ResponseWriter, r *http.Request) { } p.Title = strings.TrimSpace(r.FormValue("title")) p.Slug = strings.TrimSpace(r.FormValue("slug")) - p.IntroMD = r.FormValue("intro") + p.IntroMD = strings.ReplaceAll(r.FormValue("intro"), "\r\n", "\n") p.ShowInNav = r.FormValue("show_in_nav") == "on" autoSlug := p.Slug == "" if autoSlug { p.Slug = slug.Make(p.Title) } + img, err := s.readUpload(r, "inline_image") var msg string switch { + case err != nil: + msg = "Image not added: " + err.Error() case p.Title == "" || len(p.Title) > 120: msg = "Title is required (max 120 characters)." case !slug.Valid(p.Slug) || reservedPageSlugs[p.Slug]: @@ -76,8 +79,8 @@ func (s *Server) handlePageSave(w http.ResponseWriter, r *http.Request) { s.renderStatus(w, r, http.StatusBadRequest, "dashboard/page_form.html", map[string]any{"page": p, "error": msg}) return } + p.IntroMD = appendImageMD(p.IntroMD, img) p.IntroHTML = markdown.Render(p.IntroMD) - var err error base := p.Slug for n := 1; ; n++ { // generated slugs get -2, -3… on collision; typed ones report the conflict p.Slug = slug.WithSuffix(base, n) |
