Commit cdebbfb7 authored by webchick's avatar webchick

Issue #2321515 by dawehner: Fixed Updating links loses fragments.

parent 0d86fa90
......@@ -260,16 +260,18 @@ public function form(array $form, FormStateInterface $form_state) {
// which need a replacement since it is deprecated.
// https://www.drupal.org/node/2307061
$default_value = $url->getInternalPath();
// @todo Add a helper method to Url to render just the query string and
// fragment. https://www.drupal.org/node/2305013
$options = $url->getOptions();
if (isset($options['query'])) {
$default_value .= $options['query'] ? ('?' . UrlHelper::buildQuery($options['query'])) : '';
}
if (isset($options['fragment']) && $options['fragment'] !== '') {
$default_value .= '#' . $options['fragment'];
}
}
// @todo Add a helper method to Url to render just the query string and
// fragment. https://www.drupal.org/node/2305013
$options = $url->getOptions();
if (isset($options['query'])) {
$default_value .= $options['query'] ? ('?' . UrlHelper::buildQuery($options['query'])) : '';
}
if (isset($options['fragment']) && $options['fragment'] !== '') {
$default_value .= '#' . $options['fragment'];
}
$form['url'] = array(
'#title' => $this->t('Link path'),
'#type' => 'textfield',
......
......@@ -458,6 +458,19 @@ function testMenuQueryAndFragment() {
$this->drupalPostForm('admin/structure/menu/item/' . $item->id() . '/edit', array('url' => $path), t('Save'));
$this->drupalGet('admin/structure/menu/item/' . $item->id() . '/edit');
$this->assertFieldByName('url', $path, 'Path no longer has query or fragment.');
// Use <front>#fragment and ensure that saving it does not loose its
// content.
$path = '<front>?arg1=value#fragment';
$item = $this->addMenuLink('', $path);
$this->drupalGet('admin/structure/menu/item/' . $item->id() . '/edit');
$this->assertFieldByName('url', $path, 'Path is found with both query and fragment.');
$this->drupalPostForm('admin/structure/menu/item/' . $item->id() . '/edit', array(), t('Save'));
$this->drupalGet('admin/structure/menu/item/' . $item->id() . '/edit');
$this->assertFieldByName('url', $path, 'Path is found with both query and fragment.');
}
/**
......
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