From b527884c512719e4e3cb5834c9c3a1acec9c46f3 Mon Sep 17 00:00:00 2001 From: ro Date: Wed, 6 Mar 2024 10:27:41 -0600 Subject: [PATCH] added theme service class page editing was missing the selector to choose what template the page was using, so a theme class was created to handle retrieving and sorting what classes where avaiable in the themes directory still looking for twig files because themes haven't been converted over yet, but one step at a time --- app/Http/Controllers/DashController.php | 9 ++- app/Providers/FipamoServiceProvider.php | 5 ++ app/Services/ThemeService.php | 73 +++++++++++++++++++++++++ resources/views/back/page.blade.php | 9 +++ 4 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 app/Services/ThemeService.php diff --git a/app/Http/Controllers/DashController.php b/app/Http/Controllers/DashController.php index b37e467..bedbf59 100644 --- a/app/Http/Controllers/DashController.php +++ b/app/Http/Controllers/DashController.php @@ -4,18 +4,22 @@ namespace App\Http\Controllers; use App\Interfaces\PageRepositoryInterface; use App\Services\AuthService; +use App\Services\ThemeService; class DashController extends Controller { protected PageRepositoryInterface $pages; protected AuthService $auth; + protected ThemeService $themes; public function __construct( PageRepositoryInterface $pageRepository, AuthService $authService, + ThemeService $themeService, ) { - $this->pages = $pageRepository; - $this->auth = $authService; + $this->pages = $pageRepository; + $this->auth = $authService; + $this->themes = $themeService; } public function start() @@ -52,6 +56,7 @@ class DashController extends Controller "status" => $this->auth::status(), "mode" => $mode, "page" => $page, + "views" => $this->themes->getCustomViews($page['layout']), "title" => 'Editing ' . $page['title'] ]); } diff --git a/app/Providers/FipamoServiceProvider.php b/app/Providers/FipamoServiceProvider.php index 7ca08bb..776702d 100644 --- a/app/Providers/FipamoServiceProvider.php +++ b/app/Providers/FipamoServiceProvider.php @@ -9,6 +9,7 @@ use App\Services\SettingsService; use App\Services\AuthService; use App\Services\ContentService; use App\Services\PaginateService; +use App\Services\ThemeService; class FipamoServiceProvider extends ServiceProvider { @@ -30,6 +31,10 @@ class FipamoServiceProvider extends ServiceProvider return new ContentService(); }); + $this->app->bind(ThemeService::class, function ($app) { + return new ThemeService(new SettingsService()); + }); + $this->app->bind(PaginateService::class, function ($app) { return new PaginateService(new ContentService()); }); diff --git a/app/Services/ThemeService.php b/app/Services/ThemeService.php new file mode 100644 index 0000000..8ebef01 --- /dev/null +++ b/app/Services/ThemeService.php @@ -0,0 +1,73 @@ +settings = $settingsService; + $_themes = glob(env('THEMES_PATH') . '/*', GLOB_ONLYDIR); + foreach ($_themes as $theme) { + array_push( + $this->themes, + json_decode(file_get_contents($theme . '/theme.json'), true) + ); + } + } + + public function getThemes() + { + return $this->themes; + } + + public function getCustomViews($layout) + { + $views = []; + if (str_contains($layout, 'index')) { + $views = $this->findCustomIndex(); + } else { + $views = $this->findCustomViews(); + } + return $views; + } + + public function findCustomIndex() + { + $currentTheme = $this->settings->getGlobal()['theme']; + $folder = '../content/themes/' . $currentTheme; + $files = array_filter(glob("$folder/*twig"), 'is_file'); + $views = []; + + foreach ($files as $file) { + $path = explode('/', $file); + $fileName = $path[4]; + if (str_contains($fileName, 'index')) { + $page = explode('.', $fileName); + $views[] = $page[0]; + } + } + return $views; + } + + public function findCustomViews() + { + $currentTheme = $this->settings->getGlobal()['theme']; + $folder = '../content/themes/' . $currentTheme; + $files = array_filter(glob("$folder/*twig"), 'is_file'); + $views = []; + + foreach ($files as $file) { + $path = explode('/', $file); + $fileName = $path[4]; + if (str_contains($fileName, 'page')) { + $page = explode('.', $fileName); + $views[] = $page[0]; + } + } + return $views; + } +} diff --git a/resources/views/back/page.blade.php b/resources/views/back/page.blade.php index ecbeb8c..3fa65ca 100644 --- a/resources/views/back/page.blade.php +++ b/resources/views/back/page.blade.php @@ -151,6 +151,15 @@
LAYOUTS +
OPTIONS