fix:wikies

This commit is contained in:
wonderful 2021-08-13 13:57:02 +08:00
parent 2d5a3202bd
commit d3f8e67e57
2 changed files with 45 additions and 12 deletions

View File

@ -8,8 +8,11 @@ package wikies
import (
"code.gitea.io/gitea/models"
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/sync"
"code.gitea.io/gitea/modules/util"
"fmt"
"github.com/unknwon/com"
"os"
//"github.com/unknwon/com"
@ -23,6 +26,36 @@ import (
wiki_service "code.gitea.io/gitea/services/wiki"
)
var (
reservedWikiNames = []string{"_pages", "_new", "_edit", "raw"}
wikiWorkingPool = sync.NewExclusivePool()
)
func nameAllowed(name string) error {
if util.IsStringInSlice(name, reservedWikiNames) {
return models.ErrWikiReservedName{
Title: name,
}
}
return nil
}
func InitWiki(repo *models.Repository) error {
if repo.HasWiki() {
return nil
}
if err := git.InitRepository(repo.WikiPath(), true); err != nil {
return fmt.Errorf("InitRepository: %v", err)
} else if err = repo_module.CreateDelegateHooks(repo.WikiPath()); err != nil {
return fmt.Errorf("createDelegateHooks: %v", err)
}
return nil
}
func FindWikiRepoCommit(ctx *context.APIContext) (*git.Repository, *git.Commit, error) {
wikiRepo, err := git.OpenRepository(ctx.Repo.Repository.WikiPath())
if err != nil {
@ -91,15 +124,15 @@ func EditWikiPage(doer *models.User, repo *models.Repository, oldWikiName,newWik
return updateWikiPage(doer, repo, oldWikiName , newWikiName, content, message, false)
}
func updateWikiPage(doer *models.User, repo *models.Repository, oldWikiName, newWikiName, content, message string, isNew bool) (err error) {
//if err = nameAllowed(newWikiName); err != nil {
// return err
//}
//wikiWorkingPool.CheckIn(com.ToStr(repo.ID))
//defer wikiWorkingPool.CheckOut(com.ToStr(repo.ID))
//
//if err = InitWiki(repo); err != nil {
// return fmt.Errorf("InitWiki: %v", err)
//}
if err = nameAllowed(newWikiName); err != nil {
return err
}
wikiWorkingPool.CheckIn(com.ToStr(repo.ID))
defer wikiWorkingPool.CheckOut(com.ToStr(repo.ID))
if err = InitWiki(repo); err != nil {
return fmt.Errorf("InitWiki: %v", err)
}
hasMasterBranch := git.IsBranchExist(repo.WikiPath(), "master")

View File

@ -211,7 +211,7 @@ func CreateWiki(ctx *context.APIContext, form api.WikiOption) {
// "200":
// "$ref": "#/responses/Wiki"
err2 := wikies.CreateWikiPage(ctx.User, ctx.Repo.Repository, form.Name, form.Content, form.CommitMessage)
err2 := wiki_service.AddWikiPage(ctx.User, ctx.Repo.Repository, form.Name, form.Content, form.CommitMessage)
if err2 != nil{
ctx.ServerError("CreateWikiPage", err2)
}
@ -296,7 +296,7 @@ func EditWiki(ctx *context.APIContext, form api.WikiOption) {
oldWikiName := wiki_service.NormalizeWikiName(ctx.Params(":page"))
newWikiName := wiki_service.NormalizeWikiName(form.Name)
err2 := wikies.EditWikiPage(ctx.User, ctx.Repo.Repository, oldWikiName,newWikiName, form.Content, form.CommitMessage)
err2 := wiki_service.EditWikiPage(ctx.User, ctx.Repo.Repository, oldWikiName,newWikiName, form.Content, form.CommitMessage)
if err2 != nil{
ctx.ServerError("EditWikiPage", err2)
}
@ -372,7 +372,7 @@ func DeleteWiki(ctx *context.APIContext) {
// "$ref": "#/responses/notFound"
WikiPageName := ctx.Params(":page")
err := wikies.DeleteWikiPage(ctx.User, ctx.Repo.Repository, WikiPageName)
err := wiki_service.DeleteWikiPage(ctx.User, ctx.Repo.Repository, WikiPageName)
if err != nil{
ctx.Error(http.StatusInternalServerError,"DeleteWikiPage", err)
return