mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #10755 from creative-commoners/pulls/5.0/themed-resource-url
This commit is contained in:
commit
b085e2df31
@ -15,7 +15,7 @@ class ModuleResourceLoader implements TemplateGlobalProvider
|
|||||||
use Injectable;
|
use Injectable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a file of the form "vendor/package:resource" into a BASE_PATH-relative file
|
* Convert a file of the form "vendor/package:resource" into a BASE_PATH-relative file or folder
|
||||||
* For other files, return original value
|
* For other files, return original value
|
||||||
*
|
*
|
||||||
* @param string $resource
|
* @param string $resource
|
||||||
@ -91,7 +91,7 @@ class ModuleResourceLoader implements TemplateGlobalProvider
|
|||||||
* Returns the original resource otherwise.
|
* Returns the original resource otherwise.
|
||||||
*
|
*
|
||||||
* @param string $resource
|
* @param string $resource
|
||||||
* @return ModuleResource|string The resource, or input string if not a module resource
|
* @return ModuleResource|string The resource (or directory), or input string if not a module resource
|
||||||
*/
|
*/
|
||||||
public function resolveResource($resource)
|
public function resolveResource($resource)
|
||||||
{
|
{
|
||||||
|
@ -7,12 +7,13 @@ use Psr\SimpleCache\CacheInterface;
|
|||||||
use SilverStripe\Core\Flushable;
|
use SilverStripe\Core\Flushable;
|
||||||
use SilverStripe\Core\Injector\Injector;
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use SilverStripe\Core\Manifest\ModuleLoader;
|
use SilverStripe\Core\Manifest\ModuleLoader;
|
||||||
|
use SilverStripe\Core\Manifest\ModuleResourceLoader;
|
||||||
use SilverStripe\Core\Path;
|
use SilverStripe\Core\Path;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles finding templates from a stack of template manifest objects.
|
* Handles finding templates from a stack of template manifest objects.
|
||||||
*/
|
*/
|
||||||
class ThemeResourceLoader implements Flushable
|
class ThemeResourceLoader implements Flushable, TemplateGlobalProvider
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -308,9 +309,9 @@ class ThemeResourceLoader implements Flushable
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolve a themed resource
|
* Resolve a themed resource or directory
|
||||||
*
|
*
|
||||||
* A themed resource and be any file that resides in a theme folder.
|
* A themed resource can be any file that resides in a theme folder.
|
||||||
*
|
*
|
||||||
* @param string $resource A file path relative to the root folder of a theme
|
* @param string $resource A file path relative to the root folder of a theme
|
||||||
* @param array $themes An order listed of themes to search, Defaults to {@see SSViewer::get_themes()}
|
* @param array $themes An order listed of themes to search, Defaults to {@see SSViewer::get_themes()}
|
||||||
@ -336,6 +337,28 @@ class ThemeResourceLoader implements Flushable
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the URL for a given themed resource or directory within the project.
|
||||||
|
*
|
||||||
|
* A themed resource can be any file that resides in a theme folder.
|
||||||
|
*/
|
||||||
|
public static function themedResourceURL(string $resource): ?string
|
||||||
|
{
|
||||||
|
$filePath = static::inst()->findThemedResource($resource);
|
||||||
|
if (!$filePath) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return ModuleResourceLoader::singleton()->resolveURL($filePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_template_global_variables()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'themedResourceURL',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolve all themes to the list of root folders relative to site root
|
* Resolve all themes to the list of root folders relative to site root
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user