diff --git a/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php b/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php index 0cf8d8a..7bbfe35 100644 --- a/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php +++ b/core/modules/responsive_image/src/Plugin/Field/FieldFormatter/ResponsiveImageFormatter.php @@ -16,7 +16,6 @@ use Drupal\Core\Url; use Drupal\image\Plugin\Field\FieldFormatter\ImageFormatterBase; use Symfony\Component\DependencyInjection\ContainerInterface; -use Drupal\responsive_image\Entity\ResponsiveImageStyle; use Drupal\image\Entity\ImageStyle; /** @@ -179,7 +178,10 @@ public function viewElements(FieldItemListInterface $items) { $url = NULL; // Check if the formatter involves a link. if ($this->getSetting('image_link') == 'content') { - $url = $items->getEntity()->urlInfo(); + $entity = $items->getEntity(); + if (!$entity->isNew()) { + $url = $entity->urlInfo(); + } } elseif ($this->getSetting('image_link') == 'file') { $link_file = TRUE; diff --git a/core/modules/responsive_image/src/Tests/ResponsiveImageFieldDisplayTest.php b/core/modules/responsive_image/src/Tests/ResponsiveImageFieldDisplayTest.php index 45a418d..eb19600 100644 --- a/core/modules/responsive_image/src/Tests/ResponsiveImageFieldDisplayTest.php +++ b/core/modules/responsive_image/src/Tests/ResponsiveImageFieldDisplayTest.php @@ -318,6 +318,25 @@ private function assertResponsiveImageFieldFormattersLink($link_type) { $this->createImageField($field_name, 'article', array('uri_scheme' => 'public')); // Create a new node with an image attached. $test_image = current($this->drupalGetTestFiles('image')); + + // Test the image linked to file formatter. + $display_options = array( + 'type' => 'responsive_image', + 'settings' => array( + 'image_link' => $link_type, + 'responsive_image_style' => 'style_one', + 'fallback_image_style' => 'large', + ), + ); + entity_get_display('node', 'article', 'default') + ->setComponent($field_name, $display_options) + ->save(); + // Ensure that preview works. + $this->previewNodeImage($test_image, $field_name, 'article'); + + // Look for a picture tag in the preview output + $this->assertPattern('/picture/'); + $nid = $this->uploadNodeImage($test_image, $field_name, 'article'); $this->container->get('entity.manager')->getStorage('node')->resetCache(array($nid)); $node = Node::load($nid);