EntitySubqueueListBuilder.php in Entityqueue 8
File
src/EntitySubqueueListBuilder.php
View source
<?php
namespace Drupal\entityqueue;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\Core\Entity\EntityTypeInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class EntitySubqueueListBuilder extends EntityListBuilder {
protected $queueId;
protected $entityRepository;
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
$instance = parent::createInstance($container, $entity_type);
$instance->entityRepository = $container
->get('entity.repository');
return $instance;
}
public function setQueueId($queue_id) {
$this->queueId = $queue_id;
return $this;
}
public function load() {
$entities = parent::load();
foreach ($entities as $key => $entity) {
$entities[$key] = $this->entityRepository
->getTranslationFromContext($entity);
}
return $entities;
}
protected function getEntityIds() {
$query = $this
->getStorage()
->getQuery()
->sort($this->entityType
->getKey('id'));
if ($this->limit) {
$query
->pager($this->limit);
}
if ($this->queueId) {
$query
->condition($this->entityType
->getKey('bundle'), $this->queueId);
}
return $query
->execute();
}
public function buildHeader() {
$header['label'] = $this
->t('Subqueue');
$header['items'] = $this
->t('Items');
return $header + parent::buildHeader();
}
public function buildRow(EntityInterface $entity) {
$row['label'] = $entity
->label();
$row['items'] = $this
->formatPlural(count($entity->items), '@count item', '@count items');
return $row + parent::buildRow($entity);
}
public function getDefaultOperations(EntityInterface $entity) {
$operations = parent::getDefaultOperations($entity);
$operations['edit']['title'] = $this
->t('Edit items');
$queue = $entity
->getQueue();
if ($queue
->access('update') && $queue
->hasLinkTemplate('edit-form')) {
$operations['configure'] = [
'title' => $this
->t('Configure queue'),
'weight' => 10,
'url' => $this
->ensureDestination($queue
->toUrl('edit-form')),
];
}
return $operations;
}
}