You are here

multiform_test.module in Multiple forms 7.2

Same filename and directory in other branches
  1. 7 tests/multiform_test.module

@author Kálmán Hosszu - http://drupal.org/user/267481

File

tests/multiform_test.module
View source
<?php

/**
 * @file
 *
 *
 *
 * @author Kálmán Hosszu - http://drupal.org/user/267481
 */

/* ====================== */

/* ==== DRUPAL HOOKS ==== */

/* ====================== */

/**
 * Implementation of hook_menu().
 *
 * @return An array of menu items.
 */
function multiform_test_menu() {
  $items = array();
  $items['multiform-test/1'] = array(
    'title' => 'Multiform test page 1',
    'page callback' => 'multiform_test1_callback',
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );
  $items['multiform-test/2'] = array(
    'title' => 'Multiform test page 2',
    'page callback' => 'multiform_test2_callback',
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );
  return $items;
}

/**
 * Callback for Test 1
 */
function multiform_test1_callback() {
  $settings = array(
    '#multiform_id' => 'multiform_test1',
    '#subforms' => array(
      array(
        'form_id' => 'multiform_test1_1',
        '#map' => array(
          0 => array(
            '#parents' => array(
              'submit',
            ),
            '#triggering_submit' => array(
              'save',
            ),
          ),
          1 => array(
            '#parents' => array(
              'delete',
            ),
            '#triggering_submit' => array(
              'delete',
            ),
          ),
        ),
      ),
      array(
        'form_id' => 'multiform_test1_2',
        '#map' => array(
          0 => array(
            '#parents' => array(
              'submit',
            ),
            '#triggering_submit' => array(
              'save',
            ),
          ),
          1 => array(
            '#parents' => array(
              'delete',
            ),
            '#triggering_submit' => array(
              'delete',
            ),
          ),
        ),
      ),
    ),
    '#submit_map' => array(
      '#submits' => array(
        'save' => array(
          '#type' => 'submit',
          '#value' => 'save',
        ),
        'delete' => array(
          '#type' => 'submit',
          '#value' => 'delete',
        ),
      ),
    ),
    '#redirect_path' => 'multiform-test/1',
  );
  return multiform_get_form($settings);
}

/**
 * Callback for Test 2
 */
function multiform_test2_callback() {
  $settings = array(
    '#multiform_id' => 'multiform_test2',
    '#subforms' => array(
      array(
        'form_id' => 'multiform_test2_1',
        '#map' => array(
          0 => array(
            '#parents' => array(
              'submit',
            ),
            '#triggering_submit' => array(
              'save',
            ),
          ),
        ),
      ),
      array(
        'form_id' => 'multiform_test2_2',
        '#map' => array(
          0 => array(
            '#parents' => array(
              'submit',
            ),
            '#triggering_submit' => array(
              'save',
            ),
          ),
        ),
      ),
    ),
    '#submit_map' => array(
      '#submits' => array(
        'save' => array(
          '#type' => 'submit',
          '#value' => 'save',
        ),
      ),
    ),
    '#redirect_path' => 'multiform-test/2',
  );
  return multiform_get_form($settings);
}

/* ====================== */

/* == MODULE FUNCTIONS == */

/* ====================== */

/* FIRST TEST CASE */

/**
 * Build multiform_test1_1 form.
 *
 * @param type $form
 * @param type $form_state
 * @return array
 */
function multiform_test1_1($form, $form_state) {
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'save',
    '#submit' => array(
      'multiform_test1_submit_button',
    ),
  );
  $form['delete'] = array(
    '#type' => 'submit',
    '#value' => 'delete',
    '#submit' => array(
      'multiform_test1_delete_button',
    ),
  );
  return $form;
}

/**
 * Build multiform_test1_2 form.
 *
 * @param type $form
 * @param type $form_state
 * @return string
 */
function multiform_test1_2($form, $form_state) {
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'save',
    '#submit' => array(
      'multiform_test1_submit_button',
    ),
  );
  $form['delete'] = array(
    '#type' => 'submit',
    '#value' => 'delete',
    '#submit' => array(
      'multiform_test1_delete_button',
    ),
  );
  return $form;
}

/**
 * Submit handing.
 *
 * @param type $form
 * @param type $form_state
 */
function multiform_test1_submit_button($form, $form_state) {
  drupal_set_message($form['#form_id'] . 'multiform_test1_submit_button');
}

/**
 * Handling delete.
 *
 * @param type $form
 * @param type $form_state
 */
function multiform_test1_delete_button($form, $form_state) {
  drupal_set_message($form['#form_id'] . 'multiform_test1_delete_button');
}

/* SECOND TEST CASE */

/**
 * Build multiform_test2_1 form.
 *
 * @param type $form
 * @param type $form_state
 * @return array
 */
function multiform_test2_1($form, $form_state) {
  $form['required_text_1'] = array(
    '#type' => 'textfield',
    '#title' => 'test1',
    '#required' => TRUE,
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'save',
    '#submit' => array(
      'multiform_test2_submit_button',
    ),
  );
  return $form;
}

/**
 * Build multiform_test2_2 form.
 *
 * @param type $form
 * @param type $form_state
 * @return array
 */
function multiform_test2_2($form, $form_state) {
  $form['required_text_2'] = array(
    '#type' => 'textfield',
    '#title' => 'test2',
    '#required' => TRUE,
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'save',
    '#submit' => array(
      'multiform_test2_submit_button',
    ),
  );
  return $form;
}

/**
 * Submit handing.
 *
 * @param type $form
 * @param type $form_state
 */
function multiform_test2_submit_button($form, $form_state) {
  drupal_set_message($form['#form_id'] . 'multiform_test2_submit_button');
}

Functions

Namesort descending Description
multiform_test1_1 Build multiform_test1_1 form.
multiform_test1_2 Build multiform_test1_2 form.
multiform_test1_callback Callback for Test 1
multiform_test1_delete_button Handling delete.
multiform_test1_submit_button Submit handing.
multiform_test2_1 Build multiform_test2_1 form.
multiform_test2_2 Build multiform_test2_2 form.
multiform_test2_callback Callback for Test 2
multiform_test2_submit_button Submit handing.
multiform_test_menu Implementation of hook_menu().