function menu_entity_index_form_alter in Menu Entity Index 8
Implements hook_form_alter().
File
- ./
menu_entity_index.module, line 36 - Main Menu Entity Index module file.
Code
function menu_entity_index_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$form_object = $form_state
->getFormObject();
if (!$form_object || !$form_object instanceof EntityForm) {
// We only care about entity forms.
return;
}
elseif ($form_object
->getOperation() != 'edit') {
// New entities are always unreferenced.
return;
}
$tracker = \Drupal::service('menu_entity_index.tracker');
$entity = $form_state
->getFormObject()
->getEntity();
if (!in_array($entity
->getEntityTypeId(), $tracker
->getTrackedEntityTypes())) {
// Tracking is not enabled for this entity type.
return;
}
// Add reference tracker pseudo-field.
$data = $tracker
->getHostData($entity);
$form['menu_entity_index'] = [
'#type' => 'details',
'#title' => \Drupal::translation()
->formatPlural(count($data), 'Referenced by 1 menu link', 'Referenced by @count menu links'),
'#open' => FALSE,
'#access' => \Drupal::currentUser()
->hasPermission('view menu_entity_index form field'),
];
$form['menu_entity_index']['table'] = [
'#type' => 'table',
'#header' => [
t('Menu'),
t('Level'),
t('Label'),
t('Language'),
],
'#empty' => t('- None -'),
];
foreach ($data as $row) {
$form['menu_entity_index']['table'][] = [
'menu' => [
'#markup' => $row['menu_name'],
],
'level' => [
'#markup' => $row['level'],
],
'label' => empty($row['link']) ? [
'#markup' => $row['label'],
] : [
'#type' => 'link',
'#title' => $row['label'],
'#url' => $row['link'],
],
'language' => [
'#markup' => $row['language'],
],
];
}
}