Made it possible to override icons via custom theme

This commit is contained in:
Dan Brown 2018-02-17 12:36:24 +00:00
parent 981d215155
commit dc1a16be4c
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
2 changed files with 43 additions and 1 deletions

View File

@ -130,13 +130,42 @@ function redirect($to = null, $status = 302, $headers = [], $secure = null)
return app('redirect')->to($to, $status, $headers, $secure);
}
/**
* Get a path to a theme resource.
* @param string $path
* @return string|boolean
*/
function theme_path($path = '')
{
$theme = config('view.theme');
if (!$theme) {
return false;
}
return base_path('themes/' . $theme .($path ? DIRECTORY_SEPARATOR.$path : $path));
}
/**
* Get fetch an SVG icon as a string.
* Checks for icons defined within a custom theme before defaulting back
* to the 'resources/assets/icons' folder.
* @param $name
* @param array $attrs
* @return mixed
*/
function icon($name, $attrs = [])
{
$iconPath = resource_path('assets/icons/' . $name . '.svg');
$attrString = ' ';
foreach ($attrs as $attrName => $attr) {
$attrString .= $attrName . '="' . $attr . '" ';
}
$iconPath = resource_path('assets/icons/' . $name . '.svg');
$themeIconPath = theme_path('icons/' . $name . '.svg');
if ($themeIconPath && file_exists($themeIconPath)) {
$iconPath = $themeIconPath;
}
$fileContents = file_get_contents($iconPath);
return str_replace('<svg', '<svg' . $attrString, $fileContents);
}

View File

@ -7,6 +7,19 @@ if ($theme = env('APP_THEME', false)) {
return [
/*
|--------------------------------------------------------------------------
| App theme
|--------------------------------------------------------------------------
|
| This option defines the theme to use for the application. When a theme
| is set there mush be a `themes/<theme_name>` folder to hold the
| custom theme overrides.
|
*/
'theme' => env('APP_THEME', false),
/*
|--------------------------------------------------------------------------
| View Storage Paths