forked from projects/fipamo
ro
a5583debbd
to complete page rendering, the default theme needed to be converted to use blade templating. rather than update the theme kit as a seperate progress, it will be integrated into this codebase so themes can be developed and tested in app. the basics for the theme kit are in place, so now conversion of the defualt theme can be completed. once the that is done, it can then be used to complete the rendering engine to export HTML files
115 lines
4 KiB
PHP
115 lines
4 KiB
PHP
<?php
|
|
|
|
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;
|
|
|
|
class ThemeController extends Controller
|
|
{
|
|
protected PageRepositoryInterface $pages;
|
|
protected AuthService $auth;
|
|
protected ThemeService $themes;
|
|
protected SortingService $sort;
|
|
|
|
public function __construct(
|
|
PageRepositoryInterface $pageRepository,
|
|
AuthService $authService,
|
|
ThemeService $themeService,
|
|
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]);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getView($view)
|
|
{
|
|
if ($this->auth::status()) {
|
|
$page = $this->pages->getById('09E5A362-BA31-4AE2-9DEE-C93DFBE005C3')->first();
|
|
$options = $this->sort->page($page);
|
|
return view('fipamo-default-v2.base', [
|
|
"debug" => "true",
|
|
"theme" => 'fipamo-default-v2',
|
|
"status" => $this->auth::status(),
|
|
"title" => "THEME PAGE",
|
|
"page" => $page,
|
|
"info" => $options['info'],
|
|
]);
|
|
} else {
|
|
return redirect('dashboard/start');
|
|
}
|
|
}
|
|
}
|