You are here

function msnf_msnf_format_settings in Multistep Nodeform 7

Implements hook_msnf_format_settings(). If the step has no format settings, default ones will be added.

@params <object> $step The step object.

Return value

<array> $form The form element for the format settings.

File

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

Code

function msnf_msnf_format_settings($step) {

  // Add a wrapper for extra settings to use by others.
  $form = array(
    'instance_settings' => array(
      '#tree' => TRUE,
      '#weight' => 2,
    ),
  );
  $step_types = msnf_formatter_info();
  $formatter = $step_types[$step->format_type];
  $form['instance_settings']['skip_non_required'] = array(
    '#type' => 'checkbox',
    '#title' => t('Allow skipping this step if it contains no required fields.'),
    '#default_value' => isset($step->format_settings['instance_settings']['skip_non_required']) ? $step->format_settings['instance_settings']['skip_non_required'] : (isset($formatter['instance_settings']['skip_non_required']) ? $formatter['instance_settings']['skip_non_required'] : ''),
    '#weight' => 1,
  );
  $form['instance_settings']['hide_if_empty'] = array(
    '#type' => 'checkbox',
    '#title' => t('Hide the entire step if it contains no fields or none of the fields is accessible by the user.'),
    '#default_value' => isset($step->format_settings['instance_settings']['hide_if_empty']) ? $step->format_settings['instance_settings']['hide_if_empty'] : (isset($formatter['instance_settings']['hide_if_empty']) ? $formatter['instance_settings']['hide_if_empty'] : ''),
    '#weight' => 1,
  );
  if (isset($formatter['instance_settings']['classes'])) {
    $form['instance_settings']['classes'] = array(
      '#title' => t('Extra CSS classes'),
      '#type' => 'textfield',
      '#default_value' => isset($step->format_settings['instance_settings']['classes']) ? $step->format_settings['instance_settings']['classes'] : (isset($formatter['instance_settings']['classes']) ? $formatter['instance_settings']['classes'] : ''),
      '#weight' => 3,
      '#element_validate' => array(
        'msnf_validate_css_class',
      ),
    );
  }
  if (isset($formatter['instance_settings']['description'])) {
    $form['instance_settings']['description'] = array(
      '#title' => t('Step description'),
      '#type' => 'textarea',
      '#rows' => 3,
      '#default_value' => isset($step->format_settings['instance_settings']['description']) ? $step->format_settings['instance_settings']['description'] : (isset($formatter['instance_settings']['description']) ? $formatter['instance_settings']['description'] : ''),
      '#weight' => 0,
    );
  }

  // Add optional instance_settings.
  switch ($step->format_type) {
    case 'default':
      $form['instance_settings']['show_label'] = array(
        '#title' => t('Show label'),
        '#type' => 'select',
        '#options' => array(
          0 => t('No'),
          1 => t('Yes'),
        ),
        '#default_value' => isset($step->format_settings['instance_settings']['show_label']) ? $step->format_settings['instance_settings']['show_label'] : $formatter['instance_settings']['show_label'],
        '#weight' => 2,
      );
      $form['instance_settings']['label_element'] = array(
        '#title' => t('Label element'),
        '#type' => 'select',
        '#options' => array(
          'h2' => t('Header 2'),
          'h3' => t('Header 3'),
        ),
        '#default_value' => isset($step->format_settings['instance_settings']['label_element']) ? $step->format_settings['instance_settings']['label_element'] : $formatter['instance_settings']['label_element'],
        '#weight' => 2,
      );
      $form['instance_settings']['buttons'] = array(
        '#title' => t('Button labels'),
        '#type' => 'fieldset',
        '#tree' => TRUE,
        '#weight' => 3,
        '#collapsible' => TRUE,
        '#collapsed' => TRUE,
      );
      $form['instance_settings']['buttons']['previous'] = array(
        '#title' => t('Back'),
        '#type' => 'textfield',
        '#description' => t('Text to use as label for back-button. Leave empty to use the title of the previous step.'),
        '#default_value' => isset($step->format_settings['instance_settings']['buttons']['previous']) ? $step->format_settings['instance_settings']['buttons']['previous'] : (isset($formatter['instance_settings']['buttons']['previous']) ? $formatter['instance_settings']['buttons']['previous'] : ''),
        '#weight' => 0,
      );
      $form['instance_settings']['buttons']['next'] = array(
        '#title' => t('Next'),
        '#type' => 'textfield',
        '#description' => t('Text to use as label for next-button. Leave empty to use the title of the next step.'),
        '#default_value' => isset($step->format_settings['instance_settings']['buttons']['next']) ? $step->format_settings['instance_settings']['buttons']['next'] : (isset($formatter['instance_settings']['buttons']['next']) ? $formatter['instance_settings']['buttons']['next'] : ''),
        '#weight' => 1,
      );
      $form['instance_settings']['buttons']['skip'] = array(
        '#title' => t('Skip'),
        '#type' => 'textfield',
        '#description' => t('Text to use as label for skip-button.'),
        '#default_value' => isset($step->format_settings['instance_settings']['buttons']['skip']) ? $step->format_settings['instance_settings']['buttons']['skip'] : (isset($formatter['instance_settings']['buttons']['skip']) ? $formatter['instance_settings']['buttons']['skip'] : ''),
        '#weight' => 2,
      );
      break;
    default:
  }
  return $form;
}