diff --git a/modules/markup/markdown/goldmark.go b/modules/markup/markdown/goldmark.go index ab731ac0ed..555a171685 100644 --- a/modules/markup/markdown/goldmark.go +++ b/modules/markup/markdown/goldmark.go @@ -84,11 +84,6 @@ func (g *ASTTransformer) Transform(node *ast.Document, reader text.Reader, pc pa ctx.TocShowInSection = markup.TocShowInMain case showTocInSidebar: ctx.TocShowInSection = markup.TocShowInSidebar - // Also populate SidebarTocHeaders for README/file view (not used by Wiki) - ctx.SidebarTocHeaders = make([]markup.Header, len(tocList)) - for i, h := range tocList { - ctx.SidebarTocHeaders[i] = markup.Header{Level: h.Level, Text: h.Text, ID: h.ID} - } } } diff --git a/modules/markup/orgmode/orgmode.go b/modules/markup/orgmode/orgmode.go index f3811fb71f..d84c0fb861 100644 --- a/modules/markup/orgmode/orgmode.go +++ b/modules/markup/orgmode/orgmode.go @@ -77,7 +77,10 @@ func Render(ctx *markup.RenderContext, input io.Reader, output io.Writer) error } // Extract headers from the document outline for sidebar TOC - ctx.SidebarTocHeaders = extractHeadersFromOutline(doc.Outline) + ctx.TocHeadingItems = extractTocHeadingItems(doc.Outline) + if len(ctx.TocHeadingItems) > 0 { + ctx.TocShowInSection = markup.TocShowInSidebar + } res, err := doc.Write(w) if err != nil { @@ -87,15 +90,15 @@ func Render(ctx *markup.RenderContext, input io.Reader, output io.Writer) error return err } -// extractHeadersFromOutline recursively extracts headers from org document outline -func extractHeadersFromOutline(outline org.Outline) []markup.Header { - var headers []markup.Header - collectHeaders(outline.Section, &headers) - return headers +// extractTocHeadingItems recursively extracts headers from org document outline +func extractTocHeadingItems(outline org.Outline) []*markup.TocHeadingItem { + var items []*markup.TocHeadingItem + collectTocHeadingItems(outline.Section, &items) + return items } -// collectHeaders recursively collects headers from sections -func collectHeaders(section *org.Section, headers *[]markup.Header) { +// collectTocHeadingItems recursively collects headers from sections +func collectTocHeadingItems(section *org.Section, items *[]*markup.TocHeadingItem) { if section == nil { return } @@ -105,16 +108,16 @@ func collectHeaders(section *org.Section, headers *[]markup.Header) { h := section.Headline // Convert headline title nodes to plain text titleText := org.String(h.Title...) - *headers = append(*headers, markup.Header{ - Level: h.Lvl, - Text: titleText, - ID: h.ID(), + *items = append(*items, &markup.TocHeadingItem{ + HeadingLevel: h.Lvl, + InnerText: titleText, + AnchorID: h.ID(), }) } // Process child sections for _, child := range section.Children { - collectHeaders(child, headers) + collectTocHeadingItems(child, items) } } diff --git a/modules/markup/render.go b/modules/markup/render.go index 87c9d5fe48..2f6d8f054b 100644 --- a/modules/markup/render.go +++ b/modules/markup/render.go @@ -91,8 +91,6 @@ type RenderContext struct { TocShowInSection TocShowInSectionType TocHeadingItems []*TocHeadingItem - SidebarTocHeaders []Header // Headers for generating sidebar TOC (used by README/file view) - RenderHelper RenderHelper RenderOptions RenderOptions RenderInternal internal.RenderInternal diff --git a/modules/markup/sidebar_toc.go b/modules/markup/sidebar_toc.go deleted file mode 100644 index 7ce9b3535d..0000000000 --- a/modules/markup/sidebar_toc.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2026 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package markup - -import ( - "html" - "html/template" - "net/url" - "strings" - - "code.gitea.io/gitea/modules/translation" -) - -// RenderSidebarTocHTML renders a list of headers into HTML for sidebar TOC display. -// It generates a
element with nested