class ConfigTranslationBlockListBuilder

Same name and namespace in other branches
  1. 10 core/modules/config_translation/src/Controller/ConfigTranslationBlockListBuilder.php \Drupal\config_translation\Controller\ConfigTranslationBlockListBuilder
  2. 11.x core/modules/config_translation/src/Controller/ConfigTranslationBlockListBuilder.php \Drupal\config_translation\Controller\ConfigTranslationBlockListBuilder
  3. 9 core/modules/config_translation/src/Controller/ConfigTranslationBlockListBuilder.php \Drupal\config_translation\Controller\ConfigTranslationBlockListBuilder
  4. 8.9.x core/modules/config_translation/src/Controller/ConfigTranslationBlockListBuilder.php \Drupal\config_translation\Controller\ConfigTranslationBlockListBuilder

Defines the config translation list builder for blocks.

Hierarchy

Expanded class hierarchy of ConfigTranslationBlockListBuilder

File

core/modules/config_translation/src/Controller/ConfigTranslationBlockListBuilder.php, line 14

Namespace

Drupal\config_translation\Controller
View source
class ConfigTranslationBlockListBuilder extends ConfigTranslationEntityListBuilder {
  
  /**
   * An array of theme info keyed by theme name.
   *
   * @var array
   */
  protected $themes = [];
  
  /**
   * {@inheritdoc}
   */
  public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, ThemeHandlerInterface $theme_handler) {
    parent::__construct($entity_type, $storage);
    $this->themes = $theme_handler->listInfo();
  }
  
  /**
   * {@inheritdoc}
   */
  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('theme_handler'));
  }
  
  /**
   * {@inheritdoc}
   */
  public function getFilterLabels() {
    $info = parent::getFilterLabels();
    $info['placeholder'] = $this->t('Enter block, theme or category');
    $info['description'] = $this->t('Enter a part of the block, theme or category to filter by.');
    return $info;
  }
  
  /**
   * {@inheritdoc}
   */
  public function buildRow(EntityInterface $entity) {
    $theme = $entity->getTheme();
    $plugin_definition = $entity->getPlugin()
      ->getPluginDefinition();
    $row['label'] = [
      'data' => $entity->label(),
      'class' => 'table-filter-text-source',
    ];
    $row['theme'] = [
      'data' => $this->themes[$theme]->info['name'],
      'class' => 'table-filter-text-source',
    ];
    $row['category'] = [
      'data' => $plugin_definition['category'],
      'class' => 'table-filter-text-source',
    ];
    $row['operations']['data'] = $this->buildOperations($entity);
    return $row;
  }
  
  /**
   * {@inheritdoc}
   */
  public function buildHeader() {
    $header['label'] = $this->t('Block');
    $header['theme'] = $this->t('Theme');
    $header['category'] = $this->t('Category');
    $header['operations'] = $this->t('Operations');
    return $header;
  }
  
  /**
   * {@inheritdoc}
   */
  public function sortRows($a, $b) {
    return $this->sortRowsMultiple($a, $b, [
      'theme',
      'category',
      'label',
    ]);
  }

}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.