You are here

public function SkinListBuilder::render in Skinr 8.2

Builds the entity listing as renderable array for table.html.twig.

@todo Add a link to add a new item to the #empty text.

Overrides EntityListBuilder::render

File

skinr_ui/src/Controller/SkinListBuilder.php, line 102
Contains \Drupal\skinr_ui\Controller\SkinListBuilder.

Class

SkinListBuilder
Returns responses for devel module routes.

Namespace

Drupal\skinr_ui\Controller

Code

public function render() {
  $entities = $this
    ->load();
  $list['#type'] = 'container';
  $list['#attributes']['id'] = 'skin-entity-list';
  $list['#attached']['library'][] = 'core/drupal.ajax';
  $list['#attached']['library'][] = 'skinr_ui/skinr_ui.listing';
  $form['filters'] = array(
    '#type' => 'container',
    '#attributes' => array(
      'class' => array(
        'table-filter',
        'js-show',
      ),
    ),
  );
  $list['filters']['text'] = array(
    '#type' => 'search',
    '#title' => $this
      ->t('Filter'),
    '#title_display' => 'invisible',
    '#size' => 40,
    '#placeholder' => $this
      ->t('Filter by view name or description'),
    '#attributes' => array(
      'class' => array(
        'skin-filter-text',
      ),
      'data-table' => '.skin-listing-table',
      'autocomplete' => 'off',
      'title' => $this
        ->t('Enter a part of the skin name or description to filter by.'),
    ),
  );
  $list['enabled']['heading']['#markup'] = '<h2>' . $this
    ->t('Enabled', array(), array(
    'context' => 'Plural',
  )) . '</h2>';
  $list['disabled']['heading']['#markup'] = '<h2>' . $this
    ->t('Disabled', array(), array(
    'context' => 'Plural',
  )) . '</h2>';
  foreach (array(
    'enabled',
    'disabled',
  ) as $status) {
    $list[$status]['#type'] = 'container';
    $list[$status]['#attributes'] = array(
      'class' => array(
        'skin-list-section',
        $status,
      ),
    );
    $list[$status]['table'] = array(
      '#type' => 'table',
      '#attributes' => array(
        'class' => array(
          'skin-listing-table',
        ),
      ),
      '#header' => $this
        ->buildHeader(),
      '#rows' => array(),
    );
    foreach ($entities as $entity) {
      if ($entity
        ->status() != ($status == 'enabled' ? TRUE : FALSE)) {
        continue;
      }
      $list[$status]['table']['#rows'][$entity
        ->id()] = $this
        ->buildRow($entity);
    }
  }

  // @todo Use a placeholder for the entity label if this is abstracted to
  // other entity types.
  $list['enabled']['table']['#empty'] = $this
    ->t('There are no enabled skins.');
  $list['disabled']['table']['#empty'] = $this
    ->t('There are no disabled skins.');
  return $list;
}