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

8.0.x
webchick 2014-08-25 23:03:43 -07:00
parent 0d86fa90bf
commit cdebbfb7bf
2 changed files with 24 additions and 9 deletions

View File

@ -260,16 +260,18 @@ class MenuLinkContentForm extends ContentEntityForm implements MenuLinkFormInter
// 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',

View File

@ -458,6 +458,19 @@ class MenuTest extends MenuWebTestBase {
$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.');
}
/**