diff --git a/README.md b/README.md index 8e9f3a8a..78cb49ab 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,13 @@ Also, optional following headers are supported: * (default) page: normal Confluence page - defaults to this if omitted * blogpost: [Blog post](https://confluence.atlassian.com/doc/blog-posts-834222533.html) in `Space`. Cannot have `Parent`(s) +```markdown + +``` + +* (default) full-width: content will fill the full page width +* fixed: content will be rendered in a fixed narrow view + ```markdown ``` diff --git a/main.go b/main.go index ccd80809..7323b506 100644 --- a/main.go +++ b/main.go @@ -390,7 +390,7 @@ func processFile( html = buffer.String() } - err = api.UpdatePage(target, html, flags.MinorEdit, meta.Labels) + err = api.UpdatePage(target, html, flags.MinorEdit, meta.Labels, meta.ContentAppearance) if err != nil { log.Fatal(err) } diff --git a/pkg/confluence/api.go b/pkg/confluence/api.go index ed2fcf37..d777ecfd 100644 --- a/pkg/confluence/api.go +++ b/pkg/confluence/api.go @@ -514,9 +514,7 @@ func (api *API) CreatePage( return request.Response.(*PageInfo), nil } -func (api *API) UpdatePage( - page *PageInfo, newContent string, minorEdit bool, newLabels []string, -) error { +func (api *API) UpdatePage(page *PageInfo, newContent string, minorEdit bool, newLabels []string, appearance string) error { nextPageVersion := page.Version.Number + 1 oldAncestors := []map[string]interface{}{} @@ -560,7 +558,7 @@ func (api *API) UpdatePage( // "properties": map[string]interface{}{ "content-appearance-published": map[string]interface{}{ - "value": "full-width", + "value": appearance, }, }, // content-appearance-draft should not be set as this is impacted by diff --git a/pkg/mark/meta.go b/pkg/mark/meta.go index 416182b5..4f4dec3a 100644 --- a/pkg/mark/meta.go +++ b/pkg/mark/meta.go @@ -11,28 +11,35 @@ import ( ) const ( - HeaderParent = `Parent` - HeaderSpace = `Space` - HeaderType = `Type` - HeaderTitle = `Title` - HeaderLayout = `Layout` - HeaderAttachment = `Attachment` - HeaderLabel = `Label` - HeaderInclude = `Include` - HeaderSidebar = `Sidebar` + HeaderParent = `Parent` + HeaderSpace = `Space` + HeaderType = `Type` + HeaderTitle = `Title` + HeaderLayout = `Layout` + HeaderAttachment = `Attachment` + HeaderLabel = `Label` + HeaderInclude = `Include` + HeaderSidebar = `Sidebar` + ContentAppearance = `Content-Appearance` ) type Meta struct { - Parents []string - Space string - Type string - Title string - Layout string - Sidebar string - Attachments []string - Labels []string + Parents []string + Space string + Type string + Title string + Layout string + Sidebar string + Attachments []string + Labels []string + ContentAppearance string } +const ( + FullWidthContentAppearance = "full-width" + FixedContentAppearance = "fixed" +) + var ( reHeaderPatternV1 = regexp.MustCompile(`\[\]:\s*#\s*\(([^:]+):\s*(.*)\)`) reHeaderPatternV2 = regexp.MustCompile(``) @@ -78,7 +85,8 @@ func ExtractMeta(data []byte) (*Meta, []byte, error) { if meta == nil { meta = &Meta{} - meta.Type = "page" //Default if not specified + meta.Type = "page" // Default if not specified + meta.ContentAppearance = FullWidthContentAppearance // Default to full-width for backwards compatibility } //nolint:staticcheck @@ -119,6 +127,13 @@ func ExtractMeta(data []byte) (*Meta, []byte, error) { // Includes are parsed by a different func continue + case ContentAppearance: + if strings.TrimSpace(value) == FixedContentAppearance { + meta.ContentAppearance = FixedContentAppearance + } else { + meta.ContentAppearance = FullWidthContentAppearance + } + default: log.Errorf( nil,