You are here

webformvalidationequal.inc in Clientside Validation 7.2

File

clientside_validation_webform_validation/plugins/validator/webformvalidationequal.inc
View source
<?php

$plugin = array(
  'label' => t('Equal'),
  'validator' => array(
    'class' => 'CvWebformValidationEqualValidator',
    'constructor argument' => array(
      'js_rule' => 'equalTo',
      'webform_rule' => 'equal',
    ),
  ),
);
class CvWebformValidationEqualValidator extends CvWebformValidationValidator {
  public function supports(array $element, array &$form_state) {
    if (!parent::supports($element, $form_state)) {
      return FALSE;
    }
    $rule = _clientside_validation_get_webform_validation_rules($element, $form_state['complete form'], $this->webform_rule);
    $first = reset($rule['components']);
    return $first['element_name'] != $this
      ->getName($element);
  }
  public function getJavascriptSettings(array &$element, array &$form_state) {
    $rule = _clientside_validation_get_webform_validation_rules($element, $form_state['complete form'], $this->webform_rule);
    ksort($rule['components']);
    $firstone = reset($rule['components']);
    $form_key = implode('][', webform_component_parent_keys(node_load($firstone['nid']), $firstone));
    $name = $this
      ->getName($element);
    $element['#cv_data'][$this->js_rule] = $firstone;
    return array(
      'rules' => array(
        $name => array(
          $this->js_rule => ':input[name=\'submitted[' . $form_key . ']\']',
        ),
      ),
      'messages' => array(
        $name => array(
          $this->js_rule => $this
            ->getMessage($element),
        ),
      ),
    );
  }
  public function getMessage(array $element) {
    return t('!title does not match @target.', array(
      '!title' => $element['#title'],
      '@target' => $element['#cv_data'][$this->js_rule]['name'],
    ));
  }

}