forked from projects/fipamo
ro
2f2955e865
the remaining base template pages have beeen converted to blade as well as filling out the data they need to render being added to the sorting service class theming controller and and sorting service still need to be optimized but they work so now they can be refined once they have been cleaned up, the render service is class is ready to be finished
169 lines
6.6 KiB
PHP
169 lines
6.6 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 = 'index')
|
|
{
|
|
$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();
|
|
$data = $this->sort->page($page);
|
|
$pageData = [
|
|
"debug" => "true",
|
|
"theme" => 'fipamo-default-v2',
|
|
"status" => $this->auth::status(),
|
|
"title" => "THEME PAGE",
|
|
"meta" => $data['meta'],
|
|
"menu" => $data['menu'],
|
|
"info" => $data['info'],
|
|
"media" => $data['media'],
|
|
"files" => $data['files'],
|
|
"content" => $data['content'],
|
|
"recent" => $data['recent'],
|
|
"feature" => $data['featured'],
|
|
"tags" => $data['tags'],
|
|
"dynamicRender" => $data['dynamicRender'],
|
|
];
|
|
break;
|
|
case "tags":
|
|
$template = 'fipamo-default-v2.tags';
|
|
$data = $this->sort->tags();
|
|
$pageData = [
|
|
'debug' => true, // for theme kit
|
|
'theme' => 'fipamo-default-v2', // for theme kit
|
|
'title' => 'Pages Tagged as Tag',
|
|
'dynamicRender' => $data['info']['dynamicRender'],
|
|
'tags' => $data['info']['tags'][3]['pages'],
|
|
'info' => $data['info'],
|
|
'menu' => $data['info']['menu'],
|
|
'media' => [
|
|
['file' => $data['info']['image'],
|
|
'type' => trim(pathinfo($data['info']['image'], PATHINFO_EXTENSION))]
|
|
],
|
|
];
|
|
break;
|
|
case "archives":
|
|
case "archive":
|
|
$template = 'fipamo-default-v2.archive';
|
|
$data = $this->sort->archive();
|
|
$pageData = [
|
|
'debug' => true, // for theme kit
|
|
'theme' => 'fipamo-default-v2', // for theme kit
|
|
'title' => 'Archives',
|
|
'dynamicRender' => $data['info']['dynamicRender'],
|
|
'archive' => $data['archive'],
|
|
'info' => $data['info'],
|
|
'menu' => $data['info']['menu'],
|
|
'media' => [
|
|
['file' => $data['info']['image'],
|
|
'type' => trim(pathinfo($data['info']['image'], PATHINFO_EXTENSION))]
|
|
],
|
|
];
|
|
break;
|
|
}
|
|
if ($this->auth::status()) {
|
|
return view($template, $pageData);
|
|
} else {
|
|
return redirect('dashboard/start');
|
|
}
|
|
}
|
|
}
|