function _ds_field_ui_core_fields in Display Suite 7.2
Same name and namespace in other branches
- 8.4 includes/field_ui.inc \_ds_field_ui_core_fields()
- 8.2 includes/field_ui.inc \_ds_field_ui_core_fields()
- 8.3 includes/field_ui.inc \_ds_field_ui_core_fields()
Alter the core field on the the Field UI form.
Parameters
$entity_type: The name of the entity type.
$bundle: The name of the bundle
$view_mode: The name of the view_mode
$form: A collection of form properties.
$form_state: A collection of form_state properties.
1 call to _ds_field_ui_core_fields()
- ds_field_ui_fields_layouts in includes/
ds.field_ui.inc - Adds the Display Suite fields and layouts to the form.
File
- includes/
ds.field_ui.inc, line 2224 - Field UI functions for Display Suite.
Code
function _ds_field_ui_core_fields($entity_type, $bundle, $view_mode, &$form, &$form_state) {
$entity_type = $form['#entity_type'];
$bundle = $form['#bundle'];
$view_mode = $form['#view_mode'];
// Gather type information.
$instances = field_info_instances($entity_type, $bundle);
$field_types = field_info_field_types();
$extra_fields = field_info_extra_fields($entity_type, $bundle, 'display');
$table =& $form['fields'];
// Regions for fields.
$field_regions = array();
if (isset($form['#ds_layout']->settings['fields'])) {
$field_regions = $form['#ds_layout']->settings['fields'];
}
// Field rows.
foreach ($instances as $key => $instance) {
// Don't show summary or cogwheel in hidden region.
if (_ds_field_ui_check_hidden_region($key, $form_state, $field_regions)) {
$table[$key]['settings_summary']['#markup'] = '';
$table[$key]['settings_edit'] = array();
continue;
}
$field = field_info_field($instance['field_name']);
$display = $instance['display'][$view_mode];
// Check the currently selected formatter, and merge persisted values for
// formatter settings.
if (isset($form_state['values']['fields'][$key]['type'])) {
$formatter_type = $form_state['values']['fields'][$key]['type'];
}
else {
$formatter_type = $display['type'];
}
$settings = $display['settings'];
if (isset($form_state['formatter_settings'][$key])) {
$settings = array_merge($settings, $form_state['formatter_settings'][$key]);
}
$settings += field_info_formatter_settings($formatter_type);
// Import field settings and merge with Field API settings.
if (!isset($form_state['formatter_settings'][$key]) && !empty($form['#field_settings'][$key]['formatter_settings']['ft'])) {
$form_state['formatter_settings'][$key] = $settings;
$form_state['formatter_settings'][$key]['ft'] = $form['#field_settings'][$key]['formatter_settings']['ft'];
}
// Change default value or Field API format, so we can change the right
// settings form when clicking on the cogwheel.
$form['fields'][$key]['format']['type']['#default_value'] = $formatter_type;
$instance['display'][$view_mode]['type'] = $formatter_type;
$formatter = field_info_formatter_types($formatter_type);
$instance['display'][$view_mode]['module'] = $formatter['module'];
$instance['display'][$view_mode]['settings'] = $settings;
// Base button element for the various formatter settings actions.
$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' => $key,
);
if ($form_state['formatter_settings_edit'] == $key) {
$formatter_type = $form_state['complete form']['fields'][$key]['format']['type']['#default_value'];
$formatter = field_info_formatter_types($formatter_type);
$instance['display'][$view_mode]['type'] = $formatter_type;
$instance['display'][$view_mode]['module'] = $formatter['module'];
$instance['display'][$view_mode]['settings'] = $settings + field_info_formatter_settings($formatter_type);
$function = $formatter['module'] . '_field_formatter_settings_form';
// Add the default formatter settings if any.
$settings_form = array();
if (function_exists($function)) {
$settings_form = $function($field, $instance, $view_mode, $form, $form_state);
}
// Add the field templates form when needed
if (module_exists('ds_extras') && variable_get('ds_extras_field_template', FALSE)) {
$context = array(
'instance' => $instance,
'view_mode' => $view_mode,
);
// Load the form
module_load_include('inc', 'ds_extras', 'includes/ds_extras.admin');
if (!is_array($settings_form)) {
$settings_form = array();
}
ds_extras_field_template_settings_form($settings_form, $form_state, $context);
}
// Allow other modules to alter the formatter settings form.
$context = array(
'module' => $formatter['module'],
'formatter' => $formatter,
'field' => $field,
'instance' => $instance,
'view_mode' => $view_mode,
'form' => $form,
'form_state' => $form_state,
);
drupal_alter('field_formatter_settings_form', $settings_form, $context);
if ($settings_form) {
$table[$key]['format']['#cell_attributes'] = array(
'colspan' => 3,
);
$table[$key]['format']['settings_edit_form'] = array(
'#type' => 'container',
'#attributes' => array(
'class' => array(
'field-formatter-settings-edit-form',
),
),
'#parents' => array(
'fields',
$key,
'settings_edit_form',
),
'label' => array(
'#markup' => t('Format settings:') . ' <span class="formatter-name">' . $formatter['label'] . '</span>',
),
'settings' => $settings_form,
'actions' => array(
'#type' => 'actions',
'save_settings' => $base_button + array(
'#type' => 'submit',
'#name' => $key . '_formatter_settings_update',
'#value' => t('Update'),
'#op' => 'update',
),
'cancel_settings' => $base_button + array(
'#type' => 'submit',
'#name' => $key . '_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',
$key,
'type',
),
),
),
),
);
$table[$key]['#attributes']['class'][] = 'field-formatter-settings-editing';
$table[$key]['format']['type']['#attributes']['class'] = array(
'element-invisible',
);
}
}
else {
$summary = module_invoke($formatter['module'], 'field_formatter_settings_summary', $field, $instance, $view_mode);
// Allow other modules to alter the formatter summary.
$context = array(
'module' => $formatter['module'],
'formatter' => $formatter,
'field' => $field,
'instance' => $instance,
'view_mode' => $view_mode,
);
drupal_alter('field_formatter_settings_summary', $summary, $context);
if (module_exists('ds_extras') && variable_get('ds_extras_field_template', FALSE)) {
module_load_include('inc', 'ds_extras', 'includes/ds_extras.admin');
// Field template summary
$functions = module_invoke_all('ds_field_theme_functions_info');
$default_field_function = variable_get('ft-default', 'theme_field');
$field_function = isset($form_state['formatter_settings'][$key]['ft']['func']) ? $form_state['formatter_settings'][$key]['ft']['func'] : $default_field_function;
if (!empty($summary)) {
$summary .= '<br />';
}
$summary .= 'Field template: ' . check_plain($functions[$field_function]) . '<br />';
}
if (!empty($summary)) {
$table[$key]['settings_summary'] = array();
$table[$key]['settings_edit'] = array();
$table[$key]['settings_summary'] = array(
'#markup' => '<div class="field-formatter-summary">' . $summary . '</div>',
'#cell_attributes' => array(
'class' => array(
'field-formatter-summary-cell',
),
),
);
// Render the other part of the summary
ds_field_row_form_format_summary_construct($table, $key);
}
}
}
}