diff --git a/core/includes/theme.inc b/core/includes/theme.inc index 094a339..f50a006 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -1641,8 +1641,6 @@ function template_preprocess_status_messages(&$variables) { * http://www.w3.org/TR/WCAG-TECHS/H42.html for more information. */ function theme_links($variables) { - $language_url = language(Language::TYPE_URL); - $links = $variables['links']; $attributes = $variables['attributes']; $heading = $variables['heading']; @@ -1677,6 +1675,12 @@ function theme_links($variables) { foreach ($links as $key => $link) { $i++; + $link += array( + 'href' => NULL, + 'route_name' => NULL, + 'route_parameters' => NULL, + ); + $class = array(); // Use the array key as class name. $class[] = drupal_html_class($key); @@ -1689,31 +1693,24 @@ function theme_links($variables) { $class[] = 'last'; } + $link_element = array( + '#type' => 'link', + '#title' => $link['title'], + '#options' => array_diff_key($link, drupal_map_assoc(array('title', 'href', 'ajax'))), + '#href' => $link['href'], + '#route_name' => $link['route_name'], + '#route_parameters' => $link['route_parameters'], + ); + + // @todo Reconcile Views usage of 'ajax' as a boolean with the rest of + // core's usage of it as an array. + if (isset($link['ajax']) && is_array($link['ajax'])) { + $link_element['#ajax'] = $link['ajax']; + } + // Handle links. - if (isset($link['href'])) { - $is_current_path = ($link['href'] == current_path() || ($link['href'] == '' && drupal_is_front_page())); - $is_current_language = (empty($link['language']) || $link['language']->id == $language_url->id); - if ($is_current_path && $is_current_language) { - $class[] = 'active'; - } - // @todo Reconcile Views usage of 'ajax' as a boolean with the rest of - // core's usage of it as an array. - if (isset($link['ajax']) && is_array($link['ajax'])) { - // To attach Ajax behavior, render a link element, rather than just - // call l(). - $link_element = array( - '#type' => 'link', - '#title' => $link['title'], - '#href' => $link['href'], - '#ajax' => $link['ajax'], - '#options' => array_diff_key($link, drupal_map_assoc(array('title', 'href', 'ajax'))), - ); - $item = drupal_render($link_element); - } - else { - // Pass in $link as $options, they share the same keys. - $item = l($link['title'], $link['href'], $link); - } + if (isset($link['route_name']) || isset($link['href'])) { + $item = drupal_render($link_element); } // Handle title-only text items. else { diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php b/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php index bfbf5b0..5af190c 100644 --- a/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php +++ b/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php @@ -186,19 +186,23 @@ public function adminOverview() { $links = array(); $links['edit'] = array( 'title' => $this->t('Edit'), - 'href' => "admin/config/services/aggregator/edit/feed/$feed->fid", + 'route_name' => 'aggregator.feed_edit', + 'route_parameters' => array('aggregator_feed' => $feed->fid), ); $links['delete'] = array( 'title' => $this->t('Delete'), - 'href' => "admin/config/services/aggregator/delete/feed/$feed->fid", + 'route_name' => 'aggregator.feed_delete', + 'route_parameters' => array('aggregator_feed' => $feed->fid), ); $links['remove'] = array( 'title' => $this->t('Remove items'), - 'href' => "admin/config/services/aggregator/remove/$feed->fid", + 'route_name' => 'aggregator.feed_items_delete', + 'route_parameters' => array('aggregator_feed' => $feed->fid), ); $links['update'] = array( 'title' => $this->t('Update items'), - 'href' => "admin/config/services/aggregator/update/$feed->fid", + 'route_name' => 'aggregator.feed_refresh', + 'route_parameters' => array('aggregator_feed' => $feed->fid), 'query' => array('token' => drupal_get_token("aggregator/update/$feed->fid")), ); $row[] = array( @@ -228,11 +232,13 @@ public function adminOverview() { $links = array(); $links['edit'] = array( 'title' => $this->t('Edit'), - 'href' => "admin/config/services/aggregator/edit/category/$category->cid", + 'route_name' => 'aggregator.category_admin_edit', + 'route_parameters' => array('cid' => $category->cid), ); $links['delete'] = array( 'title' => $this->t('Delete'), - 'href' => "admin/config/services/aggregator/delete/category/$category->cid", + 'route_name' => 'aggregator.category_delete', + 'route_parameters' => array('cid' => $category->cid), ); $row[] = array( 'data' => array( diff --git a/core/modules/ban/lib/Drupal/ban/Form/BanAdmin.php b/core/modules/ban/lib/Drupal/ban/Form/BanAdmin.php index c47bdcc..4aadec0 100644 --- a/core/modules/ban/lib/Drupal/ban/Form/BanAdmin.php +++ b/core/modules/ban/lib/Drupal/ban/Form/BanAdmin.php @@ -63,7 +63,8 @@ public function buildForm(array $form, array &$form_state, $default_ip = '') { $links = array(); $links['delete'] = array( 'title' => $this->t('delete'), - 'href' => "admin/config/people/ban/delete/$ip->iid", + 'route_name' => 'ban.delete', + 'route_parameters' => array('ban_id' => $ip->iid), ); $row[] = array( 'data' => array( diff --git a/core/modules/book/book.admin.inc b/core/modules/book/book.admin.inc index 1d7061b..0ffefc5 100644 --- a/core/modules/book/book.admin.inc +++ b/core/modules/book/book.admin.inc @@ -53,12 +53,14 @@ function theme_book_admin_table($variables) { if ($access) { $links['edit'] = array( 'title' => t('Edit'), - 'href' => "node/$nid/edit", + 'route_name' => 'node.page_edit', + 'route_parameters' => array('node' => $nid), 'query' => $destination, ); $links['delete'] = array( 'title' => t('Delete'), - 'href' => "node/$nid/delete", + 'route_name' => 'node.delete_confirm', + 'route_parameters' => array('node' => $nid), 'query' => $destination, ); } diff --git a/core/modules/book/lib/Drupal/book/Controller/BookController.php b/core/modules/book/lib/Drupal/book/Controller/BookController.php index 214a801..b9920d2 100644 --- a/core/modules/book/lib/Drupal/book/Controller/BookController.php +++ b/core/modules/book/lib/Drupal/book/Controller/BookController.php @@ -77,7 +77,8 @@ public function adminOverview() { $links = array(); $links['edit'] = array( 'title' => t('Edit order and titles'), - 'href' => 'admin/structure/book/' . $book['nid'], + 'route_name' => 'book.admin_edit', + 'route_parameters' => array('node' => $book['nid']), ); $row[] = array( 'data' => array( diff --git a/core/modules/comment/comment.admin.inc b/core/modules/comment/comment.admin.inc index 02f2278..c4360dc 100644 --- a/core/modules/comment/comment.admin.inc +++ b/core/modules/comment/comment.admin.inc @@ -156,13 +156,16 @@ function comment_admin_overview($form, &$form_state, $arg) { $links = array(); $links['edit'] = array( 'title' => t('edit'), - 'href' => 'comment/' . $comment->id() . '/edit', + 'route_name' => 'comment.edit_page', + 'route_parameters' => array('comment' => $comment->id()), 'query' => $destination, ); if (module_invoke('content_translation', 'translate_access', $comment)) { $links['translate'] = array( 'title' => t('translate'), 'href' => 'comment/' . $comment->id() . '/translations', + 'route_name' => 'content_translation.translation_overview_comment', + 'route_parameters' => array('comment' => $comment->id()), 'query' => $destination, ); }