You are here

function clientside_validation_field_validation_clientside_validation_form_alter in Clientside Validation 7

Implements hook_clientside_validation_form_alter().

File

clientside_validation_field_validation/clientside_validation_field_validation.module, line 10
Add clientside validation support for Field Validation

Code

function clientside_validation_field_validation_clientside_validation_form_alter(&$form, &$form_state, &$js_rules) {
  $field_rules = array();
  clientside_validation_field_validation_find_rules($form, $field_rules);
  if (!empty($field_rules)) {
    $form['#attached']['js'][] = drupal_get_path('module', 'clientside_validation_field_validation') . '/clientside_validation_field_validation.js';
    if (module_exists('js')) {

      // If JS module is enabled ensure the token for our module is available.
      js_get_token('clientside_validation_field_validation', 'validate');
    }
    foreach ($field_rules as $rule) {
      $element =& $form;

      // Field validation 1.x
      if (function_exists('field_validation_get_bundle_rules')) {
        foreach ($rule['field']['#parents'] as $parent) {
          $element =& $element[$parent];
        }
        clientside_validation_field_validation_after_build_recurse($form['#id'], $element, $form_state, $rule['rule'], $js_rules);
      }
      else {
        $path = clientside_validation_array_key_path($rule['rule']['field_name'], $element);
        if ($path !== FALSE) {
          $element =& clientside_validation_array_path($form, $path);
          clientside_validation_field_validation_after_build_recurse($form['#id'], $element, $form_state, $rule['rule'], $js_rules);
          if (isset($element['#type']) && $element['#type'] == 'select') {
            clientside_validation_field_validation_regular($form['#id'], $element, $rule['rule'], $js_rules);
          }
        }
      }
    }
  }
}