diff --git a/src/main/scala/app/WikiController.scala b/src/main/scala/app/WikiController.scala index f1a2ac5..07b821b 100644 --- a/src/main/scala/app/WikiController.scala +++ b/src/main/scala/app/WikiController.scala @@ -19,7 +19,7 @@ "pageName" -> trim(label("Page name" , text(required, maxlength(40), pageName))), "content" -> trim(label("Content" , text(required))), "message" -> trim(label("Message" , optional(text()))), - "currentPageName" -> trim(label("Current page name" , text())) + "currentPageName" -> trim(label("Current page name" , text(required))) )(WikiPageEditForm.apply) get("/:owner/:repository/wiki"){ @@ -117,6 +117,16 @@ 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"){ val owner = params("owner") val repository = params("repository") diff --git a/src/main/scala/util/WikiUtil.scala b/src/main/scala/util/WikiUtil.scala index 40cf255..63177fd 100644 --- a/src/main/scala/util/WikiUtil.scala +++ b/src/main/scala/util/WikiUtil.scala @@ -114,7 +114,7 @@ // delete file val deleted = if(currentPageName != "" && currentPageName != newPageName){ - cloned.rm.addFilepattern(currentPageName + ".md") + cloned.rm.addFilepattern(currentPageName + ".md").call true } else { false @@ -122,31 +122,39 @@ // commit and push if(added || deleted){ + // TODO committer's mail address cloned.commit.setAuthor(committer, committer + "@devnull").setMessage(message).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] = { -// @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 val reader = git.getRepository.newObjectReader @@ -162,18 +170,6 @@ JGitUtil.getContent(git, diff.getOldId.toObjectId, false).map(new String(_, "UTF-8")), JGitUtil.getContent(git, diff.getNewId.toObjectId, false).map(new String(_, "UTF-8"))) }.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 -// } } } \ No newline at end of file diff --git a/src/main/twirl/wiki/wikiedit.scala.html b/src/main/twirl/wiki/wikiedit.scala.html index 0ac5ad5..de5c140 100644 --- a/src/main/twirl/wiki/wikiedit.scala.html +++ b/src/main/twirl/wiki/wikiedit.scala.html @@ -12,8 +12,8 @@
@if(pageName != ""){ View Page - Delete Page - Page History + Delete Page + Page History }
@@ -51,5 +51,9 @@ $('#preview-area').html(data); }); }); + + $('#delete').click(function(){ + return confirm('Are you sure you want to delete this page?'); + }); }); \ No newline at end of file diff --git a/src/main/twirl/wiki/wikihistory.scala.html b/src/main/twirl/wiki/wikihistory.scala.html index fa1cbd3..672eca3 100644 --- a/src/main/twirl/wiki/wikihistory.scala.html +++ b/src/main/twirl/wiki/wikihistory.scala.html @@ -16,7 +16,12 @@
  • - New Page + @if(pageName.isEmpty){ + New Page + } else { + View Page + Edit Page + }