From fd4c6da9479c52916216a1b18fc8fa35e4256b08 Mon Sep 17 00:00:00 2001 From: webchick <drupal@webchick.net> Date: Mon, 15 Dec 2014 09:28:38 -0800 Subject: [PATCH] Issue #2354469 by swentel, Vj, R. Volk: Can't create node, if preview is required --- core/modules/node/src/NodeForm.php | 9 ++++++++- core/modules/node/src/Tests/PagePreviewTest.php | 10 ++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/modules/node/src/NodeForm.php b/core/modules/node/src/NodeForm.php index 16b1a01634ce..12a0c00865e5 100644 --- a/core/modules/node/src/NodeForm.php +++ b/core/modules/node/src/NodeForm.php @@ -29,6 +29,11 @@ class NodeForm extends ContentEntityForm { */ protected $tempStoreFactory; + /** + * Whether this node has been previewed or not. + */ + protected $hasBeenPreviewed = FALSE; + /** * Constructs a ContentEntityForm object. * @@ -87,6 +92,8 @@ public function form(array $form, FormStateInterface $form_state) { $form_state->setRebuild(); $this->entity = $preview->getFormObject()->getEntity(); unset($this->entity->in_preview); + + $this->hasBeenPreviewed = TRUE; } /** @var \Drupal\node\NodeInterface $node */ @@ -219,7 +226,7 @@ protected function actions(array $form, FormStateInterface $form_state) { $node = $this->entity; $preview_mode = $node->type->entity->getPreviewMode(); - $element['submit']['#access'] = $preview_mode != DRUPAL_REQUIRED || (!$form_state->getErrors() && $form_state->get('node_preview')); + $element['submit']['#access'] = $preview_mode != DRUPAL_REQUIRED || $this->hasBeenPreviewed; // If saving is an option, privileged users get dedicated form submit // buttons to adjust the publishing status while saving in one go. diff --git a/core/modules/node/src/Tests/PagePreviewTest.php b/core/modules/node/src/Tests/PagePreviewTest.php index 5fc64d306c20..4c40ae9eb4d2 100644 --- a/core/modules/node/src/Tests/PagePreviewTest.php +++ b/core/modules/node/src/Tests/PagePreviewTest.php @@ -194,6 +194,16 @@ function testPagePreview() { $this->assertLink($newterm1); $this->assertLink($newterm2); $this->assertNoLink($newterm3); + + // Check with required preview. + $node_type = NodeType::load('page'); + $node_type->setPreviewMode(DRUPAL_REQUIRED); + $node_type->save(); + $this->drupalGet('node/add/page'); + $this->assertNoRaw('edit-submit'); + $this->drupalPostForm('node/add/page', array($title_key => 'Preview'), t('Preview')); + $this->clickLink(t('Back to content editing')); + $this->assertRaw('edit-submit'); } /** -- GitLab