class EntityQueueListBuilder in Entityqueue 8
Defines a class that builds a listing of entity queues.
Hierarchy
- class \Drupal\Core\Entity\EntityHandlerBase uses DependencySerializationTrait, StringTranslationTrait
- class \Drupal\Core\Entity\EntityListBuilder implements EntityHandlerInterface, EntityListBuilderInterface uses MessengerTrait, RedirectDestinationTrait
- class \Drupal\Core\Config\Entity\ConfigEntityListBuilder
- class \Drupal\entityqueue\EntityQueueListBuilder
- class \Drupal\Core\Config\Entity\ConfigEntityListBuilder
- class \Drupal\Core\Entity\EntityListBuilder implements EntityHandlerInterface, EntityListBuilderInterface uses MessengerTrait, RedirectDestinationTrait
Expanded class hierarchy of EntityQueueListBuilder
File
- src/
EntityQueueListBuilder.php, line 16
Namespace
Drupal\entityqueueView source
class EntityQueueListBuilder extends ConfigEntityListBuilder {
/**
* The entity manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* {@inheritdoc}
*/
protected $limit = FALSE;
/**
* Constructs a new class instance.
*
* @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
* The entity type definition.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity manager.
*/
public function __construct(EntityTypeInterface $entity_type, EntityTypeManagerInterface $entity_type_manager) {
parent::__construct($entity_type, $entity_type_manager
->getStorage($entity_type
->id()));
$this->entityTypeManager = $entity_type_manager;
}
/**
* {@inheritdoc}
*/
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
return new static($entity_type, $container
->get('entity_type.manager'));
}
/**
* {@inheritdoc}
*/
public function load() {
$entities = [
'enabled' => [],
'disabled' => [],
];
/** @var \Drupal\entityqueue\EntityQueueInterface $entity */
foreach (parent::load() as $entity) {
// Don't display queues which can not be edited by the user.
if (!$entity
->access('update')) {
continue;
}
if ($entity
->status()) {
$entities['enabled'][] = $entity;
}
else {
$entities['disabled'][] = $entity;
}
}
return $entities;
}
/**
* {@inheritdoc}
*/
public function buildHeader() {
$header['label'] = $this
->t('Queue name');
$header['target_type'] = $this
->t('Target type');
$header['handler'] = $this
->t('Queue type');
$header['items'] = $this
->t('Items');
return $header + parent::buildHeader();
}
/**
* {@inheritdoc}
*/
public function buildRow(EntityInterface $entity) {
assert($entity instanceof EntityQueueInterface);
$row = [
'data' => [
'label' => $entity
->label(),
'target_type' => $this->entityTypeManager
->getDefinition($entity
->getTargetEntityTypeId())
->getLabel(),
'handler' => $entity
->getHandlerPlugin()
->getPluginDefinition()['title'],
'items' => $this
->getQueueItemsStatus($entity),
] + parent::buildRow($entity),
'title' => $this
->t('Machine name: @name', [
'@name' => $entity
->id(),
]),
];
return $row;
}
/**
* {@inheritdoc}
*/
public function render() {
$entities = $this
->load();
$build['#type'] = 'container';
$build['#attributes']['id'] = 'entity-queue-list';
$build['#attached']['library'][] = 'core/drupal.ajax';
$build['#cache'] = [
'contexts' => Cache::mergeContexts($this->entityType
->getListCacheContexts(), [
'user.permissions',
]),
'tags' => $this->entityType
->getListCacheTags(),
];
$build['enabled']['heading']['#markup'] = '<h2>' . $this
->t('Enabled', [], [
'context' => 'Plural',
]) . '</h2>';
$build['disabled']['heading']['#markup'] = '<h2>' . $this
->t('Disabled', [], [
'context' => 'Plural',
]) . '</h2>';
foreach ([
'enabled',
'disabled',
] as $status) {
$build[$status]['#type'] = 'container';
$build[$status]['#attributes'] = [
'class' => [
'entity-queue-list-section',
$status,
],
];
$build[$status]['table'] = [
'#type' => 'table',
'#attributes' => [
'class' => [
'entity-queue-listing-table',
],
],
'#header' => $this
->buildHeader(),
'#rows' => [],
'#cache' => [
'contexts' => $this->entityType
->getListCacheContexts(),
'tags' => $this->entityType
->getListCacheTags(),
],
];
foreach ($entities[$status] as $entity) {
$build[$status]['table']['#rows'][$entity
->id()] = $this
->buildRow($entity);
}
}
// @todo Use a placeholder for the entity label if this is abstracted to
// other entity types.
$build['enabled']['table']['#empty'] = $this
->t('There are no enabled queues.');
$build['disabled']['table']['#empty'] = $this
->t('There are no disabled queues.');
return $build;
}
/**
* {@inheritdoc}
*/
public function getDefaultOperations(EntityInterface $entity) {
assert($entity instanceof EntityQueueInterface);
$operations = parent::getDefaultOperations($entity);
if (isset($operations['edit'])) {
$operations['edit']['title'] = $this
->t('Configure');
}
// Add AJAX functionality to enable/disable operations.
foreach ([
'enable',
'disable',
] as $op) {
if (isset($operations[$op])) {
$operations[$op]['url'] = $entity
->toUrl($op);
// Enable and disable operations should use AJAX.
$operations[$op]['attributes']['class'][] = 'use-ajax';
}
}
// Allow queue handlers to add their own operations.
$operations += $entity
->getHandlerPlugin()
->getQueueListBuilderOperations();
return $operations;
}
/**
* Returns the number of items in a subqueue or the number of subqueues.
*
* @param \Drupal\entityqueue\EntityQueueInterface $queue
* An entity queue object.
*
* @return string
* The number of items in a subqueue or the number of subqueues.
*/
protected function getQueueItemsStatus(EntityQueueInterface $queue) {
$handler = $queue
->getHandlerPlugin();
$items = NULL;
if ($handler
->supportsMultipleSubqueues()) {
$subqueues_count = $this->entityTypeManager
->getStorage('entity_subqueue')
->getQuery()
->condition('queue', $queue
->id(), '=')
->count()
->execute();
$items = $this
->formatPlural($subqueues_count, '@count subqueue', '@count subqueues');
}
else {
$subqueue = EntitySubqueue::load($queue
->id());
$items = $this
->formatPlural(count($subqueue->items), '@count item', '@count items');
}
return $items;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
EntityHandlerBase:: |
protected | property | The module handler to invoke hooks on. | 2 |
EntityHandlerBase:: |
protected | function | Gets the module handler. | 2 |
EntityHandlerBase:: |
public | function | Sets the module handler for this handler. | |
EntityListBuilder:: |
protected | property | Information about the entity type. | |
EntityListBuilder:: |
protected | property | The entity type ID. | |
EntityListBuilder:: |
protected | property | The entity storage class. | 1 |
EntityListBuilder:: |
public | function | Builds a renderable list of operation links for the entity. | 2 |
EntityListBuilder:: |
protected | function | Ensures that a destination is present on the given URL. | |
EntityListBuilder:: |
protected | function | Loads entity IDs using a pager sorted by the entity id. | 4 |
EntityListBuilder:: |
protected | function | Gets the label of an entity. | |
EntityListBuilder:: |
public | function |
Provides an array of information to build a list of operation links. Overrides EntityListBuilderInterface:: |
2 |
EntityListBuilder:: |
public | function |
Gets the entity storage. Overrides EntityListBuilderInterface:: |
|
EntityListBuilder:: |
protected | function | Gets the title of the page. | 1 |
EntityQueueListBuilder:: |
protected | property | The entity manager. | |
EntityQueueListBuilder:: |
protected | property |
The number of entities to list per page, or FALSE to list all entities. Overrides EntityListBuilder:: |
|
EntityQueueListBuilder:: |
public | function |
Builds the header row for the entity listing. Overrides EntityListBuilder:: |
|
EntityQueueListBuilder:: |
public | function |
Builds a row for an entity in the entity listing. Overrides EntityListBuilder:: |
|
EntityQueueListBuilder:: |
public static | function |
Instantiates a new instance of this entity handler. Overrides EntityListBuilder:: |
|
EntityQueueListBuilder:: |
public | function |
Gets this list's default operations. Overrides ConfigEntityListBuilder:: |
|
EntityQueueListBuilder:: |
protected | function | Returns the number of items in a subqueue or the number of subqueues. | |
EntityQueueListBuilder:: |
public | function |
Loads entities of this type from storage for listing. Overrides ConfigEntityListBuilder:: |
|
EntityQueueListBuilder:: |
public | function |
Builds the entity listing as renderable array for table.html.twig. Overrides EntityListBuilder:: |
|
EntityQueueListBuilder:: |
public | function |
Constructs a new class instance. Overrides EntityListBuilder:: |
|
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |