You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2012/10/18 02:17:10 UTC

[1/9] git commit: Use client-side JavaScript to decorate fields and present errors that same way as with client-side validation

Updated Branches:
  refs/heads/5.4-js-rewrite 0cbd81d4f -> 37fe751b8


Use client-side JavaScript to decorate fields and present errors that same way as with client-side validation


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/37fe751b
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/37fe751b
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/37fe751b

Branch: refs/heads/5.4-js-rewrite
Commit: 37fe751b8f79683698fe1899c894fe39ca562336
Parents: 3f442c5
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Oct 17 17:16:46 2012 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Oct 17 17:16:46 2012 -0700

----------------------------------------------------------------------
 .../META-INF/modules/core/fields.coffee            |    8 ++++----
 .../tapestry5/corelib/base/AbstractField.java      |    9 +++++++++
 2 files changed, 13 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/37fe751b/tapestry-core/src/main/coffeescript/META-INF/modules/core/fields.coffee
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/coffeescript/META-INF/modules/core/fields.coffee b/tapestry-core/src/main/coffeescript/META-INF/modules/core/fields.coffee
index 95c62c1..d2b12e2 100644
--- a/tapestry-core/src/main/coffeescript/META-INF/modules/core/fields.coffee
+++ b/tapestry-core/src/main/coffeescript/META-INF/modules/core/fields.coffee
@@ -35,7 +35,6 @@ define ["_", "core/events", "core/spi", "core/builder"],
     #
     # * field - element wrapper for the field
     findHelpBlock = (field) ->
-
       fieldId = field.getAttribute "id"
 
       # When the field has an id (the normal case!), search the body for
@@ -71,7 +70,6 @@ define ["_", "core/events", "core/spi", "core/builder"],
       return block
 
     createHelpBlock = (field) ->
-
       fieldId = ensureFieldId field
 
       # No containing group ... this is a problem, probably an old 5.3 application upgraded to 5.4
@@ -90,6 +88,9 @@ define ["_", "core/events", "core/spi", "core/builder"],
 
       return block
 
+    showValidationError = (id, message) ->
+      spi.wrap(id).trigger events.field.showValidationError, { message }
+
     # Default registrations:
 
     spi.onDocument events.field.clearValidationError, ->
@@ -105,7 +106,6 @@ define ["_", "core/events", "core/spi", "core/builder"],
       return
 
     spi.onDocument events.field.showValidationError, (event, memo) ->
-
       block = exports.findHelpBlock this
 
       unless block
@@ -117,4 +117,4 @@ define ["_", "core/events", "core/spi", "core/builder"],
 
       group and group.addClass "error"
 
-    exports = {findHelpBlock, createHelpBlock}
\ No newline at end of file
+    exports = {findHelpBlock, createHelpBlock, showValidationError}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/37fe751b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
index 19824be..af7a3b0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
@@ -227,11 +227,20 @@ public abstract class AbstractField implements Field
 
     /**
      * Allows the validation decorator to write markup after the field has written all of its markup.
+     * In addition, may invoke the <code>core/fields:showValidationError</code> function to present
+     * the field's error (if it has one) to the user.
      */
     @AfterRender
     final void afterDecorator()
     {
         decorator.afterField(this);
+
+        String error = validationTracker.getError(this);
+
+        if (error != null)
+        {
+            javaScriptSupport.require("core/fields").invoke("showValidationError").with(assignedClientId, error);
+        }
     }
 
     /**