View source
<?php
function qtip_webform_form_alter(&$form, &$form_state, $form_id) {
if (isset($form['#node']) && isset($form['#node']->nid) && $form['#node']->type == 'webform' && ($settings = variable_get('qtip_webform_node_' . $form['#node']->nid, ''))) {
if (isset($settings['components'])) {
foreach ($settings['components'] as $key => $value) {
if (isset($form['submitted'])) {
$new_path =& $form['submitted'];
if ($key_internal = qtip_webform_key_get_parents($key, $form['submitted'])) {
foreach ($key_internal as $item) {
$new_path =& $new_path[$item];
}
}
switch ($value['text']) {
case 'description':
$new_path[$key]['#attributes']['class'][] = 'qtip-webform-description';
break;
case 'custom':
$new_path[$key]['#attributes']['class'][] = 'qtip-webform-custom-text';
$new_path[$key]['#attributes']['data-qtip-webform-text'] = $value['custom_text'];
break;
default:
break;
}
}
}
}
drupal_add_js(array(
'qtip_webform' => $settings,
), 'setting');
drupal_add_js(drupal_get_path('module', 'qtip_webform') . '/js/qtip_webform.js', 'file');
}
}
function qtip_webform_form_webform_component_edit_form_alter(&$form, &$form_state) {
$exclude_components = array(
'hidden',
'fieldset',
'pagebreak',
'grid',
'markup',
);
if (in_array($form['type']['#value'], $exclude_components)) {
return;
}
$settings = variable_get('qtip_webform_node_' . $form['nid']['#value'], '');
if (isset($settings['components'][$form['form_key']['#default_value']]) && !empty($settings['components'][$form['form_key']['#default_value']])) {
$component = $settings['components'][$form['form_key']['#default_value']];
}
$form['display']['qtip_webform'] = array(
'#type' => 'fieldset',
'#title' => t('qTip settings'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#weight' => 100,
'#tree' => 1,
);
if (isset($settings['configure']['instance']) && !empty($settings['configure']['instance'])) {
$form['display']['qtip_webform']['text'] = array(
'#type' => 'radios',
'#title' => t('How to display qTip'),
'#description' => t('Select how you would like qTip to display for this field.'),
'#options' => array(
'' => t('Do not display a qTip'),
'description' => t('Use text from description field'),
'custom' => t('Custom text'),
),
'#default_value' => isset($component['text']) ? $component['text'] : '',
);
$form['display']['qtip_webform']['custom_text'] = array(
'#type' => 'textarea',
'#title' => t('Custom text'),
'#description' => t('Enter the text that will show in the tooltip. Use this option if you would like to have the description field display normally, but still have text display in a qTip.'),
'#default_value' => isset($component['custom_text']) ? $component['custom_text'] : '',
'#states' => array(
'visible' => array(
':input[name="display[qtip_webform][text]"]' => array(
'value' => 'custom',
),
),
),
);
$form['#submit'][] = 'qtip_webform_component_edit_form_submit';
}
else {
$form['display']['qtip_webform']['info'] = array(
'#markup' => t('You must !link to use before you can configure component settings.', array(
'!link' => l('configure the qTip instance', 'node/' . arg(1) . '/webform/configure'),
)),
);
}
}
function qtip_webform_form_webform_configure_form_alter(&$form, &$form_state) {
($settings = variable_get('qtip_webform_node_' . $form['nid']['#value'], '')) ? $configure = $settings['configure'] : ($configure = array());
$form['advanced']['qtip_webform'] = array(
'#type' => 'fieldset',
'#title' => t('qTip settings'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#weight' => 100,
'#tree' => 1,
);
$default_instance = isset($configure['instance']) ? $configure['instance'] : '';
$form['advanced']['qtip_webform']['instance'] = qtip_fetch_instances_field($default_instance);
$form['advanced']['qtip_webform']['required'] = array(
'#type' => 'checkbox',
'#title' => t('Show required field notification with qTip'),
'#default_value' => isset($configure['required']) ? $configure['required'] : 0,
);
$form['advanced']['qtip_webform']['required_instance'] = array(
'#type' => 'select',
'#title' => t('Required instance'),
'#description' => t('Choose the !link that you would like to use for required notifications on this webform.', array(
'!link' => l('qTip instance', 'admin/config/user-interface/qtip'),
)) . '<br>' . '<strong>' . t('NOTE: The show and hide events for the selected qTip instance will be overridden while using the selected instance as the instance for required fields.') . '</strong>',
'#options' => qtip_fetch_instances(TRUE),
'#default_value' => isset($configure['required_instance']) ? $configure['required_instance'] : '',
'#states' => array(
'visible' => array(
':input[name="qtip_webform[required]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['advanced']['qtip_webform']['required_text'] = array(
'#type' => 'textfield',
'#title' => t('Required field text'),
'#description' => t('Enter the text to show in the required field qTip'),
'#default_value' => isset($configure['required_text']) ? $configure['required_text'] : t('This field is required!'),
'#states' => array(
'visible' => array(
':input[name="qtip_webform[required]"]' => array(
'checked' => TRUE,
),
),
),
);
$form['#submit'][] = 'qtip_webform_webform_configure_form_submit';
}
function qtip_webform_component_edit_form_submit(&$form, &$form_state) {
$values = $form_state['values'];
$qtip_webform = $values['display']['qtip_webform'];
$settings = variable_get('qtip_webform_node_' . $values['nid'], '');
$settings['components'][$values['form_key']] = array(
'text' => $qtip_webform['text'],
'custom_text' => $qtip_webform['custom_text'],
);
variable_set('qtip_webform_node_' . $values['nid'], $settings);
}
function qtip_webform_webform_configure_form_submit(&$form, &$form_state) {
$qtip_webform = $form_state['values']['qtip_webform'];
$settings = variable_get('qtip_webform_node_' . $form_state['values']['nid'], '');
$settings['configure'] = $qtip_webform;
variable_set('qtip_webform_node_' . $form_state['values']['nid'], $settings);
}
function qtip_webform_key_get_parents($subject, $array) {
foreach ($array as $key => $value) {
if (substr($key, 0, 1) !== '#' && is_array($value)) {
if (in_array($subject, array_keys($value))) {
return array(
$key,
);
}
else {
$chain = qtip_webform_key_get_parents($subject, $value);
if (!is_null($chain)) {
return array_merge(array(
$key,
), $chain);
}
}
}
}
return NULL;
}