diff --git a/core/lib/Drupal/Core/Field/FieldDefinition.php b/core/lib/Drupal/Core/Field/FieldDefinition.php index 3968624..5e8aee3 100644 --- a/core/lib/Drupal/Core/Field/FieldDefinition.php +++ b/core/lib/Drupal/Core/Field/FieldDefinition.php @@ -172,6 +172,28 @@ public function setTranslatable($translatable) { /** * {@inheritdoc} */ + public function isRevisionable() { + // Default to TRUE if it has not been set yet. + return !isset($this->definition['revisionable']) || $this->definition['revisionable']; + } + + /** + * Sets whether the field is revisionable. + * + * @param bool $revisionable + * Whether the field is revisionable. + * + * @return static + * The object itself for chaining. + */ + public function setRevisionable($revisionable) { + $this->definition['revisionable'] = $revisionable; + return $this; + } + + /** + * {@inheritdoc} + */ public function getCardinality() { // @todo: Allow to control this. return isset($this->definition['cardinality']) ? $this->definition['cardinality'] : 1; diff --git a/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php index 06de3c6..1a89c64 100644 --- a/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php +++ b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php @@ -112,6 +112,14 @@ public function getSetting($setting_name); public function isTranslatable(); /** + * Returns whether the field is revisionable. + * + * @return bool + * TRUE if the field is revisionable. + */ + public function isRevisionable(); + + /** * Returns whether the display for the field can be configured. * * @param string $display_context diff --git a/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php index ae8d4fc..2a7d5e5 100644 --- a/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php +++ b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php @@ -561,6 +561,14 @@ public function isTranslatable() { } /** + * {@inheritdoc} + */ + public function isRevisionable() { + // All configurable fields are revisionable. + return TRUE; + } + + /** * Sets whether the field is translatable. * * @param bool $translatable diff --git a/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php b/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php index 35bef11..349bd79 100644 --- a/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php +++ b/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php @@ -508,6 +508,13 @@ public function isTranslatable() { /** * {@inheritdoc} */ + public function isRevisionable() { + return $this->field->isRevisionable(); + } + + /** + * {@inheritdoc} + */ protected function linkTemplates() { $link_templates = parent::linkTemplates(); if (\Drupal::moduleHandler()->moduleExists('field_ui')) { diff --git a/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php b/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php index 5ddd924..263c618 100644 --- a/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php +++ b/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php @@ -171,6 +171,18 @@ public function testFieldTranslatable() { } /** + * Tests field revisionable methods. + */ + public function testFieldRevisionable() { + $definition = FieldDefinition::create($this->fieldType); + $this->assertTrue($definition->isRevisionable()); + $definition->setRevisionable(TRUE); + $this->assertTrue($definition->isRevisionable()); + $definition->setRevisionable(FALSE); + $this->assertFalse($definition->isRevisionable()); + } + + /** * Tests field cardinality. */ public function testFieldCardinality() {