diff --git a/core/modules/views_ui/src/Tests/DisplayOrderTest.php b/core/modules/views_ui/src/Tests/DisplayOrderTest.php deleted file mode 100644 index db57632..0000000 --- a/core/modules/views_ui/src/Tests/DisplayOrderTest.php +++ /dev/null @@ -1,79 +0,0 @@ -set('ui.show.master_display', TRUE) - ->save(); - - $settings['page[create]'] = FALSE; - $view = $this->randomView($settings); - - $view_id = $view['id']; - $path_prefix = 'admin/structure/views/view/' . $view_id . '/edit'; - $this->drupalGet($path_prefix); - - // Add a new page display. - $this->drupalPostForm(NULL, array(), 'Add Page'); - $this->assertLinkByHref($path_prefix . '/page_1', 0, 'Make sure after adding a display the new display appears in the UI'); - - $this->assertNoLink('Master*', 0, 'Make sure the master display is not marked as changed.'); - $this->assertLink('Page*', 0, 'Make sure the added display is marked as changed.'); - - $this->drupalPostForm("admin/structure/views/nojs/display/{$view_id}/page_1/path", array('path' => 'test/path'), t('Apply')); - $this->drupalPostForm(NULL, array(), t('Save')); - - // Add a new block display. - $this->drupalPostForm(NULL, array(), 'Add Block'); - $this->assertLinkByHref($path_prefix . '/block_1', 0, 'Make sure after adding a display the new display appears in the UI'); - $this->drupalPostForm(NULL, array(), t('Save')); - - // Test that the new view displays are in the correct order. - $view = Views::getView($view_id); - $displays = $view->storage->get('display'); - $expected_displays = array('default', 'block_1', 'page_1'); - $this->assertEqual(array_keys($displays), $expected_displays, 'The display names are in correct order.'); - - // Ensure that the displays also appear in the right order in the UI. - $result = $this->cssSelect('ul#views-display-menu-tabs li a'); - $this->assertEqual(count($result), 3); - $this->assertEqual(Url::fromRoute('entity.view.edit_display_form', ['view' => $view_id, 'display_id' => 'default'])->toString(), (string) $result[0]['href']); - $this->assertEqual(Url::fromRoute('entity.view.edit_display_form', ['view' => $view_id, 'display_id' => 'page_1'])->toString(), (string) $result[1]['href']); - $this->assertEqual(Url::fromRoute('entity.view.edit_display_form', ['view' => $view_id, 'display_id' => 'block_1'])->toString(), (string) $result[2]['href']); - } - -} diff --git a/core/modules/views_ui/src/Tests/DisplayTest.php b/core/modules/views_ui/src/Tests/DisplayTest.php index 9fb9866..1188f5d 100644 --- a/core/modules/views_ui/src/Tests/DisplayTest.php +++ b/core/modules/views_ui/src/Tests/DisplayTest.php @@ -48,6 +48,9 @@ public function testReorderDisplay() { $this->assertTrue($this->xpath('//tr[@id="display-row-page_1"]'), 'Make sure the page display appears on the reorder listing'); $this->assertTrue($this->xpath('//tr[@id="display-row-block_1"]'), 'Make sure the block display appears on the reorder listing'); + // Ensure the view displays are in the expected order in configuration. + $expected_display_order = array('default', 'block_1', 'page_1'); + $this->assertEqual(array_keys(Views::getView($view['id'])->storage->get('display')), $expected_display_order, 'The correct display names are present.'); // Put the block display in front of the page display. $edit = array( 'displays[page_1][weight]' => 2, @@ -61,6 +64,9 @@ public function testReorderDisplay() { $this->assertEqual($displays['default']['position'], 0, 'Make sure the master display comes first.'); $this->assertEqual($displays['block_1']['position'], 1, 'Make sure the block display comes before the page display.'); $this->assertEqual($displays['page_1']['position'], 2, 'Make sure the page display comes after the block display.'); + + // Ensure the view displays are in the expected order in configuration. + $this->assertEqual(array_keys($view->storage->get('display')), $expected_display_order, 'The correct display names are present.'); } /** diff --git a/core/modules/views_ui/src/ViewFormBase.php b/core/modules/views_ui/src/ViewFormBase.php index 964527b..7747078 100644 --- a/core/modules/views_ui/src/ViewFormBase.php +++ b/core/modules/views_ui/src/ViewFormBase.php @@ -54,7 +54,6 @@ protected function prepareEntity() { if ($tabs = $this->getDisplayTabs($this->entity)) { // If a display isn't specified, use the first one. if (empty($this->displayID)) { - $tabs = $this->sortDisplayTabs($tabs); foreach ($tabs as $id => $tab) { if (!isset($tab['#access']) || $tab['#access']) { $this->displayID = $id; @@ -78,36 +77,6 @@ protected function prepareEntity() { } /** - * Sort tabs by name, but prioritize default, page and block. - * - * @param array $tabs - * - * @return array - */ - protected function sortDisplayTabs($tabs) { - ksort($tabs); - - $default = array_filter(array_keys($tabs), function ($value) { - return (strpos($value, 'default') === 0) ? TRUE : FALSE; - }); - - $page = array_filter(array_keys($tabs), function ($value) { - return (strpos($value, 'page') === 0) ? TRUE : FALSE; - }); - - $block = array_filter(array_keys($tabs), function ($value) { - return (strpos($value, 'block') === 0) ? TRUE : FALSE; - }); - - $sorted = array(); - $sorted += array_intersect_key($tabs, array_flip($default)); - $sorted += array_intersect_key($tabs, array_flip($page)); - $sorted += array_intersect_key($tabs, array_flip($block)); - $sorted += $tabs; - return $sorted; - } - - /** * Creates an array of Views admin CSS for adding or attaching. * * This returns an array of arrays. Each array represents a single