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"
return html, nil
}