http://www.mediawiki.org/wiki/Special:Code/MediaWiki/89597

Revision: 89597
Author:   salvatoreingala
Date:     2011-06-06 19:45:29 +0000 (Mon, 06 Jun 2011)
Log Message:
-----------
- Bugfix in client side validation in presence of not-"required" fields
- Using newer PHP syntax, per r89584#c17673

Modified Paths:
--------------
    branches/salvatoreingala/Gadgets/Gadgets_body.php
    branches/salvatoreingala/Gadgets/modules/jquery.formBuilder.js

Modified: branches/salvatoreingala/Gadgets/Gadgets_body.php
===================================================================
--- branches/salvatoreingala/Gadgets/Gadgets_body.php   2011-06-06 19:35:23 UTC 
(rev 89596)
+++ branches/salvatoreingala/Gadgets/Gadgets_body.php   2011-06-06 19:45:29 UTC 
(rev 89597)
@@ -266,7 +266,7 @@
                'number' => array(
                        'default' => array(
                                'isMandatory' => true,
-                               'checker' => array( 'Gadget', 'isFloatOrInt' )
+                               'checker' => 'Gadget::isFloatOrInt'
                        ),
                        'label' => array(
                                'isMandatory' => true,
@@ -282,19 +282,19 @@
                        ),
                        'min' => array(
                                'isMandatory' => false,
-                               'checker' => array( 'Gadget', 'isFloatOrInt' )
+                               'checker' => 'Gadget::isFloatOrInt'
                        ),
                        'max' => array(
                                'isMandatory' => false,
-                               'checker' => array( 'Gadget', 'isFloatOrInt' )
+                               'checker' => 'Gadget::isFloatOrInt'
                        )
                )
        );
 
        //Type-specific checkers for finer validation
        private static $typeCheckers = array(
-               'string' => array( 'Gadget', 'checkStringOption' ),
-               'number' => array( 'Gadget', 'checkNumberOption' )
+               'string' => 'Gadget::checkStringOption',
+               'number' => 'Gadget::checkNumberOption'
        );
        
        //Further checks for 'string' options
@@ -724,10 +724,9 @@
                        if ( !isset( 
self::$prefsDescriptionSpecifications[$type] ) ) {
                                return false;
                        }
-                                               
+                       
                        //TODO: check $option name compliance
                        
-                       
                        //Check if all fields satisfy specification
                        $typeSpec = 
self::$prefsDescriptionSpecifications[$type];
                        $count = 0; //count of present mandatory members

Modified: branches/salvatoreingala/Gadgets/modules/jquery.formBuilder.js
===================================================================
--- branches/salvatoreingala/Gadgets/modules/jquery.formBuilder.js      
2011-06-06 19:35:23 UTC (rev 89596)
+++ branches/salvatoreingala/Gadgets/modules/jquery.formBuilder.js      
2011-06-06 19:45:29 UTC (rev 89597)
@@ -18,6 +18,16 @@
        }
 
 
+       function testOptional( value, element ) {
+               var rules = $( element ).rules();
+               if ( typeof rules.required == 'undefined' || rules.required === 
false ) {
+                       if ( value.length == 0 ) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
        //validator for "required" fields (without trimming whitespaces)
        $.validator.addMethod( "requiredStrict", function( value, element ) {
                return value.length > 0;
@@ -25,17 +35,17 @@
 
        //validator for "minlength" fields (without trimming whitespaces)
        $.validator.addMethod( "minlengthStrict", function( value, element, 
param ) {
-               return value.length >= param;
+               return testOptional( value, element ) || value.length >= param;
        } );
 
        //validator for "maxlength" fields (without trimming whitespaces)
        $.validator.addMethod( "maxlengthStrict", function( value, element, 
param ) {
-               return value.length <= param;
+               return testOptional( value, element ) || value.length <= param;
        } );
 
        //validator for integer fields
        $.validator.addMethod( "integer", function( value, element ) {
-               return this.optional( element ) || /^-?\d+$/.test(value);
+               return testOptional( value, element ) || /^-?\d+$/.test(value);
        }, mw.msg( 'gadgets-formbuilder-integer' ) );
 
 


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to