From c8f30002053b9a8fe7aeadf3a85e967af237696c Mon Sep 17 00:00:00 2001 From: Bojan Bogdanovic Date: Thu, 18 Jan 2024 11:18:48 +0100 Subject: [PATCH 1/4] Introducing 'preview_enabled' on the next_entity_type_config entity --- modules/next/config/schema/next.schema.yml | 3 + modules/next/next.install | 23 ++++++ .../next/src/Entity/NextEntityTypeConfig.php | 15 ++++ .../Entity/NextEntityTypeConfigInterface.php | 8 +++ .../src/Form/NextEntityTypeConfigForm.php | 70 +++++++++++++------ .../src/Render/MainContent/HtmlRenderer.php | 2 +- .../Entity/NextEntityTypeConfigTest.php | 30 ++++++++ .../Event/EntityRevalidatedEventTest.php | 1 + .../src/Kernel/NextEntityTypeManagerTest.php | 3 + .../src/Kernel/Plugin/PathRevalidatorTest.php | 1 + .../SimpleOauthPreviewUrlGeneratorTest.php | 1 + .../src/Kernel/Plugin/SiteResolverTest.php | 1 + .../Renderer/MainContent/HtmlRendererTest.php | 22 +++++- 13 files changed, 154 insertions(+), 26 deletions(-) diff --git a/modules/next/config/schema/next.schema.yml b/modules/next/config/schema/next.schema.yml index bde59648f..5baafbfa0 100644 --- a/modules/next/config/schema/next.schema.yml +++ b/modules/next/config/schema/next.schema.yml @@ -36,6 +36,9 @@ next.next_entity_type_config.*: label: 'Site resolver' configuration: type: next.site_resolver.configuration.[%parent.site_resolver] + preview_enabled: + type: boolean + label: 'Preview mode enabled' revalidator: type: string label: 'Revalidator' diff --git a/modules/next/next.install b/modules/next/next.install index 0afb4e602..2c711b96e 100644 --- a/modules/next/next.install +++ b/modules/next/next.install @@ -104,3 +104,26 @@ function next_update_9106() { $config->set('debug', FALSE) ->save(); } + +/** + * Add the preview_enabled property to the next_entity_type_config. + */ +function next_update_9107() { + $entity_definition_update = \Drupal::entityDefinitionUpdateManager(); + + $storage_definition = BaseFieldDefinition::create('string') + ->setLabel(t('Preview mode enabled')); + $entity_definition_update->installFieldStorageDefinition('preview_enabled', 'next_entity_type_config', 'next_entity_type_config', $storage_definition); +} + +/** + * Enable preview mode on all Next.js entity types. + */ +function next_update_9108() { + /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface[] $next_entity_type_configs */ + $next_entity_type_configs = \Drupal::entityTypeManager()->getStorage('next_entity_type_config')->loadMultiple(); + foreach ($next_entity_type_configs as $next_entity_type_config) { + $next_entity_type_config->set('preview_enabled', TRUE); + $next_entity_type_config->save(); + } +} diff --git a/modules/next/src/Entity/NextEntityTypeConfig.php b/modules/next/src/Entity/NextEntityTypeConfig.php index c6284c170..9160f446b 100644 --- a/modules/next/src/Entity/NextEntityTypeConfig.php +++ b/modules/next/src/Entity/NextEntityTypeConfig.php @@ -44,6 +44,7 @@ * "id", * "site_resolver", * "configuration", + * "preview_enabled", * "revalidator", * "revalidator_configuration" * }, @@ -78,6 +79,13 @@ class NextEntityTypeConfig extends ConfigEntityBase implements NextEntityTypeCon */ protected $configuration = []; + /** + * Whether the preview mode is enabled. + * + * @var bool + */ + protected $preview_enabled = FALSE; + /** * The revalidator. * @@ -129,6 +137,13 @@ public function setSiteResolver(string $plugin_id): NextEntityTypeConfigInterfac return $this; } + /** + * {@inheritdoc} + */ + public function isPreviewEnabled(): bool { + return $this->preview_enabled; + } + /** * {@inheritdoc} */ diff --git a/modules/next/src/Entity/NextEntityTypeConfigInterface.php b/modules/next/src/Entity/NextEntityTypeConfigInterface.php index 213c31c26..5c4e211fa 100644 --- a/modules/next/src/Entity/NextEntityTypeConfigInterface.php +++ b/modules/next/src/Entity/NextEntityTypeConfigInterface.php @@ -31,6 +31,14 @@ public function getSiteResolver(): ?SiteResolverInterface; */ public function setSiteResolver(string $plugin_id): self; + /** + * Checks if the preview mode is enabled. + * + * @return bool + * Return true/false if preview mode is enabled. + */ + public function isPreviewEnabled(): bool; + /** * Returns the revalidator plugin. * diff --git a/modules/next/src/Form/NextEntityTypeConfigForm.php b/modules/next/src/Form/NextEntityTypeConfigForm.php index 37d2e65be..579f99e54 100644 --- a/modules/next/src/Form/NextEntityTypeConfigForm.php +++ b/modules/next/src/Form/NextEntityTypeConfigForm.php @@ -107,6 +107,36 @@ public function form(array $form, FormStateInterface $form_state) { ], ]; + $form['site_resolver'] = [ + '#title' => $this->t('Plugin'), + '#description' => $this->t('Select a plugin to use when validating the draft url for this entity type.'), + '#type' => 'select', + '#options' => array_column($this->siteResolverManager->getDefinitions(), 'label', 'id'), + '#default_value' => $entity->getSiteResolver() ? $entity->getSiteResolver()->getId() : NULL, + '#required' => TRUE, + '#limit_validation_errors' => [['site_resolver']], + '#submit' => ['::submitSiteResolver'], + '#executes_submit_callback' => TRUE, + '#ajax' => [ + 'callback' => '::ajaxReplaceSiteResolverSettingsForm', + 'wrapper' => 'site-resolver-settings', + 'method' => 'replace', + ], + ]; + + $form['site_resolver_settings_container'] = [ + '#type' => 'container', + '#prefix' => '
', + '#suffix' => '
', + ]; + + $site_resolver = $entity->getSiteResolver(); + if ($site_resolver instanceof ConfigurableSiteResolverInterface) { + $form['configuration'] = []; + $subform_state = SubformState::createForSubform($form['configuration'], $form, $form_state); + $form['site_resolver_settings_container']['configuration'] = $site_resolver->buildConfigurationForm($form['configuration'], $subform_state); + } + $form['settings_container'] = [ '#type' => 'container', '#prefix' => '
', @@ -126,35 +156,21 @@ public function form(array $form, FormStateInterface $form_state) { '#group' => 'settings', ]; - $form['draft_mode']['site_resolver'] = [ - '#title' => $this->t('Plugin'), - '#description' => $this->t('Select a plugin to use when validating the draft url for this entity type.'), - '#type' => 'select', - '#options' => array_merge(['' => $this->t('None')], array_column($this->siteResolverManager->getDefinitions(), 'label', 'id')), - '#default_value' => $entity->getSiteResolver() ? $entity->getSiteResolver()->getId() : NULL, - '#limit_validation_errors' => [['site_resolver']], - '#submit' => ['::submitSiteResolver'], + $form['draft_mode']['preview_enabled'] = [ + '#title' => $this->t('Enabled'), + '#description' => $this->t('Enable draft mode.'), + '#type' => 'checkbox', + '#default_value' => $entity->isPreviewEnabled(), + '#limit_validation_errors' => [['preview_enabled']], + '#submit' => ['::submitPreviewEnabled'], '#executes_submit_callback' => TRUE, '#ajax' => [ - 'callback' => '::ajaxReplaceSiteResolverSettingsForm', - 'wrapper' => 'site-resolver-settings', + 'callback' => '::ajaxReplaceSettingsForm', + 'wrapper' => 'settings-container', 'method' => 'replace', ], ]; - $form['draft_mode']['site_resolver_settings_container'] = [ - '#type' => 'container', - '#prefix' => '
', - '#suffix' => '
', - ]; - - $site_resolver = $entity->getSiteResolver(); - if ($site_resolver instanceof ConfigurableSiteResolverInterface) { - $form['configuration'] = []; - $subform_state = SubformState::createForSubform($form['configuration'], $form, $form_state); - $form['draft_mode']['site_resolver_settings_container']['configuration'] = $site_resolver->buildConfigurationForm($form['configuration'], $subform_state); - } - $form['revalidation'] = [ '#title' => $this->t('On-demand Revalidation'), '#description' => $this->t('Configure on-demand revalidation for the entity type.'), @@ -204,6 +220,14 @@ public function submitId(array $form, FormStateInterface $form_state) { $form_state->setRebuild(); } + /** + * Handles submit call when preview mode is selected. + */ + public function submitPreviewEnabled(array $form, FormStateInterface $form_state) { + $this->entity = $this->buildEntity($form, $form_state); + $form_state->setRebuild(); + } + /** * Handles switching the id selector. */ diff --git a/modules/next/src/Render/MainContent/HtmlRenderer.php b/modules/next/src/Render/MainContent/HtmlRenderer.php index b60a20361..a81e4e611 100644 --- a/modules/next/src/Render/MainContent/HtmlRenderer.php +++ b/modules/next/src/Render/MainContent/HtmlRenderer.php @@ -108,7 +108,7 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte } $next_entity_type_config = $this->nextEntityTypeManager->getConfigForEntityType($entity->getEntityTypeId(), $entity->bundle()); - if (!$next_entity_type_config) { + if (!$next_entity_type_config || !$next_entity_type_config->isPreviewEnabled()) { return $build; } diff --git a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php index ad134adb5..6b98da5ef 100644 --- a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php +++ b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php @@ -60,6 +60,7 @@ public function testSiteResolver() { /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface $entity_type_config */ $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', + 'preview_enabled' => FALSE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -124,6 +125,7 @@ public function testRevalidator() { /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface $entity_type_config */ $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', + 'preview_enabled' => FALSE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -140,4 +142,32 @@ public function testRevalidator() { $this->assertSame('path', $revalidator->getId()); } + /** + * Tests the preview enabled property. + * + * @covers ::isPreviewEnabled + */ + public function testPreviewEnabled() { + $blog_site = NextSite::create(['id' => 'blog']); + $blog_site->save(); + + // Create entity type config. + /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface $entity_type_config */ + $entity_type_config = NextEntityTypeConfig::create([ + 'id' => 'node.page', + 'preview_enabled' => TRUE, + 'site_resolver' => 'site_selector', + 'configuration' => [ + 'sites' => [ + 'blog' => 'blog', + ], + ], + ]); + $entity_type_config->save(); + $this->assertTrue($entity_type_config->isPreviewEnabled()); + + $entity_type_config->set('preview_enabled', FALSE)->save(); + $this->assertFalse($entity_type_config->isPreviewEnabled()); + } + } diff --git a/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php b/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php index e8c69d079..fcab1f445 100644 --- a/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php +++ b/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php @@ -50,6 +50,7 @@ protected function setUp(): void { // Create entity type config. $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', + 'preview_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ diff --git a/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php b/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php index f3df8a0a0..8b17fd194 100644 --- a/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php +++ b/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php @@ -53,6 +53,7 @@ public function testGetSitesForEntity() { $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', + 'preview_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -98,6 +99,7 @@ public function testGetSiteResolver() { $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', + 'preview_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -121,6 +123,7 @@ public function testGetRevalidator() { $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', + 'preview_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ diff --git a/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php b/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php index a7de97936..45ff192ed 100644 --- a/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php +++ b/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php @@ -67,6 +67,7 @@ public function testRevalidate() { // Create entity type config. $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', + 'preview_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ diff --git a/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php b/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php index 9afc524ac..0216aab94 100644 --- a/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php +++ b/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php @@ -68,6 +68,7 @@ protected function setUp(): void { // Create entity type config. $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', + 'preview_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ diff --git a/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php b/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php index 0cd090fda..4c57af5ac 100644 --- a/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php +++ b/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php @@ -71,6 +71,7 @@ protected function setUp(): void { // Create entity type config. $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', + 'preview_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ diff --git a/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php b/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php index 7eaaacd29..12c314120 100644 --- a/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php +++ b/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php @@ -26,6 +26,13 @@ class HtmlRendererTest extends KernelTestBase { */ protected static $modules = ['filter', 'next', 'node', 'system', 'user']; + /** + * The next entity type config. + * + * @var \Drupal\next\Entity\NextEntityTypeConfigInterface + */ + protected $entityTypeConfig; + /** * {@inheritdoc} */ @@ -63,8 +70,9 @@ protected function setUp(): void { $blog->save(); // Create entity type config. - $entity_type_config = NextEntityTypeConfig::create([ + $this->entityTypeConfig = NextEntityTypeConfig::create([ 'id' => 'node.page', + 'preview_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -72,7 +80,7 @@ protected function setUp(): void { ], ], ]); - $entity_type_config->save(); + $this->entityTypeConfig->save(); $this->setUpCurrentUser(); } @@ -100,6 +108,16 @@ public function testPrepare() { $preview_url = 'https://blog.com/node/2'; $fields = $this->xpath("//iframe[contains(@src, '$preview_url')]"); $this->assertEmpty($fields); + + // Disable preview. + $this->entityTypeConfig->set('preview_enabled', FALSE); + $this->entityTypeConfig->save(); + $request = Request::create($page->toUrl()->toString(), 'GET'); + $response = $this->container->get('http_kernel')->handle($request); + $this->setRawContent($response->getContent()); + + $fields = $this->xpath("//iframe"); + $this->assertEmpty($fields); } } From 7f890d74f9c784e6a998387dbcdd67a434c76031 Mon Sep 17 00:00:00 2001 From: Bojan Bogdanovic Date: Mon, 19 May 2025 14:56:57 +0200 Subject: [PATCH 2/4] Update ajax callback for site resolver setting --- modules/next/src/Form/NextEntityTypeConfigForm.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/next/src/Form/NextEntityTypeConfigForm.php b/modules/next/src/Form/NextEntityTypeConfigForm.php index 579f99e54..602c065c1 100644 --- a/modules/next/src/Form/NextEntityTypeConfigForm.php +++ b/modules/next/src/Form/NextEntityTypeConfigForm.php @@ -247,7 +247,7 @@ public function submitSiteResolver(array $form, FormStateInterface $form_state) * Handles switching the site resolver selector. */ public function ajaxReplaceSiteResolverSettingsForm($form, FormStateInterface $form_state) { - return $form['draft_mode']['site_resolver_settings_container']; + return $form['site_resolver_settings_container']; } /** From 84fd680c43cd6e92e4b2cd02b9d958de838dd8df Mon Sep 17 00:00:00 2001 From: Bojan Bogdanovic Date: Mon, 19 May 2025 15:31:37 +0200 Subject: [PATCH 3/4] Change key/label from preview to draft --- modules/next/config/schema/next.schema.yml | 4 ++-- modules/next/next.install | 10 +++++----- .../next/src/Entity/NextEntityTypeConfig.php | 10 +++++----- .../Entity/NextEntityTypeConfigInterface.php | 6 +++--- .../next/src/Form/NextEntityTypeConfigForm.php | 12 ++++++------ .../src/Render/MainContent/HtmlRenderer.php | 2 +- .../Kernel/Entity/NextEntityTypeConfigTest.php | 18 +++++++++--------- .../Event/EntityRevalidatedEventTest.php | 2 +- .../src/Kernel/NextEntityTypeManagerTest.php | 6 +++--- .../src/Kernel/Plugin/PathRevalidatorTest.php | 2 +- .../SimpleOauthPreviewUrlGeneratorTest.php | 2 +- .../src/Kernel/Plugin/SiteResolverTest.php | 2 +- .../Renderer/MainContent/HtmlRendererTest.php | 4 ++-- 13 files changed, 40 insertions(+), 40 deletions(-) diff --git a/modules/next/config/schema/next.schema.yml b/modules/next/config/schema/next.schema.yml index 5baafbfa0..a2750276d 100644 --- a/modules/next/config/schema/next.schema.yml +++ b/modules/next/config/schema/next.schema.yml @@ -36,9 +36,9 @@ next.next_entity_type_config.*: label: 'Site resolver' configuration: type: next.site_resolver.configuration.[%parent.site_resolver] - preview_enabled: + draft_enabled: type: boolean - label: 'Preview mode enabled' + label: 'Draft mode enabled' revalidator: type: string label: 'Revalidator' diff --git a/modules/next/next.install b/modules/next/next.install index 2c711b96e..25f2bc0c9 100644 --- a/modules/next/next.install +++ b/modules/next/next.install @@ -106,24 +106,24 @@ function next_update_9106() { } /** - * Add the preview_enabled property to the next_entity_type_config. + * Add the draft_enabled property to the next_entity_type_config. */ function next_update_9107() { $entity_definition_update = \Drupal::entityDefinitionUpdateManager(); $storage_definition = BaseFieldDefinition::create('string') - ->setLabel(t('Preview mode enabled')); - $entity_definition_update->installFieldStorageDefinition('preview_enabled', 'next_entity_type_config', 'next_entity_type_config', $storage_definition); + ->setLabel(t('Draft mode enabled')); + $entity_definition_update->installFieldStorageDefinition('draft_enabled', 'next_entity_type_config', 'next_entity_type_config', $storage_definition); } /** - * Enable preview mode on all Next.js entity types. + * Enable draft mode on all Next.js entity types. */ function next_update_9108() { /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface[] $next_entity_type_configs */ $next_entity_type_configs = \Drupal::entityTypeManager()->getStorage('next_entity_type_config')->loadMultiple(); foreach ($next_entity_type_configs as $next_entity_type_config) { - $next_entity_type_config->set('preview_enabled', TRUE); + $next_entity_type_config->set('draft_enabled', TRUE); $next_entity_type_config->save(); } } diff --git a/modules/next/src/Entity/NextEntityTypeConfig.php b/modules/next/src/Entity/NextEntityTypeConfig.php index 9160f446b..a6241014a 100644 --- a/modules/next/src/Entity/NextEntityTypeConfig.php +++ b/modules/next/src/Entity/NextEntityTypeConfig.php @@ -44,7 +44,7 @@ * "id", * "site_resolver", * "configuration", - * "preview_enabled", + * "draft_enabled", * "revalidator", * "revalidator_configuration" * }, @@ -80,11 +80,11 @@ class NextEntityTypeConfig extends ConfigEntityBase implements NextEntityTypeCon protected $configuration = []; /** - * Whether the preview mode is enabled. + * Whether the draft mode is enabled. * * @var bool */ - protected $preview_enabled = FALSE; + protected $draft_enabled = FALSE; /** * The revalidator. @@ -140,8 +140,8 @@ public function setSiteResolver(string $plugin_id): NextEntityTypeConfigInterfac /** * {@inheritdoc} */ - public function isPreviewEnabled(): bool { - return $this->preview_enabled; + public function isDraftEnabled(): bool { + return $this->draft_enabled; } /** diff --git a/modules/next/src/Entity/NextEntityTypeConfigInterface.php b/modules/next/src/Entity/NextEntityTypeConfigInterface.php index 5c4e211fa..df788aad7 100644 --- a/modules/next/src/Entity/NextEntityTypeConfigInterface.php +++ b/modules/next/src/Entity/NextEntityTypeConfigInterface.php @@ -32,12 +32,12 @@ public function getSiteResolver(): ?SiteResolverInterface; public function setSiteResolver(string $plugin_id): self; /** - * Checks if the preview mode is enabled. + * Checks if the draft mode is enabled. * * @return bool - * Return true/false if preview mode is enabled. + * Return true/false if draft mode is enabled. */ - public function isPreviewEnabled(): bool; + public function isDraftEnabled(): bool; /** * Returns the revalidator plugin. diff --git a/modules/next/src/Form/NextEntityTypeConfigForm.php b/modules/next/src/Form/NextEntityTypeConfigForm.php index 602c065c1..e6179f408 100644 --- a/modules/next/src/Form/NextEntityTypeConfigForm.php +++ b/modules/next/src/Form/NextEntityTypeConfigForm.php @@ -156,13 +156,13 @@ public function form(array $form, FormStateInterface $form_state) { '#group' => 'settings', ]; - $form['draft_mode']['preview_enabled'] = [ + $form['draft_mode']['draft_enabled'] = [ '#title' => $this->t('Enabled'), '#description' => $this->t('Enable draft mode.'), '#type' => 'checkbox', - '#default_value' => $entity->isPreviewEnabled(), - '#limit_validation_errors' => [['preview_enabled']], - '#submit' => ['::submitPreviewEnabled'], + '#default_value' => $entity->isDraftEnabled(), + '#limit_validation_errors' => [['draft_enabled']], + '#submit' => ['::submitDraftEnabled'], '#executes_submit_callback' => TRUE, '#ajax' => [ 'callback' => '::ajaxReplaceSettingsForm', @@ -221,9 +221,9 @@ public function submitId(array $form, FormStateInterface $form_state) { } /** - * Handles submit call when preview mode is selected. + * Handles submit call when draft mode is selected. */ - public function submitPreviewEnabled(array $form, FormStateInterface $form_state) { + public function submitDraftEnabled(array $form, FormStateInterface $form_state) { $this->entity = $this->buildEntity($form, $form_state); $form_state->setRebuild(); } diff --git a/modules/next/src/Render/MainContent/HtmlRenderer.php b/modules/next/src/Render/MainContent/HtmlRenderer.php index a81e4e611..4decf2c51 100644 --- a/modules/next/src/Render/MainContent/HtmlRenderer.php +++ b/modules/next/src/Render/MainContent/HtmlRenderer.php @@ -108,7 +108,7 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte } $next_entity_type_config = $this->nextEntityTypeManager->getConfigForEntityType($entity->getEntityTypeId(), $entity->bundle()); - if (!$next_entity_type_config || !$next_entity_type_config->isPreviewEnabled()) { + if (!$next_entity_type_config || !$next_entity_type_config->isDraftEnabled()) { return $build; } diff --git a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php index d139c02e2..c35d941a3 100644 --- a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php +++ b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php @@ -59,7 +59,7 @@ public function testSiteResolver() { /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface $entity_type_config */ $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => FALSE, + 'draft_enabled' => FALSE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -124,7 +124,7 @@ public function testRevalidator() { /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface $entity_type_config */ $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => FALSE, + 'draft_enabled' => FALSE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -142,11 +142,11 @@ public function testRevalidator() { } /** - * Tests the preview enabled property. + * Tests the draft enabled property. * - * @covers ::isPreviewEnabled + * @covers ::isDraftEnabled */ - public function testPreviewEnabled() { + public function testDraftEnabled() { $blog_site = NextSite::create(['id' => 'blog']); $blog_site->save(); @@ -154,7 +154,7 @@ public function testPreviewEnabled() { /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface $entity_type_config */ $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => TRUE, + 'draft_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -163,10 +163,10 @@ public function testPreviewEnabled() { ], ]); $entity_type_config->save(); - $this->assertTrue($entity_type_config->isPreviewEnabled()); + $this->assertTrue($entity_type_config->isDraftEnabled()); - $entity_type_config->set('preview_enabled', FALSE)->save(); - $this->assertFalse($entity_type_config->isPreviewEnabled()); + $entity_type_config->set('draft_enabled', FALSE)->save(); + $this->assertFalse($entity_type_config->isDraftEnabled()); } } diff --git a/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php b/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php index 1f9251d83..6cb1761ab 100644 --- a/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php +++ b/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php @@ -48,7 +48,7 @@ protected function setUp(): void { // Create entity type config. $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => TRUE, + 'draft_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ diff --git a/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php b/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php index 2fe6c58c9..80502d28d 100644 --- a/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php +++ b/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php @@ -52,7 +52,7 @@ public function testGetSitesForEntity() { $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => TRUE, + 'draft_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -98,7 +98,7 @@ public function testGetSiteResolver() { $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => TRUE, + 'draft_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -122,7 +122,7 @@ public function testGetRevalidator() { $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => TRUE, + 'draft_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ diff --git a/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php b/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php index 4e77bf18c..c0f9af99e 100644 --- a/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php +++ b/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php @@ -66,7 +66,7 @@ public function testRevalidate() { // Create entity type config. $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => TRUE, + 'draft_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ diff --git a/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php b/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php index b31c4072a..e070141ca 100644 --- a/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php +++ b/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php @@ -67,7 +67,7 @@ protected function setUp(): void { // Create entity type config. $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => TRUE, + 'draft_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ diff --git a/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php b/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php index 295567273..a2671d382 100644 --- a/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php +++ b/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php @@ -70,7 +70,7 @@ protected function setUp(): void { // Create entity type config. $entity_type_config = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => TRUE, + 'draft_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ diff --git a/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php b/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php index 22dac60d5..58c222652 100644 --- a/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php +++ b/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php @@ -71,7 +71,7 @@ protected function setUp(): void { // Create entity type config. $this->entityTypeConfig = NextEntityTypeConfig::create([ 'id' => 'node.page', - 'preview_enabled' => TRUE, + 'draft_enabled' => TRUE, 'site_resolver' => 'site_selector', 'configuration' => [ 'sites' => [ @@ -109,7 +109,7 @@ public function testPrepare() { $this->assertEmpty($fields); // Disable preview. - $this->entityTypeConfig->set('preview_enabled', FALSE); + $this->entityTypeConfig->set('draft_enabled', FALSE); $this->entityTypeConfig->save(); $request = Request::create($page->toUrl()->toString(), 'GET'); $response = $this->container->get('http_kernel')->handle($request); From 89baaeb10fe3bfeedbd2b0fd7e47f97fd5b1de87 Mon Sep 17 00:00:00 2001 From: Bojan Bogdanovic Date: Mon, 19 May 2025 15:34:06 +0200 Subject: [PATCH 4/4] Change comment from preview to draft --- .../tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php b/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php index 58c222652..11e5ac63a 100644 --- a/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php +++ b/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php @@ -108,7 +108,7 @@ public function testPrepare() { $fields = $this->xpath("//iframe[contains(@src, '$preview_url')]"); $this->assertEmpty($fields); - // Disable preview. + // Disable draft. $this->entityTypeConfig->set('draft_enabled', FALSE); $this->entityTypeConfig->save(); $request = Request::create($page->toUrl()->toString(), 'GET');