mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-08-31 03:51:04 +02:00
Close #7570 1. Clearly define the wiki path behaviors, see `services/wiki/wiki_path.go` and tests 2. Keep compatibility with old contents 3. Allow to use dashes in titles, eg: "2000-01-02 Meeting record" 4. Add a "Pages" link in the dropdown, otherwise users can't go to the Pages page easily. 5. Add a "View original git file" link in the Pages list, even if some file names are broken, users still have a chance to edit or remove it, without cloning the wiki repo to local. 6. Fix 500 error when the name contains prefix spaces. This PR also introduces the ability to support sub-directories, but it can't be done at the moment due to there are a lot of legacy wiki data, which use "%2F" in file names. ![image](https://user-images.githubusercontent.com/2114189/232239004-3359d7b9-7bf3-4ff3-8446-bfb0e79645dd.png) ![image](https://user-images.githubusercontent.com/2114189/232239020-74b92c72-bf73-4377-a319-1c85609f82b1.png) Co-authored-by: Giteabot <teabot@gitea.io>
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package convert
|
|
|
|
import (
|
|
"time"
|
|
|
|
repo_model "code.gitea.io/gitea/models/repo"
|
|
"code.gitea.io/gitea/modules/git"
|
|
api "code.gitea.io/gitea/modules/structs"
|
|
"code.gitea.io/gitea/modules/util"
|
|
wiki_service "code.gitea.io/gitea/services/wiki"
|
|
)
|
|
|
|
// ToWikiCommit convert a git commit into a WikiCommit
|
|
func ToWikiCommit(commit *git.Commit) *api.WikiCommit {
|
|
return &api.WikiCommit{
|
|
ID: commit.ID.String(),
|
|
Author: &api.CommitUser{
|
|
Identity: api.Identity{
|
|
Name: commit.Author.Name,
|
|
Email: commit.Author.Email,
|
|
},
|
|
Date: commit.Author.When.UTC().Format(time.RFC3339),
|
|
},
|
|
Committer: &api.CommitUser{
|
|
Identity: api.Identity{
|
|
Name: commit.Committer.Name,
|
|
Email: commit.Committer.Email,
|
|
},
|
|
Date: commit.Committer.When.UTC().Format(time.RFC3339),
|
|
},
|
|
Message: commit.CommitMessage,
|
|
}
|
|
}
|
|
|
|
// ToWikiCommitList convert a list of git commits into a WikiCommitList
|
|
func ToWikiCommitList(commits []*git.Commit, total int64) *api.WikiCommitList {
|
|
result := make([]*api.WikiCommit, len(commits))
|
|
for i := range commits {
|
|
result[i] = ToWikiCommit(commits[i])
|
|
}
|
|
return &api.WikiCommitList{
|
|
WikiCommits: result,
|
|
Count: total,
|
|
}
|
|
}
|
|
|
|
// ToWikiPageMetaData converts meta information to a WikiPageMetaData
|
|
func ToWikiPageMetaData(wikiName wiki_service.WebPath, lastCommit *git.Commit, repo *repo_model.Repository) *api.WikiPageMetaData {
|
|
subURL := string(wikiName)
|
|
_, title := wiki_service.WebPathToUserTitle(wikiName)
|
|
return &api.WikiPageMetaData{
|
|
Title: title,
|
|
HTMLURL: util.URLJoin(repo.HTMLURL(), "wiki", subURL),
|
|
SubURL: subURL,
|
|
LastCommit: ToWikiCommit(lastCommit),
|
|
}
|
|
}
|