function linked_field_field_formatter_settings_summary_alter in Linked Field 8
Same name and namespace in other branches
- 7 linked_field.module \linked_field_field_formatter_settings_summary_alter()
Implements hook_field_formatter_settings_summary_alter().
Parameters
array $summary: An array of summary messages.
array $context: An associative array.
File
- ./
linked_field.module, line 26 - Main file of Linked Field module.
Code
function linked_field_field_formatter_settings_summary_alter(array &$summary, array $context) {
/** @var \Drupal\linked_field\LinkedFieldManager $manager */
$manager = \Drupal::service('linked_field.manager');
$available_attributes = $manager
->getAttributes();
$settings = $context['formatter']
->getThirdPartySettings('linked_field');
$summary_items = [];
// Break when no linked field settings were found.
if (!$settings) {
return;
}
// Normalize the settings.
$linked = $settings['linked'];
$type = !isset($settings['type']) ? 'custom' : $settings['type'];
$destination = $settings['destination'];
$text = isset($settings['advanced']['text']) ? $settings['advanced']['text'] : '';
if (!$linked) {
return;
}
// Display field name instead of machine-readable name.
if ($type == 'field') {
$entity_type = $context['field_definition']
->getTargetEntityTypeId();
// @TODO: How could we get bundle for base fields?
$bundle = $context['field_definition']
->getTargetBundle();
$fields = $manager
->getDestinationFields($entity_type, $bundle);
if (isset($fields[$destination])) {
$destination = $fields[$destination];
}
}
$summary_items[] = t('Destination: <code>@destination</code>', [
'@destination' => $destination,
]);
foreach ($available_attributes as $attribute => $info) {
if (empty($settings['advanced'][$attribute])) {
continue;
}
// Provide default label / description for attributes.
if (!$info['label']) {
$info['label'] = str_replace('-', ' ', Unicode::ucfirst($attribute));
}
$summary_items[] = t('@label: <code>@attribute</code>', [
'@label' => $info['label'],
'@attribute' => $settings['advanced'][$attribute],
]);
}
if ($text) {
$summary_items[] = t('Text: @text', [
'@text' => $text,
]);
}
if ($linked && $destination) {
$list = [
'#theme' => 'item_list',
'#items' => $summary_items,
'#title' => 'Linked Field',
];
$summary[] = $list;
}
}