You are here

public function ConfigSourcePluginUi::overviewRow in Translation Management Tool 8

Builds a table row for overview form.

Parameters

\Drupal\Core\Config\Entity\ConfigEntityInterface $entity: Data needed to build the list row.

Return value

array A single table row for the overview.

1 call to ConfigSourcePluginUi::overviewRow()
ConfigSourcePluginUi::overviewForm in sources/tmgmt_config/src/ConfigSourcePluginUi.php
Builds the overview form for the source entities.

File

sources/tmgmt_config/src/ConfigSourcePluginUi.php, line 111

Class

ConfigSourcePluginUi
Config source plugin UI.

Namespace

Drupal\tmgmt_config

Code

public function overviewRow(ConfigEntityInterface $entity) {
  $label = $entity
    ->label() ?: $this
    ->t('@type: @id', array(
    '@type' => $entity
      ->getEntityTypeId(),
    '@id' => $entity
      ->id(),
  ));

  // Get current job items for the entity to determine translation statuses.
  $source_lang = $entity
    ->language()
    ->getId();
  $current_job_items = tmgmt_job_item_load_latest('config', $entity
    ->getEntityTypeId(), $entity
    ->getConfigDependencyName(), $source_lang);
  $row['id'] = $entity
    ->id();
  $definition = \Drupal::entityTypeManager()
    ->getDefinition($entity
    ->bundle());
  $row['config_id'] = $definition
    ->getConfigPrefix() . '.' . $entity
    ->id();
  if ($entity
    ->hasLinkTemplate('edit-form')) {
    $row['title'] = $entity
      ->toLink($label, 'edit-form');
  }
  else {

    // If the entity doesn't have a link we display a label.
    $row['title'] = $label;
  }

  // Load entity translation specific data.
  foreach (\Drupal::languageManager()
    ->getLanguages() as $langcode => $language) {
    $translation_status = 'current';
    if ($langcode == $source_lang) {
      $translation_status = 'original';
    }
    elseif (!$this
      ->isTranslated($langcode, $entity
      ->getConfigDependencyName())) {
      $translation_status = 'missing';
    }

    // @todo Find a way to support marking configuration translations as outdated.
    $build = $this
      ->buildTranslationStatus($translation_status, isset($current_job_items[$langcode]) ? $current_job_items[$langcode] : NULL);
    $row['langcode-' . $langcode] = [
      'data' => \Drupal::service('renderer')
        ->render($build),
      'class' => array(
        'langstatus-' . $langcode,
      ),
    ];
  }
  return $row;
}