diff --git a/app/Http/Controllers/Theming/ThemeController.php b/app/Http/Controllers/Theming/ThemeController.php index 311be0f..0d70c6c 100644 --- a/app/Http/Controllers/Theming/ThemeController.php +++ b/app/Http/Controllers/Theming/ThemeController.php @@ -5,110 +5,46 @@ namespace App\Http\Controllers\Theming; use App\Http\Controllers\Controller; use App\Interfaces\PageRepositoryInterface; use App\Services\AuthService; -use App\Services\ThemeService; use App\Services\SortingService; +use App\Services\AssetService; class ThemeController extends Controller { protected PageRepositoryInterface $pages; protected AuthService $auth; - protected ThemeService $themes; + protected AssetService $assets; protected SortingService $sort; public function __construct( PageRepositoryInterface $pageRepository, AuthService $authService, - ThemeService $themeService, + AssetService $assetService, SortingService $sortService, ) { - $this->pages = $pageRepository; - $this->auth = $authService; - $this->themes = $themeService; - $this->sort = $sortService; - $theme = $this->themes->getCurrentTheme(); - $themeTestImagePath = '../public/theme/images/global/'; - $themeTestCSSPath = '../public/theme/css/theme/'; - $themeTestScriptsPath = '../public/theme/scripts/theme/'; - //TODO: Create assset service class to handle moving theme assets around - //move assets to public for testing - foreach ( - new \DirectoryIterator('../content/themes/' . $theme . '/assets/images/global/') as $file - ) { - if ($file->isDot()) { - continue; - } - //make theme directory if not present - if (!is_dir($themeTestImagePath)) { - mkdir($themeTestImagePath, 0755, true); - } - - if (!is_file($themeTestImagePath . $file->getFileName())) { - copy( - '../content/themes/' . - $theme . - '/assets/images/global/' . - $file->getFileName(), - $themeTestImagePath . $file->getFileName() - ); - } else { - //image is already there, so chill - } - //print $file->getFilename() . "\n"; - } - //clear test theme css and script directories - $styles = glob($themeTestCSSPath . '*'); // get all file names - foreach ($styles as $file) { // iterate files - if (is_file($file)) { - unlink($file); // delete file - } - } - $scripts = glob($themeTestScriptsPath . '*'); // get all file names - foreach ($scripts as $file) { // iterate files - if (is_file($file)) { - unlink($file); // delete file - } - } - - // - - //copy theme assets to public - $newcss = glob('../content/themes/' . $theme . '/assets/css/*'); - if (!is_dir($themeTestCSSPath)) { - mkdir($themeTestCSSPath, 0755, true); - } - foreach ($newcss as $file) { // iterate files - if (is_file($file)) { - $path = explode('/', $file); - copy($file, $themeTestCSSPath . $path[6]); - } - } - $newjs = glob('../content/themes/' . $theme . '/assets/scripts/*'); - if (!is_dir($themeTestScriptsPath)) { - mkdir($themeTestScriptsPath, 0755, true); - } - foreach ($newjs as $file) { // iterate files - if (is_file($file)) { - $path = explode('/', $file); - copy($file, $themeTestScriptsPath . $path[6]); - } - } + $this->pages = $pageRepository; + $this->auth = $authService; + $this->assets = $assetService; + $this->sort = $sortService; } public function getView($view = 'index') { + //move assets to theme testing dir + $this->assets->moveToTheme(); + $currentTheme = $this->assets->getCurrentTheme(); $template; $pageData = []; switch ($view) { case "index": case "page": $view == 'index' ? - $template = 'fipamo-default-v2.index' : - $template = 'fipamo-default-v2.page'; - $page = $this->pages->getById('09E5A362-BA31-4AE2-9DEE-C93DFBE005C3')->first(); + $template = $currentTheme . '.index' : + $template = $currentTheme . '.page'; + $page = $this->pages->getById('09E5A362-BA31-4AE2-9DEE-C93DFBE005C3'); $data = $this->sort->page($page); $pageData = [ "debug" => "true", - "theme" => 'fipamo-default-v2', + "theme" => $currentTheme, "status" => $this->auth::status(), "title" => "THEME PAGE", "meta" => $data['meta'], @@ -124,11 +60,11 @@ class ThemeController extends Controller ]; break; case "tags": - $template = 'fipamo-default-v2.tags'; + $template = $currentTheme . '.tags'; $data = $this->sort->tags(); $pageData = [ 'debug' => true, // for theme kit - 'theme' => 'fipamo-default-v2', // for theme kit + 'theme' => $currentTheme, // for theme kit 'title' => 'Pages Tagged as Tag', 'dynamicRender' => $data['info']['dynamicRender'], 'tags' => $data['info']['tags'][3]['pages'], @@ -142,11 +78,11 @@ class ThemeController extends Controller break; case "archives": case "archive": - $template = 'fipamo-default-v2.archive'; + $template = $currentTheme . '.archive'; $data = $this->sort->archive(); $pageData = [ 'debug' => true, // for theme kit - 'theme' => 'fipamo-default-v2', // for theme kit + 'theme' => $currentTheme, // for theme kit 'title' => 'Archives', 'dynamicRender' => $data['info']['dynamicRender'], 'archive' => $data['archive'], diff --git a/app/Providers/FipamoServiceProvider.php b/app/Providers/FipamoServiceProvider.php index 5ef4250..438bb73 100644 --- a/app/Providers/FipamoServiceProvider.php +++ b/app/Providers/FipamoServiceProvider.php @@ -15,6 +15,7 @@ use App\Services\StringService; use App\Services\FileUploadService; use App\Services\RenderService; use App\Services\SortingService; +use App\Services\AssetService; class FipamoServiceProvider extends ServiceProvider { @@ -74,6 +75,14 @@ class FipamoServiceProvider extends ServiceProvider new StringService(), ); }); + + $this->app->bind(AssetService::class, function ($app) { + return new AssetService( + new ThemeService( + new SettingsService(new DocService()) + ) + ); + }); } /** diff --git a/app/Services/AssetService.php b/app/Services/AssetService.php new file mode 100644 index 0000000..641644d --- /dev/null +++ b/app/Services/AssetService.php @@ -0,0 +1,92 @@ +themeTestImagePath = '../public/theme/images/global/'; + $this->themeTestCSSPath = '../public/theme/css/theme/'; + $this->themeTestScriptsPath = '../public/theme/scripts/theme/'; + $this->themes = $themeService; + $this->currentTheme = $this->themes->getCurrentTheme(); + } + + public function getCurrentTheme() + { + return $this->currentTheme; + } + + public function moveToTheme() + { + //get current theme + foreach ( + new \DirectoryIterator('../content/themes/' . $this->currentTheme . '/assets/images/global/') as $file + ) { + if ($file->isDot()) { + continue; + } + //make theme directory if not present + if (!is_dir($this->themeTestImagePath)) { + mkdir($this->themeTestImagePath, 0755, true); + } + + if (!is_file($this->themeTestImagePath . $file->getFileName())) { + copy( + '../content/themes/' . + $this->currentTheme . + '/assets/images/global/' . + $file->getFileName(), + $this->themeTestImagePath . $file->getFileName() + ); + } else { + //image is already there, so chill + } + //print $file->getFilename() . "\n"; + } + //clear test theme css and script directories + $styles = glob($this->themeTestCSSPath . '*'); // get all file names + foreach ($styles as $file) { // iterate files + if (is_file($file)) { + unlink($file); // delete file + } + } + $scripts = glob($this->themeTestScriptsPath . '*'); // get all file names + foreach ($scripts as $file) { // iterate files + if (is_file($file)) { + unlink($file); // delete file + } + } + + // + + //copy theme assets to public + $newcss = glob('../content/themes/' . $this->currentTheme . '/assets/css/*'); + if (!is_dir($this->themeTestCSSPath)) { + mkdir($this->themeTestCSSPath, 0755, true); + } + foreach ($newcss as $file) { // iterate files + if (is_file($file)) { + $path = explode('/', $file); + copy($file, $this->themeTestCSSPath . $path[6]); + } + } + $newjs = glob('../content/themes/' . $this->currentTheme . '/assets/scripts/*'); + if (!is_dir($this->themeTestScriptsPath)) { + mkdir($this->themeTestScriptsPath, 0755, true); + } + foreach ($newjs as $file) { // iterate files + if (is_file($file)) { + $path = explode('/', $file); + copy($file, $this->themeTestScriptsPath . $path[6]); + } + } + } +} diff --git a/content/themes/fipamo-default-v2/base.blade.php b/content/themes/fipamo-default-v2/base.blade.php index c58b2ae..067fce8 100644 --- a/content/themes/fipamo-default-v2/base.blade.php +++ b/content/themes/fipamo-default-v2/base.blade.php @@ -20,6 +20,7 @@ +