From 884a1ed5ee929edee82eb00606f54ddca62bab34 Mon Sep 17 00:00:00 2001 From: Aly Sewelam Date: Thu, 27 Nov 2025 11:58:27 +0200 Subject: [PATCH] Integrate DefaultWikiFormat to wiki settings --- routers/web/repo/setting/setting.go | 15 ++++++++++++--- routers/web/repo/wiki.go | 23 +++++++++++++++++++++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/routers/web/repo/setting/setting.go b/routers/web/repo/setting/setting.go index c87c12c1ed..d2e7f7e7e0 100644 --- a/routers/web/repo/setting/setting.go +++ b/routers/web/repo/setting/setting.go @@ -524,9 +524,6 @@ func handleSettingsPostAdvanced(ctx *context.Context) { deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeCode) } - if form.EnableWiki && form.DefaultWikiFormat { - } - if form.EnableWiki && form.EnableExternalWiki && !unit_model.TypeExternalWiki.UnitGlobalDisabled() { if !validation.IsValidExternalURL(form.ExternalWikiURL) { ctx.Flash.Error(ctx.Tr("repo.settings.external_wiki_url_error")) @@ -557,6 +554,18 @@ func handleSettingsPostAdvanced(ctx *context.Context) { } } + // Update DefaultWikiFormat if wiki is enabled + if form.EnableWiki && !form.EnableExternalWiki { + defaultWikiFormat := form.DefaultWikiFormat + if defaultWikiFormat == "" { + defaultWikiFormat = setting.Repository.DefaultWikiFormat + } + if repo.DefaultWikiFormat != defaultWikiFormat { + repo.DefaultWikiFormat = defaultWikiFormat + repoChanged = true + } + } + if form.EnableIssues && form.EnableExternalTracker && !unit_model.TypeExternalTracker.UnitGlobalDisabled() { if !validation.IsValidExternalURL(form.ExternalTrackerURL) { ctx.Flash.Error(ctx.Tr("repo.settings.external_tracker_url_error")) diff --git a/routers/web/repo/wiki.go b/routers/web/repo/wiki.go index e47bb569b5..034371790c 100644 --- a/routers/web/repo/wiki.go +++ b/routers/web/repo/wiki.go @@ -215,12 +215,31 @@ func renderViewPage(ctx *context.Context) (*git.Repository, *git.TreeEntry) { ctx.ServerError("ListEntries", err) return nil, nil } + + // Get default wiki format from repository, using global setting as fallback + defaultWikiFormat := ctx.Repo.Repository.DefaultWikiFormat + if defaultWikiFormat == "" { + defaultWikiFormat = setting.Repository.DefaultWikiFormat + } + pages := make([]PageMeta, 0, len(entries)) for _, entry := range entries { if !entry.IsRegular() { continue } - wikiName, err := wiki_service.GitPathToWebPath(entry.Name()) + entryName := entry.Name() + + // Filter by DefaultWikiFormat + hasMdSuffix := strings.HasSuffix(entryName, ".md") + hasOrgSuffix := strings.HasSuffix(entryName, ".org") + if defaultWikiFormat == "markdown" && hasOrgSuffix { + continue + } + if defaultWikiFormat == "org" && hasMdSuffix { + continue + } + + wikiName, err := wiki_service.GitPathToWebPath(entryName) if err != nil { if repo_model.IsErrWikiInvalidFileName(err) { continue @@ -234,7 +253,7 @@ func renderViewPage(ctx *context.Context) (*git.Repository, *git.TreeEntry) { pages = append(pages, PageMeta{ Name: displayName, SubURL: wiki_service.WebPathToURLPath(wikiName), - GitEntryName: entry.Name(), + GitEntryName: entryName, }) } ctx.Data["Pages"] = pages