diff --git a/src/main/scala/ScalatraBootstrap.scala b/src/main/scala/ScalatraBootstrap.scala index 21c213d..90fe415 100644 --- a/src/main/scala/ScalatraBootstrap.scala +++ b/src/main/scala/ScalatraBootstrap.scala @@ -1,6 +1,6 @@ import _root_.servlet.{BasicAuthenticationFilter, TransactionFilter} import app._ -import jp.sf.amateras.scalatra.forms.ValidationJavaScriptProvider +//import jp.sf.amateras.scalatra.forms.ValidationJavaScriptProvider import org.scalatra._ import javax.servlet._ import java.util.EnumSet @@ -28,7 +28,6 @@ context.mount(new IssuesController, "/*") context.mount(new PullRequestsController, "/*") context.mount(new RepositorySettingsController, "/*") - context.mount(new ValidationJavaScriptProvider, "/assets/common/js/*") // Create GITBUCKET_HOME directory if it does not exist val dir = new java.io.File(_root_.util.Directory.GitBucketHome) diff --git a/src/main/webapp/assets/common/js/validation.js b/src/main/webapp/assets/common/js/validation.js new file mode 100644 index 0000000..135fb82 --- /dev/null +++ b/src/main/webapp/assets/common/js/validation.js @@ -0,0 +1,40 @@ +$(function(){ + $.each($('form[validate=true]'), function(i, form){ + $(form).submit(validate); + }); + $.each($('input[formaction]'), function(i, input){ + $(input).click(function(){ + var form = $(input).parents('form') + $(form).attr('action', $(input).attr('formaction')) + }); + }); +}); + +function validate(e){ + var form = $(e.target); + + if(form.data('validated') == true){ + return true; + } + + $.post(form.attr('action') + '/validate', $(e.target).serialize(), function(data){ + // clear all error messages + $('.error').text(''); + + if($.isEmptyObject(data)){ + form.data('validated', true); + form.submit(); + form.data('validated', false); + } else { + form.data('validated', false); + displayErrors(data); + } + }, 'json'); + return false; +} + +function displayErrors(data){ + $.each(data, function(key, value){ + $('#error-' + key.split(".").join("_")).text(value); + }); +} \ No newline at end of file