Example #1
0
 /**
  * Registers new JQuery QuickForm rule adaptor. Registered adaptors should
  * implement OA_Admin_UI_Rule_QuickFormToJQueryRuleAdaptor
  *
  * @param     string    $quickFormRuleName   Name of adapted QuickForm rule
  * @param     string    $include    Include path for adaptor
  * @param     string    $className  Adaptor class name
  * @return unknown
  */
 public function registerJQueryRuleAdaptor($quickFormRuleName, $include, $className)
 {
     $registry = OA_Admin_UI_Rule_JQueryRuleAdaptorRegistry::singleton();
     return $registry->registerJQueryRuleAdaptor($quickFormRuleName, $include, $className);
 }
 /**
  * Return a JS JQuery validator custom validation method installation script
  * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
  * based on active client rules.
  * 
  * $rules parameter array contains quickform rule data entries in a form:
  *   array(
  *           'type'        => $type,
  *           'format'      => $format,
  *           'message'     => $message,
  *           'validation'  => $validation,
  *           'reset'       => $reset,
  *           'dependent'   => $dependent
  *       );
  * 
  * Output script is build as follows 
  * If appriopriate JQuery adapter is registered and it returns a custom method code:
  * - Add $.validator.methods
  * - Add rule name taken from rule type
  * - Add equals 
  * - Add function definition from appriopriate JQuery adapter.
  *  
  * "validator.methods.".$rule['type'] = 
  *      $registry->getJQueryRuleAdaptor($rule['type'])->getJQueryValidationMethodCode();
  * 
  * Example output for registered JQuery-enabled 'unique' rule:
  * $.validator.methods.unique = function(value, element, otherValuesArr) {
  *      return $.inArray(value, otherValuesArr) == -1;
  * };
  * 
  * @param map $rules <elementName> => <elementRules> array map 
  */
 public function getJQueryValidationMethodsScript($rules)
 {
     $registry = OA_Admin_UI_Rule_JQueryRuleAdaptorRegistry::singleton();
     foreach ($rules as $elementName => $rules) {
         foreach ($rules as $rule) {
             $ruleAdaptor = $registry->getJQueryRuleAdaptor($rule['type']);
             if (!empty($ruleAdaptor)) {
                 $ruleMethod = $ruleAdaptor->getJQueryValidationMethodCode($rule);
                 if (!empty($ruleMethod)) {
                     $methodsText .= "\$.validator.methods." . $rule['type'] . " = ";
                     $methodsText .= $ruleMethod . ";\n";
                 }
             }
         }
         $methodsText .= "\n";
     }
     return $methodsText;
 }