Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
novicell/dds_global_content / src / Controller / GlobalContentController.php
Size: Mime:
<?php

namespace Drupal\dds_global_content\Controller;

use Drupal\Component\Transliteration\TransliterationInterface;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\Core\Link;
use Drupal\Core\Url;
use Drupal\dds_global_content\GlobalContent;
use Drupal\dds_global_content\GlobalContentStorage;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;

class GlobalContentController extends ControllerBase {

  private $storage;

  private $transliteration;

  protected $languageManager;

  public function __construct(GlobalContentStorage $storage, TransliterationInterface $transliteration, LanguageManagerInterface $languageManager) {
    $this->storage = $storage;
    $this->transliteration = $transliteration;
    $this->languageManager = $languageManager;
  }

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

  public function translatable_overview(Request $request) {
    $group_id = $request->get('group_id');
    $group = GlobalContent::loadGroup($group_id);
    $languages = $this->languageManager->getNativeLanguages();
    $rows = [];

    $header = [
      'title' => $this->t('Language'),
      'operations' => $this->t('Operations'),
    ];

    foreach ($languages as $language) {
      $language_exists = FALSE;
      /** @var GlobalContent $globalContent */
      foreach ($group as $globalContent) {
        $language_exists = $language_exists || $this->storage->languageExists($globalContent->getMachineName(), $language->getId());
      }
      $link_title = ($language_exists) ? $this->t('Edit') : $this->t('Translate');

      $rows[] = [
        'title' => $this->t($language->getName()),
        'operations' => Link::createFromRoute($link_title, 'global_content.translate', [
          'group_id' => $group_id,
          'langcode' => $language->getId(),
        ]),
      ];
    }

    return [
      '#theme' => 'table',
      '#header' => $header,
      '#rows' => $rows,
      '#empty' => $this->t('No translations available.'),

    ];
  }

  public function collection_category() {
    return ['#markup' => 'category collection'];
  }

}