diff --git a/render/templates/views/admin_config.tmpl b/render/templates/views/admin_config.tmpl index a32fbd1..a21bcf6 100644 --- a/render/templates/views/admin_config.tmpl +++ b/render/templates/views/admin_config.tmpl @@ -6,6 +6,10 @@

+
{{.}} + +
+ {{end}} \ No newline at end of file diff --git a/render/templates/views/editor.tmpl b/render/templates/views/editor.tmpl index 32ca98b..5ce63bd 100644 --- a/render/templates/views/editor.tmpl +++ b/render/templates/views/editor.tmpl @@ -6,6 +6,13 @@

+
{{.}} +
+ + +
+
+ {{end}} \ No newline at end of file diff --git a/render/templates/views/entry.tmpl b/render/templates/views/entry.tmpl index 2561eb8..33822d5 100644 --- a/render/templates/views/entry.tmpl +++ b/render/templates/views/entry.tmpl @@ -2,6 +2,14 @@ {{define "main"}} +{{ if not .Entry.PublishedAt }} + + This entry is a draft. It is only visible to logged in authors. + +
+
+{{ end }} +
{{if .Entry.Title}} diff --git a/web/editor_handler.go b/web/editor_handler.go index d41cbc7..bb1002b 100644 --- a/web/editor_handler.go +++ b/web/editor_handler.go @@ -75,7 +75,12 @@ func (h *EditorHandler) HandlePostNew(c *fiber.Ctx) error { // create entry now := time.Now() entry.SetMetaData(entryMeta) - entry.SetPublishedAt(&now) + published := c.FormValue("action") == "Publish" + if published { + entry.SetPublishedAt(&now) + } else { + entry.SetPublishedAt(nil) + } entry.SetAuthorId(c.Locals("author").(string)) err = h.entrySvc.Create(entry) @@ -119,6 +124,11 @@ func (h *EditorHandler) HandlePostEdit(c *fiber.Ctx) error { return err } + published := c.FormValue("action") == "Publish" + if !published { + entry.SetPublishedAt(nil) + } + // update entry entry.SetMetaData(meta) err = h.entrySvc.Update(entry) diff --git a/web/entry_handler.go b/web/entry_handler.go index c6c26f2..2103fe3 100644 --- a/web/entry_handler.go +++ b/web/entry_handler.go @@ -39,14 +39,18 @@ func NewEntryHandler( func (h *EntryHandler) Handle(c *fiber.Ctx) error { c.Set(fiber.HeaderContentType, fiber.MIMETextHTML) + loggedIn := c.Locals("author") != nil + entryId := c.Params("post") entry, err := h.entrySvc.FindById(entryId) if err != nil { return err } - if entry.PublishedAt() == nil || entry.PublishedAt().IsZero() { - return fiber.NewError(fiber.StatusNotFound, "Entry not found") + if !loggedIn { + if entry.PublishedAt() == nil || entry.PublishedAt().IsZero() { + return fiber.NewError(fiber.StatusNotFound, "Entry not found") + } } author, err := h.authorSvc.FindByName(entry.AuthorId()) @@ -61,7 +65,7 @@ func (h *EntryHandler) Handle(c *fiber.Ctx) error { entryData{ Entry: entry, Author: author, - LoggedIn: c.Locals("author") != nil, + LoggedIn: loggedIn, }, ) } diff --git a/web/forms/form.go b/web/forms/form.go index 9e68511..398a081 100644 --- a/web/forms/form.go +++ b/web/forms/form.go @@ -107,12 +107,10 @@ func (s *Form) HtmlForm() (string, error) { return "", err } - html := "
\n" + html := "" for _, field := range fields { html += field.Html() } - html += "\n" - html += "
\n" return html, nil }