diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index 3ceef29c34d78..811f452ee9cac 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -43,9 +43,11 @@ namespace OC; use bantu\IniGetWrapper\IniGetWrapper; +use OC\AppFramework\Utility\QueryNotFoundException; use OC\Search\SearchQuery; use OC\Template\JSCombiner; use OC\Template\JSConfigHelper; +use OC\Template\JSResourceLocator; use OCP\AppFramework\Http\TemplateResponse; use OCP\Defaults; use OCP\IConfig; @@ -68,6 +70,9 @@ class TemplateLayout extends \OC_Template { /** @var INavigationManager */ private $navigationManager; + /** @var JSResourceLocator|null */ + public static $jsLocator = null; + /** * @param string $renderAs * @param string $appId application id @@ -374,16 +379,24 @@ public function getAppNamefromPath($path) { public static function findJavascriptFiles($scripts) { // Read the selected theme from the config file $theme = \OC_Util::getTheme(); - - $locator = new \OC\Template\JSResourceLocator( - \OC::$server->get(LoggerInterface::class), - $theme, - [ \OC::$SERVERROOT => \OC::$WEBROOT ], - [ \OC::$SERVERROOT => \OC::$WEBROOT ], - \OC::$server->query(JSCombiner::class) + try { + // we need the injected form coming with stable26 + if (self::$jsLocator === null) { + self::$jsLocator = \OCP\Server::get(JSResourceLocator::class); + } + } catch (QueryNotFoundException $eInject) { + // but keep the old version just in case theming is not available + self::$jsLocator = new JSResourceLocator( + \OC::$server->get(LoggerInterface::class), + $theme, + [ \OC::$SERVERROOT => \OC::$WEBROOT ], + [ \OC::$SERVERROOT => \OC::$WEBROOT ], + \OC::$server->query(JSCombiner::class) ); - $locator->find($scripts); - return $locator->getResources(); + } + + self::$jsLocator->find($scripts); + return self::$jsLocator->getResources(); } /**