diff options
Diffstat (limited to 'routers/repo/wiki.go')
-rw-r--r-- | routers/repo/wiki.go | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/routers/repo/wiki.go b/routers/repo/wiki.go index 6a25d9ffea..8426406c31 100644 --- a/routers/repo/wiki.go +++ b/routers/repo/wiki.go @@ -295,26 +295,41 @@ func WikiRaw(ctx *context.Context) { return } } + providedPath := ctx.Params("*") - if strings.HasSuffix(providedPath, ".md") { - providedPath = providedPath[:len(providedPath)-3] - } - wikiPath := models.WikiNameToFilename(providedPath) + var entry *git.TreeEntry if commit != nil { - entry, err = findEntryForFile(commit, wikiPath) + // Try to find a file with that name + entry, err = findEntryForFile(commit, providedPath) + if err != nil { + ctx.ServerError("findFile", err) + return + } + + if entry == nil { + // Try to find a wiki page with that name + if strings.HasSuffix(providedPath, ".md") { + providedPath = providedPath[:len(providedPath)-3] + } + + wikiPath := models.WikiNameToFilename(providedPath) + entry, err = findEntryForFile(commit, wikiPath) + if err != nil { + ctx.ServerError("findFile", err) + return + } + } } - if err != nil { - ctx.ServerError("findFile", err) - return - } else if entry == nil { - ctx.NotFound("findEntryForFile", nil) + + if entry != nil { + if err = ServeBlob(ctx, entry.Blob()); err != nil { + ctx.ServerError("ServeBlob", err) + } return } - if err = ServeBlob(ctx, entry.Blob()); err != nil { - ctx.ServerError("ServeBlob", err) - } + ctx.NotFound("findEntryForFile", nil) } // NewWiki render wiki create page |