/** * 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; }