function msnf_field_overview_submit in Multistep Nodeform 7
Submit handler for the overview screens.
Parameters
array $form: The complete form.
array $form_state: The state of the form.
1 string reference to 'msnf_field_overview_submit'
- msnf_field_ui_overview_form_alter in includes/
msnf.field_ui.inc - Function to alter the fields overview screen.
File
- includes/
msnf.field_ui.inc, line 570 - msnf.field_ui.inc is a file that contains most functions needed on the Fields UI Manage forms (display and fields).
Code
function msnf_field_overview_submit($form, &$form_state) {
$form_values = $form_state['values']['fields'];
$entity_type = $form['#entity_type'];
$bundle = $form['#bundle'];
// Collect children.
$children = array_fill_keys($form['#steps'], array());
foreach ($form_values as $name => $value) {
if (!empty($value['parent'])) {
// Substitute newly added fields, in case they were dragged directly in a
// step.
if ($name == '_add_new_field' && isset($form_state['fields_added']['_add_new_field'])) {
$name = $form_state['fields_added']['_add_new_field'];
}
elseif ($name == '_add_existing_field' && isset($form_state['fields_added']['_add_existing_field'])) {
$name = $form_state['fields_added']['_add_existing_field'];
}
$children[$value['parent']][$name] = $name;
}
}
// Prepare storage with ctools.
ctools_include('export');
// Create new step.
if (!empty($form_values['_add_new_step']['step_name'])) {
$values = $form_values['_add_new_step'];
$step_types = msnf_formatter_info();
$formatter = $step_types[$values['format']['type']];
$new_step = (object) array(
'identifier' => $values['step_name'] . '|' . $entity_type . '|' . $bundle,
'step_name' => $values['step_name'],
'entity_type' => $entity_type,
'bundle' => $bundle,
'children' => isset($children['_add_new_step']) ? array_keys($children['_add_new_step']) : array(),
'parent_name' => $values['parent'],
'weight' => $values['weight'],
'label' => $values['label'],
'format_type' => $values['format']['type'],
'disabled' => FALSE,
);
$new_step->format_settings = array();
if (isset($formatter['instance_settings'])) {
$new_step->format_settings['instance_settings'] = $formatter['instance_settings'];
}
// Save and enable it in ctools.
ctools_export_crud_save('msnf_step', $new_step);
ctools_export_crud_enable('msnf_step', $new_step->identifier);
// Store new step information for any additional submit handlers.
$form_state['steps_added']['_add_new_step'] = $new_step->step_name;
drupal_set_message(t('New step %label successfully created.', array(
'%label' => $new_step->label,
)));
// Replace the newly created step in the $children array, in case it was
// dragged directly in an existing field.
foreach (array_keys($children) as $parent) {
if (isset($children[$parent]['_add_new_step'])) {
unset($children[$parent]['_add_new_step']);
$children[$parent][$new_step->step_name] = $new_step->step_name;
}
}
}
// Update existing steps.
$steps = msnf_info_steps($entity_type, $bundle, TRUE);
foreach ($form['#steps'] as $step_name) {
$step = $steps[$step_name];
$step->label = $form_state['msnf_step'][$step_name]->label;
$step->children = array_keys($children[$step_name]);
$step->parent_name = $form_values[$step_name]['parent'];
$step->weight = $form_values[$step_name]['weight'];
$step->format_type = isset($form_values[$step_name]['format']['type']) ? $form_values[$step_name]['format']['type'] : 'visible';
if (isset($form_state['msnf_step'][$step_name]->format_settings)) {
$step->format_settings = $form_state['msnf_step'][$step_name]->format_settings;
}
ctools_export_crud_save('msnf_step', $step);
}
cache_clear_all('msnf_step', 'cache_field');
}