previously all the of the page routing was handlede through controller organized by CRUD methods. it worked, but organizing by CRUD and not purpose resulted in more time spent looking for a specific task through controllers, so it turned out not to an effecient way of organizing. so routing has been completely reorganized into laravel's web routing section and methods have been moved to their appropriate controller so tasks are much easier to find front facing page routing turned out to be a bit more tricky that anticipated do the overap of routing paths, but it only affects dynamic page rendering and there's a patch in place that handles that issue until a better solution is found. Rendered HTML pages works fine. whew!
147 lines
4.3 KiB
PHP
147 lines
4.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Interfaces\PageRepositoryInterface;
|
|
use App\Interfaces\MemberRepositoryInterface;
|
|
use App\Services\Data\ThemeService;
|
|
use Illuminate\Http\Request;
|
|
|
|
class PageController extends Controller
|
|
{
|
|
protected PageRepositoryInterface $page;
|
|
protected MemberRepositoryInterface $member;
|
|
protected ThemeService $themes;
|
|
|
|
public function __construct(
|
|
PageRepositoryInterface $pageRepo,
|
|
MemberRepositoryInterface $memberRepo,
|
|
ThemeService $themeService,
|
|
) {
|
|
$this->page = $pageRepo;
|
|
$this->member = $memberRepo;
|
|
$this->themes = $themeService;
|
|
}
|
|
|
|
//---
|
|
// GET Actions
|
|
//---
|
|
|
|
public function start(string $one = 'all', string $two = '1')
|
|
{
|
|
//checks mode to see what needs to get loaded
|
|
switch ($one) {
|
|
case "edit":
|
|
case "add":
|
|
return $this->page($one, $two);
|
|
break;
|
|
|
|
default:
|
|
return $this->book($one, $two);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private function page($mode, $uuid)
|
|
{
|
|
$title;
|
|
$page = [];
|
|
$views = [];
|
|
$mode == 'edit' ? $page = $this->page->getByUuid($uuid) : $page = [];
|
|
$mode == 'edit' ? $title = 'Edit Page' : $title = 'Add New';
|
|
$mode == 'edit' ? $views = $this->themes->getCustomViews($page['layout']) : $views[] = 'page';
|
|
|
|
//just a patch for now to get this out of the template
|
|
if ($mode == 'edit') {
|
|
$id = $page['id'];
|
|
$uuid = $page['uuid'];
|
|
$slug = $page['slug'];
|
|
$feature = $page['feature'];
|
|
$layout = $page['layout'];
|
|
$tags = $page['tags'];
|
|
$content = $page['content'];
|
|
$date = $page['created'];
|
|
$updated = $page['updated'];
|
|
$media = $page['media'];
|
|
$files = $page['docs'];
|
|
$editTitle = $page['title'];
|
|
} else {
|
|
$id = "";
|
|
$uuid = "";
|
|
$slug = "";
|
|
$feature = "";
|
|
$layout = "";
|
|
$tags = "";
|
|
$content = "";
|
|
$date = "";
|
|
$updated = "";
|
|
$media = "";
|
|
$files = "";
|
|
$editTitle = "";
|
|
};
|
|
|
|
return view('back.page', [
|
|
"status" => $this->member::status(),
|
|
"mode" => $mode,
|
|
"page" => $page,
|
|
"views" => $views,
|
|
"id" => $id,
|
|
"uuid" => $uuid,
|
|
"slug" => $slug,
|
|
"feature" => $feature,
|
|
"layout" => $layout,
|
|
"tags" => $tags,
|
|
"content" => $content,
|
|
"date" => $date,
|
|
"updated" => $updated,
|
|
"media" => $media,
|
|
"files" => $files,
|
|
"title" => urldecode($title),
|
|
"editTitle" => urldecode($editTitle),
|
|
]);
|
|
}
|
|
|
|
private function book($pageFilter, $pageNum)
|
|
{
|
|
$result = [];
|
|
if ($this->member::status()) {
|
|
$result = $this->page->getGroup($pageNum, 4, $pageFilter);
|
|
}
|
|
return view('back.book', [
|
|
"status" => $this->member::status(),
|
|
"result" => $result,
|
|
"currentPage" => $pageNum,
|
|
"title" => "Pages"
|
|
]);
|
|
}
|
|
|
|
//---
|
|
// POST Actions
|
|
//---
|
|
public function create(Request $request)
|
|
{
|
|
$body = json_decode($request->getContent());
|
|
$result = $this->page->create($body);
|
|
return response()->json($result)->header('Content-Type', 'application/json');
|
|
}
|
|
|
|
//---
|
|
// PUT Actions
|
|
//---
|
|
public function write(Request $request)
|
|
{
|
|
$body = json_decode($request->getContent());
|
|
$result = $this->page->update($body);
|
|
return response()->json($result)->header('Content-Type', 'application/json');
|
|
}
|
|
|
|
//---
|
|
// DELETE Actions
|
|
//---
|
|
public function delete(Request $request)
|
|
{
|
|
$body = json_decode($request->getContent());
|
|
$result = $this->page->delete($body);
|
|
return response()->json($result)->header('Content-Type', 'application/json');
|
|
}
|
|
}
|