diff --git a/src/main/scala/app/WikiController.scala b/src/main/scala/app/WikiController.scala index 9c6162d..3ee066a 100644 --- a/src/main/scala/app/WikiController.scala +++ b/src/main/scala/app/WikiController.scala @@ -8,7 +8,14 @@ case class WikiPageEditForm(pageName: String, content: String, message: Option[String], currentPageName: String) - val form = mapping( + val newForm = mapping( + "pageName" -> trim(label("Page name" , text(required, maxlength(40), pageName, unique))), + "content" -> trim(label("Content" , text(required))), + "message" -> trim(label("Message" , optional(text()))), + "currentPageName" -> trim(label("Current page name" , text())) + )(WikiPageEditForm.apply) + + val editForm = mapping( "pageName" -> trim(label("Page name" , text(required, maxlength(40), pageName))), "content" -> trim(label("Content" , text(required))), "message" -> trim(label("Message" , optional(text()))), @@ -82,7 +89,7 @@ JGitUtil.getRepositoryInfo(owner, repository, servletContext)) } - post("/:owner/:repository/wiki/_save", form){ form => + post("/:owner/:repository/wiki/_edit", editForm){ form => val owner = params("owner") val repository = params("repository") @@ -100,6 +107,16 @@ JGitUtil.getRepositoryInfo(owner, repository, servletContext)) } + post("/:owner/:repository/wiki/_new", newForm){ form => + val owner = params("owner") + val repository = params("repository") + + WikiUtil.savePage(owner, repository, form.currentPageName, form.pageName, + form.content, context.loginUser, form.message.getOrElse("")) + + redirect("%s/%s/wiki/%s".format(owner, repository, form.pageName)) + } + get("/:owner/:repository/wiki/_pages"){ val owner = params("owner") val repository = params("repository") @@ -124,8 +141,16 @@ def validate(name: String, value: String): Option[String] = { if(!value.matches("^[a-zA-Z0-9\\-_]+$")){ Some("Page name contains invalid character.") -// } else if(WikiUtil.getPageList(params("owner"), params("repository")).contains(value)){ -// Some("Page already exists.") + } else { + None + } + } + } + + def unique: Constraint = new Constraint(){ + def validate(name: String, value: String): Option[String] = { + if(WikiUtil.getPageList(params("owner"), params("repository")).contains(value)){ + Some("Page already exists.") } else { None } diff --git a/src/main/twirl/wiki/wikiedit.scala.html b/src/main/twirl/wiki/wikiedit.scala.html index 7f97320..da6fc0b 100644 --- a/src/main/twirl/wiki/wikiedit.scala.html +++ b/src/main/twirl/wiki/wikiedit.scala.html @@ -18,14 +18,35 @@ -
-} \ No newline at end of file +} + \ No newline at end of file