mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-06 13:35:50 +01:00
Fixed page name validation.
This commit is contained in:
@@ -8,7 +8,14 @@ class WikiController extends ControllerBase {
|
|||||||
|
|
||||||
case class WikiPageEditForm(pageName: String, content: String, message: Option[String], currentPageName: String)
|
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))),
|
"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()))),
|
||||||
@@ -82,7 +89,7 @@ class WikiController extends ControllerBase {
|
|||||||
JGitUtil.getRepositoryInfo(owner, repository, servletContext))
|
JGitUtil.getRepositoryInfo(owner, repository, servletContext))
|
||||||
}
|
}
|
||||||
|
|
||||||
post("/:owner/:repository/wiki/_save", form){ form =>
|
post("/:owner/:repository/wiki/_edit", editForm){ form =>
|
||||||
val owner = params("owner")
|
val owner = params("owner")
|
||||||
val repository = params("repository")
|
val repository = params("repository")
|
||||||
|
|
||||||
@@ -100,6 +107,16 @@ class WikiController extends ControllerBase {
|
|||||||
JGitUtil.getRepositoryInfo(owner, repository, servletContext))
|
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"){
|
get("/:owner/:repository/wiki/_pages"){
|
||||||
val owner = params("owner")
|
val owner = params("owner")
|
||||||
val repository = params("repository")
|
val repository = params("repository")
|
||||||
@@ -124,8 +141,16 @@ class WikiController extends ControllerBase {
|
|||||||
def validate(name: String, value: String): Option[String] = {
|
def validate(name: String, value: String): Option[String] = {
|
||||||
if(!value.matches("^[a-zA-Z0-9\\-_]+$")){
|
if(!value.matches("^[a-zA-Z0-9\\-_]+$")){
|
||||||
Some("Page name contains invalid character.")
|
Some("Page name contains invalid character.")
|
||||||
// } else if(WikiUtil.getPageList(params("owner"), params("repository")).contains(value)){
|
} else {
|
||||||
// Some("Page already exists.")
|
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 {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,14 +18,35 @@
|
|||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form action="@path/@repository.owner/@repository.name/wiki/_save" method="POST" validate="true">
|
<form action="@path/@repository.owner/@repository.name/wiki/@if(pageName == ""){_new} else {_edit}" method="POST" validate="true">
|
||||||
|
<div class="tabbable">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li class="active"><a href="#tab1" data-toggle="tab">Edit</a></li>
|
||||||
|
<li><a href="#tab2" data-toggle="tab" id="preview">Preview</a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
<div class="tab-pane active" id="tab1">
|
||||||
<span id="error-pageName" class="error-message"></span>
|
<span id="error-pageName" class="error-message"></span>
|
||||||
<input type="text" name="pageName" value="@pageName" style="width: 900px; font-weight: bold;" placeholder="Input a page name."/>
|
<input type="text" name="pageName" value="@pageName" style="width: 900px; font-weight: bold;" placeholder="Input a page name."/>
|
||||||
<span id="error-content" class="error-message"></span>
|
<span id="error-content" class="error-message"></span>
|
||||||
<textarea name="content" style="width: 900px; height: 400px;">@page.map(_.content)</textarea>
|
<textarea name="content" style="width: 900px; height: 400px;">@page.map(_.content)</textarea>
|
||||||
<input type="text" name="message" value="" style="width: 900px;" placeholder="Write a small message here explaining this change. (Optional)"/>
|
<input type="text" name="message" value="" style="width: 900px;" placeholder="Write a small message here explaining this change. (Optional)"/>
|
||||||
<input type="hidden" name="currentPageName" value="@pageName"/>
|
<input type="hidden" name="currentPageName" value="@pageName"/>
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="tab2">
|
||||||
|
<div class="markdown-body" id="preview-area">
|
||||||
|
aaa
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<input type="submit" value="Save" class="btn btn-primary">
|
<input type="submit" value="Save" class="btn btn-primary">
|
||||||
<input type="button" value="Preview" class="btn">
|
|
||||||
</form>
|
</form>
|
||||||
}
|
}
|
||||||
|
<script>
|
||||||
|
$(function(){
|
||||||
|
$('#preview').click(function(){
|
||||||
|
$('#preview-area').html('<h1>xxxxx</h1>');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
Reference in New Issue
Block a user