diff --git a/src/main/scala/app/WikiController.scala b/src/main/scala/app/WikiController.scala index 7fcd705..2d7a588 100644 --- a/src/main/scala/app/WikiController.scala +++ b/src/main/scala/app/WikiController.scala @@ -108,15 +108,14 @@ }) post("/:owner/:repository/wiki/_edit", editForm)(collaboratorsOnly { (form, repository) => - val loginAccount = context.loginAccount.get - - saveWikiPage(repository.owner, repository.name, form.currentPageName, form.pageName, - form.content, loginAccount, form.message.getOrElse("")).map { commitId => - updateLastActivityDate(repository.owner, repository.name) - recordEditWikiPageActivity(repository.owner, repository.name, loginAccount.userName, form.pageName, commitId) + defining(context.loginAccount.get){ loginAccount => + saveWikiPage(repository.owner, repository.name, form.currentPageName, form.pageName, + form.content, loginAccount, form.message.getOrElse("")).map { commitId => + updateLastActivityDate(repository.owner, repository.name) + recordEditWikiPageActivity(repository.owner, repository.name, loginAccount.userName, form.pageName, commitId) + } + redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(form.pageName)}") } - - redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(form.pageName)}") }) get("/:owner/:repository/wiki/_new")(collaboratorsOnly { @@ -124,25 +123,26 @@ }) post("/:owner/:repository/wiki/_new", newForm)(collaboratorsOnly { (form, repository) => - val loginAccount = context.loginAccount.get - - saveWikiPage(repository.owner, repository.name, form.currentPageName, form.pageName, - form.content, context.loginAccount.get, form.message.getOrElse("")) - - updateLastActivityDate(repository.owner, repository.name) - recordCreateWikiPageActivity(repository.owner, repository.name, loginAccount.userName, form.pageName) + defining(context.loginAccount.get){ loginAccount => + saveWikiPage(repository.owner, repository.name, form.currentPageName, form.pageName, + form.content, loginAccount, form.message.getOrElse("")) - redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(form.pageName)}") + updateLastActivityDate(repository.owner, repository.name) + recordCreateWikiPageActivity(repository.owner, repository.name, loginAccount.userName, form.pageName) + + redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(form.pageName)}") + } }) get("/:owner/:repository/wiki/:page/_delete")(collaboratorsOnly { repository => val pageName = StringUtil.urlDecode(params("page")) - val account = context.loginAccount.get - - deleteWikiPage(repository.owner, repository.name, pageName, account.userName, account.mailAddress, s"Delete ${pageName}") - updateLastActivityDate(repository.owner, repository.name) - redirect(s"/${repository.owner}/${repository.name}/wiki") + defining(context.loginAccount.get){ loginAccount => + deleteWikiPage(repository.owner, repository.name, pageName, loginAccount.userName, loginAccount.mailAddress, s"Destroyed ${pageName}") + updateLastActivityDate(repository.owner, repository.name) + + redirect(s"/${repository.owner}/${repository.name}/wiki") + } }) get("/:owner/:repository/wiki/_pages")(referrersOnly { repository => diff --git a/src/main/scala/service/WikiService.scala b/src/main/scala/service/WikiService.scala index f495aea..9878348 100644 --- a/src/main/scala/service/WikiService.scala +++ b/src/main/scala/service/WikiService.scala @@ -153,6 +153,9 @@ // write as file using(Git.open(workDir)){ git => defining(new File(workDir, newPageName + ".md")){ file => + val created = !file.exists + + // created or updated val added = executeIf(!file.exists || FileUtils.readFileToString(file, "UTF-8") != content){ FileUtils.writeStringToFile(file, content, "UTF-8") git.add.addFilepattern(file.getName).call @@ -165,7 +168,18 @@ // commit and push optionIf(added || deleted){ - defining(git.commit.setCommitter(committer.userName, committer.mailAddress).setMessage(message).call){ commit => + defining(git.commit.setCommitter(committer.userName, committer.mailAddress) + .setMessage(if(message.trim.length == 0){ + if(deleted){ + s"Rename ${currentPageName} to ${newPageName}" + } else if(created){ + s"Created ${newPageName}" + } else { + s"Updated ${newPageName}" + } + } else { + message + }).call){ commit => git.push.call Some(commit.getName) } @@ -193,7 +207,7 @@ git.rm.addFilepattern(pageName + ".md").call // commit and push - git.commit.setAuthor(committer, mailAddress).setMessage(message).call + git.commit.setCommitter(committer, mailAddress).setMessage(message).call git.push.call } }