Commit 0828fa9e authored by webchick's avatar webchick

Issue #1832870 by -enzo-, YesCT, EllaTheHarpy, Pinolo, dlu, seranooo5,...

Issue #1832870 by -enzo-, YesCT, EllaTheHarpy, Pinolo, dlu, seranooo5, ivanchaer, mauzeh, filijonka, robertdbailey | maryedith: Only show source translation column if there are 2 or more source languages (more than n/a and the original language).
parent 93d73d56
......@@ -30,11 +30,10 @@ function content_translation_overview(EntityInterface $entity) {
$rel[$name] = $entity->getSystemPath($name);
}
$header = array(t('Language'), t('Translation'), t('Source language'), t('Status'), t('Operations'));
$rows = array();
$show_source_column = FALSE;
if (\Drupal::languageManager()->isMultilingual()) {
// Determine whether the current entity is translatable.
$translatable = FALSE;
foreach (\Drupal::entityManager()->getFieldDefinitions($entity->getEntityTypeId(), $entity->bundle()) as $field_definition) {
......@@ -44,6 +43,12 @@ function content_translation_overview(EntityInterface $entity) {
}
}
// Show source-language column if there are non-original source langcodes.
$additional_source_langcodes = array_filter($entity->translation, function ($translation) use ($original) {
return !empty($translation['source']) && $translation['source'] != $original;
});
$show_source_column = !empty($additional_source_langcodes);
foreach ($languages as $language) {
$language_name = $language->name;
$langcode = $language->id;
......@@ -125,7 +130,12 @@ function content_translation_overview(EntityInterface $entity) {
$status = t('Not translated');
}
$rows[] = array($language_name, $row_title, $source_name, $status, $operations);
if ($show_source_column) {
$rows[] = array($language_name, $row_title, $source_name, $status, $operations);
}
else {
$rows[] = array($language_name, $row_title, $status, $operations);
}
}
}
......@@ -135,6 +145,13 @@ function content_translation_overview(EntityInterface $entity) {
// which entity this is.
$build['#entity'] = $entity;
if ($show_source_column) {
$header = array(t('Language'), t('Translation'), t('Source language'), t('Status'), t('Operations'));
}
else {
$header = array(t('Language'), t('Translation'), t('Status'), t('Operations'));
}
$build['content_translation_overview'] = array(
'#type' => 'table',
'#header' => $header,
......
......@@ -54,6 +54,8 @@ protected function doTestBasicTranslation() {
$this->assertTrue($entity, 'Entity found in the database.');
$this->drupalGet($entity->getSystemPath());
$this->assertResponse(200, 'Entity URL is valid.');
$this->drupalGet($entity->getSystemPath('drupal:content-translation-overview'));
$this->assertNoText('Source language', 'Source language column correctly hidden.');
$translation = $this->getTranslation($entity, $default_langcode);
foreach ($values[$default_langcode] as $property => $value) {
......@@ -74,20 +76,27 @@ protected function doTestBasicTranslation() {
$this->assertNoFieldByXPath('//select[@id="edit-langcode"]', NULL, 'Language selector correctly disabled on translations.');
}
$entity = entity_load($this->entityTypeId, $this->entityId, TRUE);
$this->drupalGet($entity->getSystemPath('drupal:content-translation-overview'));
$this->assertNoText('Source language', 'Source language column correctly hidden.');
// Switch the source language.
$langcode = 'fr';
$source_langcode = 'it';
$edit = array('source_langcode[source]' => $source_langcode);
$path = $langcode . '/' . $content_translation_path . '/add/' . $default_langcode . '/' . $langcode;
// This does not save anything, it merely reloads the form and fills in the
// fields with the values from the different source language.
$this->drupalPostForm($path, $edit, t('Change'));
$this->assertFieldByXPath("//input[@name=\"{$this->fieldName}[0][value]\"]", $values[$source_langcode][$this->fieldName][0]['value'], 'Source language correctly switched.');
// Add another translation and mark the other ones as outdated.
$values[$langcode] = $this->getNewEntityValues($langcode);
$edit = $this->getEditValues($values, $langcode) + array('content_translation[retranslate]' => TRUE);
$path = $langcode . '/' . $content_translation_path . '/add/' . $source_langcode . '/' . $langcode;
$this->drupalPostForm($path, $edit, $this->getFormSubmitActionForNewTranslation($entity, $langcode));
$entity = entity_load($this->entityTypeId, $this->entityId, TRUE);
$this->drupalGet($entity->getSystemPath('drupal:content-translation-overview'));
$this->assertText('Source language', 'Source language column correctly shown.');
// Check that the entered values have been correctly stored.
foreach ($values as $langcode => $property_values) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment