'Tableselect checkboxes test', 'page callback' => 'drupal_get_form', 'page arguments' => array('_form_test_tableselect_multiple_true_form'), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['form_test/tableselect/multiple-false'] = array( 'title' => 'Tableselect radio button test', 'page callback' => 'drupal_get_form', 'page arguments' => array('_form_test_tableselect_multiple_false_form'), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['form_test/tableselect/empty-text'] = array( 'title' => 'Tableselect empty text test', 'page callback' => 'drupal_get_form', 'page arguments' => array('_form_test_tableselect_empty_form'), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['form_test/tableselect/advanced-select'] = array( 'title' => 'Tableselect js_select tests', 'page callback' => 'drupal_get_form', 'page arguments' => array('_form_test_tableselect_js_select_form'), 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['form_test/form_clean_id'] = array( 'title' => 'form_clean_id test', 'page callback' => 'form_test_form_clean_id_page', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); $items['form_test/drupal_execute_batch_api'] = array( 'title' => 'BatchAPI Drupal_execute tests', 'page callback' => 'form_test_drupal_execute_batch_api', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); return $items; } /** * Generate a page with three form, to test the clean_id generation. */ function form_test_form_clean_id_page() { $output = drupal_get_form('form_test_test_form'); $output .= drupal_get_form('form_test_test_form'); $output .= drupal_get_form('form_test_test_form'); return $output; } /** * A simple form to test clean_id generation. */ function form_test_test_form(&$form_state) { $form['input'] = array( '#type' => 'item', '#title' => 'Test Textfield', '#markup' => form_clean_id('form_test_form_clean_id_presence'), ); return $form; } /** * Create a header and options array. Helper function for callbacks. */ function _form_test_tableselect_get_data() { $header = array( 'one' => t('One'), 'two' => t('Two'), 'three' => t('Three'), 'four' => t('Four'), ); $options['row1'] = array( 'one' => 'row1col1', 'two' => t('row1col2'), 'three' => t('row1col3'), 'four' => t('row1col4'), ); $options['row2'] = array( 'one' => 'row2col1', 'two' => t('row2col2'), 'three' => t('row2col3'), 'four' => t('row2col4'), ); $options['row3'] = array( 'one' => 'row3col1', 'two' => t('row3col2'), 'three' => t('row3col3'), 'four' => t('row3col4'), ); return array($header, $options); } /** * Build a form to test the tableselect element. * * @param $form_state * The form_state * @param $element_properties * An array of element properties for the tableselect element. * * @return * A form with a tableselect element and a submit button. */ function _form_test_tableselect_form_builder($form_state, $element_properties) { $form = array(); list($header, $options) = _form_test_tableselect_get_data(); $form['tableselect'] = $element_properties; $form['tableselect'] += array( '#type' => 'tableselect', '#header' => $header, '#options' => $options, '#multiple' => FALSE, '#empty' => t('Empty text.'), ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), ); return $form; } /** * Test the tableselect #multiple = TRUE functionality. */ function _form_test_tableselect_multiple_true_form($form_state) { return _form_test_tableselect_form_builder($form_state, array('#multiple' => TRUE)); } /** * Process the tableselect #multiple = TRUE submitted values. */ function _form_test_tableselect_multiple_true_form_submit($form, &$form_state) { $selected = $form_state['values']['tableselect']; foreach ($selected as $key => $value) { drupal_set_message(t('Submitted: @key = @value', array('@key' => $key, '@value' => $value))); } } /** * Test the tableselect #multiple = FALSE functionality. */ function _form_test_tableselect_multiple_false_form($form_state) { return _form_test_tableselect_form_builder($form_state, array('#multiple' => FALSE)); } /** * Process the tableselect #multiple = FALSE submitted values. */ function _form_test_tableselect_multiple_false_form_submit($form, &$form_state) { drupal_set_message(t('Submitted: @value', array('@value' => $form_state['values']['tableselect']))); } /** * Test functionality of the tableselect #empty property. */ function _form_test_tableselect_empty_form($form_state) { return _form_test_tableselect_form_builder($form_state, array('#options' => array())); } /** * Test functionality of the tableselect #js_select property. */ function _form_test_tableselect_js_select_form($form_state, $action) { switch ($action) { case 'multiple-true-default': $options = array('#multiple' => TRUE); break; case 'multiple-false-default': $options = array('#multiple' => FALSE); break; case 'multiple-true-no-advanced-select': $options = array('#multiple' => TRUE, '#js_select' => FALSE); break; case 'multiple-false-advanced-select': $options = array('#multiple' => FALSE, '#js_select' => TRUE); break; } return _form_test_tableselect_form_builder($form_state, $options); } /** * Page callback for the batch/drupal_execute interaction test. * * When called without any arguments we set up a batch that calls * form_test_batch_callback. That function will submit a form using * drupal_execute using the values specified in this function. * * The form's field test_value begins at 'initial_value', and is changed * to 'form_submitted' when the form is submitted successfully. On * completion this function is passed 'done' to complete the process. */ function form_test_drupal_execute_batch_api($arg = '') { // If we're at the end of the batch process, return. if ($arg == 'done') { return t('Done'); } // Otherwise set up the batch. $batch['operations'] = array( array('form_test_batch_callback', array('form_submitted')), ); // Set the batch and process it. batch_set($batch); batch_process('form_test/drupal_execute_batch_api/done'); } /** * Submits form_test_mock_form using drupal_execute using the given $value. */ function form_test_batch_callback($value) { $state['values']['test_value'] = $value; drupal_execute('form_test_mock_form', $state); } /** * A simple form with a textfield and submit button. */ function form_test_mock_form($form_state) { $form = array(); $form['test_value'] = array( '#type' => 'textfield', '#default_value' => 'initial_state', ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), ); return $form; } /** * Form submission callback. * * Updates the variable 'form_test_mock_submit' to the submitted form value. */ function form_test_mock_form_submit($form, &$form_state) { variable_set('form_test_mock_submit', $form_state['values']['test_value']); }