diff --git a/core/modules/edit/lib/Drupal/edit/Form/EditFieldForm.php b/core/modules/edit/lib/Drupal/edit/Form/EditFieldForm.php index 4cfc1a0..1c356b2 100644 --- a/core/modules/edit/lib/Drupal/edit/Form/EditFieldForm.php +++ b/core/modules/edit/lib/Drupal/edit/Form/EditFieldForm.php @@ -119,7 +119,7 @@ protected function init(array &$form_state, EntityInterface $entity, $field_name if ($entity->entityType() == 'node') { $node_type_settings = $this->nodeTypeStorage->load($entity->bundle())->getModuleSettings('node'); $options = (isset($node_type_settings['options'])) ? $node_type_settings['options'] : array(); - $entity->setNewRevision(!empty($options['revision']) ? $options['revision'] : 0); + $entity->setNewRevision(!empty($options['revision'])); $entity->log = NULL; } diff --git a/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php b/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php index 0c261c4..b8c31aa 100644 --- a/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php +++ b/core/modules/edit/lib/Drupal/edit/Tests/EditLoadingTest.php @@ -245,10 +245,9 @@ public function testUserWithPermission() { // then again retrieve the field form, fill it, submit it (so it ends up // in TempStore) and then save the entity. Now there should be two // revisions. - $this->container->get('config.factory')->get('node.type.article')->set('settings.node.options', array( - 'status' => TRUE, - 'revision' => TRUE, - ))->save(); + $node_type = entity_load('node_type', 'article'); + $node_type->settings['node']['options']['revision'] = TRUE; + $node_type->save(); // Retrieve field form. $post = array('nocssjs' => 'true', 'reset' => 'true'); diff --git a/core/modules/node/lib/Drupal/node/Entity/NodeType.php b/core/modules/node/lib/Drupal/node/Entity/NodeType.php index 0262bd5..cec3461 100644 --- a/core/modules/node/lib/Drupal/node/Entity/NodeType.php +++ b/core/modules/node/lib/Drupal/node/Entity/NodeType.php @@ -7,6 +7,7 @@ namespace Drupal\node\Entity; +use Drupal\Component\Utility\NestedArray; use Drupal\Core\Config\Entity\ConfigEntityBase; use Drupal\Core\Entity\EntityStorageControllerInterface; use Drupal\node\NodeTypeInterface; @@ -219,28 +220,16 @@ public static function preCreate(EntityStorageControllerInterface $storage_contr if (!isset($values['settings']['node'])) { $values['settings']['node'] = array(); } - $values['settings']['node'] += array( + $values['settings']['node'] = NestedArray::mergeDeep(array( 'options' => array( 'status' => TRUE, 'promote' => TRUE, + 'sticky' => FALSE, 'revision' => FALSE, ), 'preview' => DRUPAL_OPTIONAL, 'submitted' => TRUE, - ); - } - - /** - * {@inheritdoc} - */ - public function getExportProperties() { - $properties = parent::getExportProperties(); - // Ensure that submitted and options are booleans. - $properties['settings']['node']['submitted'] = (bool) $properties['settings']['node']['submitted']; - foreach ($properties['settings']['node']['options'] as $key => $value) { - $properties['settings']['node']['options'][$key] = (bool) $value; - } - return $properties; + ), $values['settings']['node']); } } diff --git a/core/modules/node/lib/Drupal/node/NodeFormController.php b/core/modules/node/lib/Drupal/node/NodeFormController.php index 04e016a..3fb7584 100644 --- a/core/modules/node/lib/Drupal/node/NodeFormController.php +++ b/core/modules/node/lib/Drupal/node/NodeFormController.php @@ -44,7 +44,7 @@ protected function prepareEntity() { foreach (array('status', 'promote', 'sticky') as $key) { // Multistep node forms might have filled in something already. if ($node->$key->isEmpty()) { - $node->$key = (int) (isset($this->settings['options'][$key]) ? $this->settings['options'][$key] : 0); + $node->$key = (int) !empty($this->settings['options'][$key]); } } $node->setAuthorId(\Drupal::currentUser()->id()); @@ -56,7 +56,7 @@ protected function prepareEntity() { $node->log = NULL; } // Always use the default revision setting. - $node->setNewRevision(isset($this->settings['options']['revision']) ? $this->settings['options']['revision'] : FALSE); + $node->setNewRevision(!empty($this->settings['options']['revision'])); } /** diff --git a/core/modules/node/lib/Drupal/node/NodeTypeFormController.php b/core/modules/node/lib/Drupal/node/NodeTypeFormController.php index 2a2bc61..edb1532 100644 --- a/core/modules/node/lib/Drupal/node/NodeTypeFormController.php +++ b/core/modules/node/lib/Drupal/node/NodeTypeFormController.php @@ -32,6 +32,8 @@ public function form(array $form, array &$form_state) { } $node_settings = $type->getModuleSettings('node'); + // Prepare node options to be used for 'checkboxes' form element. + $node_settings['options'] = MapArray::copyValuesToKeys(array_keys(array_filter($node_settings['options']))); $form['name'] = array( '#title' => t('Name'), '#type' => 'textfield', @@ -113,7 +115,7 @@ public function form(array $form, array &$form_state) { $form['workflow']['options'] = array('#type' => 'checkboxes', '#title' => t('Default options'), '#parents' => array('settings', 'node', 'options'), - '#default_value' => MapArray::copyValuesToKeys(array_keys(array_filter($node_settings['options']))), + '#default_value' => $node_settings['options'], '#options' => array( 'status' => t('Published'), 'promote' => t('Promoted to front page'), diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTestBase.php b/core/modules/node/lib/Drupal/node/Tests/NodeTestBase.php index c8b5b28..533c87b 100644 --- a/core/modules/node/lib/Drupal/node/Tests/NodeTestBase.php +++ b/core/modules/node/lib/Drupal/node/Tests/NodeTestBase.php @@ -34,7 +34,13 @@ function setUp() { // Create Basic page and Article node types. if ($this->profile != 'standard') { - $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page', 'settings' => array('node' => array('submitted' => FALSE)))); + $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page', 'settings' => array( + // Set proper default options for page content type. + 'node' => array( + 'options' => array('promote' => FALSE), + 'submitted' => FALSE, + ), + ))); $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article')); } $this->accessController = \Drupal::entityManager()->getAccessController('node'); diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php index 6f5065ec..a761cc3 100644 --- a/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php +++ b/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php @@ -282,6 +282,13 @@ protected function doArticleRdfaTests() { * displayed in teaser view, so it is tested in the front page tests. */ protected function doPageRdfaTests() { + // The standard profile hides the created date on pages. Revert display to + // true for testing. + // @todo Clean-up standard profile defaults. + $node_type = entity_load('node_type', 'page'); + $node_type->settings['node']['submitted'] = TRUE; + $node_type->save(); + // Feed the HTML into the parser. $uri_info = $this->page->uri(); $path = $uri_info['path']; diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php index 9413b96..222098b 100644 --- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php +++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php @@ -288,14 +288,8 @@ protected function drupalCreateNode(array $settings = array()) { 'format' => filter_default_format(), ); - // If the specified node type does not exist, create it. - if (!$this->container->get('entity.query')->get('node_type')->condition('type', $settings['type'])->execute()) { - $this->drupalCreateContentType(array('type' => $settings['type'], 'name' => $this->randomString())); - } $node = entity_create('node', $settings); - if (!empty($settings['revision'])) { - $node->setNewRevision(); - } + $node->setNewRevision(!empty($settings['revision'])); $node->save(); return $node;