From dd4a2aa288168927c95bbdcc023f72d47aace26a Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 20 Aug 2014 21:37:19 +0300 Subject: [PATCH] Add scheme support for Assets class --- system/src/Grav/Common/Assets.php | 3 +++ .../Component/Filesystem/ResourceLocator.php | 25 +++++++++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index b6266ed75..4ebb4098e 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -547,6 +547,9 @@ class Assets */ protected function buildLocalLink($asset) { + try { + return self::$grav['uri']->rootUrl() . '/' . self::$grav['locator']->findResource($asset, false); + } catch (\Exception $e) {} $matches = $this->assetIsGravPackage($asset); $base_url = $this->base_url; diff --git a/system/src/Grav/Component/Filesystem/ResourceLocator.php b/system/src/Grav/Component/Filesystem/ResourceLocator.php index 95c202cf3..c8f690a5e 100644 --- a/system/src/Grav/Component/Filesystem/ResourceLocator.php +++ b/system/src/Grav/Component/Filesystem/ResourceLocator.php @@ -42,34 +42,38 @@ class ResourceLocator */ public function __invoke($uri) { - return $this->find($uri, false); + return $this->find($uri, false, true); } /** * @param string $uri + * @param bool $absolute * @return string|bool */ - public function findResource($uri) + public function findResource($uri, $absolute = true) { - return $this->find($uri, false); + return $this->find($uri, false, $absolute); } /** * @param string $uri + * @param bool $absolute * @return array */ - public function findResources($uri) + public function findResources($uri, $absolute = true) { - return $this->find($uri, true); + return $this->find($uri, true, $absolute); } /** * @param string $uri + * @param bool $absolute * @param bool $array + * * @throws \InvalidArgumentException * @return array|string|bool */ - protected function find($uri, $array) + protected function find($uri, $array, $absolute) { $segments = explode('://', $uri, 2); $file = array_pop($segments); @@ -93,13 +97,14 @@ class ResourceLocator } foreach ($paths as $path) { - $filename = ROOT_DIR . '/' . $path . '/' . ltrim(substr($file, strlen($prefix)), '\/'); + $filename = $path . '/' . ltrim(substr($file, strlen($prefix)), '\/'); + $lookup = ROOT_DIR . '/' . $filename; - if (file_exists($filename)) { + if (file_exists($lookup)) { if (!$array) { - return $filename; + return $absolute ? $lookup : $filename; } - $paths[] = $filename; + $paths[] = $absolute ? $lookup : $filename; } } }