Issue #2318435 by dawehner, Gábor Hojtsy: Fixed Views menu items disappears when editing menu.
parent
cdf77e49f8
commit
455428cb93
|
|
@ -669,7 +669,7 @@ display:
|
|||
type: tab
|
||||
title: Files
|
||||
description: ''
|
||||
name: admin
|
||||
menu_name: admin
|
||||
weight: 0
|
||||
context: ''
|
||||
display_description: ''
|
||||
|
|
|
|||
|
|
@ -549,14 +549,14 @@ display:
|
|||
type: 'default tab'
|
||||
title: Content
|
||||
description: ''
|
||||
name: admin
|
||||
menu_name: admin
|
||||
weight: -10
|
||||
context: ''
|
||||
tab_options:
|
||||
type: normal
|
||||
title: Content
|
||||
description: 'Find and manage content'
|
||||
name: admin
|
||||
menu_name: admin
|
||||
weight: -10
|
||||
field_langcode: '***CURRENT_LANGUAGE***'
|
||||
field_langcode_add_to_query: null
|
||||
|
|
|
|||
|
|
@ -880,14 +880,14 @@ display:
|
|||
type: 'default tab'
|
||||
title: List
|
||||
description: 'Find and manage people interacting with your site.'
|
||||
name: admin
|
||||
menu_name: admin
|
||||
weight: -10
|
||||
context: ''
|
||||
tab_options:
|
||||
type: normal
|
||||
title: People
|
||||
description: 'Manage user accounts, roles, and permissions.'
|
||||
name: admin
|
||||
menu_name: admin
|
||||
weight: 0
|
||||
defaults:
|
||||
show_admin_links: false
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ views.display.page:
|
|||
weight:
|
||||
type: integer
|
||||
label: 'Weight'
|
||||
name:
|
||||
menu_name:
|
||||
type: string
|
||||
label: 'Menu name'
|
||||
context:
|
||||
|
|
@ -56,7 +56,7 @@ views.display.page:
|
|||
weight:
|
||||
type: integer
|
||||
label: 'Weight'
|
||||
name:
|
||||
menu_name:
|
||||
type: string
|
||||
label: 'Menu name'
|
||||
|
||||
|
|
|
|||
|
|
@ -132,14 +132,16 @@ class ViewsMenuLink extends MenuLinkBase implements ContainerFactoryPluginInterf
|
|||
*/
|
||||
public function updateLink(array $new_definition_values, $persist) {
|
||||
$overrides = array_intersect_key($new_definition_values, $this->overrideAllowed);
|
||||
// Update the definition.
|
||||
$this->pluginDefinition = $overrides + $this->pluginDefinition;
|
||||
if ($persist) {
|
||||
$view = $this->loadView();
|
||||
$display = &$view->storage->getDisplay($view->current_display);
|
||||
// Just save the title to the original view.
|
||||
$changed = FALSE;
|
||||
foreach (array('title' => 'title', 'weight' => 'weight', 'menu' => 'name', 'description' => 'description') as $definition_key => $views_key) {
|
||||
if ($display['display_options']['menu'][$views_key] != $new_definition_values[$definition_key]) {
|
||||
$display['display_options']['menu'][$views_key] = $new_definition_values[$definition_key];
|
||||
foreach ($new_definition_values as $key => $new_definition_value) {
|
||||
if (isset($display['display_options']['menu'][$key]) && $display['display_options']['menu'][$key] != $new_definition_values[$key]) {
|
||||
$display['display_options']['menu'][$key] = $new_definition_values[$key];
|
||||
$changed = TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -149,8 +151,6 @@ class ViewsMenuLink extends MenuLinkBase implements ContainerFactoryPluginInterf
|
|||
$view->storage->save();
|
||||
}
|
||||
}
|
||||
// Update the definition.
|
||||
$this->pluginDefinition = $overrides + $this->pluginDefinition;
|
||||
return $this->pluginDefinition;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ class Page extends PathPluginBase {
|
|||
'title' => array('default' => '', 'translatable' => FALSE),
|
||||
'description' => array('default' => '', 'translatable' => FALSE),
|
||||
'weight' => array('default' => 0),
|
||||
'name' => array('default' => 'navigation'),
|
||||
'menu_name' => array('default' => 'navigation'),
|
||||
'context' => array('default' => ''),
|
||||
),
|
||||
);
|
||||
|
|
@ -61,7 +61,7 @@ class Page extends PathPluginBase {
|
|||
'title' => array('default' => '', 'translatable' => FALSE),
|
||||
'description' => array('default' => '', 'translatable' => FALSE),
|
||||
'weight' => array('default' => 0),
|
||||
'name' => array('default' => 'navigation'),
|
||||
'menu_name' => array('default' => 'navigation'),
|
||||
),
|
||||
);
|
||||
|
||||
|
|
@ -219,11 +219,11 @@ class Page extends PathPluginBase {
|
|||
|
||||
// Only display the menu selector if Menu UI module is enabled.
|
||||
if (\Drupal::moduleHandler()->moduleExists('menu_ui')) {
|
||||
$form['menu']['name'] = array(
|
||||
$form['menu']['menu_name'] = array(
|
||||
'#title' => t('Menu'),
|
||||
'#type' => 'select',
|
||||
'#options' => menu_ui_get_menus(),
|
||||
'#default_value' => $menu['name'],
|
||||
'#default_value' => $menu['menu_name'],
|
||||
'#states' => array(
|
||||
'visible' => array(
|
||||
array(
|
||||
|
|
@ -237,9 +237,9 @@ class Page extends PathPluginBase {
|
|||
);
|
||||
}
|
||||
else {
|
||||
$form['menu']['name'] = array(
|
||||
$form['menu']['menu_name'] = array(
|
||||
'#type' => 'value',
|
||||
'#value' => $menu['name'],
|
||||
'#value' => $menu['menu_name'],
|
||||
);
|
||||
$form['menu']['markup'] = array(
|
||||
'#markup' => t('Menu selection requires the activation of Menu UI module.'),
|
||||
|
|
@ -350,9 +350,9 @@ class Page extends PathPluginBase {
|
|||
);
|
||||
}
|
||||
else {
|
||||
$form['tab_options']['name'] = array(
|
||||
$form['tab_options']['menu_name'] = array(
|
||||
'#type' => 'value',
|
||||
'#value' => $tab_options['name'],
|
||||
'#value' => $tab_options['menu_name'],
|
||||
);
|
||||
$form['tab_options']['markup'] = array(
|
||||
'#markup' => t('Menu selection requires the activation of Menu UI module.'),
|
||||
|
|
|
|||
|
|
@ -314,7 +314,7 @@ abstract class PathPluginBase extends DisplayPluginBase implements DisplayRouter
|
|||
}
|
||||
|
||||
// Insert item into the proper menu.
|
||||
$links[$menu_link_id]['menu_name'] = $menu['name'];
|
||||
$links[$menu_link_id]['menu_name'] = $menu['menu_name'];
|
||||
// Keep track of where we came from.
|
||||
$links[$menu_link_id]['metadata'] = array(
|
||||
'view_id' => $view_id,
|
||||
|
|
|
|||
|
|
@ -1018,7 +1018,7 @@ abstract class WizardPluginBase extends PluginBase implements WizardInterface {
|
|||
if (!empty($page['link'])) {
|
||||
$display_options['menu']['type'] = 'normal';
|
||||
$display_options['menu']['title'] = $page['link_properties']['title'];
|
||||
$display_options['menu']['name'] = $page['link_properties']['menu_name'];
|
||||
$display_options['menu']['menu_name'] = $page['link_properties']['menu_name'];
|
||||
}
|
||||
return $display_options;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,13 @@ class DisplayPageWebTest extends PluginTestBase {
|
|||
*/
|
||||
public static $testViews = array('test_page_display_arguments', 'test_page_display_menu');
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = ['menu_ui', 'block'];
|
||||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
|
|
@ -73,6 +80,7 @@ class DisplayPageWebTest extends PluginTestBase {
|
|||
* Tests menu settings of page displays.
|
||||
*/
|
||||
public function testPageDisplayMenu() {
|
||||
// Check local tasks.
|
||||
$this->drupalGet('test_page_display_menu');
|
||||
$this->assertResponse(200);
|
||||
$element = $this->xpath('//ul[contains(@class, :ul_class)]//a[contains(@class, :a_class)]', array(
|
||||
|
|
@ -93,6 +101,24 @@ class DisplayPageWebTest extends PluginTestBase {
|
|||
));
|
||||
$this->assertEqual((string) $element[0], t('Test local tab'));
|
||||
$this->assertTitle(t('Test local page | Drupal'));
|
||||
|
||||
// Check an ordinary menu link.
|
||||
$admin_user = $this->drupalCreateUser(['administer menu']);
|
||||
$this->drupalLogin($admin_user);
|
||||
$this->drupalPlaceBlock('system_menu_block:tools');
|
||||
$this->drupalGet('<front>');
|
||||
|
||||
$menu_link = $this->cssSelect('div.block-menu ul.menu a');
|
||||
$this->assertEqual((string) $menu_link[0], 'Test menu link');
|
||||
|
||||
// Update the menu link.
|
||||
$this->drupalPostForm("admin/structure/menu/link/views_view:views.test_page_display_menu.page_3/edit", [
|
||||
'title' => 'New title',
|
||||
], t('Save'));
|
||||
|
||||
$this->drupalGet('<front>');
|
||||
$menu_link = $this->cssSelect('div.block-menu ul.menu a');
|
||||
$this->assertEqual((string) $menu_link[0], 'New title');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,14 +30,14 @@ display:
|
|||
type: 'default tab'
|
||||
title: 'Test default tab'
|
||||
description: ''
|
||||
name: tools
|
||||
menu_name: tools
|
||||
weight: '-10'
|
||||
context: '0'
|
||||
tab_options:
|
||||
type: normal
|
||||
title: 'Test parent path'
|
||||
description: ''
|
||||
name: tools
|
||||
menu_name: tools
|
||||
weight: '0'
|
||||
defaults:
|
||||
title: '0'
|
||||
|
|
@ -53,7 +53,7 @@ display:
|
|||
type: tab
|
||||
title: 'Test local tab'
|
||||
description: ''
|
||||
name: tools
|
||||
menu_name: tools
|
||||
weight: '0'
|
||||
context: '0'
|
||||
defaults:
|
||||
|
|
@ -62,6 +62,23 @@ display:
|
|||
display_title: Page
|
||||
id: page_2
|
||||
position: 0
|
||||
page_3:
|
||||
display_options:
|
||||
path: test_page_display_menu_link
|
||||
title: 'Test menu link'
|
||||
menu:
|
||||
type: normal
|
||||
title: 'Test menu link'
|
||||
description: ''
|
||||
menu_name: tools
|
||||
weight: '0'
|
||||
context: '0'
|
||||
defaults:
|
||||
title: '0'
|
||||
display_plugin: page
|
||||
display_title: Page
|
||||
id: page_3
|
||||
position: 0
|
||||
label: 'Test page menu'
|
||||
id: test_page_display_menu
|
||||
tag: ''
|
||||
|
|
|
|||
Loading…
Reference in New Issue