mocha_report-1.0.x-dev/src/Controller/MochaReportGroupController.php

src/Controller/MochaReportGroupController.php
<?php

namespace Drupal\mocha_report\Controller;

use Drupal\Core\Asset\LibraryDiscoveryInterface;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\mocha_report\LibraryUtilities;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

/**
 * Returns responses for Mocha Report routes.
 */
class MochaReportGroupController extends ControllerBase {

  /**
   * The library discovery service.
   *
   * @var \Drupal\mocha_report\LibraryUtilities
   */
  protected $libraryUtilities;

  /**
   * Constructs a MochaReportController
   *
   * @param \Drupal\mocha_report\LibraryUtilities $libraryUtilities
   *   The module handler service.
   */
  public function __construct(LibraryUtilities $libraryUtilities) {
    $this->libraryUtilities = $libraryUtilities;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('mocha_report.library_utilities'),
    );
  }

  /**
   * Builds the response for a given group.
   */
  public function build(string $group) : array {
    $current_user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());

    if (!in_array($group, array_map(function($group) { return $this->libraryUtilities->parseGroup($group); }, $this->libraryUtilities->getGroups()))) {
      throw new NotFoundHttpException();
    }

    return [
      '#theme' => 'page__mochajs-report_page',
      '#attached' => [
         'library' => [
           "mocha_report/mocha_report_runner_{$this->libraryUtilities->parseGroup($group)}",
         ],
        'drupalSettings' => [
          'mochaReport' => [
            'user' => [
              'uid' => $this->currentUser()->id(),
              'name' => $this->currentUser()->getAccountName(),
              'uuid' => $current_user->get('uuid')->value,
              'isAuthenticated' => $this->currentUser()->isAuthenticated(),
            ]
          ]
        ]
      ],
    ];
  }

  public function getTitle(string $group) : string {
    $pretty_group = $group;

    foreach ($this->libraryUtilities->getGroups() as $group_title) {
      if ($this->libraryUtilities->parseGroup($group_title) == $group) {
        $pretty_group = $group_title;
      }
    }

    return "$pretty_group | Mocha Report";
  }

}

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

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