preview_site-1.1.2/src/EntityHandlers/PreviewSiteBuildListBuilder.php

src/EntityHandlers/PreviewSiteBuildListBuilder.php
<?php

namespace Drupal\preview_site\EntityHandlers;

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\preview_site\Entity\PreviewSiteBuildInterface;

/**
 * Defines a list builder for the preview_site_build entity.
 *
 * @codeCoverageIgnore
 * @see \Drupal\Tests\preview_site\Functional\PreviewStrategyAdministrationTest
 * @see \Drupal\Tests\preview_site\Functional\PreviewStrategyAdministrationTest
 */
class PreviewSiteBuildListBuilder extends EntityListBuilder {

  /**
   * {@inheritdoc}
   */
  public function buildHeader() {
    return [
      $this->t('Label'),
      $this->t('Strategy'),
      $this->t('Status'),
      $this->t('Item count'),
      $this->t('Item links'),
    ] + parent::buildHeader();
  }

  /**
   * {@inheritdoc}
   */
  public function buildRow(EntityInterface $entity) {
    assert($entity instanceof PreviewSiteBuildInterface);
    return [
      $entity->toLink(),
      $entity->getStrategyLabel(),
      $entity->getStatus(),
      $entity->getItemCount(),
      ['data' => $this->buildItemLinks($entity)],
    ] + parent::buildRow($entity);
  }

  /**
   * Gets item links.
   *
   * @param \Drupal\preview_site\Entity\PreviewSiteBuildInterface $build
   *   Build.
   *
   * @return string[]
   *   Links to the build items.
   */
  protected function buildItemLinks(PreviewSiteBuildInterface $build): array {
    $deployment_uri = $build->getDeploymentBaseUri();
    if (!$deployment_uri) {
      return ['#markup' => ''];
    }
    return [
      '#type' => 'operations',
      '#links' => $build->getItemLinks(),
    ];
  }

  /**
   * {@inheritdoc}
   */
  protected function getDefaultOperations(EntityInterface $entity) {
    /** @var \Drupal\preview_site\Entity\PreviewSiteBuildInterface $entity */
    $operations = parent::getDefaultOperations($entity);
    if ($entity->hasLinkTemplate('deploy-form')) {
      $operations['deploy'] = [
        'title' => $this->t('Build and Deploy'),
        'weight' => $entity->getStatus() === PreviewSiteBuildInterface::STATUS_PENDING ? -10 : 50,
        'url' => $entity->toUrl('deploy-form'),
      ];
    }
    if (in_array($entity->getStatus(), [
      PreviewSiteBuildInterface::STATUS_BUILT,
      PreviewSiteBuildInterface::STATUS_FAILED,
    ])) {
      $operations['view_logs'] = [
        'title' => $this->t('View logs'),
        'weight' => -10,
        'url' => $entity->toUrl(),
      ];
    }

    return $operations;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc