Unverified Commit 4b4ac2f0 authored by Stefan Auditor's avatar Stefan Auditor
Browse files

Issue #3282696 by FMB, sanduhrs: Port of l10n_community: Add some progress

parent 031c1262
Loading
Loading
Loading
Loading
+3 −16
Original line number Diff line number Diff line
@@ -65,21 +65,8 @@ l10n_community.project.export:
    parameters:
      project:
        type: entity:l10n_server_project
l10n_community.project.releases.release:
  path: '/translate/projects/{project}/releases/{release}'
  defaults:
    _title: 'Overview'
    _controller: '\Drupal\l10n_community\Controller\L10nCommunityProjectsController::release'
  requirements:
    _permission: 'access localization community'
  options:
    parameters:
      project:
        type: entity:l10n_server_project
      release:
        type: entity:l10n_server_release
l10n_community.language.translate.reset:
  path: '/translate/languages/{language}/translate/reset/{project}/{release}'
  path: '/group/{group}/reset/{project}/{release}'
  defaults:
    _title: 'Export'
    _controller: '\Drupal\l10n_community\Controller\L10nCommunityLanguagesController::reset'
@@ -87,8 +74,8 @@ l10n_community.language.translate.reset:
    _permission: 'access localization community'
  options:
    parameters:
      language:
        type: language
      group:
        type: entity:group
      project:
        type: entity:l10n_server_project
      release:
+16 −4
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ class L10nCommunityLanguagesController extends ControllerBase {
   *
   * @var \Drupal\Core\Database\Connection
   */
  protected $connection;
  protected Connection $connection;

  /**
   * The config manager.
@@ -202,6 +202,10 @@ class L10nCommunityLanguagesController extends ControllerBase {
   *
   * @return array
   *   An associative render array.
   *
   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   * @throws \Drupal\Core\TypedData\Exception\MissingDataException
   */
  public function translate(Group $group): array {
    $langcode = $group->get('field_translation_language')->first()->getValue()['target_id'];
@@ -276,6 +280,8 @@ class L10nCommunityLanguagesController extends ControllerBase {
   * Title callback.
   *
   * @return \Drupal\Core\StringTranslation\TranslatableMarkup
   *
   * @throws \Drupal\Core\TypedData\Exception\MissingDataException
   */
  public function importTitle() {
    /** @var \Drupal\group\Entity\Group $group */
@@ -293,6 +299,8 @@ class L10nCommunityLanguagesController extends ControllerBase {
   *
   * @return array
   *   An associative render array.
   *
   * @throws \Drupal\Core\TypedData\Exception\MissingDataException
   */
  public function export(Group $group): array {
    $langcode = $group->get('field_translation_language')->first()->getValue()['target_id'];
@@ -315,16 +323,20 @@ class L10nCommunityLanguagesController extends ControllerBase {
  /**
   * Builds the response.
   *
   * @param \Drupal\Core\Language\Language $language
   * @param \Drupal\group\Entity\Group $group
   * @param \Drupal\l10n_server\Entity\L10nServerProjectInterface $project
   * @param \Drupal\l10n_server\Entity\L10nServerReleaseInterface $release
   *
   * @return array
   *
   * @throws \Drupal\Core\TypedData\Exception\MissingDataException
   */
  public function reset(Language $language, L10nServerProjectInterface $project, L10nServerReleaseInterface $release) {
  public function reset(Group $group, L10nServerProjectInterface $project, L10nServerReleaseInterface $release) {
    $langcode = $group->get('field_translation_language')->first()->getValue()['target_id'];
    $language = \Drupal::languageManager()->getLanguage($langcode);
    $build['content'] = [
      '#type' => 'item',
      '#markup' => __METHOD__ . '::' . $project->label() . '::' . $release->label() . '::' . $language->getId(),
      '#markup' => __METHOD__ . '::' . $group->label() . '::' . $project->label() . '::' . $release->label() . '::' . $language->getId(),
    ];
    return $build;
  }
+0 −19
Original line number Diff line number Diff line
@@ -213,25 +213,6 @@ class L10nCommunityProjectsController extends ControllerBase {
    return $build;
  }

  /**
   * Builds the response.
   *
   * @param \Drupal\l10n_server\Entity\L10nServerProjectInterface $project
   *   The project entity.
   * @param \Drupal\l10n_server\Entity\L10nServerReleaseInterface $release
   *   The release entity.
   *
   * @return array
   *   A render array.
   */
  public function release(L10nServerProjectInterface $project, L10nServerReleaseInterface $release) {
    $build['content'] = [
      '#type' => 'item',
      '#markup' => __METHOD__ . '::' . $project->label() . '::' . $release->label(),
    ];
    return $build;
  }

  /**
   * Provides a list of projects from the database, ordered by uri.
   *
+14 −6
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ class L10nCommunityWelcomePageController extends ControllerBase {
      $projects = \Drupal::entityTypeManager()
        ->getStorage('l10n_server_project')
        ->loadByProperties(['title' => $project_name]);
      /** @var \Drupal\l10n_server\Entity\L10nServerProjectInterface $project */
      if (!$project = reset($projects)) {
        $build['content'] = [
          '#type' => 'item',
@@ -104,6 +105,11 @@ class L10nCommunityWelcomePageController extends ControllerBase {
        return $build;
      }

      $releases = \Drupal::entityTypeManager()
        ->getStorage('l10n_server_release')
        ->loadByProperties(['pid' => $project->id()]);
      $release = reset($releases);

      $languages = \Drupal::languageManager()->getLanguages();

      // Check for l10n_packager, for faster queries but only on latest release.
@@ -141,19 +147,20 @@ class L10nCommunityWelcomePageController extends ControllerBase {
          ];
        }
        else {
          $stats = $this->statistics->getLanguageStatisticsByLanguage($langcode);
          $stats = $this->statistics->getProjectsStringCount($language->getId());
          $stats['users'] = $this->statistics->getLanguageStatisticsByLanguage($language->getId())['users'];
          $progress = [
            'data' => [
              '#theme' => 'l10n_community_progress_columns',
              '#sum' => $stats['strings'],
              '#translated' => $stats['translations'],
              '#has_suggestion' => $stats['suggestions'],
              '#sum' => @$stats[$project->id()]['count'],
              '#translated' => @$stats[$project->id()]['translations'],
              '#has_suggestion' => @$stats[$project->id()]['suggestions'],
            ],
          ];
          $table_rows[] = [
            [
              'data' => new FormattableMarkup('<a href=":link">@name</a>', [
                ':link' => Url::fromUri('internal:/translate/languages/' . $langcode)->toString(),
                ':link' => Url::fromUri('internal:/translate/languages/' . $langcode . '/translate', ['query' => ['project' => $project->getUri(), 'status' => 1, 'release' => ($release ? $release->id() : 'all')]])->toString(),
                '@name' => $language->getName(),
              ]),
              'sortdata' => $this->t('@language', [
@@ -204,7 +211,8 @@ class L10nCommunityWelcomePageController extends ControllerBase {
          ],
        ],
        '#cache' => [
          'max-age' => Cache::PERMANENT,
          // @todo Fix cache handling.
          // 'max-age' => Cache::PERMANENT,
        ],
      ];
      $build['#attached']['library'][] = 'l10n_community/tables';