function clientside_validation_webform_add_webform_validation in Clientside Validation 6
Same name and namespace in other branches
- 7 clientside_validation_webform/clientside_validation_webform.module \clientside_validation_webform_add_webform_validation()
Support webform_validation
1 call to clientside_validation_webform_add_webform_validation()
- clientside_validation_webform_clientside_validation_webform_alter in clientside_validation_webform/
clientside_validation_webform.module - @file Adds clientside validation support for the webform module
File
- clientside_validation_webform/
clientside_validation_webform.module, line 109 - Adds clientside validation support for the webform module
Code
function clientside_validation_webform_add_webform_validation($form_id, &$form, &$form_state, &$js_rules) {
if ($webform_validation_rules = _clientside_validation_webform_webform_validation($form_state['values']['details']['nid'], $form)) {
$checkboxrules = array();
foreach ($webform_validation_rules as $webform_validation_rule) {
switch ($webform_validation_rule['validator']) {
case 'min_length':
foreach ($webform_validation_rule['components'] as $component) {
$message = t('!title field has a minimum length of !minl characters.', array(
'!title' => variable_get('clientside_validation_prefix', '') . $component['element_title'] . variable_get('clientside_validation_suffix', ''),
'!minl' => $webform_validation_rule['data'],
));
_clientside_validation_set_minmaxlength($component['element_name'], $component['element_title'], $webform_validation_rule['data'], '', $js_rules, $message);
}
break;
case 'max_length':
foreach ($webform_validation_rule['components'] as $component) {
$message = t('!title field has a maximum length of !maxl characters.', array(
'!title' => variable_get('clientside_validation_prefix', '') . $component['element_title'] . variable_get('clientside_validation_suffix', ''),
'!maxl' => $webform_validation_rule['data'],
));
_clientside_validation_set_minmaxlength($component['element_name'], $component['element_title'], '', $webform_validation_rule['data'], $js_rules, $message);
}
break;
case 'min_words':
foreach ($webform_validation_rule['components'] as $component) {
$message = t('!name field must have at least !min words.', array(
'!name' => variable_get('clientside_validation_prefix', '') . $component['element_title'] . variable_get('clientside_validation_suffix', ''),
'!min' => $webform_validation_rule['data'],
));
_clientside_validation_set_minmax_words($component['element_name'], $component['element_title'], $webform_validation_rule['data'], "", $js_rules);
}
break;
case 'max_words':
foreach ($webform_validation_rule['components'] as $component) {
$message = t('!name field can not have more than !max words.', array(
'!name' => variable_get('clientside_validation_prefix', '') . $component['element_title'] . variable_get('clientside_validation_suffix', ''),
'!max' => $webform_validation_rule['data'],
));
_clientside_validation_set_minmax_words($component['element_name'], $component['element_title'], "", $webform_validation_rule['data'], $js_rules);
}
break;
case 'numeric':
$data = $webform_validation_rule['data'];
$range = array(
'min' => NULL,
'max' => NULL,
);
if (strpos($data, '|') !== FALSE) {
list($min, $max) = explode('|', $data);
if ($min != '' && is_numeric($min)) {
$range['min'] = (int) $min;
}
if ($max != '' && is_numeric($max)) {
$range['max'] = (int) $max;
}
}
else {
if ($data != '' && is_numeric($data)) {
$range['min'] = (int) $data;
}
}
foreach ($webform_validation_rule['components'] as $component) {
if (!empty($range['min']) || !empty($range['max'])) {
_clientside_validation_set_minmax($component['element_name'], $component['element_title'], $range['min'], $range['max'], $js_rules);
}
else {
_clientside_validation_set_number($component['element_name'], $component['element_title'], $js_rules);
}
}
break;
case 'oneofseveral':
case 'oneoftwo':
foreach ($webform_validation_rule['components'] as $component) {
$names[] = $component['element_name'];
$titles[] = variable_get('clientside_validation_prefix', '') . $component['element_title'] . variable_get('clientside_validation_suffix', '');
}
_clientside_validation_set_require_oneof($names, $titles, "", $js_rules);
break;
case 'plain_text':
foreach ($webform_validation_rule['components'] as $component) {
_clientside_validation_set_plain_text($component['element_name'], $component['element_title'], "", $js_rules);
}
break;
case 'blacklist':
$message = isset($webform_validation_rule['error_message']) && !empty($webform_validation_rule['error_message']) ? $webform_validation_rule['error_message'] : '';
$blacklist = explode(',', $webform_validation_rule['data']);
$blacklist = array_map('trim', $blacklist);
foreach ($webform_validation_rule['components'] as $component) {
_clientside_validation_set_blacklist($component['element_name'], $component['element_title'], $blacklist, $js_rules, $message);
}
break;
case 'equal':
$others = $webform_validation_rule['components'];
$firstone = array_shift($others);
$firstone['form_key'] = implode('][', webform_component_parent_keys(node_load($firstone['nid']), $firstone));
foreach ($others as $component) {
_clientside_validation_set_equal($component['element_name'], $component['element_title'], $firstone, $js_rules);
}
break;
case 'unique':
$all = $webform_validation_rule['components'];
while (count($all) > 1) {
$firstone = array_shift($all);
foreach ($all as $component) {
$message = isset($webform_validation_rule['error_message']) && !empty($webform_validation_rule['error_message']) ? $webform_validation_rule['error_message'] : '';
_clientside_validation_set_not_equal($component['element_name'], $component['element_title'], $firstone, $js_rules, $message, TRUE);
}
}
break;
case 'specific_value':
foreach ($webform_validation_rule['components'] as $component) {
$value = explode(',', $webform_validation_rule['data']);
$message = isset($webform_validation_rule['error_message']) && !empty($webform_validation_rule['error_message']) ? $webform_validation_rule['error_message'] : '';
_clientside_validation_set_specific_value($component['element_name'], $component['element_title'], $value, $js_rules, $message);
}
break;
case 'select_min':
foreach ($webform_validation_rule['components'] as $component) {
$parent_keys = webform_component_parent_keys($form['#node'], $component);
$form_element = $form['submitted'];
foreach ($parent_keys as $parent_key) {
$form_element = $form_element[$parent_key];
}
if (in_array($form_element['#type'], array(
'checkbox',
'checkboxes',
))) {
$checkboxrules[$component['element_name']]['title'] = $component['element_title'];
$checkboxrules[$component['element_name']]['id'] = '#' . $form_element['#id'] . '-wrapper';
$checkboxrules[$component['element_name']]['min'] = $webform_validation_rule['data'];
}
else {
_clientside_validation_set_minmaxlength($component['element_name'], $component['element_title'], $webform_validation_rule['data'], '', $js_rules);
}
}
break;
case 'select_max':
foreach ($webform_validation_rule['components'] as $component) {
$parent_keys = webform_component_parent_keys($form['#node'], $component);
$form_element = $form['submitted'];
foreach ($parent_keys as $parent_key) {
$form_element = $form_element[$parent_key];
}
if (in_array($form_element['#type'], array(
'checkbox',
'checkboxes',
))) {
$checkboxrules[$component['element_name']]['title'] = $component['element_title'];
$checkboxrules[$component['element_name']]['id'] = '#' . $form_element['#id'] . '-wrapper';
$checkboxrules[$component['element_name']]['max'] = $webform_validation_rule['data'];
}
else {
_clientside_validation_set_minmaxlength($component['element_name'], $component['element_title'], '', $webform_validation_rule['data'], $js_rules);
}
}
break;
case 'select_exact':
foreach ($webform_validation_rule['components'] as $component) {
_clientside_validation_set_minmaxlength($component['element_name'], $component['element_title'], $webform_validation_rule['data'], $webform_validation_rule['data'], $js_rules);
}
break;
case 'validEAN':
foreach ($webform_validation_rule['components'] as $component) {
$message = isset($webform_validation_rule['error_message']) && !empty($webform_validation_rule['error_message']) ? $webform_validation_rule['error_message'] : 'Not a valid EAN number.';
_clientside_validation_set_ean($component['element_name'], $component['element_title'], $js_rules, $message);
}
break;
case 'regex':
foreach ($webform_validation_rule['components'] as $component) {
$message = $webform_validation_rule['error_message'];
$expression = $webform_validation_rule['data'];
_clientside_validation_set_regex($component['element_name'], $component['element_title'], $js_rules, $expression, $message);
}
break;
case 'must_be_empty':
foreach ($webform_validation_rule['components'] as $component) {
$message = t('!name field must be empty.', array(
'!name' => variable_get('clientside_validation_prefix', '') . $component['element_title'] . variable_get('clientside_validation_suffix', ''),
));
_clientside_validation_set_specific_value($component['element_name'], $component['element_title'], array(
"",
), $js_rules, $message);
}
break;
default:
foreach ($webform_validation_rule['components'] as $component) {
$message = isset($webform_validation_rule['error_message']) && !empty($webform_validation_rule['error_message']) ? $webform_validation_rule['error_message'] : t('Invalid value for !title', array(
'!title' => variable_get('clientside_validation_prefix', '') . $component['element_title'] . variable_get('clientside_validation_suffix', ''),
));
$context = array(
'type' => 'webform',
'rule' => $webform_validation_rule,
'message' => $message,
);
drupal_alter('clientside_validation_rule', $js_rules, $component, $context);
}
break;
}
}
if (!empty($checkboxrules)) {
foreach ($checkboxrules as $name => $args) {
if (!isset($args['min'])) {
$args['min'] = 1;
}
if (!isset($args['max'])) {
$args['max'] = 99;
}
_clientside_validation_set_checkboxgroup_minmax($name, $args['title'], $args['id'], $js_rules, $args['min'], $args['max']);
}
}
}
}