'AJAX forms simple form test', 'page callback' => 'drupal_get_form', 'page arguments' => array('ajax_forms_test_simple_form'), 'access callback' => TRUE, ); $items['ajax_forms_test_ajax_commands_form'] = array( 'title' => 'AJAX forms AJAX commands test', 'page callback' => 'drupal_get_form', 'page arguments' => array('ajax_forms_test_ajax_commands_form'), 'access callback' => TRUE, ); $items['ajax_validation_test'] = array( 'title' => 'AJAX Validation Test', 'page callback' => 'drupal_get_form', 'page arguments' => array('ajax_forms_test_validation_form'), 'access callback' => TRUE, ); return $items; } /** * A basic form used to test form_state['values'] during callback. */ function ajax_forms_test_simple_form($form, &$form_state) { $form = array(); $form['select'] = array( '#type' => 'select', '#options' => array( 'red' => 'red', 'green' => 'green', 'blue' => 'blue'), '#ajax' => array( 'callback' => 'ajax_forms_test_simple_form_select_callback', ), '#suffix' => '
No color yet selected
', ); $form['checkbox'] = array( '#type' => 'checkbox', '#title' => t('Test checkbox'), '#ajax' => array( 'callback' => 'ajax_forms_test_simple_form_checkbox_callback', ), '#suffix' => '
No action yet
', ); $form['submit'] = array( '#type' => 'submit', '#value' => t('submit'), ); return $form; } /** * AJAX callback triggered by select. */ function ajax_forms_test_simple_form_select_callback($form, $form_state) { $commands = array(); $commands[] = ajax_command_html('#ajax_selected_color', $form_state['values']['select']); $commands[] = ajax_command_data('#ajax_selected_color', 'form_state_value_select', $form_state['values']['select']); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback triggered by checkbox. */ function ajax_forms_test_simple_form_checkbox_callback($form, $form_state) { $commands = array(); $commands[] = ajax_command_html('#ajax_checkbox_value', (int)$form_state['values']['checkbox']); $commands[] = ajax_command_data('#ajax_checkbox_value', 'form_state_value_select', (int)$form_state['values']['checkbox']); return array('#type' => 'ajax', '#commands' => $commands); } /** * Form to display the AJAX Commands. * @param $form * @param $form_state * @return unknown_type */ function ajax_forms_test_ajax_commands_form($form, &$form_state) { $form = array(); // Shows the 'after' command with a callback generating commands. $form['after_command_example'] = array( '#value' => t("AJAX 'After': Click to put something after the div"), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_after_callback', ), '#suffix' => '
Something can be inserted after this
', ); // Shows the 'alert' command. $form['alert_command_example'] = array( '#value' => t("AJAX 'Alert': Click to alert"), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_alert_callback', ), ); // Shows the 'append' command. $form['append_command_example'] = array( '#value' => t("AJAX 'Append': Click to append something"), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_append_callback', ), '#suffix' => '
Append inside this div
', ); // Shows the 'before' command. $form['before_command_example'] = array( '#value' => t("AJAX 'before': Click to put something before the div"), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_before_callback', ), '#suffix' => '
Insert something before this.
', ); // Shows the 'changed' command without asterisk. $form['changed_command_example'] = array( '#value' => t("AJAX changed: Click to mark div changed."), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_changed_callback', ), '#suffix' => '
This div can be marked as changed or not.
', ); // Shows the 'changed' command adding the asterisk. $form['changed_command_asterisk_example'] = array( '#value' => t("AJAX changed: Click to mark div changed with asterisk."), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_changed_asterisk_callback', ), ); // Shows the AJAX 'css' command. $form['css_command_example'] = array( '#value' => t("Set the the '#box' div to be blue."), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_css_callback', ), '#suffix' => '
box
', ); // Shows the AJAX 'data' command. But there is no use of this information, // as this would require a javascript client to use the data. $form['data_command_example'] = array( '#value' => t("AJAX data command: Issue command."), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_data_callback', ), '#suffix' => '
Data attached to this div.
', ); // Shows the AJAX 'html' command. $form['html_command_example'] = array( '#value' => t("AJAX html: Replace the HTML in a selector."), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_html_callback', ), '#suffix' => '
Original contents
', ); // Shows the AJAX 'prepend' command. $form['prepend_command_example'] = array( '#value' => t("AJAX 'prepend': Click to prepend something"), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_prepend_callback', ), '#suffix' => '
Something will be prepended to this div.
', ); // Shows the AJAX 'remove' command. $form['remove_command_example'] = array( '#value' => t("AJAX 'remove': Click to remove text"), '#type' => 'submit', '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_remove_callback', ), '#suffix' => '
text to be removed
', ); // Show off the AJAX 'restripe' command. $form['restripe_command_example'] = array( '#type' => 'submit', '#value' => t("AJAX 'restripe' command"), '#ajax' => array( 'callback' => 'ajax_forms_test_advanced_commands_restripe_callback', ), '#suffix' => '
first row
second row
', ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), ); return $form; } /** * AJAX callback for 'after'. */ function ajax_forms_test_advanced_commands_after_callback($form, $form_state) { $selector = '#after_div'; $commands = array(); $commands[] = ajax_command_after($selector, "This will be placed after"); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'alert'. */ function ajax_forms_test_advanced_commands_alert_callback($form, $form_state) { $commands = array(); $commands[] = ajax_command_alert("Alert"); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'append'. */ function ajax_forms_test_advanced_commands_append_callback($form, $form_state) { $selector = '#append_div'; $commands = array(); $commands[] = ajax_command_append($selector, "Appended text"); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'before'. */ function ajax_forms_test_advanced_commands_before_callback($form, $form_state) { $selector = '#before_div'; $commands = array(); $commands[] = ajax_command_before($selector, "Before text"); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'changed'. */ function ajax_forms_test_advanced_commands_changed_callback($form, $form_state) { $commands[] = ajax_command_changed('#changed_div'); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'changed' with asterisk marking inner div. */ function ajax_forms_test_advanced_commands_changed_asterisk_callback($form, $form_state) { $commands = array(); $commands[] = ajax_command_changed('#changed_div', '#changed_div_mark_this'); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'css'. */ function ajax_forms_test_advanced_commands_css_callback($form, $form_state) { $selector = '#css_div'; $color = 'blue'; $commands = array(); $commands[] = ajax_command_css($selector, array('background-color' => $color)); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'data'. */ function ajax_forms_test_advanced_commands_data_callback($form, $form_state) { $selector = '#data_div'; $commands = array(); $commands[] = ajax_command_data($selector, 'testkey', 'testvalue'); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'html'. */ function ajax_forms_test_advanced_commands_html_callback($form, $form_state) { $commands = array(); $commands[] = ajax_command_html('#html_div', 'replacement text'); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'prepend'. */ function ajax_forms_test_advanced_commands_prepend_callback($form, $form_state) { $commands = array(); $commands[] = ajax_command_prepend('#prepend_div', "prepended text"); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'remove'. */ function ajax_forms_test_advanced_commands_remove_callback($form, $form_state) { $commands = array(); $commands[] = ajax_command_remove('#remove_text'); return array('#type' => 'ajax', '#commands' => $commands); } /** * AJAX callback for 'restripe'. */ function ajax_forms_test_advanced_commands_restripe_callback($form, $form_state) { $commands = array(); $commands[] = ajax_command_restripe('#restripe_table'); return array('#type' => 'ajax', '#commands' => $commands); } /** * This form and its related submit and callback functions demonstrate * not validating another form element when a single AJAX element is triggered. * * The "drivertext" element is an AJAX-enabled textfield, free-form. * The "required_field" element is a textfield marked required. * * The correct behavior is that the AJAX-enabled drivertext element should * be able to trigger without causing validation of the "required_field". */ function ajax_forms_test_validation_form($form, &$form_state) { $form['drivertext'] = array( '#title' => t('AJAX-enabled textfield.'), '#description' => t("When this one AJAX-triggers and the spare required field is empty, you should not get an error."), '#type' => 'textfield', '#default_value' => !empty($form_state['values']['drivertext']) ? $form_state['values']['drivertext'] : "", '#ajax' => array( 'callback' => 'ajax_forms_test_validation_form_callback', 'wrapper' => 'message_area', 'method' => 'replace', ), '#suffix' => '
', ); $form['spare_required_field'] = array( '#title' => t("Spare Required Field"), '#type' => 'textfield', '#required' => TRUE, ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), ); return $form; } /** * Submit handler for the validation form. */ function ajax_forms_test_validation_form_submit($form, $form_state) { drupal_set_message(t("Validation form submitted")); } /** * AJAX callback for the 'drivertext' element of the validation form. */ function ajax_forms_test_validation_form_callback($form, $form_state) { drupal_set_message("ajax_forms_test_validation_form_callback invoked"); drupal_set_message(t("Callback: drivertext=%drivertext, spare_required_field=%spare_required_field", array('%drivertext' => $form_state['values']['drivertext'], '%spare_required_field' => $form_state['values']['spare_required_field']))); return '
ajax_forms_test_validation_form_callback at ' . date('c') . '
'; }