Loading graphql_twig.services.yml +3 −0 Original line number Diff line number Diff line Loading @@ -24,5 +24,8 @@ services: - '%twig.config%' - '@cache.graphql_twig.components' - '@app.root' - '@file_system' - '@extension.list.theme' - '@logger.factory' tags: - { name: twig.loader, priority: 1000 } src/Template/Loader/Loader.php +46 −4 Original line number Diff line number Diff line Loading @@ -3,6 +3,10 @@ namespace Drupal\graphql_twig\Template\Loader; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Extension\ThemeExtensionList; use Drupal\Core\File\Exception\FileException; use Drupal\Core\File\FileSystemInterface; use Drupal\Core\Logger\LoggerChannelFactoryInterface; use Drupal\Core\Theme\ThemeManagerInterface; /** Loading @@ -11,6 +15,8 @@ use Drupal\Core\Theme\ThemeManagerInterface; class Loader extends \Twig_Loader_Filesystem { /** * Provides a high level access to the active theme and methods to use it. * * @var \Drupal\Core\Theme\ThemeManagerInterface */ protected $themeManager; Loading @@ -23,6 +29,8 @@ class Loader extends \Twig_Loader_Filesystem { protected $components = NULL; /** * Defines an interface for cache implementations. * * @var \Drupal\Core\Cache\CacheBackendInterface */ protected $cacheBackend; Loading @@ -32,6 +40,27 @@ class Loader extends \Twig_Loader_Filesystem { */ protected $twigConfig; /** * Provides an interface for helpers that operate on files and stream wrappers. * * @var \Drupal\Core\File\FileSystemInterface */ protected $fileSystem; /** * Provides a list of available themes. * * @var \Drupal\Core\Extension\ThemeExtensionList */ protected $themeExtensionList; /** * The logger. * * @var \Drupal\Core\Logger\LoggerChannelFactoryInterface */ protected $logger; /** * Constructor. */ Loading @@ -40,12 +69,18 @@ class Loader extends \Twig_Loader_Filesystem { array $twigConfig, CacheBackendInterface $cacheBackend, $paths = [], FileSystemInterface $fileSystem, ThemeExtensionList $themeExtensionList, LoggerChannelFactoryInterface $logger, $rootPath = NULL ) { parent::__construct($paths, $rootPath); $this->cacheBackend = $cacheBackend; $this->twigConfig = $twigConfig; $this->themeManager = $themeManager; $this->fileSystem = $fileSystem; $this->themeExtensionList = $themeExtensionList; $this->logger = $logger->get('graphql_twig'); } /** Loading @@ -62,9 +97,14 @@ class Loader extends \Twig_Loader_Filesystem { return $cache->data; } foreach (file_scan_directory($path, '/.*\.twig$/') as $file) { try { foreach ($this->fileSystem->scanDirectory($path, '/.*\.twig$/') as $file) { $this->components[$file->name] = $file->uri; } } catch (FileException $exception) { $this->logger->error($exception->getMessage()); } if ($this->twigConfig['cache']) { $this->cacheBackend->set($path, $this->components); Loading @@ -82,12 +122,14 @@ class Loader extends \Twig_Loader_Filesystem { // Scan the directory for any twig files and register them. // TODO: inherit components from base theme. $activeTheme = $this->themeManager->getActiveTheme(); $info = \Drupal::service('extension.list.theme')->getExtensionInfo($activeTheme->getName()); $info = $this->themeExtensionList->getExtensionInfo($activeTheme->getName()); $componentsDirectory = array_key_exists('components', $info) ? $info['components'] : $activeTheme->getPath() . '/components'; if (is_dir($componentsDirectory)) { $this->components = $this->listComponents($componentsDirectory); } } if ($name[0] === '#') { $component = substr($name, 1); Loading tests/src/Kernel/BlockTest.php +3 −1 Original line number Diff line number Diff line Loading @@ -30,13 +30,15 @@ class BlockTest extends GraphQLTestBase { $this->installConfig(['graphql_twig']); $themeName = 'graphql_twig_test_theme'; \Drupal::service('theme_installer')->install([$themeName]); /** @var \Drupal\Core\Extension\ThemeInstaller $themeInstaller */ $themeInstaller = $this->container->get('theme_installer'); /** @var \Drupal\Core\Theme\ThemeInitialization $themeInitialization */ $themeInitialization = $this->container->get('theme.initialization'); /** @var \Drupal\Core\Theme\ThemeManager $themeManager */ $themeManager = $this->container->get('theme.manager'); $themeInstaller->install([$themeName]); $theme = $themeInitialization->initTheme($themeName); $themeManager->setActiveTheme($theme); Loading tests/src/Kernel/RouteTest.php +3 −1 Original line number Diff line number Diff line Loading @@ -26,13 +26,15 @@ class RouteTest extends GraphQLTestBase { parent::setUp(); $themeName = 'graphql_twig_test_theme'; \Drupal::service('theme_installer')->install([$themeName]); /** @var \Drupal\Core\Extension\ThemeInstaller $themeInstaller */ $themeInstaller = $this->container->get('theme_installer'); /** @var \Drupal\Core\Theme\ThemeInitialization $themeInitialization */ $themeInitialization = $this->container->get('theme.initialization'); /** @var \Drupal\Core\Theme\ThemeManager $themeManager */ $themeManager = $this->container->get('theme.manager'); $themeInstaller->install([$themeName]); $theme = $themeInitialization->initTheme($themeName); $themeManager->setActiveTheme($theme); Loading tests/src/Traits/ThemeTestTrait.php +3 −3 Original line number Diff line number Diff line Loading @@ -37,15 +37,15 @@ trait ThemeTestTrait { $this->container->set('graphql.query_processor', $this->processor->reveal()); $themeName = 'graphql_twig_test_theme'; \Drupal::service('theme_installer')->install([$themeName]); /** @var \Drupal\Core\Extension\ThemeHandler $themeHandler */ $themeHandler = $this->container->get('theme_handler'); /** @var \Drupal\Core\Extension\ThemeInstaller $themeInstaller */ $themeInstaller = $this->container->get('theme_installer'); /** @var \Drupal\Core\Theme\ThemeInitialization $themeInitialization */ $themeInitialization = $this->container->get('theme.initialization'); /** @var \Drupal\Core\Theme\ThemeManager $themeManager */ $themeManager = $this->container->get('theme.manager'); $themeInstaller->install([$themeName]); $theme = $themeInitialization->initTheme($themeName); $themeManager->setActiveTheme($theme); } Loading Loading
graphql_twig.services.yml +3 −0 Original line number Diff line number Diff line Loading @@ -24,5 +24,8 @@ services: - '%twig.config%' - '@cache.graphql_twig.components' - '@app.root' - '@file_system' - '@extension.list.theme' - '@logger.factory' tags: - { name: twig.loader, priority: 1000 }
src/Template/Loader/Loader.php +46 −4 Original line number Diff line number Diff line Loading @@ -3,6 +3,10 @@ namespace Drupal\graphql_twig\Template\Loader; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Extension\ThemeExtensionList; use Drupal\Core\File\Exception\FileException; use Drupal\Core\File\FileSystemInterface; use Drupal\Core\Logger\LoggerChannelFactoryInterface; use Drupal\Core\Theme\ThemeManagerInterface; /** Loading @@ -11,6 +15,8 @@ use Drupal\Core\Theme\ThemeManagerInterface; class Loader extends \Twig_Loader_Filesystem { /** * Provides a high level access to the active theme and methods to use it. * * @var \Drupal\Core\Theme\ThemeManagerInterface */ protected $themeManager; Loading @@ -23,6 +29,8 @@ class Loader extends \Twig_Loader_Filesystem { protected $components = NULL; /** * Defines an interface for cache implementations. * * @var \Drupal\Core\Cache\CacheBackendInterface */ protected $cacheBackend; Loading @@ -32,6 +40,27 @@ class Loader extends \Twig_Loader_Filesystem { */ protected $twigConfig; /** * Provides an interface for helpers that operate on files and stream wrappers. * * @var \Drupal\Core\File\FileSystemInterface */ protected $fileSystem; /** * Provides a list of available themes. * * @var \Drupal\Core\Extension\ThemeExtensionList */ protected $themeExtensionList; /** * The logger. * * @var \Drupal\Core\Logger\LoggerChannelFactoryInterface */ protected $logger; /** * Constructor. */ Loading @@ -40,12 +69,18 @@ class Loader extends \Twig_Loader_Filesystem { array $twigConfig, CacheBackendInterface $cacheBackend, $paths = [], FileSystemInterface $fileSystem, ThemeExtensionList $themeExtensionList, LoggerChannelFactoryInterface $logger, $rootPath = NULL ) { parent::__construct($paths, $rootPath); $this->cacheBackend = $cacheBackend; $this->twigConfig = $twigConfig; $this->themeManager = $themeManager; $this->fileSystem = $fileSystem; $this->themeExtensionList = $themeExtensionList; $this->logger = $logger->get('graphql_twig'); } /** Loading @@ -62,9 +97,14 @@ class Loader extends \Twig_Loader_Filesystem { return $cache->data; } foreach (file_scan_directory($path, '/.*\.twig$/') as $file) { try { foreach ($this->fileSystem->scanDirectory($path, '/.*\.twig$/') as $file) { $this->components[$file->name] = $file->uri; } } catch (FileException $exception) { $this->logger->error($exception->getMessage()); } if ($this->twigConfig['cache']) { $this->cacheBackend->set($path, $this->components); Loading @@ -82,12 +122,14 @@ class Loader extends \Twig_Loader_Filesystem { // Scan the directory for any twig files and register them. // TODO: inherit components from base theme. $activeTheme = $this->themeManager->getActiveTheme(); $info = \Drupal::service('extension.list.theme')->getExtensionInfo($activeTheme->getName()); $info = $this->themeExtensionList->getExtensionInfo($activeTheme->getName()); $componentsDirectory = array_key_exists('components', $info) ? $info['components'] : $activeTheme->getPath() . '/components'; if (is_dir($componentsDirectory)) { $this->components = $this->listComponents($componentsDirectory); } } if ($name[0] === '#') { $component = substr($name, 1); Loading
tests/src/Kernel/BlockTest.php +3 −1 Original line number Diff line number Diff line Loading @@ -30,13 +30,15 @@ class BlockTest extends GraphQLTestBase { $this->installConfig(['graphql_twig']); $themeName = 'graphql_twig_test_theme'; \Drupal::service('theme_installer')->install([$themeName]); /** @var \Drupal\Core\Extension\ThemeInstaller $themeInstaller */ $themeInstaller = $this->container->get('theme_installer'); /** @var \Drupal\Core\Theme\ThemeInitialization $themeInitialization */ $themeInitialization = $this->container->get('theme.initialization'); /** @var \Drupal\Core\Theme\ThemeManager $themeManager */ $themeManager = $this->container->get('theme.manager'); $themeInstaller->install([$themeName]); $theme = $themeInitialization->initTheme($themeName); $themeManager->setActiveTheme($theme); Loading
tests/src/Kernel/RouteTest.php +3 −1 Original line number Diff line number Diff line Loading @@ -26,13 +26,15 @@ class RouteTest extends GraphQLTestBase { parent::setUp(); $themeName = 'graphql_twig_test_theme'; \Drupal::service('theme_installer')->install([$themeName]); /** @var \Drupal\Core\Extension\ThemeInstaller $themeInstaller */ $themeInstaller = $this->container->get('theme_installer'); /** @var \Drupal\Core\Theme\ThemeInitialization $themeInitialization */ $themeInitialization = $this->container->get('theme.initialization'); /** @var \Drupal\Core\Theme\ThemeManager $themeManager */ $themeManager = $this->container->get('theme.manager'); $themeInstaller->install([$themeName]); $theme = $themeInitialization->initTheme($themeName); $themeManager->setActiveTheme($theme); Loading
tests/src/Traits/ThemeTestTrait.php +3 −3 Original line number Diff line number Diff line Loading @@ -37,15 +37,15 @@ trait ThemeTestTrait { $this->container->set('graphql.query_processor', $this->processor->reveal()); $themeName = 'graphql_twig_test_theme'; \Drupal::service('theme_installer')->install([$themeName]); /** @var \Drupal\Core\Extension\ThemeHandler $themeHandler */ $themeHandler = $this->container->get('theme_handler'); /** @var \Drupal\Core\Extension\ThemeInstaller $themeInstaller */ $themeInstaller = $this->container->get('theme_installer'); /** @var \Drupal\Core\Theme\ThemeInitialization $themeInitialization */ $themeInitialization = $this->container->get('theme.initialization'); /** @var \Drupal\Core\Theme\ThemeManager $themeManager */ $themeManager = $this->container->get('theme.manager'); $themeInstaller->install([$themeName]); $theme = $themeInitialization->initTheme($themeName); $themeManager->setActiveTheme($theme); } Loading