hlship 2005/08/13 08:02:35
Modified: framework/src/java/org/apache/tapestry/form/validator
RegExValidator.js StringValidator.js
NumberValidator.js
framework/src/java/org/apache/tapestry/form Form.js
. status.xml
Log:
TAPESTRY-554: Hook needed on client side to control how validation errors
are presented to the user
Revision Changes Path
1.4 +2 -2
jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/RegExValidator.js
Index: RegExValidator.js
===================================================================
RCS file:
/home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/RegExValidator.js,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- RegExValidator.js 27 Jul 2005 16:28:29 -0000 1.3
+++ RegExValidator.js 13 Aug 2005 15:02:34 -0000 1.4
@@ -16,10 +16,10 @@
{
var value = field.value;
- if (value == "") return; //
+ if (value == "") return;
var regexp = new RegExp(pattern)
if (!regexp.test(value))
- handle_invalid_field(event, field, message)
+ event.invalid_field(field, message)
}
1.4 +2 -2
jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/StringValidator.js
Index: StringValidator.js
===================================================================
RCS file:
/home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/StringValidator.js,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- StringValidator.js 16 Jun 2005 20:57:10 -0000 1.3
+++ StringValidator.js 13 Aug 2005 15:02:34 -0000 1.4
@@ -15,11 +15,11 @@
function validate_min_length(event, field, min, message)
{
if (field.value.length < min)
- handle_invalid_field(event, field, message)
+ event.invalid_field(field, message)
}
function validate_max_length(event, field, max, message)
{
if (field.value.length > max)
- handle_invalid_field(event, field, message)
+ event.invalid_field(field, message)
}
1.3 +2 -2
jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/NumberValidator.js
Index: NumberValidator.js
===================================================================
RCS file:
/home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/NumberValidator.js,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NumberValidator.js 16 Jun 2005 18:27:11 -0000 1.2
+++ NumberValidator.js 13 Aug 2005 15:02:34 -0000 1.3
@@ -17,7 +17,7 @@
var num = eval(field.value)
if (num < min)
- handle_invalid_field(event, field, message)
+ event.invalid_field(field, message)
}
function validate_max_number(event, field, max, message)
@@ -25,5 +25,5 @@
var num = eval(field.value)
if (num > max)
- handle_invalid_field(event, field, message)
+ event.invalid_field(field, message)
}
1.8 +24 -8
jakarta-tapestry/framework/src/java/org/apache/tapestry/form/Form.js
Index: Form.js
===================================================================
RCS file:
/home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/Form.js,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- Form.js 27 Jul 2005 15:37:42 -0000 1.7
+++ Form.js 13 Aug 2005 15:02:34 -0000 1.8
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-function handle_invalid_field(event, field, message)
+function default_invalid_field_handler(event, field, message)
{
// Temporary, while all the event logic is getting munged together
// inside one big handler.
@@ -30,7 +30,7 @@
function focus(field)
{
- field.focus();
+ field.focus();
if (field.select)
field.select();
@@ -44,7 +44,7 @@
function require(event, field, message)
{
if (field.value.length == 0)
- handle_invalid_field(event, field, message)
+ event.invalid_field(field, message);
}
// FormSubmitEvent
@@ -57,13 +57,21 @@
// other listeners from being invoked. A listener may also set the
// cancelListeners flag, which will prevent further listeners from being
// invoked.
+// The invalid_field_handler is provided (by the FormEventManager)
+// to handle any invalid fields.
-function FormSubmitEvent(form, type)
+function FormSubmitEvent(form, type, invalid_field_handler)
{
this.form = form;
this.type = type;
this.abort = false;
this.cancelListeners = false;
+ this.invalid_field_handler = invalid_field_handler;
+}
+
+FormSubmitEvent.prototype.invalid_field = function(field, message)
+{
+ this.invalid_field_handler.call(window, this, field, message);
}
FormSubmitEvent.prototype.toString = function()
@@ -93,6 +101,14 @@
form.onsubmit = function() { return this.events.submit(); };
form.onreset = function() { return this.events.reset(); };
+
+ // Override this property when doing something more ambitious than
+ // the default (which invokes window.alert(), focuses the field, and aborts
+ // the form submit and the rest of the listeners).
+ // The function should take three parameters:
+ // the FormSubmitEvent, the field object, and the message
+
+ this.invalid_field_handler = default_invalid_field_handler;
}
// addListener(type, handler)
@@ -151,7 +167,7 @@
FormEventManager.prototype.cancel = function()
{
- var event = new FormSubmitEvent(this.form, "cancel");
+ var event = new FormSubmitEvent(this.form, "cancel",
this.invalid_field_handler);
this.invokeListeners("cancel", event);
@@ -217,7 +233,7 @@
FormEventManager.prototype.submit = function()
{
- var event = new FormSubmitEvent(this.form, "submit");
+ var event = new FormSubmitEvent(this.form, "submit",
this.invalid_field_handler);
this.invokeListeners("presubmit", event);
this.invokeListeners("submit", event);
@@ -255,7 +271,7 @@
FormEventManager.prototype.refresh = function()
{
- var event = new FormSubmitEvent(this.form, "refresh");
+ var event = new FormSubmitEvent(this.form, "refresh",
this.invalid_field_handler);
this.invokeListeners("refresh", event);
@@ -286,7 +302,7 @@
FormEventManager.prototype.reset = function()
{
- var event = new FormSubmitEvent(this.form, "reset");
+ var event = new FormSubmitEvent(this.form, "reset",
this.invalid_field_handler);
this.invokeListeners("reset", event);
1.206 +1 -0 jakarta-tapestry/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs/jakarta-tapestry/status.xml,v
retrieving revision 1.205
retrieving revision 1.206
diff -u -r1.205 -r1.206
--- status.xml 13 Aug 2005 13:42:22 -0000 1.205
+++ status.xml 13 Aug 2005 15:02:34 -0000 1.206
@@ -52,6 +52,7 @@
<changes>
<release version="4.0-beta-5" date="unreleased">
<action type="fix" dev="MB,HLS" fixes-bug="TAPESTRY-552">Improperly
configured SerializableAdaptor (for DataSqueezer) prevents serialized objects
from being de-serialized</action>
+ <action type="fix" dev="HLS" fixes-bug="TAPESTRY-554"> Hook needed on
client side to control how validation errors are presented to the user</action>
</release>
<release version="4.0-beta-4" date="Aug 10 2005">
<action type="fix" dev="HLS">Add getComponent() method to
IComponent.</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]