You are here

function form_builder_field_configure_submit in Form Builder 6

Same name and namespace in other branches
  1. 7.2 includes/form_builder.admin.inc \form_builder_field_configure_submit()
  2. 7 includes/form_builder.admin.inc \form_builder_field_configure_submit()

File

includes/form_builder.admin.inc, line 690
form_builder.admin.inc Administrative interface for editing forms.

Code

function form_builder_field_configure_submit(&$form, &$form_state) {
  $form_type = $form['#form_type'];
  $form_id = $form['#form_id'];
  $element_id = $form['#element_id'];
  $element = $form['#element'];

  // Allow each element to do any necessary submission handling.
  foreach (form_builder_get_element_properties($form_type, $element['#form_builder']['element_type']) as $property => $property_settings) {
    if (isset($property_settings['submit'])) {
      foreach ($property_settings['submit'] as $function) {
        if (function_exists($function)) {
          $function($form, $form_state);
        }
      }
    }
  }

  // Allow the element to be updated in a hard-coded fashion by altering the
  // $form['#element'] item. Using this approach skips the property check.
  $element = $form['#element'];

  // Update the field according to the settings in $form_state['values'].
  $saveable = form_builder_get_saveable_properties($form_type, $element);
  foreach ($form_state['values'] as $property => $value) {
    if (in_array($property, $saveable)) {

      // Remove empty properties entirely.
      if ($value === '' || is_null($value)) {
        unset($element['#' . $property]);
      }
      else {
        $element['#' . $property] = $value;
      }
    }
  }

  // Update the form builder cache.
  form_builder_cache_field_save($form_type, $form_id, $element);
  if (isset($_GET['js'])) {

    // Option A: Use the destination variable to do a drupal_goto(). Allows
    // other submit handlers to add on extra functionality.
    // The destination variable takes precedence over $form_state['redirect'].

    //$_REQUEST['destination'] = 'admin/build/form-builder/json/' . $form_type . '/' . $form_id . '/' . $element_id;

    // Option B: Immediately print the JSON and exit. Faster and requires only
    // one HTTP request instead of two. Other submit handlers must be before
    // this on.
    form_builder_field_json($form_type, $form_id, $element_id);
  }
}