fipamo/app/Http/Controllers/ThemeController.php
ro f53bb588c5
patch for page preview
page preview from editor was not working because it was not passing the
page uuid correctly so it can be identified and rendered unto the theme
viewer.
2024-11-01 15:23:22 -06:00

100 lines
3.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Interfaces\PageRepositoryInterface;
use App\Services\Assets\AssetService;
use App\Interfaces\MemberRepositoryInterface;
use App\Services\Data\SortingService;
use App\Services\Data\ThemeService;
class ThemeController extends Controller
{
protected PageRepositoryInterface $pages;
protected MemberRepositoryInterface $member;
protected AssetService $assets;
protected SortingService $sort;
protected ThemeService $themes;
public function __construct(
PageRepositoryInterface $pageRepository,
MemberRepositoryInterface $memberRepo,
AssetService $assetService,
SortingService $sortService,
ThemeService $themeService,
) {
$this->pages = $pageRepository;
$this->member = $memberRepo;
$this->assets = $assetService;
$this->sort = $sortService;
$this->themes = $themeService;
}
public function start()
{
if ($this->member::status()) {
return view('theme.start', [
"status" => $this->member::status(),
"title" => "Fipamo Theme Kit",
"pages" => $this->themes->getCustomViews('page')
]);
} else {
return redirect('dashboard');
}
}
public function getView($view = 'index', $id = null)
{
//move assets to theme testing dir
$this->assets->moveToTheme();
$currentTheme = $this->assets->getCurrentTheme();
$template;
$pageData = [];
switch ($view) {
case "index":
case "page":
$page;
if ($view == 'index') {
$template = $currentTheme . '.index';
$page = $this->pages->getById(0);
} else {
$template = $currentTheme . '.page';
//if coming from theme page, grabs id of latest page
if ($id == null) {
$uuid = $this->getPageUUID();
} else {
//get page by uuid
$page = $this->pages->getByUuid($id);
}
}
$pageData = $this->sort->page($page);
break;
case "tags":
$template = $currentTheme . '.tags';
$pageData = $this->sort->tags();
break;
case "archives":
case "archive":
$template = $currentTheme . '.archive';
$pageData = $this->sort->archive();
break;
default:
$template = $currentTheme . '.index';
$page = $this->pages->getBySlug('first');
$pageData = $this->sort->page($page);
}
if ($this->member::status()) {
return view($template, $pageData);
} else {
return redirect('dashboard/start');
}
}
private function getPageUUID()
{
$book = $this->pages->getAll();
$page = $book->where('layout', 'page')->first();
return $page['uuid'];
}
}