Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
CRAP | |
0.00% |
0 / 59 |
| EntityDisplayModeListBuilder | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
272 | |
0.00% |
0 / 59 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| createInstance | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
| buildHeader | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| buildRow | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| load | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
| render | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 35 |
|||
| isValidEntity | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\field_ui\EntityDisplayModeListBuilder. | |
| */ | |
| namespace Drupal\field_ui; | |
| use Drupal\Core\Config\Entity\ConfigEntityListBuilder; | |
| use Drupal\Core\Entity\EntityInterface; | |
| use Drupal\Core\Entity\EntityStorageInterface; | |
| use Drupal\Core\Entity\EntityTypeInterface; | |
| use Drupal\Core\Url; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| /** | |
| * Defines a class to build a listing of view mode entities. | |
| * | |
| * @see \Drupal\Core\Entity\Entity\EntityViewMode | |
| */ | |
| class EntityDisplayModeListBuilder extends ConfigEntityListBuilder { | |
| /** | |
| * All entity types. | |
| * | |
| * @var \Drupal\Core\Entity\EntityTypeInterface[] | |
| */ | |
| protected $entityTypes; | |
| /** | |
| * Constructs a new EntityDisplayModeListBuilder object. | |
| * | |
| * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | |
| * The entity type definition. | |
| * @param \Drupal\Core\Entity\EntityStorageInterface $storage | |
| * The entity storage class. | |
| * @param \Drupal\Core\Entity\EntityTypeInterface[] $entity_types | |
| * List of all entity types. | |
| */ | |
| public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, array $entity_types) { | |
| parent::__construct($entity_type, $storage); | |
| $this->entityTypes = $entity_types; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) { | |
| $entity_manager = $container->get('entity.manager'); | |
| return new static( | |
| $entity_type, | |
| $entity_manager->getStorage($entity_type->id()), | |
| $entity_manager->getDefinitions() | |
| ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function buildHeader() { | |
| $header['label'] = $this->t('Name'); | |
| return $header + parent::buildHeader(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function buildRow(EntityInterface $entity) { | |
| $row['label'] = $entity->label(); | |
| return $row + parent::buildRow($entity); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function load() { | |
| $entities = array(); | |
| foreach (parent::load() as $entity) { | |
| $entities[$entity->getTargetType()][] = $entity; | |
| } | |
| return $entities; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function render() { | |
| $build = array(); | |
| foreach ($this->load() as $entity_type => $entities) { | |
| if (!isset($this->entityTypes[$entity_type])) { | |
| continue; | |
| } | |
| // Filter entities. | |
| if (!$this->isValidEntity($entity_type)) { | |
| continue; | |
| } | |
| $table = array( | |
| '#prefix' => '<h2>' . $this->entityTypes[$entity_type]->getLabel() . '</h2>', | |
| '#type' => 'table', | |
| '#header' => $this->buildHeader(), | |
| '#rows' => array(), | |
| ); | |
| foreach ($entities as $entity) { | |
| if ($row = $this->buildRow($entity)) { | |
| $table['#rows'][$entity->id()] = $row; | |
| } | |
| } | |
| // Move content at the top. | |
| if ($entity_type == 'node') { | |
| $table['#weight'] = -10; | |
| } | |
| $short_type = str_replace(array('entity_', '_mode'), '', $this->entityTypeId); | |
| $table['#rows']['_add_new'][] = array( | |
| 'data' => array( | |
| '#type' => 'link', | |
| '#url' => Url::fromRoute($short_type == 'view' ? 'entity.entity_view_mode.add_form' : 'entity.entity_form_mode.add_form', ['entity_type_id' => $entity_type]), | |
| '#title' => $this->t('Add new %label @entity-type', array('%label' => $this->entityTypes[$entity_type]->getLabel(), '@entity-type' => $this->entityType->getLowercaseLabel())), | |
| ), | |
| 'colspan' => count($table['#header']), | |
| ); | |
| $build[$entity_type] = $table; | |
| } | |
| return $build; | |
| } | |
| /** | |
| * Filters entities based on their controllers. | |
| * | |
| * @param $entity_type | |
| * The entity type of the entity that needs to be validated. | |
| * | |
| * @return bool | |
| * TRUE if the entity has the correct controller, FALSE if the entity | |
| * doesn't has the correct controller. | |
| */ | |
| protected function isValidEntity($entity_type) { | |
| return $this->entityTypes[$entity_type]->get('field_ui_base_route') && $this->entityTypes[$entity_type]->hasViewBuilderClass(); | |
| } | |
| } |