diff --git a/composer.json b/composer.json index 84041f4..4abfe5e 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "require": { "php": ">=7.3", "ext-json": "*", - "drupal/core": "^9.0", + "drupal/core": "^9.3 || ^10.0", "twig/twig": "^2.12", "symfony/polyfill-php80": "^1.17" }, diff --git a/src/TwigTweakExtension.php b/src/TwigTweakExtension.php index fbaa925..00671bb 100644 --- a/src/TwigTweakExtension.php +++ b/src/TwigTweakExtension.php @@ -324,7 +324,8 @@ class TwigTweakExtension extends AbstractExtension { if ($route = \Drupal::routeMatch()->getRouteObject()) { $title = \Drupal::service('title_resolver')->getTitle(\Drupal::request(), $route); } - $build['#markup'] = render($title); + $build['#markup'] = is_array($title) ? + \Drupal::service('renderer')->render($title) : $title; $build['#cache']['contexts'] = ['url']; return $build; } @@ -503,7 +504,8 @@ class TwigTweakExtension extends AbstractExtension { return NULL; } - return file_url_transform_relative($image_style->buildUrl($path)); + return \Drupal::service('file_url_generator') + ->transformRelative($image_style->buildUrl($path)); } /** diff --git a/src/UrlExtractor.php b/src/UrlExtractor.php index fee6727..da70990 100644 --- a/src/UrlExtractor.php +++ b/src/UrlExtractor.php @@ -7,6 +7,7 @@ use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Field\EntityReferenceFieldItemListInterface; use Drupal\Core\Field\FieldItemList; use Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem; +use Drupal\Core\File\FileUrlGeneratorInterface; use Drupal\file\FileInterface; use Drupal\link\LinkItemInterface; use Drupal\media\MediaInterface; @@ -24,11 +25,19 @@ class UrlExtractor { */ protected $entityTypeManager; + /** + * The file URL generator. + * + * @var \Drupal\Core\File\FileUrlGeneratorInterface + */ + protected $fileUrlGenerator; + /** * Constructs a UrlExtractor object. */ - public function __construct(EntityTypeManagerInterface $entity_type_manager) { + public function __construct(EntityTypeManagerInterface $entity_type_manager, FileUrlGeneratorInterface $file_url_generator) { $this->entityTypeManager = $entity_type_manager; + $this->fileUrlGenerator = $file_url_generator; } /** @@ -44,8 +53,7 @@ class UrlExtractor { */ public function extractUrl($input, bool $relative = TRUE): ?string { if (is_string($input)) { - $url = file_create_url($input); - return $relative ? file_url_transform_relative($url) : $url; + return $this->fileUrlGenerator->{$relative ? 'generateString' : 'generateAbsoluteString'}($input); } elseif ($input instanceof LinkItemInterface) { return $input->getUrl()->toString(); diff --git a/src/View/RegionViewBuilder.php b/src/View/RegionViewBuilder.php index d1fd36d..4533012 100644 --- a/src/View/RegionViewBuilder.php +++ b/src/View/RegionViewBuilder.php @@ -7,7 +7,7 @@ use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Controller\TitleResolverInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; -use Symfony\Cmf\Component\Routing\RouteObjectInterface; +use Drupal\Core\Routing\RouteObjectInterface; use Symfony\Component\HttpFoundation\RequestStack; /** diff --git a/tests/src/Functional/TwigTweakTest.php b/tests/src/Functional/TwigTweakTest.php index 7d96d80..122ae99 100644 --- a/tests/src/Functional/TwigTweakTest.php +++ b/tests/src/Functional/TwigTweakTest.php @@ -5,6 +5,7 @@ namespace Drupal\Tests\twig_tweak\Functional; use Drupal\Core\Link; use Drupal\Core\Render\Markup; use Drupal\Core\Url; +use Drupal\file\FileInterface; use Drupal\Tests\BrowserTestBase; use Drupal\Tests\TestFileCreationTrait; use Drupal\file\Entity\File; @@ -53,14 +54,14 @@ final class TwigTweakTest extends BrowserTestBase { $image_file = File::create([ 'uri' => $test_files[0]->uri, 'uuid' => 'b2c22b6f-7bf8-4da4-9de5-316e93487518', - 'status' => FILE_STATUS_PERMANENT, + 'status' => FileInterface::STATUS_PERMANENT, ]); $image_file->save(); $media_file = File::create([ 'uri' => $test_files[8]->uri, 'uuid' => '5dd794d0-cb75-4130-9296-838aebc1fe74', - 'status' => FILE_STATUS_PERMANENT, + 'status' => FileInterface::STATUS_PERMANENT, ]); $media_file->save(); diff --git a/tests/src/Kernel/AbstractExtractorTestCase.php b/tests/src/Kernel/AbstractExtractorTestCase.php index 23ff8a6..9f763e3 100644 --- a/tests/src/Kernel/AbstractExtractorTestCase.php +++ b/tests/src/Kernel/AbstractExtractorTestCase.php @@ -3,6 +3,7 @@ namespace Drupal\Tests\twig_tweak\Kernel; use Drupal\file\Entity\File; +use Drupal\file\FileInterface; use Drupal\KernelTests\KernelTestBase; use Drupal\media\Entity\Media; use Drupal\node\Entity\Node; @@ -57,14 +58,14 @@ abstract class AbstractExtractorTestCase extends KernelTestBase { $image_file = File::create([ 'uri' => $test_files[0]->uri, 'uuid' => 'a2cb2b6f-7bf8-4da4-9de5-316e93487518', - 'status' => FILE_STATUS_PERMANENT, + 'status' => FileInterface::STATUS_PERMANENT, ]); $image_file->save(); $media_file = File::create([ 'uri' => $test_files[2]->uri, 'uuid' => '5dd794d0-cb75-4130-9296-838aebc1fe74', - 'status' => FILE_STATUS_PERMANENT, + 'status' => FileInterface::STATUS_PERMANENT, ]); $media_file->save(); diff --git a/tests/src/Kernel/UrlExtractorTest.php b/tests/src/Kernel/UrlExtractorTest.php index 1064358..a14d9b1 100644 --- a/tests/src/Kernel/UrlExtractorTest.php +++ b/tests/src/Kernel/UrlExtractorTest.php @@ -15,7 +15,7 @@ final class UrlExtractorTest extends AbstractExtractorTestCase { public function testUrlExtractor(): void { $extractor = $this->container->get('twig_tweak.url_extractor'); - $base_url = file_create_url(''); + $base_url = \Drupal::service('file_url_generator')->generateAbsoluteString(''); $request = \Drupal::request(); $absolute_url = "{$request->getScheme()}://{$request->getHost()}/foo/bar.txt"; diff --git a/tests/twig_tweak_test/twig_tweak_test.info.yml b/tests/twig_tweak_test/twig_tweak_test.info.yml index 9b493a6..c0d4f8f 100644 --- a/tests/twig_tweak_test/twig_tweak_test.info.yml +++ b/tests/twig_tweak_test/twig_tweak_test.info.yml @@ -2,7 +2,7 @@ name: Twig tweak test type: module description: Support module for Twig tweak testing. package: Testing -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 dependencies: - drupal:system (>= 9.0) - drupal:block diff --git a/twig_tweak.info.yml b/twig_tweak.info.yml index eb56a60..fc54db2 100644 --- a/twig_tweak.info.yml +++ b/twig_tweak.info.yml @@ -1,6 +1,6 @@ name: Twig Tweak type: module description: Provides some extra Twig functions and filters. -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 dependencies: - drupal:system (>=9.0) diff --git a/twig_tweak.services.yml b/twig_tweak.services.yml index 71d2365..f5c6ef3 100644 --- a/twig_tweak.services.yml +++ b/twig_tweak.services.yml @@ -34,7 +34,7 @@ services: twig_tweak.url_extractor: class: Drupal\twig_tweak\UrlExtractor - arguments: ['@entity_type.manager'] + arguments: ['@entity_type.manager', '@file_url_generator'] twig_tweak.uri_extractor: class: Drupal\twig_tweak\UriExtractor