Commit 6374e304 authored by alexpott's avatar alexpott

Revert "Issue #2468713 by StryKaizer, jhedstrom, rootwork, dawehner,...

Revert "Issue #2468713 by StryKaizer, jhedstrom, rootwork, dawehner, paulmckibben: Internal/custom menu links force-reset to the top of their menus on cache rebuild"

This reverts commit 5cd3b685.
parent 5cd3b685
......@@ -157,9 +157,6 @@ public function rebuild(array $definitions) {
foreach ($definitions as $id => $link) {
// Flag this link as discovered, i.e. saved via rebuild().
$link['discovered'] = 1;
// Note: The parent we set here might be just stored in the {menu_tree}
// table, so it will not end up in $top_links. Therefore the later loop
// on the orphan links, will handle those cases.
if (!empty($link['parent'])) {
$children[$link['parent']][$id] = $id;
}
......@@ -177,18 +174,8 @@ public function rebuild(array $definitions) {
// Handle any children we didn't find starting from top-level links.
foreach ($children as $orphan_links) {
foreach ($orphan_links as $id) {
// Check for a parent that is not loaded above since only internal links
// are loaded above.
$parent = $this->loadFull($links[$id]['parent']);
// If there is a parent add it to the links to be used in
// ::saveRecursive().
if ($parent) {
$links[$links[$id]['parent']] = $parent;
}
else {
// Force it to the top level.
$links[$id]['parent'] = '';
}
// Force it to the top level.
$links[$id]['parent'] = '';
$this->saveRecursive($id, $children, $links);
}
}
......
......@@ -319,37 +319,6 @@ public function testSubtreeHeight() {
$this->assertEqual($this->treeStorage->getSubtreeHeight('child4'), 1);
}
/**
* Ensure hierarchy persists after a menu rebuild.
*/
public function testMenuRebuild() {
// root
// - child1
// -- child2
// --- child3
// ---- child4
$this->addMenuLink('root');
$this->addMenuLink('child1', 'root');
$this->addMenuLink('child2', 'child1');
$this->addMenuLink('child3', 'child2');
$this->addMenuLink('child4', 'child3');
$this->assertEqual($this->treeStorage->getSubtreeHeight('root'), 5);
$this->assertEqual($this->treeStorage->getSubtreeHeight('child1'), 4);
$this->assertEqual($this->treeStorage->getSubtreeHeight('child2'), 3);
$this->assertEqual($this->treeStorage->getSubtreeHeight('child3'), 2);
$this->assertEqual($this->treeStorage->getSubtreeHeight('child4'), 1);
// Intentionally leave child3 out to mimic static or external links.
$definitions = $this->treeStorage->loadMultiple(['root', 'child1', 'child2', 'child4']);
$this->treeStorage->rebuild($definitions);
$this->assertEqual($this->treeStorage->getSubtreeHeight('root'), 5);
$this->assertEqual($this->treeStorage->getSubtreeHeight('child1'), 4);
$this->assertEqual($this->treeStorage->getSubtreeHeight('child2'), 3);
$this->assertEqual($this->treeStorage->getSubtreeHeight('child3'), 2);
$this->assertEqual($this->treeStorage->getSubtreeHeight('child4'), 1);
}
/**
* Tests MenuTreeStorage::loadByProperties().
*/
......
<?php
/**
* @file
* Contains \Drupal\views\Tests\Plugin\MenuLinkTest.
*/
namespace Drupal\views\Tests\Plugin;
use Drupal\menu_link_content\Entity\MenuLinkContent;
use Drupal\views\Tests\ViewTestBase;
/**
* Tests the menu links created in views.
*
* @group views
*/
class MenuLinkTest extends ViewTestBase {
/**
* Views used by this test.
*
* @var array
*/
public static $testViews = ['test_menu_link'];
/**
* Modules to enable.
*
* @var array
*/
public static $modules = ['views', 'views_ui', 'user', 'node', 'menu_ui', 'block'];
/**
* A user with permission to administer views, menus and view content.
*
* @var \Drupal\user\UserInterface
*/
protected $adminUser;
/**
* {@inheritdoc}
*/
protected function setUp() {
parent::setUp();
$this->enableViewsTestModule();
$this->adminUser = $this->drupalCreateUser(['administer views', 'administer menu']);
$this->drupalPlaceBlock('system_menu_block:main');
$this->drupalCreateContentType(['type' => 'page']);
}
/**
* Test that menu links using menu_link_content as parent are visible.
*/
public function testHierarchicalMenuLinkVisibility() {
$this->drupalLogin($this->adminUser);
$node = $this->drupalCreateNode(['type' => 'page']);
// Create a primary level menu link to the node.
$link = MenuLinkContent::create([
'title' => 'Primary level node',
'menu_name' => 'main',
'bundle' => 'menu_link_content',
'parent' => '',
'link' => [['uri' => 'entity:node/' . $node->id()]],
]);
$link->save();
$parent_menu_value = 'main:menu_link_content:' . $link->uuid();
// Alter the view's menu link in view page to use the menu link from the
// node as parent.
$this->drupalPostForm("admin/structure/views/nojs/display/test_menu_link/page_1/menu", [
'menu[type]' => 'normal',
'menu[title]' => 'Secondary level view page',
'menu[parent]' => $parent_menu_value,
], 'Apply');
// Save view which has pending changes.
$this->drupalPostForm(NULL, [], 'Save');
// Test if the node as parent menu item is selected in our views settings.
$this->drupalGet('admin/structure/views/nojs/display/test_menu_link/page_1/menu');
$this->assertOptionSelected('edit-menu-parent', $parent_menu_value);
$this->drupalGet('');
// Test if the primary menu item (node) is visible, and the secondary menu
// item (view) is hidden.
$this->assertText('Primary level node');
$this->assertNoText('Secondary level view page');
// Go to the node page and ensure that both the first and second level items
// are visible.
$this->drupalGet($node->urlInfo());
$this->assertText('Primary level node');
$this->assertText('Secondary level view page');
}
}
langcode: en
status: true
dependencies: { }
id: test_menu_link
label: ''
module: views
description: ''
tag: ''
base_table: views_test_data
base_field: nid
core: '8'
display:
default:
display_options:
defaults:
fields: false
pager: false
sorts: false
fields:
age:
field: age
id: age
relationship: none
table: views_test_data
plugin_id: numeric
display_plugin: default
display_title: Master
id: default
position: 0
page_1:
display_plugin: page
display_title: 'Test page view'
id: page_1
position: 1
display_options:
display_extenders: { }
path: test-menu-link
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment