mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-08-24 19:25:27 +00:00
Made it possible to override icons via custom theme
This commit is contained in:
parent
981d215155
commit
dc1a16be4c
@ -130,13 +130,42 @@ function redirect($to = null, $status = 302, $headers = [], $secure = null)
|
|||||||
return app('redirect')->to($to, $status, $headers, $secure);
|
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 = [])
|
function icon($name, $attrs = [])
|
||||||
{
|
{
|
||||||
$iconPath = resource_path('assets/icons/' . $name . '.svg');
|
|
||||||
$attrString = ' ';
|
$attrString = ' ';
|
||||||
foreach ($attrs as $attrName => $attr) {
|
foreach ($attrs as $attrName => $attr) {
|
||||||
$attrString .= $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);
|
$fileContents = file_get_contents($iconPath);
|
||||||
return str_replace('<svg', '<svg' . $attrString, $fileContents);
|
return str_replace('<svg', '<svg' . $attrString, $fileContents);
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,19 @@ if ($theme = env('APP_THEME', false)) {
|
|||||||
|
|
||||||
return [
|
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
|
| View Storage Paths
|
||||||
|
Loading…
Reference in New Issue
Block a user