', [], $url_options));
+ $tests['[site:login-url]'] = \Drupal::url('user.page', [], $url_options);
// Test to make sure that we generated something for each token.
$this->assertFalse(in_array(0, array_map('strlen', $tests)), 'No empty tokens generated.');
diff --git a/core/modules/system/system.tokens.inc b/core/modules/system/system.tokens.inc
index 43cf4a7..c6f6532 100644
--- a/core/modules/system/system.tokens.inc
+++ b/core/modules/system/system.tokens.inc
@@ -128,7 +128,7 @@ function system_tokens($type, $tokens, array $data = array(), array $options = a
break;
case 'login-url':
- $replacements[$original] = url('user', $url_options);
+ $replacements[$original] = \Drupal::url('user.page', [], $url_options);
break;
}
}
diff --git a/core/modules/system/tests/modules/ajax_test/src/Form/AjaxTestForm.php b/core/modules/system/tests/modules/ajax_test/src/Form/AjaxTestForm.php
index 4237316..4155b32 100644
--- a/core/modules/system/tests/modules/ajax_test/src/Form/AjaxTestForm.php
+++ b/core/modules/system/tests/modules/ajax_test/src/Form/AjaxTestForm.php
@@ -27,7 +27,7 @@ public function getFormId() {
*/
public function buildForm(array $form, FormStateInterface $form_state) {
- $form['#action'] = url('ajax-test/dialog');
+ $form['#action'] = \Drupal::url('ajax_test.dialog');
$form['description'] = array(
'#markup' => '' . t("Ajax Form contents description.") . '
',
diff --git a/core/modules/taxonomy/src/Plugin/Field/FieldFormatter/EntityReferenceTaxonomyTermRssFormatter.php b/core/modules/taxonomy/src/Plugin/Field/FieldFormatter/EntityReferenceTaxonomyTermRssFormatter.php
index 2cba1f9..90a0c92 100644
--- a/core/modules/taxonomy/src/Plugin/Field/FieldFormatter/EntityReferenceTaxonomyTermRssFormatter.php
+++ b/core/modules/taxonomy/src/Plugin/Field/FieldFormatter/EntityReferenceTaxonomyTermRssFormatter.php
@@ -37,7 +37,7 @@ public function viewElements(FieldItemListInterface $items) {
'key' => 'category',
'value' => $item->entity->label(),
'attributes' => array(
- 'domain' => $item->target_id ? url('taxonomy/term/' . $item->target_id, array('absolute' => TRUE)) : '',
+ 'domain' => $item->target_id ? \Drupal::url('entity.taxonomy_term.canonical', ['taxonomy/term' => $item->target_id], array('absolute' => TRUE)) : '',
),
);
}
diff --git a/core/modules/taxonomy/src/Tests/RssTest.php b/core/modules/taxonomy/src/Tests/RssTest.php
index 8ad0403..70b3f52 100644
--- a/core/modules/taxonomy/src/Tests/RssTest.php
+++ b/core/modules/taxonomy/src/Tests/RssTest.php
@@ -98,7 +98,7 @@ function testTaxonomyRss() {
'key' => 'category',
'value' => $term1->getName(),
'attributes' => array(
- 'domain' => url('taxonomy/term/' . $term1->id(), array('absolute' => TRUE)),
+ 'domain' => \Drupal::url('entity.taxonomy_term.canonical', ['taxonomy/term' => $term1->id()], array('absolute' => TRUE)),
),
);
$this->assertRaw(format_xml_elements(array($test_element)), 'Term is displayed when viewing the rss feed.');
diff --git a/core/modules/taxonomy/src/Tests/TokenReplaceTest.php b/core/modules/taxonomy/src/Tests/TokenReplaceTest.php
index 5c8c0f9..67cd11f 100644
--- a/core/modules/taxonomy/src/Tests/TokenReplaceTest.php
+++ b/core/modules/taxonomy/src/Tests/TokenReplaceTest.php
@@ -85,7 +85,7 @@ function testTaxonomyTokenReplacement() {
$tests['[term:tid]'] = $term1->id();
$tests['[term:name]'] = String::checkPlain($term1->getName());
$tests['[term:description]'] = $term1->description->processed;
- $tests['[term:url]'] = url('taxonomy/term/' . $term1->id(), array('absolute' => TRUE));
+ $tests['[term:url]'] = \Drupal::url('entity.taxonomy_term.canonical', ['taxonomy/term' => $term1->id()], array('absolute' => TRUE));
$tests['[term:node-count]'] = 0;
$tests['[term:parent:name]'] = '[term:parent:name]';
$tests['[term:vocabulary:name]'] = String::checkPlain($this->vocabulary->name);
@@ -100,10 +100,10 @@ function testTaxonomyTokenReplacement() {
$tests['[term:tid]'] = $term2->id();
$tests['[term:name]'] = String::checkPlain($term2->getName());
$tests['[term:description]'] = $term2->description->processed;
- $tests['[term:url]'] = url('taxonomy/term/' . $term2->id(), array('absolute' => TRUE));
+ $tests['[term:url]'] = \Drupal::url('entity.taxonomy_term.canonical', ['taxonomy/term' => $term2->id()], array('absolute' => TRUE));
$tests['[term:node-count]'] = 1;
$tests['[term:parent:name]'] = String::checkPlain($term1->getName());
- $tests['[term:parent:url]'] = url('taxonomy/term/' . $term1->id(), array('absolute' => TRUE));
+ $tests['[term:parent:url]'] = \Drupal::url('entity.taxonomy_term.canonical', ['taxonomy/term' => $term1->id()], array('absolute' => TRUE));
$tests['[term:parent:parent:name]'] = '[term:parent:parent:name]';
$tests['[term:vocabulary:name]'] = String::checkPlain($this->vocabulary->name);
diff --git a/core/modules/taxonomy/src/Tests/Views/TaxonomyIndexTidUiTest.php b/core/modules/taxonomy/src/Tests/Views/TaxonomyIndexTidUiTest.php
index 0ad9f45..fb4cad2 100644
--- a/core/modules/taxonomy/src/Tests/Views/TaxonomyIndexTidUiTest.php
+++ b/core/modules/taxonomy/src/Tests/Views/TaxonomyIndexTidUiTest.php
@@ -95,7 +95,7 @@ public function testFilterUI() {
$view->save();
$this->drupalGet('admin/structure/views/nojs/handler/test_filter_taxonomy_index_tid/default/filter/tid');
$result = $this->xpath('//input[@id="edit-options-value"]/@data-autocomplete-path');
- $this->assertEqual((string) $result[0], url('taxonomy/autocomplete_vid/tags'));
+ $this->assertEqual((string) $result[0], \Drupal::url('taxonomy.autocomplete_vid', ['taxonomy_vocabulary' => 'tags']));
}
}
diff --git a/core/modules/taxonomy/src/VocabularyListBuilder.php b/core/modules/taxonomy/src/VocabularyListBuilder.php
index 056c073..a5a02fc 100644
--- a/core/modules/taxonomy/src/VocabularyListBuilder.php
+++ b/core/modules/taxonomy/src/VocabularyListBuilder.php
@@ -80,7 +80,7 @@ public function render() {
unset($this->weightKey);
}
$build = parent::render();
- $build['#empty'] = t('No vocabularies available. Add vocabulary.', array('@link' => url('admin/structure/taxonomy/add')));
+ $build['#empty'] = t('No vocabularies available. Add vocabulary.', array('@link' => \Drupal::url('entity.taxonomy_vocabulary.add_form')));
return $build;
}
diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module
index ef5f0cf..a715c0a 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -55,7 +55,7 @@ function taxonomy_help($route_name, RouteMatchInterface $route_match) {
$output .= '' . t('Uses') . '
';
$output .= '';
$output .= '- ' . t('Creating vocabularies') . '
';
- $output .= '- ' . t('Users with sufficient permissions can create vocabularies and terms through the Taxonomy page. The page listing the terms provides a drag-and-drop interface for controlling the order of the terms and sub-terms within a vocabulary, in a hierarchical fashion. A controlled vocabulary classifying music by genre with terms and sub-terms could look as follows:', array('@taxo' => url('admin/structure/taxonomy'), '@perm' => url('admin/people/permissions', array('fragment'=>'module-taxonomy'))));
+ $output .= '
- ' . t('Users with sufficient permissions can create vocabularies and terms through the Taxonomy page. The page listing the terms provides a drag-and-drop interface for controlling the order of the terms and sub-terms within a vocabulary, in a hierarchical fashion. A controlled vocabulary classifying music by genre with terms and sub-terms could look as follows:', array('@taxo' => \Drupal::url('taxonomy.vocabulary_list'), '@perm' => \Drupal::url('user.admin_permissions', [], array('fragment'=>'module-taxonomy'))));
$output .= '
- ' . t('vocabulary: Music') . '
';
$output .= '- ' . t('term: Jazz') . '
';
$output .= '- ' . t('sub-term: Swing') . '
';
@@ -66,9 +66,9 @@ function taxonomy_help($route_name, RouteMatchInterface $route_match) {
$output .= t('You can assign a sub-term to multiple parent terms. For example, fusion can be assigned to both rock and jazz.') . '
';
$output .= '- ' . t('Terms in a free-tagging vocabulary can be built gradually as you create or edit content. This is often done used for blogs or photo management applications.') . '
';
$output .= ' - ' . t('Assigning vocabularies to content types') . '
';
- $output .= '- ' . t('Before you can use a new vocabulary to classify your content, a new Taxonomy term field must be added to a content type on its manage fields page. When adding a taxonomy field, you choose a widget to use to enter the taxonomy information on the content editing page: a select list, checkboxes, radio buttons, or an auto-complete field (to build a free-tagging vocabulary). After choosing the field type and widget, on the subsequent field settings page you can choose the desired vocabulary, whether one or multiple terms can be chosen from the vocabulary, and other settings. The same vocabulary can be added to multiple content types, by using the "Re-use existing field" section on the manage fields page.', array('@ctedit' => url('admin/structure/types'))) . '
';
+ $output .= '- ' . t('Before you can use a new vocabulary to classify your content, a new Taxonomy term field must be added to a content type on its manage fields page. When adding a taxonomy field, you choose a widget to use to enter the taxonomy information on the content editing page: a select list, checkboxes, radio buttons, or an auto-complete field (to build a free-tagging vocabulary). After choosing the field type and widget, on the subsequent field settings page you can choose the desired vocabulary, whether one or multiple terms can be chosen from the vocabulary, and other settings. The same vocabulary can be added to multiple content types, by using the "Re-use existing field" section on the manage fields page.', array('@ctedit' => \Drupal::url('node.overview_types'))) . '
';
$output .= '- ' . t('Classifying content') . '
';
- $output .= '- ' . t('After the vocabulary is assigned to the content type, you can start classifying content. The field with terms will appear on the content editing screen when you edit or add new content.', array('@addnode' => url('node/add'))) . '
';
+ $output .= '- ' . t('After the vocabulary is assigned to the content type, you can start classifying content. The field with terms will appear on the content editing screen when you edit or add new content.', array('@addnode' => \Drupal::url('node.add_page'))) . '
';
$output .= '- ' . t('Viewing listings') . '
';
$output .= '- ' . t("Each taxonomy term automatically provides a page listing content that has its classification. For example, if the taxonomy term country rock has the ID 123 (you can see this by looking at the URL when hovering on the linked term, which you can click to navigate to the listing page), then you will find this list at the path taxonomy/term/123.") . '
';
$output .= '- ' . t('Extending Taxonomy module') . '
';
diff --git a/core/modules/toolbar/toolbar.module b/core/modules/toolbar/toolbar.module
index 0ff9648..0cfa492 100644
--- a/core/modules/toolbar/toolbar.module
+++ b/core/modules/toolbar/toolbar.module
@@ -27,7 +27,7 @@ function toolbar_help($route_name, RouteMatchInterface $route_match) {
$output .= '' . t('Uses') . '
';
$output .= '';
$output .= '- ' . t('Displaying administrative links') . '
';
- $output .= '- ' . t('The Toolbar module displays a bar containing top-level administrative components across the top of the screen. Below that, the Toolbar module has a drawer section where it displays links provided by other modules, such as the core Shortcut module. The drawer can be hidden/shown by clicking on its corresponding tab.', array('@shortcuts-help' => url('admin/help/shortcut'))) . '
';
+ $output .= '- ' . t('The Toolbar module displays a bar containing top-level administrative components across the top of the screen. Below that, the Toolbar module has a drawer section where it displays links provided by other modules, such as the core Shortcut module. The drawer can be hidden/shown by clicking on its corresponding tab.', array('@shortcuts-help' => \Drupal::url('help.page', ['name' => 'shortcut']))) . '
';
$output .= '
';
return $output;
}
diff --git a/core/modules/tour/src/Tests/TourTest.php b/core/modules/tour/src/Tests/TourTest.php
index 47a05d5..5ab6691 100644
--- a/core/modules/tour/src/Tests/TourTest.php
+++ b/core/modules/tour/src/Tests/TourTest.php
@@ -58,7 +58,7 @@ public function testTourFunctionality() {
$elements = $this->xpath('//li[@data-id=:data_id and @class=:classes and ./p//a[@href=:href and contains(., :text)]]', array(
':classes' => 'tip-module-tour-test tip-type-text tip-tour-test-1',
':data_id' => 'tour-test-1',
- ':href' => url('', array('absolute' => TRUE)),
+ ':href' => \Drupal::url('', [], array('absolute' => TRUE)),
':text' => 'Drupal',
));
$this->assertEqual(count($elements), 1, 'Found Token replacement.');
diff --git a/core/modules/tracker/src/Tests/TrackerTest.php b/core/modules/tracker/src/Tests/TrackerTest.php
index 969657a..d1896fb 100644
--- a/core/modules/tracker/src/Tests/TrackerTest.php
+++ b/core/modules/tracker/src/Tests/TrackerTest.php
@@ -143,7 +143,7 @@ function testTrackerNewNodes() {
// Simulate the JavaScript on the node page to mark the node as read.
// @todo Get rid of curlExec() once https://drupal.org/node/2074037 lands.
$this->curlExec(array(
- CURLOPT_URL => url('history/' . $node->id() . '/read', array('absolute' => TRUE)),
+ CURLOPT_URL => \Drupal::url('history.read_node', ['node' => $node->id()], array('absolute' => TRUE)),
CURLOPT_HTTPHEADER => array(
'Accept: application/json',
),
@@ -159,7 +159,7 @@ function testTrackerNewNodes() {
// Simulate the JavaScript on the node page to mark the node as read.
// @todo Get rid of curlExec() once https://drupal.org/node/2074037 lands.
$this->curlExec(array(
- CURLOPT_URL => url('history/' . $node->id() . '/read', array('absolute' => TRUE)),
+ CURLOPT_URL => \Drupal::url('history.read_node', ['node' => $node->id()], array('absolute' => TRUE)),
CURLOPT_HTTPHEADER => array(
'Accept: application/json',
),
@@ -188,7 +188,7 @@ function testTrackerNewComments() {
// JavaScript that does this.
// @todo Get rid of curlExec() once https://drupal.org/node/2074037 lands.
$this->curlExec(array(
- CURLOPT_URL => url('history/' . $node->id() . '/read', array('absolute' => TRUE)),
+ CURLOPT_URL => \Drupal::url('history.read_node', ['node' => $node->id()], array('absolute' => TRUE)),
CURLOPT_HTTPHEADER => array(
'Accept: application/json',
),
diff --git a/core/modules/user/src/AccountForm.php b/core/modules/user/src/AccountForm.php
index ba11c0e..867f909 100644
--- a/core/modules/user/src/AccountForm.php
+++ b/core/modules/user/src/AccountForm.php
@@ -361,7 +361,7 @@ public function validate(array $form, FormStateInterface $form_state) {
$form_state->setErrorByName('mail', $this->t('The email address %email is already taken.', array('%email' => $mail)));
}
else {
- $form_state->setErrorByName('mail', $this->t('The email address %email is already registered. Have you forgotten your password?', array('%email' => $mail, '@password' => url('user/password'))));
+ $form_state->setErrorByName('mail', $this->t('The email address %email is already registered. Have you forgotten your password?', array('%email' => $mail, '@password' => \Drupal::url('user.pass'))));
}
}
}
diff --git a/core/modules/user/src/AccountSettingsForm.php b/core/modules/user/src/AccountSettingsForm.php
index c03d17f..a8f7fdf 100644
--- a/core/modules/user/src/AccountSettingsForm.php
+++ b/core/modules/user/src/AccountSettingsForm.php
@@ -141,7 +141,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
'#type' => 'radios',
'#title' => $this->t('When cancelling a user account'),
'#default_value' => $config->get('cancel_method'),
- '#description' => $this->t('Users with the %select-cancel-method or %administer-users permissions can override this default method.', array('%select-cancel-method' => $this->t('Select method for cancelling account'), '%administer-users' => $this->t('Administer users'), '@permissions-url' => url('admin/people/permissions'))),
+ '#description' => $this->t('Users with the %select-cancel-method or %administer-users permissions can override this default method.', array('%select-cancel-method' => $this->t('Select method for cancelling account'), '%administer-users' => $this->t('Administer users'), '@permissions-url' => \Drupal::url('user.admin_permissions'))),
);
$form['registration_cancellation']['user_cancel_method'] += user_cancel_methods();
foreach (Element::children($form['registration_cancellation']['user_cancel_method']) as $key) {
diff --git a/core/modules/user/src/EventSubscriber/MaintenanceModeSubscriber.php b/core/modules/user/src/EventSubscriber/MaintenanceModeSubscriber.php
index f6aee69..f5322dc 100644
--- a/core/modules/user/src/EventSubscriber/MaintenanceModeSubscriber.php
+++ b/core/modules/user/src/EventSubscriber/MaintenanceModeSubscriber.php
@@ -62,25 +62,25 @@ public function onKernelRequestMaintenance(GetResponseEvent $event) {
if ($this->account->isAuthenticated() && !$this->maintenanceMode->exempt($this->account)) {
user_logout();
// Redirect to homepage.
- $event->setResponse(new RedirectResponse(url('', array('absolute' => TRUE))));
+ $event->setResponse(new RedirectResponse(\Drupal::url('', [], array('absolute' => TRUE))));
return;
}
if ($this->account->isAnonymous() && $path == 'user') {
// Forward anonymous user to login page.
- $event->setResponse(new RedirectResponse(url('user/login', array('absolute' => TRUE))));
+ $event->setResponse(new RedirectResponse(\Drupal::url('user.login', [], array('absolute' => TRUE))));
return;
}
}
if ($this->account->isAuthenticated()) {
if ($path == 'user/login') {
// If user is logged in, redirect to 'user' instead of giving 403.
- $event->setResponse(new RedirectResponse(url('user', array('absolute' => TRUE))));
+ $event->setResponse(new RedirectResponse(\Drupal::url('user.page', [], array('absolute' => TRUE))));
return;
}
if ($path == 'user/register') {
// Authenticated user should be redirected to user edit page.
- $event->setResponse(new RedirectResponse(url('user/' . $this->account->id() . '/edit', array('absolute' => TRUE))));
+ $event->setResponse(new RedirectResponse(\Drupal::url('entity.user.edit_form', ['user' => $this->account->id()], array('absolute' => TRUE))));
return;
}
}
diff --git a/core/modules/user/src/Form/UserLoginForm.php b/core/modules/user/src/Form/UserLoginForm.php
index e1275a4..a3c9d11 100644
--- a/core/modules/user/src/Form/UserLoginForm.php
+++ b/core/modules/user/src/Form/UserLoginForm.php
@@ -207,15 +207,15 @@ public function validateFinal(array &$form, FormStateInterface $form_state) {
if ($flood_control_triggered = $form_state->get('flood_control_triggered')) {
if ($flood_control_triggered == 'user') {
- $form_state->setErrorByName('name', format_plural($flood_config->get('user_limit'), 'Sorry, there has been more than one failed login attempt for this account. It is temporarily blocked. Try again later or request a new password.', 'Sorry, there have been more than @count failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.', array('@url' => url('user/password'))));
+ $form_state->setErrorByName('name', format_plural($flood_config->get('user_limit'), 'Sorry, there has been more than one failed login attempt for this account. It is temporarily blocked. Try again later or request a new password.', 'Sorry, there have been more than @count failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.', array('@url' => \Drupal::url('user.pass'))));
}
else {
// We did not find a uid, so the limit is IP-based.
- $form_state->setErrorByName('name', $this->t('Sorry, too many failed login attempts from your IP address. This IP address is temporarily blocked. Try again later or request a new password.', array('@url' => url('user/password'))));
+ $form_state->setErrorByName('name', $this->t('Sorry, too many failed login attempts from your IP address. This IP address is temporarily blocked. Try again later or request a new password.', array('@url' => \Drupal::url('user.pass'))));
}
}
else {
- $form_state->setErrorByName('name', $this->t('Sorry, unrecognized username or password. Have you forgotten your password?', array('@password' => url('user/password', array('query' => array('name' => $form_state->getValue('name')))))));
+ $form_state->setErrorByName('name', $this->t('Sorry, unrecognized username or password. Have you forgotten your password?', array('@password' => \Drupal::url('user.pass', [], array('query' => array('name' => $form_state->getValue('name')))))));
$accounts = $this->userStorage->loadByProperties(array('name' => $form_state->getValue('name')));
if (!empty($accounts)) {
$this->logger('user')->notice('Login attempt failed for %user.', array('%user' => $form_state->getValue('name')));
diff --git a/core/modules/user/src/Plugin/Search/UserSearch.php b/core/modules/user/src/Plugin/Search/UserSearch.php
index b50e0d8..fd51a74 100644
--- a/core/modules/user/src/Plugin/Search/UserSearch.php
+++ b/core/modules/user/src/Plugin/Search/UserSearch.php
@@ -143,7 +143,7 @@ public function execute() {
foreach ($accounts as $account) {
$result = array(
'title' => $account->getUsername(),
- 'link' => url('user/' . $account->id(), array('absolute' => TRUE)),
+ 'link' => \Drupal::url('entity.user.canonical', ['user' => $account->id()], array('absolute' => TRUE)),
);
if ($this->currentUser->hasPermission('administer users')) {
$result['title'] .= ' (' . $account->getEmail() . ')';
diff --git a/core/modules/user/src/RegisterForm.php b/core/modules/user/src/RegisterForm.php
index 35fc9e8..fb59502 100644
--- a/core/modules/user/src/RegisterForm.php
+++ b/core/modules/user/src/RegisterForm.php
@@ -43,7 +43,7 @@ public function form(array $form, FormStateInterface $form_state) {
// If we aren't admin but already logged on, go to the user page instead.
if (!$admin && $user->isAuthenticated()) {
- return new RedirectResponse(url('user/' . \Drupal::currentUser()->id(), array('absolute' => TRUE)));
+ return new RedirectResponse(\Drupal::url('entity.user.canonical', ['user' => \Drupal::currentUser()->id()], array('absolute' => TRUE)));
}
$form['#attached']['library'][] = 'core/drupal.form';
diff --git a/core/modules/user/src/Tests/UserBlocksTest.php b/core/modules/user/src/Tests/UserBlocksTest.php
index 9e3065f..33c892a 100644
--- a/core/modules/user/src/Tests/UserBlocksTest.php
+++ b/core/modules/user/src/Tests/UserBlocksTest.php
@@ -54,7 +54,7 @@ function testUserLoginBlock() {
$this->assertNoText(t('User login'), 'Logged in.');
// Check that we are still on the same page.
- $this->assertEqual(url('admin/people/permissions', array('absolute' => TRUE)), $this->getUrl(), 'Still on the same page after login for access denied page');
+ $this->assertEqual(\Drupal::url('user.admin_permissions', [], array('absolute' => TRUE)), $this->getUrl(), 'Still on the same page after login for access denied page');
// Now, log out and repeat with a non-403 page.
$this->drupalLogout();
@@ -67,7 +67,7 @@ function testUserLoginBlock() {
$this->drupalLogout();
$this->drupalPostForm('http://example.com/', $edit, t('Log in'), array('external' => FALSE));
// Check that we remain on the site after login.
- $this->assertEqual(url('user/' . $user->id(), array('absolute' => TRUE)), $this->getUrl(), 'Redirected to user profile page after login from the frontpage');
+ $this->assertEqual(\Drupal::url('entity.user.canonical', ['user' => $user->id()], array('absolute' => TRUE)), $this->getUrl(), 'Redirected to user profile page after login from the frontpage');
}
/**
diff --git a/core/modules/user/src/Tests/UserLoginTest.php b/core/modules/user/src/Tests/UserLoginTest.php
index 15fd7ce..e7161a5 100644
--- a/core/modules/user/src/Tests/UserLoginTest.php
+++ b/core/modules/user/src/Tests/UserLoginTest.php
@@ -156,11 +156,11 @@ function assertFailedLogin($account, $flood_trigger = NULL) {
$this->assertNoFieldByXPath("//input[@name='pass' and @value!='']", NULL, 'Password value attribute is blank.');
if (isset($flood_trigger)) {
if ($flood_trigger == 'user') {
- $this->assertRaw(format_plural(\Drupal::config('user.flood')->get('user_limit'), 'Sorry, there has been more than one failed login attempt for this account. It is temporarily blocked. Try again later or request a new password.', 'Sorry, there have been more than @count failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.', array('@url' => url('user/password'))));
+ $this->assertRaw(format_plural(\Drupal::config('user.flood')->get('user_limit'), 'Sorry, there has been more than one failed login attempt for this account. It is temporarily blocked. Try again later or request a new password.', 'Sorry, there have been more than @count failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.', array('@url' => \Drupal::url('user.pass'))));
}
else {
// No uid, so the limit is IP-based.
- $this->assertRaw(t('Sorry, too many failed login attempts from your IP address. This IP address is temporarily blocked. Try again later or request a new password.', array('@url' => url('user/password'))));
+ $this->assertRaw(t('Sorry, too many failed login attempts from your IP address. This IP address is temporarily blocked. Try again later or request a new password.', array('@url' => \Drupal::url('user.pass'))));
}
}
else {
diff --git a/core/modules/user/src/Tests/UserPasswordResetTest.php b/core/modules/user/src/Tests/UserPasswordResetTest.php
index 0ea06c0..651a4ea 100644
--- a/core/modules/user/src/Tests/UserPasswordResetTest.php
+++ b/core/modules/user/src/Tests/UserPasswordResetTest.php
@@ -139,7 +139,7 @@ public function testUserResetPasswordTextboxFilled() {
);
$this->drupalPostForm('user', $edit, t('Log in'));
$this->assertRaw(t('Sorry, unrecognized username or password. Have you forgotten your password?',
- array('@password' => url('user/password', array('query' => array('name' => $edit['name']))))));
+ array('@password' => \Drupal::url('user.pass', [], array('query' => array('name' => $edit['name']))))));
unset($edit['pass']);
$this->drupalGet('user/password', array('query' => array('name' => $edit['name'])));
$this->assertFieldByName('name', $edit['name'], 'User name found.');
diff --git a/core/modules/user/src/Tests/UserTokenReplaceTest.php b/core/modules/user/src/Tests/UserTokenReplaceTest.php
index 315c4ae..ea24998 100644
--- a/core/modules/user/src/Tests/UserTokenReplaceTest.php
+++ b/core/modules/user/src/Tests/UserTokenReplaceTest.php
@@ -57,8 +57,8 @@ function testUserTokenReplacement() {
$tests['[user:uid]'] = $account->id();
$tests['[user:name]'] = String::checkPlain(user_format_name($account));
$tests['[user:mail]'] = String::checkPlain($account->getEmail());
- $tests['[user:url]'] = url("user/" . $account->id(), $url_options);
- $tests['[user:edit-url]'] = url("user/" . $account->id() . "/edit", $url_options);
+ $tests['[user:url]'] = \Drupal::url('entity.user.canonical', ['user' => $account->id()], $url_options);
+ $tests['[user:edit-url]'] = \Drupal::url('entity.user.edit_form', ['user' => $account->id()], $url_options);
$tests['[user:last-login]'] = format_date($account->getLastLoginTime(), 'medium', '', NULL, $language_interface->id);
$tests['[user:last-login:short]'] = format_date($account->getLastLoginTime(), 'short', '', NULL, $language_interface->id);
$tests['[user:created]'] = format_date($account->getCreatedTime(), 'medium', '', NULL, $language_interface->id);
@@ -89,7 +89,7 @@ function testUserTokenReplacement() {
$tests['[user:cancel-url]'] = user_cancel_url($account);
// Generate tokens with interface language.
- $link = url('user', array('absolute' => TRUE));
+ $link = \Drupal::url('user.page', [], array('absolute' => TRUE));
foreach ($tests as $input => $expected) {
$output = $token_service->replace($input, array('user' => $account), array('langcode' => $language_interface->id, 'callback' => 'user_mail_tokens', 'sanitize' => FALSE, 'clear' => TRUE));
$this->assertTrue(strpos($output, $link) === 0, 'Generated URL is in interface language.');
@@ -98,14 +98,14 @@ function testUserTokenReplacement() {
// Generate tokens with the user's preferred language.
$account->preferred_langcode = 'de';
$account->save();
- $link = url('user', array('language' => \Drupal::languageManager()->getLanguage($account->getPreferredLangcode()), 'absolute' => TRUE));
+ $link = \Drupal::url('user.page', [], array('language' => \Drupal::languageManager()->getLanguage($account->getPreferredLangcode()), 'absolute' => TRUE));
foreach ($tests as $input => $expected) {
$output = $token_service->replace($input, array('user' => $account), array('callback' => 'user_mail_tokens', 'sanitize' => FALSE, 'clear' => TRUE));
$this->assertTrue(strpos($output, $link) === 0, "Generated URL is in the user's preferred language.");
}
// Generate tokens with one specific language.
- $link = url('user', array('language' => \Drupal::languageManager()->getLanguage('de'), 'absolute' => TRUE));
+ $link = \Drupal::url('user.page', [], array('language' => \Drupal::languageManager()->getLanguage('de'), 'absolute' => TRUE));
foreach ($tests as $input => $expected) {
foreach (array($user1, $user2) as $account) {
$output = $token_service->replace($input, array('user' => $account), array('langcode' => 'de', 'callback' => 'user_mail_tokens', 'sanitize' => FALSE, 'clear' => TRUE));
diff --git a/core/modules/user/user.api.php b/core/modules/user/user.api.php
index 34e9f7f..38fb651 100644
--- a/core/modules/user/user.api.php
+++ b/core/modules/user/user.api.php
@@ -136,7 +136,7 @@ function hook_user_login($account) {
$config = \Drupal::config('system.date');
// If the user has a NULL time zone, notify them to set a time zone.
if (!$account->getTimezone() && $config->get('timezone.user.configurable') && $config->get('timezone.user.warn')) {
- drupal_set_message(t('Configure your account time zone setting.', array('@user-edit' => url("user/" . $account->id() . "/edit", array('query' => drupal_get_destination(), 'fragment' => 'edit-timezone')))));
+ drupal_set_message(t('Configure your account time zone setting.', array('@user-edit' => \Drupal::url('entity.user.edit_form', ['user' => $account->id()], array('query' => drupal_get_destination(), 'fragment' => 'edit-timezone')))));
}
}
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 9e52c20..2ea4682 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -680,7 +680,11 @@ function user_pass_reset_url($account, $options = array()) {
$timestamp = REQUEST_TIME;
$langcode = isset($options['langcode']) ? $options['langcode'] : $account->getPreferredLangcode();
$url_options = array('absolute' => TRUE, 'language' => \Drupal::languageManager()->getLanguage($langcode));
- return url("user/reset/" . $account->id() . "/$timestamp/" . user_pass_rehash($account->getPassword(), $timestamp, $account->getLastLoginTime()), $url_options);
+ return \Drupal::url('user.reset', [
+ 'user' => $account->id(),
+ 'timestamp' => $timestamp,
+ 'hash' => user_pass_rehash($account->getPassword(), $timestamp, $account->getLastLoginTime()),
+ ], $url_options);
}
/**
@@ -708,7 +712,11 @@ function user_cancel_url($account, $options = array()) {
$timestamp = REQUEST_TIME;
$langcode = isset($options['langcode']) ? $options['langcode'] : $account->getPreferredLangcode();
$url_options = array('absolute' => TRUE, 'language' => \Drupal::languageManager()->getLanguage($langcode));
- return url("user/" . $account->id() . "/cancel/confirm/$timestamp/" . user_pass_rehash($account->getPassword(), $timestamp, $account->getLastLoginTime()), $url_options);
+ return \Drupal::url('user.cancel_confirm', [
+ 'user' => $account->id(),
+ 'timestamp' => $timestamp,
+ 'hashed_pass' => user_pass_rehash($account->getPassword(), $timestamp, $account->getLastLoginTime())
+ ], $url_options);
}
/**
diff --git a/core/modules/user/user.pages.inc b/core/modules/user/user.pages.inc
index b548e3b..895f84c 100644
--- a/core/modules/user/user.pages.inc
+++ b/core/modules/user/user.pages.inc
@@ -61,7 +61,7 @@ function user_cancel_confirm($account, $timestamp = 0, $hashed_pass = '') {
}
else {
drupal_set_message(t('You have tried to use an account cancellation link that has expired. Please request a new one using the form below.'));
- return new RedirectResponse(url("user/" . $account->id() . "/cancel", array('absolute' => TRUE)));
+ return new RedirectResponse(\Drupal::url('entity.user.cancel_form', ['user' => $account->id()], array('absolute' => TRUE)));
}
}
throw new AccessDeniedHttpException();
diff --git a/core/modules/user/user.tokens.inc b/core/modules/user/user.tokens.inc
index 51579be..dcaed97 100644
--- a/core/modules/user/user.tokens.inc
+++ b/core/modules/user/user.tokens.inc
@@ -98,11 +98,11 @@ function user_tokens($type, $tokens, array $data = array(), array $options = arr
break;
case 'url':
- $replacements[$original] = $account->id() ? url("user/" . $account->id(), $url_options) : t('not yet assigned');
+ $replacements[$original] = $account->id() ? \Drupal::url('entity.user.canonical', ['user' => $account->id()], $url_options) : t('not yet assigned');
break;
case 'edit-url':
- $replacements[$original] = $account->id() ? url("user/" . $account->id() . "/edit", $url_options) : t('not yet assigned');
+ $replacements[$original] = $account->id() ? \Drupal::url('entity.user.edit_form', ['user' => $account->id()], $url_options) : t('not yet assigned');
break;
// These tokens are default variations on the chained tokens handled below.
diff --git a/core/modules/views/views.module b/core/modules/views/views.module
index 0de48d4..46800bb 100644
--- a/core/modules/views/views.module
+++ b/core/modules/views/views.module
@@ -69,7 +69,7 @@ function views_views_pre_render($view) {
if ($view->ajaxEnabled() && empty($view->is_attachment) && empty($view->live_preview)) {
$settings = array(
'views' => array(
- 'ajax_path' => url('views/ajax'),
+ 'ajax_path' => \Drupal::url('views.ajax'),
'ajaxViews' => array(
'views_dom_id:' . $view->dom_id => array(
'view_name' => $view->storage->id(),
diff --git a/core/modules/views_ui/src/Form/Ajax/ReorderDisplays.php b/core/modules/views_ui/src/Form/Ajax/ReorderDisplays.php
index 173202c..1c28718 100644
--- a/core/modules/views_ui/src/Form/Ajax/ReorderDisplays.php
+++ b/core/modules/views_ui/src/Form/Ajax/ReorderDisplays.php
@@ -39,7 +39,11 @@ public function buildForm(array $form, FormStateInterface $form_state) {
$form['#title'] = $this->t('Reorder displays');
$form['#section'] = 'reorder';
- $form['#action'] = url('admin/structure/views/nojs/reorder-displays/' . $view->id() . '/' . $display_id);
+ $form['#action'] = \Drupal::url('views_ui.form_reorder_displays', [
+ 'js' => 'nojs',
+ 'view' => $view->id(),
+ 'display_id' => $display_id,
+ ]);
$form['view'] = array(
'#type' => 'value',
'#value' => $view