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 | |
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')
-rw-r--r-- | modules/simpletest/simpletest.pages.inc | 12 | ||||
-rw-r--r-- | modules/simpletest/tests/browser_test.module | 4 | ||||
-rw-r--r-- | modules/simpletest/tests/field_test.module | 4 | ||||
-rw-r--r-- | modules/simpletest/tests/file_test.module | 2 | ||||
-rw-r--r-- | modules/simpletest/tests/form.test | 27 | ||||
-rw-r--r-- | modules/simpletest/tests/form_test.module | 71 |
6 files changed, 81 insertions, 39 deletions
diff --git a/modules/simpletest/simpletest.pages.inc b/modules/simpletest/simpletest.pages.inc index ffef07a71..cb5ccfefc 100644 --- a/modules/simpletest/simpletest.pages.inc +++ b/modules/simpletest/simpletest.pages.inc @@ -9,9 +9,7 @@ /** * List tests arranged in groups that can be selected and run. */ -function simpletest_test_form() { - $form = array(); - +function simpletest_test_form($form) { $form['tests'] = array( '#type' => 'fieldset', '#title' => t('Tests'), @@ -196,9 +194,7 @@ function simpletest_test_form_submit($form, &$form_state) { /** * Test results form for $test_id. */ -function simpletest_result_form(&$form_state, $test_id) { - $form = array(); - +function simpletest_result_form($form, &$form_state, $test_id) { // Make sure there are test results to display and a re-run is not being performed. $results = array(); if (is_numeric($test_id) && !$results = simpletest_result_get($test_id)) { @@ -417,9 +413,7 @@ function simpletest_result_status_image($status) { /** * Provides settings form for SimpleTest variables. */ -function simpletest_settings_form(&$form_state) { - $form = array(); - +function simpletest_settings_form($form, &$form_state) { $form['general'] = array( '#type' => 'fieldset', '#title' => t('General'), diff --git a/modules/simpletest/tests/browser_test.module b/modules/simpletest/tests/browser_test.module index b4c02680d..4d4fd24a3 100644 --- a/modules/simpletest/tests/browser_test.module +++ b/modules/simpletest/tests/browser_test.module @@ -39,9 +39,7 @@ function browser_test_print_get() { exit; } -function browser_test_print_post_form(&$form_state) { - $form = array(); - +function browser_test_print_post_form($form, &$form_state) { $form['foo'] = array( '#type' => 'textfield', ); diff --git a/modules/simpletest/tests/field_test.module b/modules/simpletest/tests/field_test.module index fb711de78..642d7878e 100644 --- a/modules/simpletest/tests/field_test.module +++ b/modules/simpletest/tests/field_test.module @@ -256,9 +256,7 @@ function field_test_entity_edit($entity) { /** * Form to set the value of fields attached to our entity. */ -function field_test_entity_form(&$form_state, $entity) { - $form = array(); - +function field_test_entity_form($form, &$form_state, $entity) { if (isset($form_state['test_entity'])) { $entity = $form_state['test_entity'] + (array)$entity; } diff --git a/modules/simpletest/tests/file_test.module b/modules/simpletest/tests/file_test.module index b0ae582fd..567508a4f 100644 --- a/modules/simpletest/tests/file_test.module +++ b/modules/simpletest/tests/file_test.module @@ -44,7 +44,7 @@ function file_test_stream_wrappers() { /** * Form to test file uploads. */ -function _file_test_form(&$form_state) { +function _file_test_form($form, &$form_state) { $form['file_test_upload'] = array( '#type' => 'file', '#title' => t('Upload an image'), diff --git a/modules/simpletest/tests/form.test b/modules/simpletest/tests/form.test index 6ea494c3d..5ee6252c1 100644 --- a/modules/simpletest/tests/form.test +++ b/modules/simpletest/tests/form.test @@ -449,3 +449,30 @@ class FormsFormStorageTestCase extends DrupalWebTestCase { $this->assertPattern('/value_is_set/', t("The input values have been kept.")); } } + +/** + * Test wrapper form callbacks. + */ +class FormsFormWrapperTestCase extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => 'Form wrapper callback', + 'description' => 'Tests form wrapper callbacks to pass a prebuilt form to form builder functions.', + 'group' => 'Form API', + ); + } + + function setUp() { + parent::setUp('form_test'); + } + + /** + * Tests using the form in a usual way. + */ + function testWrapperCallback() { + $this->drupalGet('form_test/wrapper-callback'); + $this->assertText('Form wrapper callback element output.', t('The form contains form wrapper elements.')); + $this->assertText('Form builder element output.', t('The form contains form builder elements.')); + } +} + 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; +} + |