diff --git a/lib/Drupal/views/Tests/ViewStorageTest.php b/lib/Drupal/views/Tests/ViewStorageTest.php index fa07fbe1a86306b65752f485737b35f07fa53ff0..5dc7ec07f0c3f99cc5a81e04f7d28ceb6b00eb33 100644 --- a/lib/Drupal/views/Tests/ViewStorageTest.php +++ b/lib/Drupal/views/Tests/ViewStorageTest.php @@ -168,7 +168,7 @@ function testConfigurableCRUD() { $created_loaded = reset($loaded_entities); $values_loaded = config('views.view.archive')->get(); - $this->assertTrue(isset($created_loaded->display['default']->display_options), 'Make sure that the display options exists.'); + $this->assertTrue(isset($created_loaded->display['default']->display_options), 'Make sure that the display options exist.'); $this->assertEqual($created_loaded->display['default']->display_plugin, 'default', 'Make sure the right display plugin is set.'); $this->assertEqual($values, $values_loaded, 'The loaded config is the same as the original loaded one.'); diff --git a/lib/Drupal/views/ViewDisplay.php b/lib/Drupal/views/ViewDisplay.php index 1e374d431d944b4f5f25268e36ed97af225869c3..aa8c6cdd301050555d2e05f5ef928e0aea78b467 100644 --- a/lib/Drupal/views/ViewDisplay.php +++ b/lib/Drupal/views/ViewDisplay.php @@ -29,13 +29,19 @@ class ViewDisplay { */ public $display_options; - function __construct(array $display_options = array()) { - if (!empty($display_options)) { - $this->display_options = $display_options['display_options']; - $this->display_plugin = $display_options['display_plugin']; - $this->id = $display_options['id']; - $this->display_title = $display_options['display_title']; - } + public function __construct(array $display_options = array()) { + $display_options += array( + 'display_options' => array(), + 'display_plugin' => NULL, + 'id' => NULL, + 'display_title' => '', + 'position' => NULL, + ); + + $this->display_options = $display_options['display_options']; + $this->display_plugin = $display_options['display_plugin']; + $this->id = $display_options['id']; + $this->display_title = $display_options['display_title']; } } diff --git a/lib/Drupal/views/ViewStorageController.php b/lib/Drupal/views/ViewStorageController.php index f297b075c4e3c88f4cffc8ab8c3f9d77838ad7b7..7318b3c5090fe58925326bf999e17d6361916835 100644 --- a/lib/Drupal/views/ViewStorageController.php +++ b/lib/Drupal/views/ViewStorageController.php @@ -104,7 +104,6 @@ public function save(StorableInterface $entity) { * Overrides Drupal\config\ConfigStorageController::create(). */ public function create(array $values) { - // If there is no information about displays available add at least the // default display. $values += array( @@ -124,13 +123,22 @@ public function create(array $values) { * * @param Drupal\entity\StorableInterface $entity */ - protected function attachDisplays($entity) { + protected function attachDisplays(StorableInterface $entity) { if (isset($entity->display) && is_array($entity->display)) { $displays = array(); + foreach ($entity->get('display') as $key => $options) { + $options += array( + 'display_options' => array(), + 'display_plugin' => NULL, + 'id' => NULL, + 'display_title' => '', + 'position' => NULL, + ); // Create a ViewDisplay object using the display options. $displays[$key] = new ViewDisplay($options); } + $entity->set('display', $displays); } }