entity_generic-8.x-3.x-dev/src/GenericViewsData.php
src/GenericViewsData.php
<?php
namespace Drupal\entity_generic;
use Drupal\views\EntityViewsData;
/**
* Provides the views data for the entity type.
*/
class GenericViewsData extends EntityViewsData {
/**
* {@inheritdoc}
*/
public function getViewsData() {
$data = parent::getViewsData();
$table_name = $this->entityType->getDataTable() ?: $this->entityType->getBaseTable();
// Filter by name using autocomplete.
$key = $this->entityType->getKey('id') . '_autocomplete';
$data[$table_name][$key]['real field'] = $this->entityType->getKey('id');
$data[$table_name][$key]['filter']['id'] = 'entity_generic_id_autocomplete';
$data[$table_name][$key]['filter']['title'] = $this->t('ID (autocomplete)');
$data[$table_name][$key]['filter']['help'] = $this->t('The entity ID. Uses an autocomplete widget to find an entity, the actual filter uses the resulting entity ID.');
// Filter by name using select.
$key = $this->entityType->getKey('id') . '_select';
$data[$table_name][$key]['real field'] = $this->entityType->getKey('id');
$data[$table_name][$key]['filter']['id'] = 'entity_generic_id_select';
$data[$table_name][$key]['filter']['title'] = $this->t('ID (select)');
$data[$table_name][$key]['filter']['help'] = $this->t('The entity ID. Uses a select widget to find an entity, the actual filter uses the resulting entity ID.');
return $data;
}
/**
* {@inheritdoc}
*/
protected function addEntityLinks(array &$data) {
parent::addEntityLinks($data);
$entity_type_id = $this->entityType->id();
$t_arguments = ['@entity_type_label' => $this->entityType->getLabel()];
if ($this->entityType->hasLinkTemplate('edit-modal-form')) {
$data['edit_modal_' . $entity_type_id] = [
'field' => [
'title' => $this->t('Link to modal edit @entity_type_label', $t_arguments),
'help' => $this->t('Provide an edit link for modal form to the @entity_type_label.', $t_arguments),
'id' => 'entity_generic_link_edit_modal',
],
];
}
if ($this->entityType->hasLinkTemplate('delete-modal-form')) {
$data['delete_modal_' . $entity_type_id] = [
'field' => [
'title' => $this->t('Link to modal delete @entity_type_label', $t_arguments),
'help' => $this->t('Provide a delete link for modal form to the @entity_type_label.', $t_arguments),
'id' => 'entity_generic_link_delete_modal',
],
];
}
if ($this->entityType->hasLinkTemplate('toggle-status-modal-form')) {
$data['toggle_status_modal_' . $entity_type_id] = [
'field' => [
'title' => $this->t('Link to modal toggle status @entity_type_label', $t_arguments),
'help' => $this->t('Provide a toggle status link for modal form to the @entity_type_label.', $t_arguments),
'id' => 'entity_generic_toggle_status_modal',
],
];
}
}
}
