Commit 4bc5aa83 authored by xjm's avatar xjm

Issue #2449457 by Anushka-mp, sasanikolic, Berdir, plach: inconsistent checks...

Issue #2449457 by Anushka-mp, sasanikolic, Berdir, plach: inconsistent checks in content_translation
parent 2bb91de3
......@@ -87,13 +87,15 @@ function _content_translation_form_language_content_settings_form_alter(array &$
$entity_type = $entity_manager->getDefinition($entity_type_id);
$storage_definitions = $entity_type instanceof ContentEntityTypeInterface ? $entity_manager->getFieldStorageDefinitions($entity_type_id) : array();
$entity_type_translatable = $entity_type->isTranslatable();
$entity_type_translatable = $content_translation_manager->isSupported($entity_type_id);
foreach (entity_get_bundles($entity_type_id) as $bundle => $bundle_info) {
// Here we do not want the widget to be altered and hold also the "Enable
// translation" checkbox, which would be redundant. Hence we add this key
// to be able to skip alterations.
// to be able to skip alterations. Alter the title and display the message
// about UI integration.
$form['settings'][$entity_type_id][$bundle]['settings']['language']['#content_translation_skip_alter'] = TRUE;
if (!$entity_type_translatable) {
$form['settings'][$entity_type_id]['#title'] = t('@label (Translation is not supported).', array('@label' => $entity_type->getLabel()));
continue;
}
......
......@@ -92,6 +92,14 @@ function content_translation_language_types_info_alter(array &$language_types) {
* assumed. Every translation handler must implement
* \Drupal\content_translation\ContentTranslationHandlerInterface.
*
* By default, entity types that do not have a canonical link template cannot be
* enabled for translation. This can be overridden by setting the
* 'content_translation_ui_skip' key to true. When that key is set, the Content
* Translation module will not provide any UI for translating the entity type,
* and the entity type should implement its own UI. This is useful for (e.g.)
* entity types that are embedded into others for editing (which would not need
* a canonical link, but could still support translation).
*
* To implement its business logic the content translation UI relies on various
* metadata items describing the translation state. The default implementation
* is provided by \Drupal\content_translation\ContentTranslationMetadataWrapper,
......
......@@ -66,7 +66,7 @@ public function getTranslationMetadata(EntityInterface $translation) {
*/
public function isSupported($entity_type_id) {
$entity_type = $this->entityManager->getDefinition($entity_type_id);
return $entity_type->isTranslatable() && $entity_type->hasLinkTemplate('drupal:content-translation-overview');
return $entity_type->isTranslatable() && ($entity_type->hasLinkTemplate('drupal:content-translation-overview') || $entity_type->get('content_translation_ui_skip'));
}
/**
......
<?php
/**
* @file
* Contains Drupal\content_translation\Tests\ContentTranslationUISkipTest.
*/
namespace Drupal\content_translation\Tests;
use Drupal\simpletest\WebTestBase;
/**
* Tests the content translation UI check skip.
*
* @group content_translation
*/
class ContentTranslationUISkipTest extends WebTestBase {
/**
* Modules to enable.
*
* @var array
*/
public static $modules = array('content_translation_test', 'user', 'node');
/**
* Tests the content_translation_ui_skip key functionality.
*/
function testUICheckSkip() {
$admin_user = $this->drupalCreateUser(array(
'translate any entity',
'administer content translation',
'administer languages'
));
$this->drupalLogin($admin_user);
// Visit the content translation.
$this->drupalGet('admin/config/regional/content-language');
// Check the message regarding UI integration.
$this->assertText('Test entity - Translatable skip UI check');
$this->assertText('Test entity - Translatable check UI (Translation is not supported)');
}
}
name: 'Content translation tests'
type: module
description: 'Provides content translation tests.'
package: Testing
version: VERSION
core: 8.x
dependencies:
- content_translation
- language
- entity_test
<?php
/**
* @file
* Contains Drupal\content_translation_test\Entity\EntityTestTranslatableNoUISkip.
*/
namespace Drupal\content_translation_test\Entity;
use Drupal\entity_test\Entity\EntityTest;
/**
* Defines the test entity class.
*
* @ContentEntityType(
* id = "entity_test_translatable_no_skip",
* label = @Translation("Test entity - Translatable check UI"),
* base_table = "entity_test_mul",
* data_table = "entity_test_mul_property_data",
* entity_keys = {
* "id" = "id",
* "uuid" = "uuid",
* "bundle" = "type",
* "label" = "name",
* "langcode" = "langcode",
* },
* translatable = TRUE,
* )
*/
class EntityTestTranslatableNoUISkip extends EntityTest {
}
<?php
/**
* @file
* Contains Drupal\content_translation_test\Entity\EntityTestTranslatableUISkip.
*/
namespace Drupal\content_translation_test\Entity;
use Drupal\entity_test\Entity\EntityTest;
/**
* Defines the test entity class.
*
* @ContentEntityType(
* id = "entity_test_translatable_UI_skip",
* label = @Translation("Test entity - Translatable skip UI check"),
* base_table = "entity_test_mul",
* data_table = "entity_test_mul_property_data",
* entity_keys = {
* "id" = "id",
* "uuid" = "uuid",
* "bundle" = "type",
* "label" = "name",
* "langcode" = "langcode",
* },
* translatable = TRUE,
* content_translation_ui_skip = TRUE,
* )
*/
class EntityTestTranslatableUISkip extends EntityTest {
}
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