forked from Gitlink/gitea-1120-rc1
fix:wiki
This commit is contained in:
parent
10e2b49064
commit
fd02b7beb9
|
@ -47,3 +47,10 @@ type CloneLink struct {
|
|||
SSH string `json:"ssh"`
|
||||
HTTPS string `json:"https"`
|
||||
}
|
||||
|
||||
|
||||
type WikiOption1 struct{
|
||||
Name string `json:"name"`
|
||||
Content string `json:"content"`
|
||||
CommitMessage string `json:"commit_message"`
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ func InitWiki(repo *models.Repository) error {
|
|||
func FindWikiRepoCommit(ctx *context.APIContext) (*git.Repository, *git.Commit, error) {
|
||||
wikiRepo, err := git.OpenRepository(ctx.Repo.Repository.WikiPath())
|
||||
if err != nil {
|
||||
// ctx.ServerError("OpenRepository", err)
|
||||
ctx.ServerError("OpenRepository", err)
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
|
@ -273,20 +273,26 @@ func NewWikiPost(ctx *context.APIContext, form api.WikiOption) {
|
|||
}
|
||||
|
||||
wikiName := wiki_service.NormalizeWikiName(form.Name)
|
||||
//wikiName, _ = url.QueryUnescape(wikiName)
|
||||
//fmt.Println("wikiname ================================",wikiName)
|
||||
//fmt.Println()
|
||||
|
||||
if len(form.CommitMessage) == 0 {
|
||||
form.CommitMessage = ctx.Tr("repo.editor.add", form.Name)
|
||||
}
|
||||
|
||||
if err := wiki_service.AddWikiPage(ctx.User, ctx.Repo.Repository, wikiName, form.Content, form.CommitMessage); err != nil {
|
||||
|
||||
if models.IsErrWikiReservedName(err) {
|
||||
ctx.Data["Err_Title"] = true
|
||||
fmt.Println("err1 ================== ",err)
|
||||
//ctx.RenderWithErr(ctx.Tr("repo.wiki.reserved_page", wikiName), tplWikiNew, &form)
|
||||
} else if models.IsErrWikiAlreadyExist(err) {
|
||||
ctx.Data["Err_Title"] = true
|
||||
fmt.Println("err2 ====================", err)
|
||||
//ctx.RenderWithErr(ctx.Tr("repo.wiki.page_already_exists"), tplWikiNew, &form)
|
||||
} else {
|
||||
ctx.ServerError("AddWikiPage", err)
|
||||
fmt.Println("err3 =======",err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -300,6 +306,8 @@ func EditWikiPost(ctx *context.APIContext, form api.WikiOption) {
|
|||
oldWikiName := wiki_service.NormalizeWikiName(ctx.Params(":page"))
|
||||
newWikiName := wiki_service.NormalizeWikiName(form.Name)
|
||||
|
||||
newWikiName, _= url.QueryUnescape(newWikiName)
|
||||
|
||||
if len(form.CommitMessage) == 0 {
|
||||
form.CommitMessage = ctx.Tr("repo.editor.update", form.Name)
|
||||
}
|
||||
|
|
|
@ -701,6 +701,12 @@ func RegisterRoutes(m *macaron.Macaron) {
|
|||
m.Combo("/notifications").
|
||||
Get(reqToken(), notify.ListRepoNotifications).
|
||||
Put(reqToken(), notify.ReadRepoNotifications)
|
||||
m.Group("/wikies2", func() {
|
||||
|
||||
m.Combo("").Get(repo.WikiList).
|
||||
Post(bind(api.WikiOption1{}),repo.CreateWiki)
|
||||
})
|
||||
|
||||
m.Group("/wikies", func() {
|
||||
m.Combo("").Get(repo.WikiList).
|
||||
Post(bind(api.WikiOption{}), repo.CreateWiki)
|
||||
|
|
|
@ -33,9 +33,17 @@ func WikiList(ctx *context.APIContext) {
|
|||
// "200":
|
||||
// "$ref": "#/responses/WikiList"
|
||||
|
||||
repository := ctx.Repo.Repository
|
||||
wikiCloneLink:= repository.CloneWikiLink()
|
||||
if !ctx.Repo.Repository.HasWiki() {
|
||||
ctx.Redirect(ctx.Repo.RepoLink + "/wiki")
|
||||
return
|
||||
}
|
||||
|
||||
ctx.Data["Title"] = ctx.Tr("repo.wiki.pages")
|
||||
ctx.Data["PageIsWiki"] = true
|
||||
ctx.Data["CanWriteWiki"] = ctx.Repo.CanWrite(models.UnitTypeWiki) && !ctx.Repo.Repository.IsArchived
|
||||
|
||||
repository := ctx.Repo.Repository
|
||||
wikiCloneLink := repository.CloneWikiLink()
|
||||
wikiRepo, commit, err := wikies.FindWikiRepoCommit(ctx)
|
||||
if err != nil {
|
||||
if wikiRepo != nil {
|
||||
|
@ -48,10 +56,9 @@ func WikiList(ctx *context.APIContext) {
|
|||
if wikiRepo != nil {
|
||||
wikiRepo.Close()
|
||||
}
|
||||
|
||||
//ctx.JSON(http.StatusOK, []api.WikiesResponse{})
|
||||
return
|
||||
}
|
||||
|
||||
wikiesList := make([]api.WikiesResponse, 0, len(entries))
|
||||
for _, entry := range entries {
|
||||
if !entry.IsRegular() {
|
||||
|
@ -80,7 +87,7 @@ func WikiList(ctx *context.APIContext) {
|
|||
wikiesList = append(wikiesList, api.WikiesResponse{
|
||||
WikiCloneLink: api.CloneLink{
|
||||
HTTPS: wikiCloneLink.HTTPS,
|
||||
SSH: wikiCloneLink.SSH,
|
||||
SSH: wikiCloneLink.SSH,
|
||||
},
|
||||
WikiMeta: api.WikiMeta{
|
||||
Name: wikiName,
|
||||
|
@ -102,7 +109,7 @@ func WikiList(ctx *context.APIContext) {
|
|||
})
|
||||
}
|
||||
//根据创建时间,按最新的时间排序
|
||||
sort.Slice(wikiesList,func(i, j int) bool{
|
||||
sort.Slice(wikiesList, func(i, j int) bool {
|
||||
return wikiesList[i].Commit.Commiter.When < wikiesList[j].Commit.Commiter.When
|
||||
})
|
||||
ctx.JSON(http.StatusOK, wikiesList)
|
||||
|
@ -136,7 +143,7 @@ func GetWiki(ctx *context.APIContext) {
|
|||
|
||||
wikiRepo, commit, _ := wikies.FindWikiRepoCommit(ctx)
|
||||
repository := ctx.Repo.Repository
|
||||
wikiCloneLink:= repository.CloneWikiLink()
|
||||
wikiCloneLink := repository.CloneWikiLink()
|
||||
pageName := wiki_service.NormalizeWikiName(ctx.Params(":page"))
|
||||
if len(pageName) == 0 {
|
||||
pageName = "Home"
|
||||
|
@ -164,7 +171,7 @@ func GetWiki(ctx *context.APIContext) {
|
|||
wiki := api.WikiResponse{
|
||||
WikiCloneLink: api.CloneLink{
|
||||
HTTPS: wikiCloneLink.HTTPS,
|
||||
SSH: wikiCloneLink.SSH,
|
||||
SSH: wikiCloneLink.SSH,
|
||||
},
|
||||
WikiMeta: api.WikiMeta{
|
||||
Name: pageName,
|
||||
|
@ -183,8 +190,8 @@ func GetWiki(ctx *context.APIContext) {
|
|||
Message: c.Message(),
|
||||
},
|
||||
},
|
||||
CommitCounts: commitsCount,
|
||||
MdContent: string(data),
|
||||
CommitCounts: commitsCount,
|
||||
MdContent: string(data),
|
||||
SimpleContent: PageContent,
|
||||
}
|
||||
ctx.JSON(http.StatusOK, wiki)
|
||||
|
@ -216,16 +223,16 @@ func CreateWiki(ctx *context.APIContext, form api.WikiOption) {
|
|||
// "$ref": "#/responses/Wiki"
|
||||
|
||||
err1 := wiki_service.CheckFile(form.Name)
|
||||
if err1 != nil{
|
||||
if err1 != nil {
|
||||
ctx.FileNameError()
|
||||
return
|
||||
}
|
||||
repository := ctx.Repo.Repository
|
||||
wikiCloneLink:= repository.CloneWikiLink()
|
||||
wikies.NewWikiPost(ctx,form)
|
||||
wikiCloneLink := repository.CloneWikiLink()
|
||||
wikies.NewWikiPost(ctx, form)
|
||||
|
||||
wikiRepo, commit, _ := wikies.FindWikiRepoCommit(ctx)
|
||||
data, entry, pageFilename, _:= wikies.WikiContentsByName(ctx, commit, form.Name)
|
||||
data, entry, pageFilename, _ := wikies.WikiContentsByName(ctx, commit, form.Name)
|
||||
metas := ctx.Repo.Repository.ComposeDocumentMetas()
|
||||
PageContent := markdown.RenderWiki(data, ctx.Repo.RepoLink, metas)
|
||||
commitsCount, _ := wikiRepo.FileCommitsCount("master", pageFilename)
|
||||
|
@ -238,7 +245,7 @@ func CreateWiki(ctx *context.APIContext, form api.WikiOption) {
|
|||
wiki := api.WikiResponse{
|
||||
WikiCloneLink: api.CloneLink{
|
||||
HTTPS: wikiCloneLink.HTTPS,
|
||||
SSH: wikiCloneLink.SSH,
|
||||
SSH: wikiCloneLink.SSH,
|
||||
},
|
||||
WikiMeta: api.WikiMeta{
|
||||
Name: form.Name,
|
||||
|
@ -257,8 +264,8 @@ func CreateWiki(ctx *context.APIContext, form api.WikiOption) {
|
|||
Message: c.Message(),
|
||||
},
|
||||
},
|
||||
CommitCounts: commitsCount,
|
||||
MdContent: string(data),
|
||||
CommitCounts: commitsCount,
|
||||
MdContent: string(data),
|
||||
SimpleContent: PageContent,
|
||||
}
|
||||
ctx.JSON(http.StatusOK, wiki)
|
||||
|
@ -296,14 +303,14 @@ func EditWiki(ctx *context.APIContext, form api.WikiOption) {
|
|||
|
||||
newWikiName := wiki_service.NormalizeWikiName(form.Name)
|
||||
err1 := wiki_service.CheckFile(newWikiName)
|
||||
if err1 != nil{
|
||||
if err1 != nil {
|
||||
ctx.FileNameError()
|
||||
return
|
||||
}
|
||||
|
||||
wikies.EditWikiPost(ctx, form)
|
||||
wikiRepo, commit, _ := wikies.FindWikiRepoCommit(ctx)
|
||||
data, entry, pageFilename, _:= wikies.WikiContentsByName(ctx, commit, form.Name) //
|
||||
data, entry, pageFilename, _ := wikies.WikiContentsByName(ctx, commit, form.Name) //
|
||||
metas := ctx.Repo.Repository.ComposeDocumentMetas()
|
||||
PageContent := markdown.RenderWiki(data, ctx.Repo.RepoLink, metas)
|
||||
commitsCount, _ := wikiRepo.FileCommitsCount("master", pageFilename)
|
||||
|
@ -331,8 +338,8 @@ func EditWiki(ctx *context.APIContext, form api.WikiOption) {
|
|||
Message: c.Message(),
|
||||
},
|
||||
},
|
||||
CommitCounts: commitsCount,
|
||||
MdContent: string(data),
|
||||
CommitCounts: commitsCount,
|
||||
MdContent: string(data),
|
||||
SimpleContent: PageContent,
|
||||
}
|
||||
ctx.JSON(http.StatusOK, wiki)
|
||||
|
@ -371,7 +378,7 @@ func DeleteWiki(ctx *context.APIContext) {
|
|||
}
|
||||
|
||||
err2 := wiki_service.DeleteWikiPage(ctx.User, ctx.Repo.Repository, wikiName)
|
||||
if err2 != nil{
|
||||
if err2 != nil {
|
||||
ctx.FileExistError()
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue