You are here

function _msnf_restore_values in Multistep Nodeform 6

Same name and namespace in other branches
  1. 7 msnf.module \_msnf_restore_values()

Restore node fields which has a tree-like structure of data..

1 call to _msnf_restore_values()
msnf_prepare_form_step in ./msnf.module
Function to prepare the current form step and to alter the node form.

File

./msnf.module, line 357
Main functions for module "Multistep Nodeform".

Code

function _msnf_restore_values(&$form, &$form_state) {
  $values = $form_state['values'];
  foreach ($form as $key => &$parent) {
    if (is_array($parent)) {
      if (!empty($parent['body'])) {

        // Handle body field.
        $body_fields = array(
          'body',
          'teaser_js',
          'teaser_include',
          'format',
        );
        foreach ($body_fields as $body_field) {
          $value = $values[$body_field];
          if (!empty($value) || $body_field == 'teaser_include') {
            $parent[$body_field]['#default_value'] = $value;
          }
        }
      }
      else {
        if (!empty($parent['#tree']) && $parent['#tree']) {
          $value = $form_state['values'][$key];
        }
        else {
          $value = $form_state['values'];
        }
        _msnf_restore_values_recursive($key, $parent, $value);
      }
    }
  }

  // Special handling for files.
  // This needs to be done here since upload.module creates the wrapper before
  // msnf even knows about the form and its values.
  if (module_exists('upload') && !empty($values['files']) && isset($form['attachments']['wrapper'])) {
    $form['#node']->files = $values['files'];

    // Re-create attachment wrapper.
    $form['attachments']['wrapper'] = array(
      '#prefix' => '<div id="attach-wrapper">',
      '#suffix' => '</div>',
    );
    $form['attachments']['wrapper'] += _upload_form($form['#node']);
  }
}