View source
<?php
namespace Drupal\commerce_wishlist;
use Drupal\Core\Datetime\DateFormatter;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Url;
use Symfony\Component\DependencyInjection\ContainerInterface;
class WishlistListBuilder extends EntityListBuilder {
protected $dateFormatter;
protected $entityTypeManager;
public function __construct(EntityTypeInterface $entity_type, EntityTypeManagerInterface $entity_type_manager, DateFormatter $date_formatter) {
parent::__construct($entity_type, $entity_type_manager
->getStorage($entity_type
->id()));
$this->entityTypeManager = $entity_type_manager;
$this->dateFormatter = $date_formatter;
}
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
return new static($entity_type, $container
->get('entity_type.manager'), $container
->get('date.formatter'));
}
public function buildHeader() {
$header = [
'name' => [
'data' => $this
->t('Name'),
'class' => [
RESPONSIVE_PRIORITY_LOW,
],
],
'type' => [
'data' => $this
->t('Type'),
'class' => [
RESPONSIVE_PRIORITY_MEDIUM,
],
],
'owner' => [
'data' => $this
->t('Owner'),
'class' => [
RESPONSIVE_PRIORITY_LOW,
],
],
'created' => [
'data' => $this
->t('Created'),
'class' => [
RESPONSIVE_PRIORITY_LOW,
],
],
'changed' => [
'data' => $this
->t('Changed'),
'class' => [
RESPONSIVE_PRIORITY_LOW,
],
],
];
return $header + parent::buildHeader();
}
public function buildRow(EntityInterface $entity) {
$wishlist_type_storage = $this->entityTypeManager
->getStorage('commerce_wishlist_type');
$wishlist_type = $wishlist_type_storage
->load($entity
->bundle());
$row = [
'name' => $entity
->label(),
'type' => $wishlist_type
->label(),
'owner' => [
'data' => [
'#theme' => 'username',
'#account' => $entity
->getOwner(),
],
],
'created' => $this->dateFormatter
->format($entity
->getCreatedTime(), 'short'),
'changed' => $this->dateFormatter
->format($entity
->getChangedTime(), 'short'),
];
return $row + parent::buildRow($entity);
}
protected function getDefaultOperations(EntityInterface $entity) {
$operations = parent::getDefaultOperations($entity);
if ($entity
->access('update')) {
$operations['items'] = [
'title' => $this
->t('Items'),
'url' => new Url('entity.commerce_wishlist_item.collection', [
'commerce_wishlist' => $entity
->id(),
]),
];
}
return $operations;
}
}