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]

Reply via email to