Issue #2321515 by dawehner: Fixed Updating links loses fragments.
							parent
							
								
									0d86fa90bf
								
							
						
					
					
						commit
						cdebbfb7bf
					
				| 
						 | 
				
			
			@ -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',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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.');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue