You are here

function content_multigroup_display_overview_form in Content Construction Kit (CCK) 6.3

Alter the "Display fields" form.

Add an additional selector for setting multigroup field display format.

1 call to content_multigroup_display_overview_form()
content_multigroup_form_alter in modules/content_multigroup/content_multigroup.module
Implementation of hook_form_alter().

File

modules/content_multigroup/content_multigroup.admin.inc, line 294
Implementation of node type administration functions for content multigroup.

Code

function content_multigroup_display_overview_form(&$form, &$form_state) {
  $type_name = $form['#type_name'];
  $contexts_selector = $form['#contexts'];

  // Gather type information.
  $content_type = content_types($type_name);

  // The content module stops building the form if the type has no fields.
  if (empty($content_type['fields'])) {
    return;
  }
  $groups = array();
  $groups = fieldgroup_groups($type_name);
  $contexts = content_build_modes($contexts_selector);
  $all_contexts = content_build_modes();

  // Multigroups, extra values.
  $label_options = array(
    'above' => t('Above'),
    'hidden' => t('<Hidden>'),
  );
  $options = array(
    'simple' => t('Simple'),
    'fieldset' => t('Fieldset'),
    'fieldset_collapsible' => t('Fieldset - collapsible'),
    'fieldset_collapsed' => t('Fieldset - collapsed'),
    'hr' => t('Horizontal line'),
    'table-single' => t('Table - Single column'),
    'table-multiple' => t('Table - Multiple columns'),
    'ul' => t('Unordered List'),
  );
  foreach ($groups as $group_name => $group) {
    if ($group['group_type'] != 'multigroup') {
      continue;
    }
    $subgroup_settings = isset($group['settings']['multigroup']['subgroup']) ? $group['settings']['multigroup']['subgroup'] : array();
    $subgroup_name = $group_name . '_subgroup';
    $form['#fields'] = array_merge(array(
      $subgroup_name,
    ), $form['#fields']);
    $form[$subgroup_name] = array(
      'human_name' => array(
        '#value' => t('[Subgroup format]'),
      ),
      'weight' => array(
        '#type' => 'value',
        '#value' => -20,
      ),
      'parent' => array(
        '#type' => 'value',
        '#value' => $group_name,
      ),
      'subgroup' => array(
        '#type' => 'value',
        '#value' => 1,
      ),
    );
    if ($contexts_selector == 'basic') {
      $form[$subgroup_name]['label'] = array(
        '#type' => 'select',
        '#options' => $label_options,
        '#default_value' => isset($subgroup_settings['label']) ? $subgroup_settings['label'] : 'above',
      );
    }

    // Allow a format selection for contexts on the current tab.
    // Store other contexts as hidden values so they don't get lost.
    foreach ($all_contexts as $key => $title) {
      if (array_key_exists($key, $contexts)) {
        $form[$subgroup_name][$key]['format'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => isset($subgroup_settings[$key]['format']) ? $subgroup_settings[$key]['format'] : 'fieldset',
        );
        $form[$subgroup_name][$key]['exclude'] = array(
          '#type' => 'value',
          '#value' => 0,
        );
      }
      else {
        $form[$subgroup_name][$key]['format'] = array(
          '#type' => 'hidden',
          '#value' => isset($subgroup_settings[$key]['format']) ? $subgroup_settings[$key]['format'] : 'fieldset',
        );
        $form[$subgroup_name][$key]['exclude'] = array(
          '#type' => 'value',
          '#value' => 0,
        );
      }
    }
  }
  $form['#submit'] = array_merge(array(
    'content_multigroup_display_overview_form_submit',
  ), $form['#submit']);
}