From 668eb658b2629db03be56ae49a4113aaa4addb1b Mon Sep 17 00:00:00 2001 From: Niko Abeler Date: Sun, 4 Dec 2022 19:15:50 +0100 Subject: [PATCH] links to posts and creating pages --- cmd/owl/web/editor_handler.go | 14 +++++++++++--- embed/editor/editor.html | 7 +++++-- embed/initial/base.html | 5 +++-- renderer.go | 7 +++++++ renderer_test.go | 12 ++++++++++++ user.go | 1 + 6 files changed, 39 insertions(+), 7 deletions(-) diff --git a/cmd/owl/web/editor_handler.go b/cmd/owl/web/editor_handler.go index 2693a83..f493a13 100644 --- a/cmd/owl/web/editor_handler.go +++ b/cmd/owl/web/editor_handler.go @@ -209,11 +209,19 @@ func userEditorPostHandler(repo *owl.Repository) func(http.ResponseWriter, *http // validate form values if post_type == "" { - userEditorGetHandler(repo)(w, r, ps) + html, _ := owl.RenderUserError(user, owl.ErrorMessage{ + Error: "Missing post type", + Message: "Post type is required", + }) + w.Write([]byte(html)) return } - if post_type == "article" && title == "" { - userEditorGetHandler(repo)(w, r, ps) + if (post_type == "article" || post_type == "page") && title == "" { + html, _ := owl.RenderUserError(user, owl.ErrorMessage{ + Error: "Missing Title", + Message: "Articles and Pages must have a title", + }) + w.Write([]byte(html)) return } if post_type == "reply" && reply_url == "" { diff --git a/embed/editor/editor.html b/embed/editor/editor.html index b93f50d..6474373 100644 --- a/embed/editor/editor.html +++ b/embed/editor/editor.html @@ -1,9 +1,12 @@
- Write Article + Write Article/Page

Create New Article

- + diff --git a/embed/initial/base.html b/embed/initial/base.html index 7a06517..b408386 100644 --- a/embed/initial/base.html +++ b/embed/initial/base.html @@ -95,6 +95,8 @@ {{ range $link := .User.Config.HeaderMenu }} {{ if $link.List }}
  • {{ $link.Title }}
  • + {{ else if $link.Post }} +
  • {{ $link.Title }}
  • {{ else }}
  • {{ $link.Title }}
  • {{ end }} @@ -103,11 +105,10 @@ -
    {{ .Content }}
    - \ No newline at end of file + diff --git a/renderer.go b/renderer.go index fd66fa5..16ad26b 100644 --- a/renderer.go +++ b/renderer.go @@ -55,6 +55,11 @@ func listUrl(user User, id string) string { }) } +func postUrl(user User, id string) string { + post, _ := user.GetPost(id) + return post.UrlPath() +} + func renderEmbedTemplate(templateFile string, data interface{}) (string, error) { templateStr, err := embed_files.ReadFile(templateFile) if err != nil { @@ -67,6 +72,7 @@ func renderTemplateStr(templateStr []byte, data interface{}) (string, error) { t, err := template.New("_").Funcs(template.FuncMap{ "noescape": noescape, "listUrl": listUrl, + "postUrl": postUrl, }).Parse(string(templateStr)) if err != nil { return "", err @@ -84,6 +90,7 @@ func renderIntoBaseTemplate(user User, data PageContent) (string, error) { t, err := template.New("index").Funcs(template.FuncMap{ "noescape": noescape, "listUrl": listUrl, + "postUrl": postUrl, }).Parse(baseTemplate) if err != nil { return "", err diff --git a/renderer_test.go b/renderer_test.go index 299a6ef..2ae74c5 100644 --- a/renderer_test.go +++ b/renderer_test.go @@ -436,3 +436,15 @@ func TestRenderHeaderMenuUrlItem(t *testing.T) { assertions.AssertContains(t, result, "Test Entry") assertions.AssertContains(t, result, "https://example.com") } + +func TestRenderHeaderMenuPost(t *testing.T) { + user := getTestUser() + post, _ := user.CreateNewPost("testpost", false) + user.AddHeaderMenuItem(owl.MenuItem{ + Title: "Test Entry", + Post: post.Id(), + }) + result, _ := owl.RenderIndexPage(user) + assertions.AssertContains(t, result, "Test Entry") + assertions.AssertContains(t, result, post.UrlPath()) +} diff --git a/user.go b/user.go index cd46847..394b56e 100644 --- a/user.go +++ b/user.go @@ -41,6 +41,7 @@ type MenuItem struct { Title string `yaml:"title"` List string `yaml:"list"` Url string `yaml:"url"` + Post string `yaml:"post"` } func (l *PostList) ContainsType(t string) bool {