You are here

function clientside_validation_regular in Clientside Validation 6

Same name and namespace in other branches
  1. 7 clientside_validation_form/clientside_validation_form.module \clientside_validation_regular()
1 call to clientside_validation_regular()
clientside_validation_form_after_build_recurse in clientside_validation_form/clientside_validation_form.module

File

clientside_validation_form/clientside_validation_form.module, line 32
Add clientside validation to regular forms

Code

function clientside_validation_regular($form_id, $element, &$js_rules) {
  static $multiples = array();
  if (isset($element['#name'])) {
    $el_name = $element['#name'];
    $el_title = $el_name;
    if (isset($element['#title'])) {
      $el_title = $element['#title'];
    }
    $is_multiple = FALSE;
    if (isset($element['#multiple'])) {
      $is_multiple = $element['#multiple'];
    }
    switch ($element['#type']) {
      case 'textfield':
      case 'password':
      case 'textarea':
      case 'file':
        if ($is_multiple) {

          // Only first field is required
          if (!isset($multiples[$form_id][$el_name])) {
            _clientside_validation_set_required($el_name, $el_title, $element['#required'], $js_rules);
            $multiples[$form_id][$el_name] = 1;
          }
        }
        else {
          _clientside_validation_set_required($el_name, $el_title, $element['#required'], $js_rules);
        }
        if (isset($element['#maxlength']) && $element['#maxlength'] > 0) {
          _clientside_validation_set_minmaxlength($el_name, $el_title, '', $element['#maxlength'], $js_rules);
        }
        break;
      case 'select':
        if ($is_multiple) {
          $el_name .= '[]';
          if (!isset($element['#minlength'])) {
            $element['#minlength'] = 0;
          }
          $max = $is_multiple === TRUE || $is_multiple == 1 ? '' : $is_multiple;
          _clientside_validation_set_minmaxlength($el_name, $el_title, $element['#minlength'], $max, $js_rules);
        }
        _clientside_validation_set_required($el_name, $el_title, $element['#required'], $js_rules);
        break;
      case 'radio':
      case 'radios':
        _clientside_validation_set_required($el_name, $el_title, $element['#required'], $js_rules);
        break;
      case 'checkbox':
      case 'checkboxes':
        $is_multiple = isset($element['#options']) && count($element['#options'] > 1);
        if ($is_multiple) {
          $id = '#' . $element['#id'] . '-wrapper';
          _clientside_validation_set_checkboxgroup_minmax($el_name, $el_title, $id, $js_rules, intval($element['#required']));
        }
        elseif ($element['#required']) {
          _clientside_validation_set_required($el_name, $el_title, $element['#required'], $js_rules);
        }
        break;
      case 'captcha':
        $title = variable_get('clientside_validation_prefix', '') . $element['captcha_widgets']['captcha_response']['#title'] . variable_get('clientside_validation_suffix', '');
        $message = t('Wrong answer for !title', array(
          '!title' => $title,
        ));
        $case_sensitive = strpos($element['#captcha_validate'], 'insensitive') === FALSE;
        _clientside_validation_set_specific_value($element['captcha_widgets']['captcha_response']['#name'], $title, $element['#captcha_info']['solution'], $js_rules, $message, $case_sensitive);
        break;
    }
  }
}