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:
62
site/plugins/site/Controllers/SiteController.php
Normal file
62
site/plugins/site/Controllers/SiteController.php
Normal 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()
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
26
site/plugins/site/composer.json
Normal file
26
site/plugins/site/composer.json
Normal 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"
|
||||
]
|
||||
}
|
||||
}
|
5
site/plugins/site/routes.php
Normal file
5
site/plugins/site/routes.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Flextype;
|
||||
|
||||
$app->get('{uri:.+}', 'SiteController:index')->setName('index');
|
@@ -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);
|
||||
};
|
||||
|
Reference in New Issue
Block a user