diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-09-18 00:12:48 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-09-18 00:12:48 +0000 |
commit | df02fa3ca46e16974192de77580762188ad47f49 (patch) | |
tree | 91b2354aae786d7b187028dbc61fb3893b04ae64 /modules/simpletest/tests/form_test.module | |
parent | e18feedfdb429e35173b85fc7182aadabee0a166 (diff) | |
download | brdo-df02fa3ca46e16974192de77580762188ad47f49.tar.gz brdo-df02fa3ca46e16974192de77580762188ad47f49.tar.bz2 |
#571086 by sun and merlinofchaos: Added a 'wrapper callback' that executes
before a form builder function, to facilitate common form elements. Clean-up
from form_builder changes from CTools patch. Has nice side-benefit of making
all form functions' signatures consistent.
Diffstat (limited to 'modules/simpletest/tests/form_test.module')
-rw-r--r-- | modules/simpletest/tests/form_test.module | 71 |
1 files changed, 48 insertions, 23 deletions
diff --git a/modules/simpletest/tests/form_test.module b/modules/simpletest/tests/form_test.module index 6646e85a8..6d6fd38f8 100644 --- a/modules/simpletest/tests/form_test.module +++ b/modules/simpletest/tests/form_test.module @@ -10,8 +10,6 @@ * Implement hook_menu(). */ function form_test_menu() { - $items = array(); - $items['form_test/tableselect/multiple-true'] = array( 'title' => 'Tableselect checkboxes test', 'page callback' => 'drupal_get_form', @@ -19,7 +17,6 @@ function form_test_menu() { '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', @@ -27,7 +24,6 @@ function form_test_menu() { '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', @@ -35,7 +31,6 @@ function form_test_menu() { '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', @@ -66,6 +61,14 @@ function form_test_menu() { 'type' => MENU_CALLBACK, ); + $items['form_test/wrapper-callback'] = array( + 'title' => 'Form wrapper callback test', + 'page callback' => 'form_test_wrapper_callback', + 'page arguments' => array('form_test_wrapper_callback_form'), + 'access arguments' => array('access content'), + 'type' => MENU_CALLBACK, + ); + return $items; } @@ -82,7 +85,7 @@ function form_test_form_clean_id_page() { /** * A simple form to test clean_id generation. */ -function form_test_test_form(&$form_state) { +function form_test_test_form($form, &$form_state) { $form['input'] = array( '#type' => 'item', '#title' => 'Test Textfield', @@ -137,9 +140,7 @@ function _form_test_tableselect_get_data() { * @return * A form with a tableselect element and a submit button. */ -function _form_test_tableselect_form_builder($form_state, $element_properties) { - $form = array(); - +function _form_test_tableselect_form_builder($form, $form_state, $element_properties) { list($header, $options) = _form_test_tableselect_get_data(); $form['tableselect'] = $element_properties; @@ -163,8 +164,8 @@ function _form_test_tableselect_form_builder($form_state, $element_properties) { /** * 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)); +function _form_test_tableselect_multiple_true_form($form, $form_state) { + return _form_test_tableselect_form_builder($form, $form_state, array('#multiple' => TRUE)); } /** @@ -180,8 +181,8 @@ function _form_test_tableselect_multiple_true_form_submit($form, &$form_state) { /** * 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)); +function _form_test_tableselect_multiple_false_form($form, $form_state) { + return _form_test_tableselect_form_builder($form, $form_state, array('#multiple' => FALSE)); } /** @@ -194,17 +195,15 @@ function _form_test_tableselect_multiple_false_form_submit($form, &$form_state) /** * 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())); +function _form_test_tableselect_empty_form($form, $form_state) { + return _form_test_tableselect_form_builder($form, $form_state, array('#options' => array())); } /** * Test functionality of the tableselect #js_select property. */ -function _form_test_tableselect_js_select_form($form_state, $action) { - +function _form_test_tableselect_js_select_form($form, $form_state, $action) { switch ($action) { - case 'multiple-true-default': $options = array('#multiple' => TRUE); break; @@ -222,7 +221,7 @@ function _form_test_tableselect_js_select_form($form_state, $action) { break; } - return _form_test_tableselect_form_builder($form_state, $options); + return _form_test_tableselect_form_builder($form, $form_state, $options); } /** @@ -263,9 +262,7 @@ function form_test_batch_callback($value) { /** * A simple form with a textfield and submit button. */ -function form_test_mock_form($form_state) { - $form = array(); - +function form_test_mock_form($form, $form_state) { $form['test_value'] = array( '#type' => 'textfield', '#default_value' => 'initial_state', @@ -298,7 +295,7 @@ function form_test_mock_form_submit($form, &$form_state) { * * @see form_storage_test_form_submit(). */ -function form_storage_test_form(&$form_state) { +function form_storage_test_form($form, &$form_state) { // Initialize if (!isset($form_state['storage'])) { if (empty($form_state['input'])) { @@ -365,3 +362,31 @@ function form_storage_test_form_submit($form, &$form_state) { $form_state['storage']['step']++; drupal_set_message("Form constructions: ". $_SESSION['constructions']); } + +/** + * Menu callback; Invokes a form builder function with a wrapper callback. + */ +function form_test_wrapper_callback($form_id) { + $form_state = array( + 'args' => array(), + 'wrapper_callback' => 'form_test_wrapper_callback_wrapper', + ); + return drupal_build_form($form_id, $form_state); +} + +/** + * Form wrapper for form_test_wrapper_callback_form(). + */ +function form_test_wrapper_callback_wrapper($form, &$form_state) { + $form['wrapper'] = array('#markup' => 'Form wrapper callback element output.'); + return $form; +} + +/** + * Form builder for form wrapper callback test. + */ +function form_test_wrapper_callback_form($form, &$form_state) { + $form['builder'] = array('#markup' => 'Form builder element output.'); + return $form; +} + |