You are here

function sharerich_form_field_ui_display_overview_form_alter in Sharerich 7.3

Same name and namespace in other branches
  1. 7.2 sharerich.module \sharerich_form_field_ui_display_overview_form_alter()

Implements hook_form_FORM_ID_alter().

Add configuration form for sharerich field extras.

File

./sharerich.module, line 634

Code

function sharerich_form_field_ui_display_overview_form_alter(&$form, &$form_state, $form_id) {

  // Modified part copy from field_ui_display_overview_form() at /modules/field_ui/field_ui.admin.inc
  // Base button element for the various formatter settings actions.
  foreach (_sharerich_get_field_names($form['fields']) as $sharerich_id => $field_name) {
    $base_button = array(
      '#submit' => array(
        'field_ui_display_overview_multistep_submit',
      ),
      '#ajax' => array(
        'callback' => 'field_ui_display_overview_multistep_js',
        'wrapper' => 'field-display-overview-wrapper',
        'effect' => 'fade',
      ),
      '#field_name' => $field_name,
    );
    $summary = isset($form_state['formatter_settings'][$field_name]) ? $form_state['formatter_settings'][$field_name] : NULL;
    if ($form_state['formatter_settings_edit'] == $field_name) {
      $form['fields'][$field_name]['#region_callback'] = 'field_ui_display_overview_row_region';
      $form['fields'][$field_name]['format']['#cell_attributes'] = array(
        'colspan' => 3,
      );
      $form['fields'][$field_name]['format']['settings_edit_form'] = array(
        '#type' => 'container',
        '#attributes' => array(
          'class' => array(
            'field-formatter-settings-edit-form',
          ),
        ),
        '#parents' => array(
          'fields',
          $field_name,
          'settings_edit_form',
        ),
        'label' => array(
          '#markup' => t('Format settings:') . ' <span class="formatter-name">' . t('Sharerich #!num', array(
            '!num' => $sharerich_id,
          )) . '</span>',
        ),
        'settings' => sharerich_field_formatter_settings_form($form, $sharerich_id, $field_name, $summary),
        'actions' => array(
          '#type' => 'actions',
          'save_settings' => $base_button + array(
            '#type' => 'submit',
            '#name' => 'sharerich_' . $sharerich_id . '_formatter_settings_update',
            '#value' => t('Update'),
            '#op' => 'update',
          ),
          'cancel_settings' => $base_button + array(
            '#type' => 'submit',
            '#name' => 'sharerich_' . $sharerich_id . '_formatter_settings_cancel',
            '#value' => t('Cancel'),
            '#op' => 'cancel',
            // Do not check errors for the 'Cancel' button, but make sure we
            // get the value of the 'formatter type' select.
            '#limit_validation_errors' => array(
              array(
                'fields',
                $field_name,
                'type',
              ),
            ),
          ),
        ),
      );
      $form['fields'][$field_name]['#attributes']['class'][] = 'field-formatter-settings-editing';
    }
    elseif (variable_get('sharerich_node_' . $form['#bundle'], FALSE) && isset($form['#entity_type']) && in_array($form['#entity_type'], array(
      'node',
    ))) {
      $form['fields'][$field_name]['#region_callback'] = 'field_ui_display_overview_row_region';
      $form['fields'][$field_name]['settings_summary'] = array(
        '#markup' => '<div class="field-formatter-summary">' . sharerich_field_formatter_settings_summary($form, $sharerich_id, $field_name, $summary) . '</div>',
        '#cell_attributes' => array(
          'class' => array(
            'field-formatter-summary-cell',
          ),
        ),
      );
      $form['fields'][$field_name]['settings_edit'] = $base_button + array(
        '#type' => 'image_button',
        '#name' => 'sharerich_' . $sharerich_id . '_formatter_settings_edit',
        '#src' => 'misc/configure.png',
        '#attributes' => array(
          'class' => array(
            'field-formatter-settings-edit',
          ),
          'alt' => t('Edit'),
        ),
        '#op' => 'edit',
        // Do not check errors for the 'Edit' button, but make sure we get
        // the value of the 'formatter type' select.
        '#limit_validation_errors' => array(
          array(
            'fields',
            $field_name,
            'type',
          ),
        ),
        '#prefix' => '<div class="field-formatter-settings-edit-wrapper">',
        '#suffix' => '</div>',
      );
    }
    if (empty($form_state['formatter_settings'][$field_name])) {
      $bundle_settings = field_bundle_settings($form['#entity_type'], $form['#bundle']);
      if (isset($bundle_settings['extra_fields']['display'][$field_name][$form['#view_mode']]['settings'])) {
        $form_state['formatter_settings'][$field_name] = $bundle_settings['extra_fields']['display'][$field_name][$form['#view_mode']]['settings'];
      }
      else {
        $display_defaults = sharerich_field_extra_fields($sharerich_id);
        $form_state['formatter_settings'][$field_name] = $display_defaults['extra_fields']['display'][$field_name]['settings'];
      }
    }
  }
  $form['#submit'][] = '_sharerich_display_overview_form_submit';
}