You are here

function eva_entity_extra_field_info in EVA: Entity Views Attachment 8.2

Same name and namespace in other branches
  1. 8 eva.module \eva_entity_extra_field_info()

Implements hook_entity_extra_field_info().

File

./eva.module, line 17
Module implementing EVA extra field and views display.

Code

function eva_entity_extra_field_info() {
  $extra = [];
  $views = \Drupal::service('eva.view_displays')
    ->get();
  foreach ($views as $entity => $data) {
    foreach ($data as $view) {

      // If no bundles are configured, apply to all bundles.
      $bundles = !empty($view['bundles']) ? $view['bundles'] : array_keys(\Drupal::service('entity_type.bundle.info')
        ->getBundleInfo($entity));
      foreach ($bundles as $bundle) {
        $extra[$entity][$bundle]['display'][$view['name'] . '_' . $view['display']] = [
          'label' => empty($view['title']) ? $view['name'] : $view['title'],
          'description' => $view['title'],
          'weight' => 10,
        ];

        // Provide a separate extra field for the exposed form if there is any.
        if ($view['uses exposed']) {
          $extra[$entity][$bundle]['display'][$view['name'] . '_' . $view['display'] . '_form'] = [
            'label' => (empty($view['title']) ? $view['name'] : $view['title']) . ' (' . t('Exposed form') . ')',
            'description' => t('The exposed filter form of the view.'),
            'weight' => 9,
          ];
        }
      }
    }
  }
  return $extra;
}