Re: [CForm] javascript validation doesn't work?

2004-08-04 Thread Bruno Dumon
On Tue, 2004-08-03 at 23:08, Phil Snowdon wrote:
 Take this snippet from the samples.  Supposedly if the price is
 less than one, then it will show a validation error.  It
 doesn't.
 
  fd:validation
 !-- This demonstrates form level validation --
 fd:javascript
   var success = true;
   var price = widget.lookupWidget(dieselprice);
   if (price.value lt; 1) {
   price.setValidationError(new
 Packages.org.apache.cocoon.forms.validation.ValidationError(It
 can not be that low!, false));
   success = false;
   }
   
   // Must return true/false
   return success;
 /fd:javascript
   /fd:validation

Where do you place that fd:validation element, thus as child of what
other element?

IIRC in the Cocoon 2.1.5 release widget validators belonging to
container widgets (such as a repeater or the form itself) are only
executed if all children are validated successfully. In current SVN they
are however always executed.

 
 even simpler
 
   fd:validation
 fd:javascript
   return false;
 /fd:javascript
   /fd:validation

Note that you shouldn't do this, a validator returning false should
always set a validation error somewhere.

 
 Which should always generate a validation error doesn't seems to
 either.
 
 Is this a known issue?  There's a comment in the Form.js code
 // FIXME: Remove check for removed syntax later.
 if (this.validator != undefined) {
 throw Forms do not support custom javascript validators
 anymore. Declare your validators in the form model file.;
 }
 
 Does this mean that we can't use javascript validadtors anymore.
  What does it mean by declaring your validators in the form model
 file?

No no, this has nothing to do with the validators in the form model
file.

-- 
Bruno Dumon http://outerthought.org/
Outerthought - Open Source, Java  XML Competence Support Center
[EMAIL PROTECTED]  [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [CForm] javascript validation doesn't work? [WORKING]

2004-08-04 Thread Phil Snowdon
I've got the validation working now.  Thought I'd share the
results and ask a question on style.  Both examples work, but as
a matter of best practice, which would be preferred?  Also which
would be more likely to remain in future cocoon releases?

The validation code has to call existing Java code for specific
validation methods.

Example 1:  Defining the validation in an fd:javascript child
of the field element, in form definition xml.

fd:field id=Number
  fd:datatype base=string/
  fd:labelIf your business or organisation has an ***
number, please show it here/fd:label
  fd:validation
fd:javascript
  var validator = new
Packages.online.common.model.Validation();
  var result = validator.validateNumber(widget.value);
  if (!result) { 
widget.setValidationError(new
Packages.org.apache.cocoon.forms.validation.ValidationError(Some
Error!, false));
  }
  return result;
/fd:javascript
  /fd:validation
/fd:field

Example 2: By wrapping the existing code as a WidgetValidator
and using the flow script to add to the field Element.  
  From form definition xml:

   fd:field id=Number
  fd:datatype base=string/
  fd:labelIf your business or organisation has an ***
number, please show it here/fd:label
/fd:field


  From flowscript (before showForm()):

var validator = new
Packages.widgetValidators.NumberValidator();
form.lookupWidget(Number).addValidator(validator);


 WidgetValidator Class:
public class NumberValidator implements WidgetValidator {
  public boolean validate(Widget w) {
boolean result = false;
String val = w.getValue().toString();
result = Validation.validateNumber(val);
if(!result){
   ValidationError err = new ValidationError(Some
Error!,false);
   ((ValidationErrorAware)w).setValidationError(err);
}
return result;
  }
}

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [CForm] javascript validation doesn't work? [WORKING]

2004-08-04 Thread Mark Lundquist
On Aug 4, 2004, at 3:40 PM, Phil Snowdon wrote:
I've got the validation working now.  Thought I'd share the
results and ask a question on style.  Both examples work, but as
a matter of best practice, which would be preferred?  Also which
would be more likely to remain in future cocoon releases?
I'm not the authority, but I would venture to say that neither one is 
going to away.  The fd:javascript way I think is the older way.  I 
don't care for it, because I like the declarative style of the form 
definition and I don't like embedding imperative code in it.

I think there's a third way... I think you can implement the validation 
code right in the flowscript, if that suits you.  Can't remember the 
details ATM check the v2 samples in the forms block I think.

~ml
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: [CForm] javascript validation doesn't work?

2004-08-03 Thread Phil Snowdon
Ok,  I found some references in the mailing list to this
functionality being removed at 2.1.5 in favour of widget
validators.
(http://marc.theaimsgroup.com/?l=xml-cocoon-usersm=108639582110249w=2)

So how do they work?  Anyone have a sample peice of code?

 Phil Snowdon 4/08/2004 9:08:51 a.m. 
Take this snippet from the samples.  Supposedly if the price is
less than one, then it will show a validation error.  It
doesn't.

 fd:validation
!-- This demonstrates form level validation --
fd:javascript
  var success = true;
  var price = widget.lookupWidget(dieselprice);
  if (price.value lt; 1) {
  price.setValidationError(new
Packages.org.apache.cocoon.forms.validation.ValidationError(It
can not be that low!, false));
  success = false;
  }
  
  // Must return true/false
  return success;
/fd:javascript
  /fd:validation

even simpler

  fd:validation
fd:javascript
  return false;
/fd:javascript
  /fd:validation

Which should always generate a validation error doesn't seems to
either.

Is this a known issue?  There's a comment in the Form.js code
// FIXME: Remove check for removed syntax later.
if (this.validator != undefined) {
throw Forms do not support custom javascript validators
anymore. Declare your validators in the form model file.;
}

Does this mean that we can't use javascript validadtors anymore.
 What does it mean by declaring your validators in the form model
file?

Cheers

Phil

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]