ConfigSplitEntityListBuilder.php in Configuration Split 8
File
src/ConfigSplitEntityListBuilder.php
View source
<?php
namespace Drupal\config_split;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Config\Entity\ConfigEntityListBuilder;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class ConfigSplitEntityListBuilder extends ConfigEntityListBuilder {
protected $configFactory;
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
return new static($entity_type, $container
->get('entity_type.manager')
->getStorage($entity_type
->id()), $container
->get('config.factory'));
}
public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, ConfigFactoryInterface $config_factory) {
parent::__construct($entity_type, $storage);
$this->configFactory = $config_factory;
}
public function buildHeader() {
$header['label'] = $this
->t('Configuration Split setting');
$header['id'] = $this
->t('Machine name');
$header['description'] = $this
->t('Description');
$header['status'] = $this
->t('Status');
return $header + parent::buildHeader();
}
public function buildRow(EntityInterface $entity) {
$row['label'] = $entity
->toLink();
$row['id'] = $entity
->id();
$config = $this->configFactory
->get('config_split.config_split.' . $entity
->id());
$row['description'] = $config
->get('description');
$row['status'] = $config
->get('status') ? 'active' : 'inactive';
if ($config
->get('status') != $entity
->status()) {
$row['status'] .= ' (overwritten)';
}
return $row + parent::buildRow($entity);
}
public function getDefaultOperations(EntityInterface $entity) {
$operations = parent::getDefaultOperations($entity);
if (!$entity
->get('status') && $entity
->hasLinkTemplate('enable')) {
$operations['enable'] = [
'title' => $this
->t('Enable'),
'weight' => 40,
'url' => $entity
->toUrl('enable'),
];
}
elseif ($entity
->hasLinkTemplate('disable')) {
$operations['disable'] = [
'title' => $this
->t('Disable'),
'weight' => 50,
'url' => $entity
->toUrl('disable'),
];
}
return $operations;
}
}