form_helper_validation_demo_form

custom/form_helper/form_helper_validation/form_helper_validation.demo.inc, line 11

Versions
6
form_helper_validation_demo_form()

Demo form for form helper validation

Code

<?php
function form_helper_validation_demo_form() {
  include_once('form_helper_validation.test.data.inc');

  $path = drupal_get_path('module', 'form_helper_validation');
  drupal_add_css($path .'/form_helper_validation.demo.css');
  drupal_add_js($path .'/form_helper_validation.demo.js');

  $rules = _form_helper_validation_get_rules();
  $test_data = form_helper_validation_test_data();

  // Form
  $form = array(
    '#tree' => TRUE,
    '#redirect' => FALSE,
  );

  // Links to test form with valid and invalid data
  $form['test'] = array(
    '#type' => 'markup',
    '#value' => '<div>Test: <a href="#" id="form-helper-validation-demo-valid">valid data</a> | <a href="#" id="form-helper-validation-demo-invalid">invalid data</a></div>',
  );

  // Loop rule and generate elements
  foreach ($rules as $key => $value) {
    // Fielset
    $form[$key] = array(
      '#type' => 'fieldset',
      '#attributes' => array('class' => 'form-helper-validation-demo'),
    );

    // Value
    $form[$key]['value'] = array(
      '#type' => 'textfield',
      '#title' => ucwords($key) .' '. t('value'),
      '#element_validate' => array('form_helper_validation_validate_element_'. $key),
      // Call with rule type
      // '#element_validate' => array('form_helper_validation_validate_element_name'),
    );

    // Test Data
    if ($test_data[$key]) {

      // Test options with valid and invalid optgroups
      $options = array("" => "Select a test");
      foreach ($test_data[$key]['valid'] as $valid_value) {
        $options['valid'][$valid_value] = $valid_value;
      }
      foreach ($test_data[$key]['invalid'] as $invalid_value) {
        $options['invalid'][$invalid_value] = $invalid_value;
      }

      // Test
      $form[$key]['tests'] = array(
        '#type' => 'select',
        '#title' => ucwords($key) .' '. t('test data'),
        '#options' => $options,
      );

      // Display rule options in fieldset
      if ($test_data[$key]['options']) {
        // Set element validate options
        $form[$key]['value']['#element_validate_options'] = $test_data[$key]['options'];

        $form[$key]['options'] = array(
          '#type' => 'fieldset',
          '#title' => ucwords($key) .' '. t('options'),
          '#collapsible' => TRUE,
          '#collapsed' => TRUE,
        );

        // Create elements for each rule option
        foreach ($test_data[$key]['options'] as $option_key => $option_value) {
          $form[$key]['options'][$option_key] = array(
            '#type' => 'textfield',
            '#title' => $option_key,
            '#default_value' => $option_value,
          );
        }
      }
    }
  }

  // Custom fieldset
  $form['custom'] = array(
    '#type' => 'fieldset',
    '#attributes' => array('class' => 'form-helper-validation-demo'),
  );

  $form['custom']['value'] = array(
    '#type' => 'textfield',
    '#title' => t('Custom ') .' '. t('value'),
    '#element_validate' => array('form_helper_validation_demo_custom_validation_rule'),
  );

  $form['custom']['tests'] = array(
    '#type' => 'select',
    '#title' => t('Custom ') .' '. t('test data'),
    '#options' => array(
      '' => 'Select a test',
      'valid' => array('abc' => 'abc'),
      'invalid' => array('def' => 'def'),
    ),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );

  return $form;
}
?>