diff --git a/core/modules/block_content/block_content.install b/core/modules/block_content/block_content.install index 4279cde..e75e659 100644 --- a/core/modules/block_content/block_content.install +++ b/core/modules/block_content/block_content.install @@ -6,6 +6,7 @@ */ use Drupal\Core\Field\BaseFieldDefinition; +use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Add 'revision_translation_affected' field to 'block_content' entities. @@ -61,3 +62,28 @@ function block_content_update_8003() { \Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition('revision_user', 'block_content', 'block_content', $revision_user); } + +/** + * Add and populate publishing status fields. + */ +function block_content_update_8004() { + $entity_type = \Drupal::entityDefinitionUpdateManager()->getEntityType('block_content'); + $entity_type->set('revision_data_table', 'block_content_field_revision'); + \Drupal::entityDefinitionUpdateManager()->updateEntityType($entity_type); + + $status = BaseFieldDefinition::create('boolean') + ->setLabel(new TranslatableMarkup('Publishing status')) + ->setDescription(new TranslatableMarkup('A boolean indicating the published state.')) + ->setRevisionable(TRUE) + ->setTranslatable(TRUE) + ->setDefaultValue(TRUE); + + \Drupal::entityDefinitionUpdateManager() + ->installFieldStorageDefinition('status', 'block_content', 'block_content', $status); + + $entity_type = \Drupal::entityTypeManager()->getDefinition('block_content'); + $data_table = $entity_type->getDataTable(); + $revision_data_table = $entity_type->getRevisionDataTable(); + \Drupal::database()->update($data_table)->fields(['status' => 1])->execute(); + \Drupal::database()->update($revision_data_table)->fields(['status' => 1])->execute(); +} diff --git a/core/modules/block_content/src/Entity/BlockContent.php b/core/modules/block_content/src/Entity/BlockContent.php index 13af342..61a7a49 100644 --- a/core/modules/block_content/src/Entity/BlockContent.php +++ b/core/modules/block_content/src/Entity/BlockContent.php @@ -4,6 +4,7 @@ use Drupal\Core\Entity\ContentEntityBase; use Drupal\Core\Entity\EntityChangedTrait; +use Drupal\Core\Entity\EntityPublishedTrait; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Field\BaseFieldDefinition; @@ -35,6 +36,7 @@ * base_table = "block_content", * revision_table = "block_content_revision", * data_table = "block_content_field_data", + * revision_data_table = "block_content_field_revision", * links = { * "canonical" = "/block/{block_content}", * "delete-form" = "/block/{block_content}/delete", @@ -63,6 +65,7 @@ class BlockContent extends ContentEntityBase implements BlockContentInterface { use EntityChangedTrait; + use EntityPublishedTrait; /** * The theme the block is being created in. @@ -153,6 +156,7 @@ public function delete() { public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { /** @var \Drupal\Core\Field\BaseFieldDefinition[] $fields */ $fields = parent::baseFieldDefinitions($entity_type); + $fields += static::publishedBaseFieldDefinitions($entity_type); $fields['id']->setLabel(t('Custom block ID')) ->setDescription(t('The custom block ID.'));