summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/form_test.module
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2009-01-28 07:43:26 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2009-01-28 07:43:26 +0000
commitad99dd761a7e11256200d959f10c9898befa8176 (patch)
treebe658215f4af3a0a3fb56126fb11b829ce8f3b9a /modules/simpletest/tests/form_test.module
parentf16eccbe9d0199385e0334b1692d6a1ec7225917 (diff)
downloadbrdo-ad99dd761a7e11256200d959f10c9898befa8176.tar.gz
brdo-ad99dd761a7e11256200d959f10c9898befa8176.tar.bz2
#242962 by Heine: Add a 'tablesort' Form API element to unify various places we use a big table with JS-enabled checkboxes next to each item (with tests).
Diffstat (limited to 'modules/simpletest/tests/form_test.module')
-rw-r--r--modules/simpletest/tests/form_test.module182
1 files changed, 182 insertions, 0 deletions
diff --git a/modules/simpletest/tests/form_test.module b/modules/simpletest/tests/form_test.module
new file mode 100644
index 000000000..a1eee25b2
--- /dev/null
+++ b/modules/simpletest/tests/form_test.module
@@ -0,0 +1,182 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Helper module for the form API tests.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function form_test_menu() {
+ $items = array();
+
+ $items['form_test/tableselect/multiple-true'] = array(
+ 'title' => '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,
+ );
+
+ return $items;
+}
+
+/**
+ * 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);
+}