Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
CRAP | |
0.00% |
0 / 46 |
| ConfigTranslationMapperList | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
240 | |
0.00% |
0 / 46 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| render | |
0.00% |
0 / 1 |
56 | |
0.00% |
0 / 13 |
|||
| anonymous function | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 4 |
|||
| buildRow | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| buildHeader | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| buildOperations | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\config_translation\Controller\ConfigTranslationMapperList. | |
| */ | |
| namespace Drupal\config_translation\Controller; | |
| use Drupal\config_translation\ConfigMapperInterface; | |
| use Drupal\Core\Controller\ControllerBase; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| /** | |
| * Defines the configuration translation mapper list. | |
| * | |
| * Groups all defined configuration mapper instances by weight. | |
| */ | |
| class ConfigTranslationMapperList extends ControllerBase { | |
| /** | |
| * A array of configuration mapper instances. | |
| * | |
| * @var \Drupal\config_translation\ConfigMapperInterface[] | |
| */ | |
| protected $mappers; | |
| /** | |
| * Constructs a new ConfigTranslationMapperList object. | |
| * | |
| * @param \Drupal\config_translation\ConfigMapperInterface[] $mappers | |
| * The configuration mapper manager. | |
| */ | |
| public function __construct(array $mappers) { | |
| $this->mappers = $mappers; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container) { | |
| return new static( | |
| $container->get('plugin.manager.config_translation.mapper')->getMappers() | |
| ); | |
| } | |
| /** | |
| * Builds the mappers as a renderable array for table.html.twig. | |
| * | |
| * @return array | |
| * Renderable array with config translation mappers. | |
| */ | |
| public function render() { | |
| $build = array( | |
| '#type' => 'table', | |
| '#header' => $this->buildHeader(), | |
| '#rows' => array(), | |
| ); | |
| $mappers = array(); | |
| foreach ($this->mappers as $mapper) { | |
| if ($row = $this->buildRow($mapper)) { | |
| $mappers[$mapper->getWeight()][] = $row; | |
| } | |
| } | |
| // Group by mapper weight and sort by label. | |
| ksort($mappers); | |
| foreach ($mappers as $weight => $mapper) { | |
| usort($mapper, function ($a, $b) { | |
| $a_title = (isset($a['label'])) ? $a['label'] : ''; | |
| $b_title = (isset($b['label'])) ? $b['label'] : ''; | |
| return strnatcasecmp($a_title, $b_title); | |
| }); | |
| $mappers[$weight] = $mapper; | |
| } | |
| foreach ($mappers as $mapper) { | |
| $build['#rows'] = array_merge($build['#rows'], $mapper); | |
| } | |
| return $build; | |
| } | |
| /** | |
| * Builds a row for a mapper in the mapper listing. | |
| * | |
| * @param \Drupal\config_translation\ConfigMapperInterface $mapper | |
| * The mapper. | |
| * | |
| * @return array | |
| * A render array structure of fields for this mapper. | |
| */ | |
| public function buildRow(ConfigMapperInterface $mapper) { | |
| $row['label'] = $mapper->getTypeLabel(); | |
| $row['operations']['data'] = $this->buildOperations($mapper); | |
| return $row; | |
| } | |
| /** | |
| * Builds the header row for the mapper listing. | |
| * | |
| * @return array | |
| * A render array structure of header strings. | |
| */ | |
| public function buildHeader() { | |
| $row['Label'] = $this->t('Label'); | |
| $row['operations'] = $this->t('Operations'); | |
| return $row; | |
| } | |
| /** | |
| * Builds a renderable list of operation links for the entity. | |
| * | |
| * @param \Drupal\config_translation\ConfigMapperInterface $mapper | |
| * The mapper. | |
| * | |
| * @return array | |
| * A renderable array of operation links. | |
| * | |
| * @see \Drupal\Core\Entity\EntityList::buildOperations() | |
| */ | |
| protected function buildOperations(ConfigMapperInterface $mapper) { | |
| // Retrieve and sort operations. | |
| $operations = $mapper->getOperations(); | |
| uasort($operations, 'Drupal\Component\Utility\SortArray::sortByWeightElement'); | |
| $build = array( | |
| '#type' => 'operations', | |
| '#links' => $operations, | |
| ); | |
| return $build; | |
| } | |
| } |