Upgrade scalatra-forms.

This commit is contained in:
takezoe
2013-08-09 18:06:33 +09:00
parent 1b0269c567
commit 629b714dab
12 changed files with 40 additions and 37 deletions

Binary file not shown.

View File

@@ -32,7 +32,7 @@ object MyBuild extends Build {
"org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test", "org.scalatra" %% "scalatra-specs2" % ScalatraVersion % "test",
"org.scalatra" %% "scalatra-json" % ScalatraVersion, "org.scalatra" %% "scalatra-json" % ScalatraVersion,
"org.json4s" %% "json4s-jackson" % "3.2.4", "org.json4s" %% "json4s-jackson" % "3.2.4",
"jp.sf.amateras" %% "scalatra-forms" % "0.0.1", // "jp.sf.amateras" %% "scalatra-forms" % "0.0.1",
"commons-io" % "commons-io" % "2.4", "commons-io" % "commons-io" % "2.4",
"org.pegdown" % "pegdown" % "1.3.0", "org.pegdown" % "pegdown" % "1.3.0",
"org.apache.commons" % "commons-compress" % "1.5", "org.apache.commons" % "commons-compress" % "1.5",

View File

@@ -167,12 +167,12 @@ trait AccountManagementControllerBase extends ControllerBase with FileUploadCont
} }
protected def uniqueUserName: Constraint = new Constraint(){ protected def uniqueUserName: Constraint = new Constraint(){
def validate(name: String, value: String): Option[String] = override def validate(name: String, value: String): Option[String] =
getAccountByUserName(value).map { _ => "User already exists." } getAccountByUserName(value).map { _ => "User already exists." }
} }
protected def uniqueMailAddress(paramName: String = ""): Constraint = new Constraint(){ protected def uniqueMailAddress(paramName: String = ""): Constraint = new Constraint(){
def validate(name: String, value: String): Option[String] = override def validate(name: String, value: String, params: Map[String, String]): Option[String] =
getAccountByMailAddress(value) getAccountByMailAddress(value)
.filter { x => if(paramName.isEmpty) true else Some(x.userName) != params.get(paramName) } .filter { x => if(paramName.isEmpty) true else Some(x.userName) != params.get(paramName) }
.map { _ => "Mail address is already registered." } .map { _ => "Mail address is already registered." }

View File

@@ -180,7 +180,7 @@ trait CreateRepositoryControllerBase extends ControllerBase {
} }
private def existsAccount: Constraint = new Constraint(){ private def existsAccount: Constraint = new Constraint(){
def validate(name: String, value: String): Option[String] = override def validate(name: String, value: String): Option[String] =
if(getAccountByUserName(value).isEmpty) Some("User or group does not exist.") else None if(getAccountByUserName(value).isEmpty) Some("User or group does not exist.") else None
} }
@@ -188,7 +188,7 @@ trait CreateRepositoryControllerBase extends ControllerBase {
* Duplicate check for the repository name. * Duplicate check for the repository name.
*/ */
private def unique: Constraint = new Constraint(){ private def unique: Constraint = new Constraint(){
def validate(name: String, value: String): Option[String] = override def validate(name: String, value: String, params: Map[String, String]): Option[String] =
params.get("owner").flatMap { userName => params.get("owner").flatMap { userName =>
getRepositoryNamesOfUser(userName).find(_ == value).map(_ => "Repository already exists.") getRepositoryNamesOfUser(userName).find(_ == value).map(_ => "Repository already exists.")
} }

View File

@@ -51,7 +51,7 @@ trait LabelsControllerBase extends ControllerBase {
* Constraint for the identifier such as user name, repository name or page name. * Constraint for the identifier such as user name, repository name or page name.
*/ */
private def labelName: Constraint = new Constraint(){ private def labelName: Constraint = new Constraint(){
def validate(name: String, value: String): Option[String] = override def validate(name: String, value: String): Option[String] =
if(!value.matches("^[^,]+$")){ if(!value.matches("^[^,]+$")){
Some(s"${name} contains invalid character.") Some(s"${name} contains invalid character.")
} else if(value.startsWith("_") || value.startsWith("-")){ } else if(value.startsWith("_") || value.startsWith("-")){

View File

@@ -112,7 +112,7 @@ trait RepositorySettingsControllerBase extends ControllerBase with FlashMapSuppo
* Provides Constraint to validate the collaborator name. * Provides Constraint to validate the collaborator name.
*/ */
private def collaborator: Constraint = new Constraint(){ private def collaborator: Constraint = new Constraint(){
def validate(name: String, value: String): Option[String] = { override def validate(name: String, value: String): Option[String] = {
val paths = request.getRequestURI.split("/") val paths = request.getRequestURI.split("/")
getAccountByUserName(value) match { getAccountByUserName(value) match {
case None => Some("User does not exist.") case None => Some("User does not exist.")

View File

@@ -16,16 +16,13 @@ trait SystemSettingsControllerBase extends ControllerBase with FlashMapSupport {
"allowAccountRegistration" -> trim(label("Account registration", boolean())), "allowAccountRegistration" -> trim(label("Account registration", boolean())),
"gravatar" -> trim(label("Gravatar", boolean())), "gravatar" -> trim(label("Gravatar", boolean())),
"notification" -> trim(label("Notification", boolean())), "notification" -> trim(label("Notification", boolean())),
"smtp" -> mapping( "smtp" -> optionalIfNotChecked("notification", mapping(
"host" -> trim(label("SMTP Host", text(new Constraint(){ "host" -> trim(label("SMTP Host", text(required))),
def validate(name: String, value: String): Option[String] =
if(params.get("notification").exists(_ == "on")) required.validate(name, value) else None
}))),
"port" -> trim(label("SMTP Port", optional(number()))), "port" -> trim(label("SMTP Port", optional(number()))),
"user" -> trim(label("SMTP User", optional(text()))), "user" -> trim(label("SMTP User", optional(text()))),
"password" -> trim(label("SMTP Password", optional(text()))), "password" -> trim(label("SMTP Password", optional(text()))),
"ssl" -> trim(label("Enable SSL", optional(boolean()))) "ssl" -> trim(label("Enable SSL", optional(boolean())))
)(Smtp.apply) )(Smtp.apply))
)(SystemSettings.apply) )(SystemSettings.apply)

View File

@@ -136,12 +136,12 @@ trait WikiControllerBase extends ControllerBase {
}) })
private def unique: Constraint = new Constraint(){ private def unique: Constraint = new Constraint(){
def validate(name: String, value: String): Option[String] = override def validate(name: String, value: String, params: Map[String, String]): Option[String] =
getWikiPageList(params("owner"), params("repository")).find(_ == value).map(_ => "Page already exists.") getWikiPageList(params("owner"), params("repository")).find(_ == value).map(_ => "Page already exists.")
} }
private def pagename: Constraint = new Constraint(){ private def pagename: Constraint = new Constraint(){
def validate(name: String, value: String): Option[String] = override def validate(name: String, value: String): Option[String] =
if(value.exists("\\/:*?\"<>|".contains(_))){ if(value.exists("\\/:*?\"<>|".contains(_))){
Some(s"${name} contains invalid character.") Some(s"${name} contains invalid character.")
} else if(value.startsWith("_") || value.startsWith("-")){ } else if(value.startsWith("_") || value.startsWith("-")){

View File

@@ -11,11 +11,13 @@ trait SystemSettingsService {
props.setProperty(Gravatar, settings.gravatar.toString) props.setProperty(Gravatar, settings.gravatar.toString)
props.setProperty(Notification, settings.notification.toString) props.setProperty(Notification, settings.notification.toString)
if(settings.notification) { if(settings.notification) {
props.setProperty(SmtpHost, settings.smtp.host) settings.smtp.foreach { smtp =>
settings.smtp.port.foreach(x => props.setProperty(SmtpPort, x.toString)) props.setProperty(SmtpHost, smtp.host)
settings.smtp.user.foreach(props.setProperty(SmtpUser, _)) smtp.port.foreach(x => props.setProperty(SmtpPort, x.toString))
settings.smtp.password.foreach(props.setProperty(SmtpPassword, _)) smtp.user.foreach(props.setProperty(SmtpUser, _))
settings.smtp.ssl.foreach(x => props.setProperty(SmtpSsl, x.toString)) smtp.password.foreach(props.setProperty(SmtpPassword, _))
smtp.ssl.foreach(x => props.setProperty(SmtpSsl, x.toString))
}
} }
props.store(new java.io.FileOutputStream(GitBucketConf), null) props.store(new java.io.FileOutputStream(GitBucketConf), null)
} }
@@ -30,13 +32,17 @@ trait SystemSettingsService {
getValue(props, AllowAccountRegistration, false), getValue(props, AllowAccountRegistration, false),
getValue(props, Gravatar, true), getValue(props, Gravatar, true),
getValue(props, Notification, false), getValue(props, Notification, false),
Smtp( if(getValue(props, Notification, false)){
Some(Smtp(
getValue(props, SmtpHost, ""), getValue(props, SmtpHost, ""),
getOptionValue(props, SmtpPort, Some(25)), getOptionValue(props, SmtpPort, Some(25)),
getOptionValue(props, SmtpUser, None), getOptionValue(props, SmtpUser, None),
getOptionValue(props, SmtpPassword, None), getOptionValue(props, SmtpPassword, None),
getOptionValue[Boolean](props, SmtpSsl, None) getOptionValue[Boolean](props, SmtpSsl, None)))
)) } else {
None
}
)
} }
} }
@@ -48,7 +54,7 @@ object SystemSettingsService {
allowAccountRegistration: Boolean, allowAccountRegistration: Boolean,
gravatar: Boolean, gravatar: Boolean,
notification: Boolean, notification: Boolean,
smtp: Smtp smtp: Option[Smtp]
) )
case class Smtp( case class Smtp(
host: String, host: String,

View File

@@ -8,7 +8,7 @@ trait Validations {
* Constraint for the identifier such as user name, repository name or page name. * Constraint for the identifier such as user name, repository name or page name.
*/ */
def identifier: Constraint = new Constraint(){ def identifier: Constraint = new Constraint(){
def validate(name: String, value: String): Option[String] = override def validate(name: String, value: String): Option[String] =
if(!value.matches("^[a-zA-Z0-9\\-_]+$")){ if(!value.matches("^[a-zA-Z0-9\\-_]+$")){
Some(s"${name} contains invalid character.") Some(s"${name} contains invalid character.")
} else if(value.startsWith("_") || value.startsWith("-")){ } else if(value.startsWith("_") || value.startsWith("-")){

View File

@@ -39,33 +39,33 @@
<div class="control-group"> <div class="control-group">
<label class="control-label" for="smtpHost">SMTP Host</label> <label class="control-label" for="smtpHost">SMTP Host</label>
<div class="controls"> <div class="controls">
<input type="text" id="smtpHost" name="host" value="@settings.smtp.host"/> <input type="text" id="smtpHost" name="smtp.host" value="@settings.smtp.map(_.host)"/>
<span id="error-host" class="error"></span> <span id="error-smtp_host" class="error"></span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="control-group">
<label class="control-label" for="smtpPort">SMTP Port</label> <label class="control-label" for="smtpPort">SMTP Port</label>
<div class="controls"> <div class="controls">
<input type="text" id="smtpPort" name="port" class="input-mini" value="@settings.smtp.port"/> <input type="text" id="smtpPort" name="smtp.port" class="input-mini" value="@settings.smtp.map(_.port)"/>
<span id="error-port" class="error"></span> <span id="error-smtp_port" class="error"></span>
</div> </div>
</div> </div>
<div class="control-group"> <div class="control-group">
<label class="control-label" for="smtpUser">SMTP User</label> <label class="control-label" for="smtpUser">SMTP User</label>
<div class="controls"> <div class="controls">
<input type="text" id="smtpUser" name="user" value="@settings.smtp.user"/> <input type="text" id="smtpUser" name="smtp.user" value="@settings.smtp.map(_.user)"/>
</div> </div>
</div> </div>
<div class="control-group"> <div class="control-group">
<label class="control-label" for="smtpPassword">SMTP Password</label> <label class="control-label" for="smtpPassword">SMTP Password</label>
<div class="controls"> <div class="controls">
<input type="password" id="smtpPassword" name="password" value="@settings.smtp.password"/> <input type="password" id="smtpPassword" name="smtp.password" value="@settings.smtp.map(_.password)"/>
</div> </div>
</div> </div>
<div class="control-group"> <div class="control-group">
<div class="controls"> <div class="controls">
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" name="ssl"@if(settings.smtp.ssl == Some(true)){ checked}/> Enable SSL <input type="checkbox" name="smtp.ssl"@if(settings.smtp.flatMap(_.ssl).getOrElse(false)){ checked}/> Enable SSL
</label> </label>
</div> </div>
</div> </div>

View File

@@ -34,6 +34,6 @@ function validate(e){
function displayErrors(data){ function displayErrors(data){
$.each(data, function(key, value){ $.each(data, function(key, value){
$('#error-' + key).text(value); $('#error-' + key.split('.').join('_')).text(value);
}); });
} }