fipamo/app/Http/Controllers/Front/StartController.php
ro cb99c44a33
implemented dynamic page rendering
html page rendering works, so the next step was to get dynamic page
rendering up and running, meaning instead of pages being exported to
html, they are instead rendered on the fly when the corresponding URL is
hit.

the StartController that handles page routing needs to be organized a
bit better as there is some confusion between index and regular page
files so it's clear where requests are going and what is the expected
response
2024-05-06 15:09:24 -06:00

100 lines
3.6 KiB
PHP

<?php
namespace App\Http\Controllers\Front;
use App\Services\SettingsService;
use App\Http\Controllers\Controller;
use App\Services\AuthService;
use App\Interfaces\PageRepositoryInterface;
use App\Services\SortingService;
use App\Services\AssetService;
use function _\find;
class StartController extends Controller
{
protected $settings;
protected $auth;
protected PageRepositoryInterface $pages;
protected AssetService $assets;
protected SortingService $sort;
public function __construct(
PageRepositoryInterface $pageRepository,
SettingsService $settingsService,
AuthService $authService,
AssetService $assetService,
SortingService $sortService,
) {
$this->pages = $pageRepository;
$this->settings = $settingsService;
$this->auth = $authService;
$this->assets = $assetService;
$this->sort = $sortService;
}
public function index($first = 00, $second = 00, $third = 00)
{
$global = $this->settings->getGlobal();
$currentTheme = $this->assets->getCurrentTheme();
$template;
$pageData = [];
$pages = $this->pages->getAll();
//check if configs are present
if (file_exists(env('FOLKS_PATH')) && file_exists(env('SETTINGS_PATH'))) {
if ($global['dynamicRender'] == 'true') {
if (is_numeric($first)) {
if ($first == 00 || !isset($first)) {
$page = $pages->where('id', 1)->first();
$pageData = $this->sort->page($page);
$template = $currentTheme . '.index';
} else {
$page = $this->pages->getBySlug($third);
$pageData = $this->sort->page($page);
$template = $currentTheme . '.' . $page['layout'];
}
} else {
if ($first == null || $first == '') {
$page = $pages->where('id', 1)->first();
$pageData = $this->sort->page($page);
$template = $currentTheme . '.index';
} else {
}
}
return view($template, $pageData);
} else {
return response()->file('../public/index.html');
}
} else {
return view('back.init', ["status" => false, "title" => "Set Up"]);
}
}
public function page($first = 00, $second = 00, $third = 00)
{
$currentTheme = $this->assets->getCurrentTheme();
switch ($first) {
case 'archive':
case 'archives':
$template = $currentTheme . '.archive';
$pageData = $this->sort->archive();
break;
case 'tags':
$template = $currentTheme . '.tags';
$tags = $this->sort->tags(false);
$tagData = find($tags['tags'], ['tag_name' => $second]);
$pageData = [
'theme' => $currentTheme, // for theme kit
'title' => 'Pages Tagged as ' . $second,
'dynamicRender' => $tags['dynamicRender'],
'info' => $tags['info'],
'menu' => $tags['menu'],
'pages' => $tagData['pages'],
'media' => $tags['media'],
];
break;
}
return view($template, $pageData);
}
}