1
0
mirror of https://github.com/flextype/flextype.git synced 2025-08-13 00:24:15 +02:00

Flextype Slim Integration - next round of integration

This commit is contained in:
Awilum
2019-04-18 17:10:43 +03:00
parent 7963b8cc7e
commit 10d90c97dc
4 changed files with 101 additions and 68 deletions

View File

@@ -0,0 +1,62 @@
<?php
namespace Flextype;
use Flextype\Component\Arr\Arr;
class SiteController extends Controller
{
public function index($request, $response, $args) {
// Get uri
$uri = $args['uri'];
// If uri is empty then it is main page else use entry uri
if ($uri === '/') {
$entry_uri = $this->container->get('registry')->get('settings.entries.main');
} else {
$entry_uri = ltrim($uri, '/');
}
// Get entry body
$entry_body = $this->container->get('entries')->fetch($entry_uri);
// If entry body is not false
if ($entry_body) {
// Get 404 page if entry is not published
if (isset($entry_body['visibility']) && ($entry_body['visibility'] === 'draft' || $entry_body['visibility'] === 'hidden')) {
//Http::setResponseStatus(404);
$entry['title'] = $this->container->get('registry')->get('settings.entries.error404.title');
$entry['description'] = $this->container->get('registry')->get('settings.entries.error404.description');
$entry['content'] = $this->container->get('registry')->get('settings.entries.error404.content');
$entry['template'] = $this->container->get('registry')->get('settings.entries.error404.template');
//$response->withStatus(404);
} else {
$entry = $entry_body;
}
} else {
//Http::setResponseStatus(404);
//$response->withStatus(404);
$entry['title'] = $this->container->get('registry')->get('settings.entries.error404.title');
$entry['description'] = $this->container->get('registry')->get('settings.entries.error404.description');
$entry['content'] = $this->container->get('registry')->get('settings.entries.error404.content');
$entry['template'] = $this->container->get('registry')->get('settings.entries.error404.template');
}
$path = 'themes/' . $this->container->get('registry')->get('settings.theme') . '/' . (empty($entry['template']) ? 'templates/default' : 'templates/' . $entry['template']) . '.html';
return $this->container->get('view')->render($response,
$path, [
'entry' => $entry,
'registry' => $this->container->get('registry')->dump()
]);
}
}

View File

@@ -0,0 +1,26 @@
{
"name": "flextype-plugins/site",
"type": "project",
"description": "Site plugin for Flextype",
"keywords": ["site", "plugin", "flextype", "php", "html"],
"homepage": "https://github.com/flextype-plugins/admin",
"license": "MIT",
"authors": [
{
"name": "Sergey Romanenko",
"email": "awilum@yandex.ru",
"homepage": "https://github.com/Awilum"
}
],
"support": {
"issues": "https://github.com/flextype-plugins/admin/issues"
},
"require": {
"php": ">=7.1.3"
},
"autoload": {
"classmap": [
"Controllers"
]
}
}

View File

@@ -0,0 +1,5 @@
<?php
namespace Flextype;
$app->get('{uri:.+}', 'SiteController:index')->setName('index');

View File

@@ -2,74 +2,14 @@
namespace Flextype;
use Slim\Http\Request;
use Slim\Http\Response;
use Psr\Container\ContainerInterface;
// Ensure vendor libraries exist
!is_file($autoload = __DIR__ . '/vendor/autoload.php') and exit("Please run: <i>composer install</i>");
use Flextype\Component\Arr\Arr;
// Register The Auto Loader
$loader = require_once $autoload;
$app->get('{uri:.+}', SiteController::class . ':index');
include_once 'routes.php';
class SiteController
{
protected $container;
// constructor receives container instance
public function __construct(ContainerInterface $container) {
$this->container = $container;
}
public function index($request, $response, $args) {
// Get uri
$uri = $args['uri'];
// If uri is empty then it is main page else use entry uri
if ($uri === '/') {
$entry_uri = $this->container->get('registry')->get('settings.entries.main');
} else {
$entry_uri = ltrim($uri, '/');
}
// Get entry body
$entry_body = $this->container->get('entries')->fetch($entry_uri);
// If entry body is not false
if ($entry_body) {
// Get 404 page if entry is not published
if (isset($entry_body['visibility']) && ($entry_body['visibility'] === 'draft' || $entry_body['visibility'] === 'hidden')) {
//Http::setResponseStatus(404);
$entry['title'] = $this->container->get('registry')->get('settings.entries.error404.title');
$entry['description'] = $this->container->get('registry')->get('settings.entries.error404.description');
$entry['content'] = $this->container->get('registry')->get('settings.entries.error404.content');
$entry['template'] = $this->container->get('registry')->get('settings.entries.error404.template');
//$response->withStatus(404);
} else {
$entry = $entry_body;
}
} else {
//Http::setResponseStatus(404);
//$response->withStatus(404);
$entry['title'] = $this->container->get('registry')->get('settings.entries.error404.title');
$entry['description'] = $this->container->get('registry')->get('settings.entries.error404.description');
$entry['content'] = $this->container->get('registry')->get('settings.entries.error404.content');
$entry['template'] = $this->container->get('registry')->get('settings.entries.error404.template');
}
$path = 'themes/' . $this->container->get('registry')->get('settings.theme') . '/' . (empty($entry['template']) ? 'templates/default' : 'templates/' . $entry['template']) . '.html';
return $this->container->get('view')->render($response,
$path, [
'entry' => $entry,
'registry' => $this->container->get('registry')->dump()
]);
}
}
$flextype['SiteController'] = function($container) {
return new SiteController($container);
};