Skip to content

Commit df7a9f8

Browse files
committed
fixed bugs on Wiki and resolved go-gitea#667
1 parent 302fa42 commit df7a9f8

File tree

2 files changed

+29
-25
lines changed

2 files changed

+29
-25
lines changed

models/wiki.go

+15-15
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func discardLocalWikiChanges(localPath string) error {
8989
}
9090

9191
// updateWikiPage adds new page to repository wiki.
92-
func (repo *Repository) updateWikiPage(doer *User, oldTitle, title, content, message string, isNew bool) (err error) {
92+
func (repo *Repository) updateWikiPage(doer *User, oldWikiPath, wikiPath, content, message string, isNew bool) (err error) {
9393
wikiWorkingPool.CheckIn(com.ToStr(repo.ID))
9494
defer wikiWorkingPool.CheckOut(com.ToStr(repo.ID))
9595

@@ -104,16 +104,16 @@ func (repo *Repository) updateWikiPage(doer *User, oldTitle, title, content, mes
104104
return fmt.Errorf("UpdateLocalWiki: %v", err)
105105
}
106106

107-
title = ToWikiPageName(title)
108-
filename := path.Join(localPath, title+".md")
107+
title := ToWikiPageName(wikiPath)
108+
filename := path.Join(localPath, wikiPath+".md")
109109

110110
// If not a new file, show perform update not create.
111111
if isNew {
112112
if com.IsExist(filename) {
113113
return ErrWikiAlreadyExist{filename}
114114
}
115115
} else {
116-
file := path.Join(localPath, oldTitle+".md")
116+
file := path.Join(localPath, oldWikiPath+".md")
117117

118118
if err := os.Remove(file); err != nil {
119119
return fmt.Errorf("Fail to remove %s: %v", file, err)
@@ -149,19 +149,19 @@ func (repo *Repository) updateWikiPage(doer *User, oldTitle, title, content, mes
149149
return nil
150150
}
151151

152-
// AddWikiPage adds a new wiki page with a given title.
153-
func (repo *Repository) AddWikiPage(doer *User, title, content, message string) error {
154-
return repo.updateWikiPage(doer, "", title, content, message, true)
152+
// AddWikiPage adds a new wiki page with a given wikiPath.
153+
func (repo *Repository) AddWikiPage(doer *User, wikiPath, content, message string) error {
154+
return repo.updateWikiPage(doer, "", wikiPath, content, message, true)
155155
}
156156

157-
// EditWikiPage updates a wiki page identified by its title,
158-
// optionally also changing title.
159-
func (repo *Repository) EditWikiPage(doer *User, oldTitle, title, content, message string) error {
160-
return repo.updateWikiPage(doer, oldTitle, title, content, message, false)
157+
// EditWikiPage updates a wiki page identified by its wikiPath,
158+
// optionally also changing wikiPath.
159+
func (repo *Repository) EditWikiPage(doer *User, oldWikiPath, wikiPath, content, message string) error {
160+
return repo.updateWikiPage(doer, oldWikiPath, wikiPath, content, message, false)
161161
}
162162

163-
// DeleteWikiPage deletes a wiki page identified by its title.
164-
func (repo *Repository) DeleteWikiPage(doer *User, title string) (err error) {
163+
// DeleteWikiPage deletes a wiki page identified by its wikiPath.
164+
func (repo *Repository) DeleteWikiPage(doer *User, wikiPath string) (err error) {
165165
wikiWorkingPool.CheckIn(com.ToStr(repo.ID))
166166
defer wikiWorkingPool.CheckOut(com.ToStr(repo.ID))
167167

@@ -172,13 +172,13 @@ func (repo *Repository) DeleteWikiPage(doer *User, title string) (err error) {
172172
return fmt.Errorf("UpdateLocalWiki: %v", err)
173173
}
174174

175-
title = ToWikiPageName(title)
176-
filename := path.Join(localPath, title+".md")
175+
filename := path.Join(localPath, wikiPath+".md")
177176

178177
if err := os.Remove(filename); err != nil {
179178
return fmt.Errorf("Fail to remove %s: %v", filename, err)
180179
}
181180

181+
title := ToWikiPageName(wikiPath)
182182
message := "Delete page '" + title + "'"
183183

184184
if err = git.AddChanges(localPath, true); err != nil {

routers/repo/wiki.go

+14-10
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func renderWikiPage(ctx *context.Context, isViewPage bool) (*git.Repository, str
8989
ctx.Data["title"] = pageName
9090
ctx.Data["RequireHighlightJS"] = true
9191

92-
blob, err := commit.GetBlobByPath(pageName + ".md")
92+
blob, err := commit.GetBlobByPath(pageURL + ".md")
9393
if err != nil {
9494
if git.IsErrNotExist(err) {
9595
ctx.Redirect(ctx.Repo.RepoLink + "/wiki/_pages")
@@ -114,7 +114,7 @@ func renderWikiPage(ctx *context.Context, isViewPage bool) (*git.Repository, str
114114
ctx.Data["content"] = string(data)
115115
}
116116

117-
return wikiRepo, pageName
117+
return wikiRepo, pageURL
118118
}
119119

120120
// Wiki render wiki page
@@ -127,13 +127,13 @@ func Wiki(ctx *context.Context) {
127127
return
128128
}
129129

130-
wikiRepo, pageName := renderWikiPage(ctx, true)
130+
wikiRepo, pagePath := renderWikiPage(ctx, true)
131131
if ctx.Written() {
132132
return
133133
}
134134

135135
// Get last change information.
136-
lastCommit, err := wikiRepo.GetCommitByPath(pageName + ".md")
136+
lastCommit, err := wikiRepo.GetCommitByPath(pagePath + ".md")
137137
if err != nil {
138138
ctx.Handle(500, "GetCommitByPath", err)
139139
return
@@ -214,7 +214,9 @@ func NewWikiPost(ctx *context.Context, form auth.NewWikiForm) {
214214
return
215215
}
216216

217-
if err := ctx.Repo.Repository.AddWikiPage(ctx.User, form.Title, form.Content, form.Message); err != nil {
217+
wikiPath := models.ToWikiPageURL(form.Title)
218+
219+
if err := ctx.Repo.Repository.AddWikiPage(ctx.User, wikiPath, form.Content, form.Message); err != nil {
218220
if models.IsErrWikiAlreadyExist(err) {
219221
ctx.Data["Err_Title"] = true
220222
ctx.RenderWithErr(ctx.Tr("repo.wiki.page_already_exists"), tplWikiNew, &form)
@@ -224,7 +226,7 @@ func NewWikiPost(ctx *context.Context, form auth.NewWikiForm) {
224226
return
225227
}
226228

227-
ctx.Redirect(ctx.Repo.RepoLink + "/wiki/" + models.ToWikiPageURL(form.Title))
229+
ctx.Redirect(ctx.Repo.RepoLink + "/wiki/" + wikiPath)
228230
}
229231

230232
// EditWiki render wiki modify page
@@ -257,12 +259,15 @@ func EditWikiPost(ctx *context.Context, form auth.NewWikiForm) {
257259
return
258260
}
259261

260-
if err := ctx.Repo.Repository.EditWikiPage(ctx.User, form.OldTitle, form.Title, form.Content, form.Message); err != nil {
262+
oldWikiPath := ctx.Params(":page")
263+
newWikiPath := models.ToWikiPageURL(form.Title)
264+
265+
if err := ctx.Repo.Repository.EditWikiPage(ctx.User, oldWikiPath, newWikiPath, form.Content, form.Message); err != nil {
261266
ctx.Handle(500, "EditWikiPage", err)
262267
return
263268
}
264269

265-
ctx.Redirect(ctx.Repo.RepoLink + "/wiki/" + models.ToWikiPageURL(form.Title))
270+
ctx.Redirect(ctx.Repo.RepoLink + "/wiki/" + newWikiPath)
266271
}
267272

268273
// DeleteWikiPagePost delete wiki page
@@ -272,8 +277,7 @@ func DeleteWikiPagePost(ctx *context.Context) {
272277
pageURL = "Home"
273278
}
274279

275-
pageName := models.ToWikiPageName(pageURL)
276-
if err := ctx.Repo.Repository.DeleteWikiPage(ctx.User, pageName); err != nil {
280+
if err := ctx.Repo.Repository.DeleteWikiPage(ctx.User, pageURL); err != nil {
277281
ctx.Handle(500, "DeleteWikiPage", err)
278282
return
279283
}

0 commit comments

Comments
 (0)