function finder_wizard_form_finder_form_alter in Finder 7.2
Implements hook_form_FORM_ID_alter().
File
- modules/
finder_wizard/ finder_wizard.module, line 265 - The Finder page module.
Code
function finder_wizard_form_finder_form_alter(&$form, &$form_state, $form_id) {
$finder = $form_state['finder'];
if (empty($finder->finder_wizard)) {
return;
}
// Track the page num.
$form['finder_wizard']['finder_wizard_page_num'] = array(
'#type' => 'hidden',
'#value' => $finder->finder_wizard_page_num,
);
// Pass the known values through as hidden fields.
$finder_wizard_index = array_keys($finder->finder_wizard);
foreach ($finder_wizard_index as $finder_wizard_page_num => $finder_wizard_page_id) {
if ($finder->finder_wizard_page_id != $finder_wizard_page_id) {
foreach ($finder->finder_wizard[$finder_wizard_page_id] as $page_element) {
if (isset($form_state['values'][$page_element])) {
$form['finder_wizard'][$page_element] = array(
'#type' => 'hidden',
'#value' => $form_state['values'][$page_element],
);
}
}
}
}
// Create next button.
$next = $form['finder_form']['actions']['find'];
$next['#value'] = $finder
->setting('finder_wizard_next_text');
$next['#name'] = 'next';
if ($finder->finder_wizard_page_num == count($finder->finder_wizard) - 1) {
if ($finder
->setting('finder_wizard_hide_disabled')) {
$next = NULL;
}
else {
$next['#disabled'] = TRUE;
}
}
if ($next) {
$form['finder_form']['actions'] = array(
'next' => $next,
) + $form['finder_form']['actions'];
}
// Create back button.
if ($finder
->setting('finder_wizard_back')) {
$back = $form['finder_form']['actions']['find'];
$back['#value'] = $finder
->setting('finder_wizard_back_text');
$back['#name'] = 'back';
if ($finder->finder_wizard_page_num == 0) {
if ($finder
->setting('finder_wizard_hide_disabled')) {
$back = NULL;
}
else {
$back['#disabled'] = TRUE;
}
}
if ($back) {
$form['finder_form']['actions'] = array(
'back' => $back,
) + $form['finder_form']['actions'];
}
}
// Remove find button.
unset($form['finder_form']['actions']['find']);
// Handle go button - it only works on the 2nd last page :/
if (isset($form['finder_form']['actions']['go']) && $finder->finder_wizard_page_num != count($finder->finder_wizard) - 2) {
if ($finder
->setting('finder_wizard_hide_disabled')) {
unset($form['finder_form']['actions']['go']);
}
else {
$form['finder_form']['actions']['go']['#disabled'] = TRUE;
}
}
// Handle automatically clicking the buttons. @todo is there a better way to do this (i.e. without waiting for the page to load).
if ($finder->finder_wizard_page_id != $finder
->setting('finder_wizard_url_results')) {
if (!finder_wizard_find_page_id_in_form($finder->finder_wizard_page_id, $form['finder_form'])) {
if (!empty($_GET['back']) || isset($form_state['clicked_button']['#name']) && $form_state['clicked_button']['#name'] == 'back') {
$js_settings['finder_wizard_back'][] = $finder->build_id;
}
else {
$js_settings['finder_wizard_next'][] = $finder->build_id;
}
drupal_add_js(array(
'finder_wizard' => $js_settings,
), 'setting');
drupal_add_js(drupal_get_path('module', 'finder_wizard') . '/finder_wizard.js');
$form['finder_form']['finder-wizard-redirect'] = array(
'#prefix' => '<div class="finder-wizard-redirect"><div class="ajax-progress throbber"></div><p>',
'#markup' => t('Redirecting...'),
'#suffix' => '</p></div>',
);
}
}
}