diff --git a/core/lib/Drupal/Core/Menu/ContextualLinkManagerInterface.php b/core/lib/Drupal/Core/Menu/ContextualLinkManagerInterface.php
index bbbbce4..801990b 100644
--- a/core/lib/Drupal/Core/Menu/ContextualLinkManagerInterface.php
+++ b/core/lib/Drupal/Core/Menu/ContextualLinkManagerInterface.php
@@ -44,6 +44,7 @@ public function getContextualLinkPluginsByGroup($group_name);
* - weight: The weight of the contextual link.
* - localized_options: The options of the link, which will be passed
* to the link generator.
+ * - metadata: The array of additional metadata that was passed in.
*/
public function getContextualLinksArrayByGroup($group_name, array $route_parameters, array $metadata = array());
diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index 6bc03f6..68af2d7 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -297,7 +297,7 @@ function _block_get_renderable_region($list = array()) {
// to perform contextual actions on the help block, and the links needlessly
// draw attention on it.
if (isset($build[$key]) && !in_array($block->get('plugin'), array('system_help_block', 'system_main_block'))) {
- $build[$key]['#contextual_links']['block.block'] = array(
+ $build[$key]['#contextual_links']['block'] = array(
'route_parameters' => array('block' => $key),
);
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockRenderController.php b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockRenderController.php
index 5c17396..76b8b34 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockRenderController.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockRenderController.php
@@ -23,7 +23,7 @@ protected function alterBuild(array &$build, EntityInterface $entity, EntityDisp
parent::alterBuild($build, $entity, $display, $view_mode, $langcode);
// Add contextual links for this custom block.
if (!empty($entity->id->value) && $view_mode == 'full') {
- $build['#contextual_links']['custom_block.custom_block'] = array(
+ $build['#contextual_links']['custom_block'] = array(
'route_parameters' => array('custom_block' => $entity->id()),
);
}
diff --git a/core/modules/block/lib/Drupal/block/Tests/Views/DisplayBlockTest.php b/core/modules/block/lib/Drupal/block/Tests/Views/DisplayBlockTest.php
index 8e0c4c3..9a4680c 100644
--- a/core/modules/block/lib/Drupal/block/Tests/Views/DisplayBlockTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/Views/DisplayBlockTest.php
@@ -230,7 +230,7 @@ public function testBlockContextualLinks() {
$block = $this->drupalPlaceBlock('views_block:test_view_block-block_1');
$this->drupalGet('test-page');
- $id = 'block:block:block=' . $block->id() . ':|views_ui:views_ui_edit:view=test_view_block:location=block&name=test_view_block&display_id=block_1';
+ $id = 'block:block=' . $block->id() . ':|views_ui_edit:view=test_view_block:location=block&name=test_view_block&display_id=block_1';
// @see \Drupal\contextual\Tests\ContextualDynamicContextTest:assertContextualLinkPlaceHolder()
$this->assertRaw('
', format_string('Contextual link placeholder with id @id exists.', array('@id' => $id)));
diff --git a/core/modules/contextual/contextual.module b/core/modules/contextual/contextual.module
index ae81f1c..1d5898d 100644
--- a/core/modules/contextual/contextual.module
+++ b/core/modules/contextual/contextual.module
@@ -238,16 +238,18 @@ function contextual_pre_render_placeholder($element) {
*
* @param $element
* A renderable array containing a #contextual_links property, which is a
- * keyed array. Each key is the string "$implementing_module:$group". The
- * value contains an associative array containing the following keys:
+ * keyed array. Each key is the name of the group of contextual links to
+ * render (based on the 'group' key in the *.contextual_links.yml files for
+ * all enabled modules). The value contains an associative array containing
+ * the following keys:
* - route_parameters: The route parameters passed to the url generator.
- * - metadata: Some additional data needed in order to alter the link.
+ * - metadata: Any additional data needed in order to alter the link.
* @code
* array('#contextual_links' => array(
- * 'block.block' => array(
+ * 'block' => array(
* 'route_parameters' => array('block' => 'system.menu-tools'),
* ),
- * 'menu.menu' => array(
+ * 'menu' => array(
* 'route_parameters' => array('menu' => 'tools'),
* ),
* ))
@@ -265,33 +267,31 @@ function contextual_pre_render_links($element) {
/** @var $contextual_links_manager \Drupal\Core\Menu\ContextualLinkManager */
$contextual_links_manager = \Drupal::service('plugin.manager.menu.contextual_link');
- foreach ($element['#contextual_links'] as $module_group => $args) {
- list($module, $group) = explode('.', $module_group);
+ foreach ($element['#contextual_links'] as $group => $args) {
$args += array(
'route_parameters' => array(),
'metadata' => array(),
);
$contextual_links = $contextual_links_manager->getContextualLinksArrayByGroup($group, $args['route_parameters'], $args['metadata']);
if (!empty($contextual_links)) {
- unset($element['#contextual_links'][$module_group]);
+ // @todo Remove once all contextual links are converted.
+ unset($element['#contextual_links'][$group]);
}
$items += $contextual_links;
}
// @todo Remove once all contextual links are converted.
- foreach ($element['#contextual_links'] as $module_group => $args) {
- list($module, $group) = explode('.', $module_group);
+ foreach ($element['#contextual_links'] as $group => $args) {
$args += array(
'route_parameters' => array(),
);
- $items += menu_contextual_links($module, $group, array_values($args['route_parameters']));
+ $items += menu_contextual_links($group, $group, array_values($args['route_parameters']));
}
// Transform contextual links into parameters suitable for theme_links().
$links = array();
foreach ($items as $class => $item) {
-
$class = drupal_html_class($class);
$links[$class] = array(
'title' => $item['title'],
@@ -332,12 +332,12 @@ function contextual_contextual_links_view_alter(&$element, $items) {
* Serializes #contextual_links property value array to a string.
*
* Examples:
- * - node:node:node=1:
- * - views_ui:views_ui_edit:view=frontpage:location=page&view_name=frontpage&view_display_id=page_1
- * - menu:menu:menu=tools:|block:block:block=bartik.tools:
+ * - node:node=1:
+ * - views_ui_edit:view=frontpage:location=page&view_name=frontpage&view_display_id=page_1
+ * - menu:menu=tools:|block:block=bartik.tools:
*
* So, expressed in a pattern:
- * :::
+ * ::
*
* The route parameters and options are encoded as query strings.
*
@@ -350,11 +350,10 @@ function contextual_contextual_links_view_alter(&$element, $items) {
*/
function _contextual_links_to_id($contextual_links) {
$ids = array();
- foreach ($contextual_links as $module_group => $args) {
- list($module, $group) = explode('.', $module_group);
+ foreach ($contextual_links as $group => $args) {
$route_parameters = Url::buildQuery($args['route_parameters']);
$metadata = Url::buildQuery((isset($args['metadata'])) ? $args['metadata'] : array());
- $ids[] = "{$module}:{$group}:{$route_parameters}:{$metadata}";
+ $ids[] = "{$group}:{$route_parameters}:{$metadata}";
}
return implode('|', $ids);
}
@@ -374,13 +373,13 @@ function _contextual_id_to_links($id) {
$contextual_links = array();
$contexts = explode('|', $id);
foreach ($contexts as $context) {
- list($module, $group, $route_parameters_raw, $metadata_raw) = explode(':', $context);
+ list($group, $route_parameters_raw, $metadata_raw) = explode(':', $context);
parse_str($route_parameters_raw, $route_parameters);
$metadata = array();
parse_str($metadata_raw, $metadata);
- $contextual_links["$module.$group"] = array(
+ $contextual_links[$group] = array(
'route_parameters' => $route_parameters,
- 'metadata' => $metadata
+ 'metadata' => $metadata,
);
}
return $contextual_links;
diff --git a/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php b/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php
index 413b298..4cbbca3 100644
--- a/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php
+++ b/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualDynamicContextTest.php
@@ -60,10 +60,10 @@ function testDifferentPermissions() {
// Now, on the front page, all article nodes should have contextual links
// placeholders, as should the view that contains them.
$ids = array(
- 'node:node:node=' . $node1->id() . ':',
- 'node:node:node=' . $node2->id() . ':',
- 'node:node:node=' . $node3->id() . ':',
- 'views_ui:views_ui_edit:view=frontpage:location=page&name=frontpage&display_id=page_1',
+ 'node:node=' . $node1->id() . ':',
+ 'node:node=' . $node2->id() . ':',
+ 'node:node=' . $node3->id() . ':',
+ 'views_ui_edit:view=frontpage:location=page&name=frontpage&display_id=page_1',
);
// Editor user: can access contextual links and can edit articles.
diff --git a/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualUnitTest.php b/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualUnitTest.php
index eb0a1f0..738f047 100644
--- a/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualUnitTest.php
+++ b/core/modules/contextual/lib/Drupal/contextual/Tests/ContextualUnitTest.php
@@ -26,28 +26,28 @@ public static function getInfo() {
*/
function _contextual_links_id_testcases() {
// Test branch conditions:
- // - one module.
+ // - one group.
// - one dynamic path argument.
// - no metadata.
$tests[] = array(
'links' => array(
- 'node.node' => array(
+ 'node' => array(
'route_parameters' => array(
'node' => '14031991',
),
'metadata' => array()
),
),
- 'id' => 'node:node:node=14031991:',
+ 'id' => 'node:node=14031991:',
);
// Test branch conditions:
- // - one module.
+ // - one group.
// - multiple dynamic path arguments.
// - no metadata.
$tests[] = array(
'links' => array(
- 'foo.baz' => array(
+ 'foo' => array(
'route_parameters'=> array(
'bar',
'key' => 'baz',
@@ -56,16 +56,16 @@ function _contextual_links_id_testcases() {
'metadata' => array(),
),
),
- 'id' => 'foo:baz:0=bar&key=baz&1=qux:',
+ 'id' => 'foo:0=bar&key=baz&1=qux:',
);
// Test branch conditions:
- // - one module.
+ // - one group.
// - one dynamic path argument.
// - metadata.
$tests[] = array(
'links' => array(
- 'views_ui.views_ui_edit' => array(
+ 'views_ui_edit' => array(
'route_parameters' => array(
'view' => 'frontpage'
),
@@ -75,21 +75,21 @@ function _contextual_links_id_testcases() {
),
),
),
- 'id' => 'views_ui:views_ui_edit:view=frontpage:location=page&display=page_1',
+ 'id' => 'views_ui_edit:view=frontpage:location=page&display=page_1',
);
// Test branch conditions:
- // - multiple modules.
+ // - multiple groups.
// - multiple dynamic path arguments.
$tests[] = array(
'links' => array(
- 'node.node' => array(
+ 'node' => array(
'route_parameters' => array(
'node' => '14031991',
),
'metadata' => array(),
),
- 'foo.baz' => array(
+ 'foo' => array(
'route_parameters' => array(
'bar',
'key' => 'baz',
@@ -97,12 +97,12 @@ function _contextual_links_id_testcases() {
),
'metadata' => array(),
),
- 'edge.edge' => array(
+ 'edge' => array(
'route_parameters' => array('20011988'),
'metadata' => array(),
),
),
- 'id' => 'node:node:node=14031991:|foo:baz:0=bar&key=baz&1=qux:|edge:edge:0=20011988:',
+ 'id' => 'node:node=14031991:|foo:0=bar&key=baz&1=qux:|edge:0=20011988:',
);
return $tests;
diff --git a/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php b/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
index 616455e..fdcb63c 100644
--- a/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
+++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
@@ -408,7 +408,7 @@ public function testBlockContextualLinks() {
$block = $this->drupalPlaceBlock('system_menu_block:tools', array('label' => 'Tools', 'module' => 'system'));
$this->drupalGet('test-page');
- $id = 'block:block:block=' . $block->id() . ':|menu:menu:menu=tools:';
+ $id = 'block:block=' . $block->id() . ':|menu:menu=tools:';
// @see \Drupal\contextual\Tests\ContextualDynamicContextTest:assertContextualLinkPlaceHolder()
$this->assertRaw('', format_string('Contextual link placeholder with id @id exists.', array('@id' => $id)));
diff --git a/core/modules/menu/menu.module b/core/modules/menu/menu.module
index 251c002..c48bb46 100644
--- a/core/modules/menu/menu.module
+++ b/core/modules/menu/menu.module
@@ -338,7 +338,7 @@ function menu_block_view_system_menu_block_alter(array &$build, BlockPluginInter
list(, $menu_name) = explode(':', $block->getPluginId());
if (isset($menus[$menu_name]) && isset($build['content'])) {
foreach (element_children($build['content']) as $key) {
- $build['content']['#contextual_links']['menu.menu'] = array(
+ $build['content']['#contextual_links']['menu'] = array(
'route_parameters' => array('menu' => $build['content'][$key]['#original_link']['menu_name']),
);
}
diff --git a/core/modules/node/lib/Drupal/node/NodeRenderController.php b/core/modules/node/lib/Drupal/node/NodeRenderController.php
index a37c5ff..9765735 100644
--- a/core/modules/node/lib/Drupal/node/NodeRenderController.php
+++ b/core/modules/node/lib/Drupal/node/NodeRenderController.php
@@ -83,7 +83,7 @@ public function buildContent(array $entities, array $displays, $view_mode, $lang
protected function alterBuild(array &$build, EntityInterface $entity, EntityDisplay $display, $view_mode, $langcode = NULL) {
parent::alterBuild($build, $entity, $display, $view_mode, $langcode);
if ($entity->id()) {
- $build['#contextual_links']['node.node'] = array(
+ $build['#contextual_links']['node'] = array(
'route_parameters' =>array('node' => $entity->id()),
);
}
diff --git a/core/modules/node/lib/Drupal/node/Tests/Views/NodeContextualLinksTest.php b/core/modules/node/lib/Drupal/node/Tests/Views/NodeContextualLinksTest.php
index f2f77e9..2cd0082 100644
--- a/core/modules/node/lib/Drupal/node/Tests/Views/NodeContextualLinksTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/Views/NodeContextualLinksTest.php
@@ -47,10 +47,10 @@ public function testNodeContextualLinks() {
$user = $this->drupalCreateUser(array('administer nodes', 'access contextual links'));
$this->drupalLogin($user);
- $response = $this->renderContextualLinks(array('node:node:node=1:'), 'node');
+ $response = $this->renderContextualLinks(array('node:node=1:'), 'node');
$this->assertResponse(200);
$json = Json::decode($response);
- $this->drupalSetContent($json['node:node:node=1:']);
+ $this->drupalSetContent($json['node:node=1:']);
$this->assertLinkByHref('node/1/contextual-links', 0, 'The contextual link to the view was found.');
$this->assertLink('Test contextual link', 0, 'The contextual link to the view was found.');
diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php
index f52a814..18fa5e9 100644
--- a/core/modules/system/system.api.php
+++ b/core/modules/system/system.api.php
@@ -743,10 +743,10 @@ function hook_menu_contextual_links_alter(&$links, $router_item, $root_path) {
* The group of contextual links being rendered.
* @param array $route_parameters.
* The route parameters passed to each route_name of the contextual links.
- * So e.g. it is an array like that:
- * @code
- * node => $node->id().
- * @endcode
+ * For example:
+ * @code
+ * array('node' => $node->id())
+ * @endcode
*
* @see \Drupal\Core\Menu\ContextualLinkManager
*/
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/TermRenderController.php b/core/modules/taxonomy/lib/Drupal/taxonomy/TermRenderController.php
index c23391b..0df4dc4 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/TermRenderController.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/TermRenderController.php
@@ -54,7 +54,7 @@ protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langco
protected function alterBuild(array &$build, EntityInterface $entity, EntityDisplay $display, $view_mode, $langcode = NULL) {
parent::alterBuild($build, $entity, $display, $view_mode, $langcode);
$build['#attached']['css'][] = drupal_get_path('module', 'taxonomy') . '/css/taxonomy.module.css';
- $build['#contextual_links']['taxonomy.taxonomy_term'] = array(
+ $build['#contextual_links']['taxonomy_term'] = array(
'route_parameters' => array('taxonomy_term' => $entity->id()),
);
}
diff --git a/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php
index 5c4b09a..fc6652e 100644
--- a/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php
+++ b/core/modules/views/lib/Drupal/views/Annotation/ViewsDisplay.php
@@ -86,7 +86,7 @@ class ViewsDisplay extends ViewsPluginAnnotationBase {
public $uses_hook_block;
/**
- * A list of groups where contextual links should be added.
+ * A list of places where contextual links should be added.
* For example:
* @code
* array(
diff --git a/core/modules/views/views.module b/core/modules/views/views.module
index 118f146..fd79b85 100644
--- a/core/modules/views/views.module
+++ b/core/modules/views/views.module
@@ -603,9 +603,7 @@ function views_add_contextual_links(&$render_element, $location, ViewExecutable
$plugin['contextual_links_locations'][] = 'exposed_filter';
$has_links = !empty($plugin['contextual links']) && !empty($plugin['contextual_links_locations']);
if ($has_links && in_array($location, $plugin['contextual_links_locations'])) {
- foreach ($plugin['contextual links'] as $module_group => $link) {
- list($module, $group) = explode('.', $module_group);
-
+ foreach ($plugin['contextual links'] as $group => $link) {
$args = array();
$valid = TRUE;
if (!empty($link['route_parameters_names'])) {
@@ -627,7 +625,7 @@ function views_add_contextual_links(&$render_element, $location, ViewExecutable
// array.
if ($valid) {
$render_element['#views_contextual_links'] = TRUE;
- $render_element['#contextual_links'][$module_group] = array(
+ $render_element['#contextual_links'][$group] = array(
'route_parameters' => $args,
'metadata' => array(
'location' => $location,
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayTest.php b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayTest.php
index a9bf1fa..905095a 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayTest.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Tests/DisplayTest.php
@@ -225,7 +225,7 @@ public function testDisplayPluginsAlter() {
// Test the expected views_ui array exists on each definition.
foreach ($definitions as $definition) {
- $this->assertIdentical($definition['contextual links']['views_ui.views_ui_edit'], $expected, 'Expected views_ui array found in plugin definition.');
+ $this->assertIdentical($definition['contextual links']['views_ui_edit'], $expected, 'Expected views_ui array found in plugin definition.');
}
}
@@ -288,7 +288,7 @@ public function testPageContextualLinks() {
$view->enable()->save();
$this->drupalGet('test-display');
- $id = 'views_ui:views_ui_edit:view=test_display:location=page&name=test_display&display_id=page_1';
+ $id = 'views_ui_edit:view=test_display:location=page&name=test_display&display_id=page_1';
// @see \Drupal\contextual\Tests\ContextualDynamicContextTest:assertContextualLinkPlaceHolder()
$this->assertRaw('', format_string('Contextual link placeholder with id @id exists.', array('@id' => $id)));
diff --git a/core/modules/views_ui/views_ui.module b/core/modules/views_ui/views_ui.module
index 7127037..bb873ed 100644
--- a/core/modules/views_ui/views_ui.module
+++ b/core/modules/views_ui/views_ui.module
@@ -317,7 +317,7 @@ function views_ui_views_plugins_display_alter(&$plugins) {
// paths underneath "admin/structure/views/view/{$view->id()}" (i.e., paths
// for editing and performing other contextual actions on the view).
foreach ($plugins as &$display) {
- $display['contextual links']['views_ui.views_ui_edit'] = array(
+ $display['contextual links']['views_ui_edit'] = array(
'route_name' => 'views_ui.edit',
'route_parameters_names' => array('view' => 'id'),
);