Support multi admin theme
This commit is contained in:
parent
41725a671f
commit
9c0ec6f644
|
|
@ -23,5 +23,15 @@ return [
|
|||
'name' => 'Velocity',
|
||||
'parent' => 'default'
|
||||
],
|
||||
],
|
||||
|
||||
'admin-default' => 'default',
|
||||
|
||||
'admin-themes' => [
|
||||
'default' => [
|
||||
'views_path' => 'resources/admin-themes/default/views',
|
||||
'assets_path' => 'public/admin-themes/default/assets',
|
||||
'name' => 'Default'
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -4,6 +4,7 @@ namespace Webkul\Theme;
|
|||
|
||||
use Webkul\Theme\Facades\Themes;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\View\FileViewFinder;
|
||||
|
||||
class ThemeViewFinder extends FileViewFinder
|
||||
|
|
@ -19,7 +20,7 @@ class ThemeViewFinder extends FileViewFinder
|
|||
// Extract the $view and the $namespace parts
|
||||
list($namespace, $view) = $this->parseNamespaceSegments($name);
|
||||
|
||||
if ($namespace != 'admin') {
|
||||
if (! Str::contains(request()->route()->uri, 'admin/')) {
|
||||
$paths = $this->addThemeNamespacePaths($namespace);
|
||||
|
||||
try {
|
||||
|
|
@ -34,7 +35,23 @@ class ThemeViewFinder extends FileViewFinder
|
|||
return $this->findInPaths($view, $paths);
|
||||
}
|
||||
} else {
|
||||
return $this->findInPaths($view, $this->hints[$namespace]);
|
||||
$themes = app('themes');
|
||||
|
||||
$themes->set(config('themes.admin-default'));
|
||||
|
||||
$paths = $this->addThemeNamespacePaths($namespace);
|
||||
|
||||
try {
|
||||
return $this->findInPaths($view, $paths);
|
||||
} catch(\Exception $e) {
|
||||
if ($namespace != 'admin') {
|
||||
if (strpos($view, 'admin.') !== false) {
|
||||
$view = str_replace('admin.', 'admin.' . Themes::current()->code . '.', $view);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->findInPaths($view, $paths);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -84,19 +101,6 @@ class ThemeViewFinder extends FileViewFinder
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the string contents of the view.
|
||||
*
|
||||
* @param callable|null $callback
|
||||
* @return array|string
|
||||
*
|
||||
* @throws \Throwable
|
||||
*/
|
||||
public function render(callable $callback = null)
|
||||
{
|
||||
dd(111);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the array of paths where the views are being searched.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace Webkul\Theme;
|
||||
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\Str;
|
||||
use Webkul\Theme\Theme;
|
||||
|
||||
class Themes
|
||||
|
|
@ -42,9 +43,15 @@ class Themes
|
|||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->laravelViewsPath = Config::get('view.paths');
|
||||
$routeURI = request()->route()->uri;
|
||||
|
||||
$this->defaultThemeCode = Config::get('themes.default', null);
|
||||
if (Str::contains(request()->route()->uri, 'admin/')) {
|
||||
$this->defaultThemeCode = Config::get('themes.admin-default', null);
|
||||
} else {
|
||||
$this->defaultThemeCode = Config::get('themes.default', null);
|
||||
}
|
||||
|
||||
$this->laravelViewsPath = Config::get('view.paths');
|
||||
|
||||
$this->loadThemes();
|
||||
}
|
||||
|
|
@ -85,7 +92,11 @@ class Themes
|
|||
{
|
||||
$parentThemes = [];
|
||||
|
||||
$themes = config('themes.themes', []);
|
||||
if (Str::contains(request()->route()->uri, 'admin/')) {
|
||||
$themes = config('themes.admin-themes', []);
|
||||
} else {
|
||||
$themes = config('themes.themes', []);
|
||||
}
|
||||
|
||||
foreach ($themes as $code => $data) {
|
||||
$this->themes[] = new Theme(
|
||||
|
|
@ -140,6 +151,7 @@ class Themes
|
|||
Config::set('view.paths', $paths);
|
||||
|
||||
$themeViewFinder = app('view.finder');
|
||||
|
||||
$themeViewFinder->setPaths($paths);
|
||||
|
||||
return $theme;
|
||||
|
|
|
|||
Loading…
Reference in New Issue