diff --git a/embed/initial/base.html b/embed/initial/base.html index b408386..5301aeb 100644 --- a/embed/initial/base.html +++ b/embed/initial/base.html @@ -108,6 +108,19 @@ {{ .Content }} diff --git a/renderer_test.go b/renderer_test.go index 2ae74c5..0ae0863 100644 --- a/renderer_test.go +++ b/renderer_test.go @@ -448,3 +448,37 @@ func TestRenderHeaderMenuPost(t *testing.T) { assertions.AssertContains(t, result, "Test Entry") assertions.AssertContains(t, result, post.UrlPath()) } + +func TestRenderFooterMenuListItem(t *testing.T) { + user := getTestUser() + user.AddFooterMenuItem(owl.MenuItem{ + Title: "Test Entry", + List: "test", + }) + result, _ := owl.RenderIndexPage(user) + assertions.AssertContains(t, result, "Test Entry") + assertions.AssertContains(t, result, "/lists/test") +} + +func TestRenderFooterMenuUrlItem(t *testing.T) { + user := getTestUser() + user.AddFooterMenuItem(owl.MenuItem{ + Title: "Test Entry", + Url: "https://example.com", + }) + result, _ := owl.RenderIndexPage(user) + assertions.AssertContains(t, result, "Test Entry") + assertions.AssertContains(t, result, "https://example.com") +} + +func TestRenderFooterMenuPost(t *testing.T) { + user := getTestUser() + post, _ := user.CreateNewPost("testpost", false) + user.AddFooterMenuItem(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 394b56e..b6bfad5 100644 --- a/user.go +++ b/user.go @@ -29,6 +29,7 @@ type UserConfig struct { Lists []PostList `yaml:"lists"` PrimaryListInclude []string `yaml:"primary_list_include"` HeaderMenu []MenuItem `yaml:"header_menu"` + FooterMenu []MenuItem `yaml:"footer_menu"` } type PostList struct { @@ -404,6 +405,12 @@ func (user User) AddHeaderMenuItem(link MenuItem) error { return user.SetConfig(config) } +func (user User) AddFooterMenuItem(link MenuItem) error { + config := user.Config() + config.FooterMenu = append(config.FooterMenu, link) + return user.SetConfig(config) +} + func (user User) ResetPassword(password string) error { bytes, err := bcrypt.GenerateFromPassword([]byte(password), 10) if err != nil {