diff --git a/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php index e479d8e..1ff7dd3 100644 --- a/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php +++ b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php @@ -129,4 +129,22 @@ public function isRequired(); */ public function getDefaultValue(EntityInterface $entity); + /** + * Returns whether the field is translatable. + * + * @return bool + * TRUE if the field is translatable. + */ + public function isTranslatable(); + + /** + * Sets whether the field is translatable. + * + * @param bool $translatable + * Whether the field is translatable. + * + * @return $this + */ + public function setTranslatable($translatable); + } diff --git a/core/lib/Drupal/Core/Field/FieldStorageDefinitionInterface.php b/core/lib/Drupal/Core/Field/FieldStorageDefinitionInterface.php index 5a40e86..0e364fe 100644 --- a/core/lib/Drupal/Core/Field/FieldStorageDefinitionInterface.php +++ b/core/lib/Drupal/Core/Field/FieldStorageDefinitionInterface.php @@ -77,18 +77,18 @@ public function getSettings(); public function getSetting($setting_name); /** - * Returns whether the field is translatable. + * Returns whether the field supports translation. * * @return bool - * TRUE if the field is translatable. + * TRUE if the field supports translation. */ public function isTranslatable(); /** - * Sets whether the field is translatable. + * Sets whether the field is supports translation. * * @param bool $translatable - * Whether the field is translatable. + * Whether the field is supports translation. * * @return $this */ diff --git a/core/modules/content_translation/content_translation.admin.inc b/core/modules/content_translation/content_translation.admin.inc index eb55f17..4c1a64a 100644 --- a/core/modules/content_translation/content_translation.admin.inc +++ b/core/modules/content_translation/content_translation.admin.inc @@ -102,15 +102,20 @@ function _content_translation_form_language_content_settings_form_alter(array &$ foreach ($fields as $field_name => $definition) { // Allow to configure only fields supporting multilingual storage. if (!empty($storage_definitions[$field_name]) && $storage_definitions[$field_name]->isTranslatable()) { - $translatable = $definition instanceof FieldInstanceConfigInterface ? $definition->isTranslatable() : !empty($field_settings[$field_name]); // If we have a storable field definition we use the stored value // instead of our settings to determine translatability. + // @todo Remove this special casing when any field definition can + // have a configurable bundle override. See + // https://drupal.org/node/2224761. + $translatable = $definition instanceof FieldInstanceConfigInterface ? $definition->isTranslatable() : !empty($field_settings[$field_name]); $form['settings'][$entity_type_id][$bundle]['fields'][$field_name] = array( '#label' => $definition->getLabel(), '#type' => 'checkbox', '#default_value' => $translatable, ); // Display the column translatability configuration widget. + // @todo Remove this special casing when arbitrary settings can be + // stored for any field. See https://drupal.org/node/2224761. if ($definition instanceof FieldInstanceConfigInterface) { $column_element = content_translation_field_sync_widget($definition); if ($column_element) { diff --git a/core/modules/content_translation/content_translation.module b/core/modules/content_translation/content_translation.module index a7a90f9..63abf60 100644 --- a/core/modules/content_translation/content_translation.module +++ b/core/modules/content_translation/content_translation.module @@ -630,7 +630,7 @@ function content_translation_entity_extra_field_info() { } /** - * Implements hook_form_FORM_ID_alter() for 'field_ui_field_edit_form'. + * Implements hook_form_FORM_ID_alter() for 'field_ui_instance_edit_form'. */ function content_translation_form_field_ui_field_instance_edit_form_alter(array &$form, array &$form_state) { $instance = $form_state['instance']; diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceFieldTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceFieldTest.php index 2ab3fa6..d5357ba 100644 --- a/core/modules/entity_reference/src/Tests/EntityReferenceFieldTest.php +++ b/core/modules/entity_reference/src/Tests/EntityReferenceFieldTest.php @@ -7,10 +7,10 @@ namespace Drupal\entity_reference\Tests; +use Drupal\Core\Field\FieldStorageDefinitionInterface; use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldInstanceConfig; use Drupal\system\Tests\Entity\EntityUnitTestBase; -use Drupal\Core\Field\FieldDefinitionInterface; /** * Tests for the entity reference field. @@ -88,7 +88,7 @@ public function setUp() { $this->referencedEntityType, 'default', array('target_bundles' => array($this->bundle)), - FieldDefinitionInterface::CARDINALITY_UNLIMITED + FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED ); $this->field = FieldConfig::loadByName($this->entityType, $this->fieldName);