You are here

class TranslationJobBreadcrumbBuilder in Lingotek Translation 3.4.x

Same name and namespace in other branches
  1. 8.2 src/Breadcrumb/TranslationJobBreadcrumbBuilder.php \Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder
  2. 4.0.x src/Breadcrumb/TranslationJobBreadcrumbBuilder.php \Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder
  3. 3.0.x src/Breadcrumb/TranslationJobBreadcrumbBuilder.php \Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder
  4. 3.1.x src/Breadcrumb/TranslationJobBreadcrumbBuilder.php \Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder
  5. 3.2.x src/Breadcrumb/TranslationJobBreadcrumbBuilder.php \Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder
  6. 3.3.x src/Breadcrumb/TranslationJobBreadcrumbBuilder.php \Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder
  7. 3.5.x src/Breadcrumb/TranslationJobBreadcrumbBuilder.php \Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder
  8. 3.6.x src/Breadcrumb/TranslationJobBreadcrumbBuilder.php \Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder
  9. 3.7.x src/Breadcrumb/TranslationJobBreadcrumbBuilder.php \Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder
  10. 3.8.x src/Breadcrumb/TranslationJobBreadcrumbBuilder.php \Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder

Hierarchy

Expanded class hierarchy of TranslationJobBreadcrumbBuilder

1 file declares its use of TranslationJobBreadcrumbBuilder
TranslationJobBreadcrumbBuilderTest.php in tests/src/Unit/Breadcrumb/TranslationJobBreadcrumbBuilderTest.php
1 string reference to 'TranslationJobBreadcrumbBuilder'
lingotek.services.yml in ./lingotek.services.yml
lingotek.services.yml
1 service uses TranslationJobBreadcrumbBuilder
lingotek.translation_job_breadcrumb_builder in ./lingotek.services.yml
Drupal\lingotek\Breadcrumb\TranslationJobBreadcrumbBuilder

File

src/Breadcrumb/TranslationJobBreadcrumbBuilder.php, line 15

Namespace

Drupal\lingotek\Breadcrumb
View source
class TranslationJobBreadcrumbBuilder implements BreadcrumbBuilderInterface {
  use StringTranslationTrait;

  /**
   * The request.
   *
   * @var \Symfony\Component\HttpFoundation\Request
   */
  protected $request;

  /**
   * The access manager.
   *
   * @var \Drupal\Core\Access\AccessManagerInterface
   */
  protected $accessManager;

  /**
   * The title resolver.
   *
   * @var \Drupal\Core\Controller\TitleResolverInterface
   */
  protected $titleResolver;

  /**
   * The user currently logged in.
   *
   * @var \Drupal\Core\Session\AccountInterface
   */
  protected $currentUser;

  /**
   * {@inheritdoc}
   */
  public function __construct(RequestStack $request_stack, AccountInterface $current_user, TitleResolverInterface $title_resolver, AccessManagerInterface $access_manager) {
    $this->request = $request_stack
      ->getCurrentRequest();
    $this->accessManager = $access_manager;
    $this->titleResolver = $title_resolver;
    $this->currentUser = $current_user;
  }

  /**
   * {@inheritdoc}
   */
  public function applies(RouteMatchInterface $route_match) {
    $routeName = $route_match
      ->getRouteName();
    if (strpos($routeName, 'lingotek.translation_job') === 0) {
      return TRUE;
    }
    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function build(RouteMatchInterface $route_match) {
    $breadcrumb = new Breadcrumb();
    $access = $this->accessManager
      ->check($route_match, $this->currentUser, NULL, TRUE);
    $breadcrumb
      ->addCacheableDependency($access);
    $breadcrumb
      ->addCacheContexts([
      'url.path',
    ]);
    $links = [];
    if ($access
      ->isAllowed()) {
      if ($route_match
        ->getRouteName() !== 'lingotek.translation_jobs') {
        $title = $this->titleResolver
          ->getTitle($this->request, $route_match
          ->getRouteObject());
        $route = $route_match
          ->getRouteMatchFromRequest($this->request);
        $links[] = Link::createFromRoute($title, $route_match
          ->getRouteName(), [
          'job_id' => $route
            ->getParameter('job_id'),
        ]);
      }
      $links[] = Link::createFromRoute($this
        ->t('Translation Jobs'), 'lingotek.translation_jobs');
      $links[] = Link::createFromRoute($this
        ->t('Lingotek Translation Dashboard'), 'lingotek.dashboard');
      $links[] = Link::createFromRoute($this
        ->t('Administration'), 'system.admin');
    }
    $links[] = Link::createFromRoute($this
      ->t('Home'), '<front>');
    return $breadcrumb
      ->setLinks(array_reverse($links));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
StringTranslationTrait::$stringTranslation protected property The string translation service. 4
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
TranslationJobBreadcrumbBuilder::$accessManager protected property The access manager.
TranslationJobBreadcrumbBuilder::$currentUser protected property The user currently logged in.
TranslationJobBreadcrumbBuilder::$request protected property The request.
TranslationJobBreadcrumbBuilder::$titleResolver protected property The title resolver.
TranslationJobBreadcrumbBuilder::applies public function Whether this breadcrumb builder should be used to build the breadcrumb. Overrides BreadcrumbBuilderInterface::applies
TranslationJobBreadcrumbBuilder::build public function Builds the breadcrumb. Overrides BreadcrumbBuilderInterface::build
TranslationJobBreadcrumbBuilder::__construct public function