Author: achiumenti Date: Fri Dec 19 12:54:59 2008 New Revision: 162
Log: validation bugfix
Modified: trunk/main/claw-html/src/components.lisp trunk/main/claw-html/src/validators.lisp
Modified: trunk/main/claw-html/src/components.lisp ============================================================================== --- trunk/main/claw-html/src/components.lisp (original) +++ trunk/main/claw-html/src/components.lisp Fri Dec 19 12:54:59 2008 @@ -302,7 +302,7 @@ (value (translated-value cinput))) (unless (or (null value) (null visit-object) (component-validation-errors cinput)) (when validator - (funcall validator cinput)) + (funcall validator value)) (unless (component-validation-errors cinput) (if (and (null writer) accessor) (funcall (fdefinition `(setf ,accessor)) (if (and (stringp value) (string= value "") (base-cinput-empty-to-null-p cinput))
Modified: trunk/main/claw-html/src/validators.lisp ============================================================================== --- trunk/main/claw-html/src/validators.lisp (original) +++ trunk/main/claw-html/src/validators.lisp Fri Dec 19 12:54:59 2008 @@ -70,15 +70,17 @@ (add-validation-compliance client-id) (add-validation-error client-id message))))
-(defun validate-required (component value &key message component-label) +(defun validate-required (value &key (component (page-current-component *claw-current-page*)) message component-label) "Checks if the required input field VALUE is present. If not, a localizable message "Field ~a may not be empty." is sent with key "VALIDATE-REQUIRED". The argument for the message will be the :label attribute of the COMPONENT." + (unless value + (setf value "")) (when (stringp value) (validate (and value (string-not-equal value "")) :component component :message (or message (format nil "Field ~a may not be empty." (or component-label (label component)))))))
-(defun validate-size (component value &key min-size max-size message-low message-hi component-label) +(defun validate-size (value &key (component (page-current-component *claw-current-page*)) min-size max-size message-low message-hi component-label) "Checks if the input field VALUE legth is less then or greater then rispectively of the form keywords :MIN-SIZE and :MAX-SIZE. If less then :MIN-SIZE, a localizable message "Size of ~a may not be less then ~a chars." is sent with key "VALIDATE-SIZE-MIN". The argument for the message will be the :label attribute of the COMPONENT and the :MIN-ZIZE value. @@ -102,7 +104,7 @@ (or component-label (label component)) max-size))))))))
-(defun validate-range (component value &key min max message-low message-hi component-label) +(defun validate-range (value &key (component (page-current-component *claw-current-page*)) min max message-low message-hi component-label) "Checks if the numeric input field VALUE is less then or greater then rispectively of the form keywords :MIN and :MAX. If less then :MIN, a localizable message "Field ~a is not less then or equal to ~d." is sent with key "VALIDATE-RANGE-MIN". The argument for the message will be the :label attribute of the COMPONENT and the :MIN value. @@ -126,7 +128,7 @@ (coerce max 'float) max))))))))
-(defun validate-number (component value &key min max message-nan message-low message-hi component-label) +(defun validate-number (value &key (component (page-current-component *claw-current-page*)) min max message-nan message-low message-hi component-label) "Checks if the input field VALUE is a valid number and then passes the validation to VALIDATION-RANGE. If not a number, a localizable message "Field ~a is not a valid number." is sent with key "VALIDATE-NUMBER". The argument for the message will be the :label attribute of the COMPONENT." @@ -136,9 +138,9 @@ :component component :message (or message-nan (format nil "Field ~a is not a valid number." (or component-label (label component))))) - (validate-range component value :min min :max max :message-low message-low :message-hi message-hi :component-label component-label))))) + (validate-range value :component component :min min :max max :message-low message-low :message-hi message-hi :component-label component-label)))))
-(defun validate-integer (component value &key min max message-nan message-low message-hi component-label) +(defun validate-integer (value &key (component (page-current-component *claw-current-page*)) min max message-nan message-low message-hi component-label) "Checks if the input field VALUE is a valid number and then passes the validation to VALIDATION-RANGE. If not a number, a localizable message "Field ~a is not a valid integer." is sent with key "VALIDATE-INTEGER". The argument for the message will be the :label attribute of the COMPONENT." @@ -147,10 +149,10 @@ (and (validate test :component component :message (or message-nan (format nil "Field ~a is not a valid integer." (or component-label (label component))))) - (validate-range component value :min min :max max :message-low message-low :message-hi message-hi :component-label component-label))))) + (validate-range value :component component :min min :max max :message-low message-low :message-hi message-hi :component-label component-label)))))
-(defun validate-date-range (component value &key min max (use-date-p t) use-time-p message-low message-hi component-label) +(defun validate-date-range (value &key (component (page-current-component *claw-current-page*)) min max (use-date-p t) use-time-p message-low message-hi component-label) "Checks if the input field VALUE is a date between min and max. If :USE-DATE-P is not nil and :USE-TIME-P is nil, validation is made without considering the time part of local-time. If :USE-DATE-P nil and :USE-TIME-P is not nil, validation is made without considering the date part of local-time. @@ -159,7 +161,6 @@ The argument for the message will be the :label attribute of the COMPONENT and the value passed to :MIN parsed with the :LOCAL-TIME-FORMAT keyword. If value is greater then the date passed to :MAX, a localizable message "Field ~a is greater then ~a." is sent with key "VALIDATE-DATE-RANGE-MAX". The argument for the message will be the :label attribute of the COMPONENT and the value passed to :MAX parsed with the :LOCAL-TIME-FORMAT keyword." -; (unless (component-validation-errors component)) (let ((local-time-format '(:date "-" :month "-" :year)) (new-value (make-instance 'local-time :nsec (nsec-of value)