mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-02 11:36:05 +01:00
Deletion of wiki page is implemented.
This commit is contained in:
@@ -19,7 +19,7 @@ class WikiController extends ControllerBase {
|
|||||||
"pageName" -> trim(label("Page name" , text(required, maxlength(40), pageName))),
|
"pageName" -> trim(label("Page name" , text(required, maxlength(40), pageName))),
|
||||||
"content" -> trim(label("Content" , text(required))),
|
"content" -> trim(label("Content" , text(required))),
|
||||||
"message" -> trim(label("Message" , optional(text()))),
|
"message" -> trim(label("Message" , optional(text()))),
|
||||||
"currentPageName" -> trim(label("Current page name" , text()))
|
"currentPageName" -> trim(label("Current page name" , text(required)))
|
||||||
)(WikiPageEditForm.apply)
|
)(WikiPageEditForm.apply)
|
||||||
|
|
||||||
get("/:owner/:repository/wiki"){
|
get("/:owner/:repository/wiki"){
|
||||||
@@ -117,6 +117,16 @@ class WikiController extends ControllerBase {
|
|||||||
redirect("%s/%s/wiki/%s".format(owner, repository, form.pageName))
|
redirect("%s/%s/wiki/%s".format(owner, repository, form.pageName))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get("/:owner/:repository/wiki/:page/_delete"){
|
||||||
|
val owner = params("owner")
|
||||||
|
val repository = params("repository")
|
||||||
|
val page = params("page")
|
||||||
|
|
||||||
|
WikiUtil.deletePage(owner, repository, page, context.loginUser, "Delete %s".format(page))
|
||||||
|
|
||||||
|
redirect("%s/%s/wiki".format(owner, repository))
|
||||||
|
}
|
||||||
|
|
||||||
get("/:owner/:repository/wiki/_pages"){
|
get("/:owner/:repository/wiki/_pages"){
|
||||||
val owner = params("owner")
|
val owner = params("owner")
|
||||||
val repository = params("repository")
|
val repository = params("repository")
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ object WikiUtil {
|
|||||||
|
|
||||||
// delete file
|
// delete file
|
||||||
val deleted = if(currentPageName != "" && currentPageName != newPageName){
|
val deleted = if(currentPageName != "" && currentPageName != newPageName){
|
||||||
cloned.rm.addFilepattern(currentPageName + ".md")
|
cloned.rm.addFilepattern(currentPageName + ".md").call
|
||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
false
|
false
|
||||||
@@ -122,31 +122,39 @@ object WikiUtil {
|
|||||||
|
|
||||||
// commit and push
|
// commit and push
|
||||||
if(added || deleted){
|
if(added || deleted){
|
||||||
|
// TODO committer's mail address
|
||||||
cloned.commit.setAuthor(committer, committer + "@devnull").setMessage(message).call
|
cloned.commit.setAuthor(committer, committer + "@devnull").setMessage(message).call
|
||||||
cloned.push.call
|
cloned.push.call
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete the wiki page.
|
||||||
|
*/
|
||||||
|
def deletePage(owner: String, repository: String, pageName: String, committer: String, message: String): Unit = {
|
||||||
|
// TODO create wiki repository in the repository setting changing.
|
||||||
|
createWikiRepository(owner, repository)
|
||||||
|
|
||||||
|
val workDir = getWikiWorkDir(owner, repository)
|
||||||
|
|
||||||
|
// clone
|
||||||
|
if(!workDir.exists){
|
||||||
|
Git.cloneRepository.setURI(getWikiRepositoryDir(owner, repository).toURI.toString).setDirectory(workDir).call
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete file
|
||||||
|
new File(workDir, pageName + ".md").delete
|
||||||
|
|
||||||
|
val cloned = Git.open(workDir)
|
||||||
|
cloned.rm.addFilepattern(pageName + ".md").call
|
||||||
|
|
||||||
|
// commit and push
|
||||||
|
// TODO committer's mail address
|
||||||
|
cloned.commit.setAuthor(committer, committer + "@devnull").setMessage(message).call
|
||||||
|
cloned.push.call
|
||||||
|
}
|
||||||
|
|
||||||
def getDiffs(git: Git, commitId1: String, commitId2: String): List[DiffInfo] = {
|
def getDiffs(git: Git, commitId1: String, commitId2: String): List[DiffInfo] = {
|
||||||
// @scala.annotation.tailrec
|
|
||||||
// def getCommitLog(i: java.util.Iterator[RevCommit], logs: List[RevCommit]): List[RevCommit] =
|
|
||||||
// i.hasNext match {
|
|
||||||
// case true if(logs.size < 2) => getCommitLog(i, logs :+ i.next)
|
|
||||||
// case _ => logs
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// val revWalk = new RevWalk(git.getRepository)
|
|
||||||
// revWalk.markStart(revWalk.parseCommit(git.getRepository.resolve(commitId2)))
|
|
||||||
//
|
|
||||||
// val commits = getCommitLog(revWalk.iterator, Nil)
|
|
||||||
// revWalk.release
|
|
||||||
//
|
|
||||||
// val revCommit = commits(0)
|
|
||||||
//
|
|
||||||
//// if(commits.length >= 2){
|
|
||||||
// // not initial commit
|
|
||||||
// val oldCommit = commits(1)
|
|
||||||
|
|
||||||
// get diff between specified commit and its previous commit
|
// get diff between specified commit and its previous commit
|
||||||
val reader = git.getRepository.newObjectReader
|
val reader = git.getRepository.newObjectReader
|
||||||
|
|
||||||
@@ -162,18 +170,6 @@ object WikiUtil {
|
|||||||
JGitUtil.getContent(git, diff.getOldId.toObjectId, false).map(new String(_, "UTF-8")),
|
JGitUtil.getContent(git, diff.getOldId.toObjectId, false).map(new String(_, "UTF-8")),
|
||||||
JGitUtil.getContent(git, diff.getNewId.toObjectId, false).map(new String(_, "UTF-8")))
|
JGitUtil.getContent(git, diff.getNewId.toObjectId, false).map(new String(_, "UTF-8")))
|
||||||
}.toList
|
}.toList
|
||||||
// } else {
|
|
||||||
// // initial commit
|
|
||||||
// val walk = new TreeWalk(git.getRepository)
|
|
||||||
// walk.addTree(revCommit.getTree)
|
|
||||||
// val buffer = new scala.collection.mutable.ListBuffer[DiffInfo]()
|
|
||||||
// while(walk.next){
|
|
||||||
// buffer.append(DiffInfo(ChangeType.ADD, null, walk.getPathString, None,
|
|
||||||
// JGitUtil.getContent(git, walk.getObjectId(0), false).map(new String(_, "UTF-8"))))
|
|
||||||
// }
|
|
||||||
// walk.release
|
|
||||||
// buffer.toList
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -12,8 +12,8 @@
|
|||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
@if(pageName != ""){
|
@if(pageName != ""){
|
||||||
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName">View Page</a>
|
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName">View Page</a>
|
||||||
<a class="btn" href="#">Delete Page</a>
|
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_delete" id="delete">Delete Page</a>
|
||||||
<a class="btn" href="#">Page History</a>
|
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_history">Page History</a>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
@@ -51,5 +51,9 @@ $(function(){
|
|||||||
$('#preview-area').html(data);
|
$('#preview-area').html(data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#delete').click(function(){
|
||||||
|
return confirm('Are you sure you want to delete this page?');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@@ -16,7 +16,12 @@
|
|||||||
</li>
|
</li>
|
||||||
<li class="pull-right">
|
<li class="pull-right">
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/_new">New Page</a>
|
@if(pageName.isEmpty){
|
||||||
|
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/_new">New Page</a>
|
||||||
|
} else {
|
||||||
|
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName">View Page</a>
|
||||||
|
<a class="btn" href="@path/@repository.owner/@repository.name/wiki/@pageName/_edit">Edit Page</a>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
Reference in New Issue
Block a user