1
0
mirror of https://github.com/typemill/typemill.git synced 2025-08-06 06:07:31 +02:00

V2 001: Hello Typemill 2 with structured system folder

This commit is contained in:
trendschau
2022-06-08 10:32:38 +02:00
parent efd57e368e
commit 0888a8167f
11 changed files with 333 additions and 125 deletions

View File

@@ -249,7 +249,7 @@ WEBSITE_RESTRICTION: Restriction sur le site
WRAP_THE_RESTRICTION_NOTICE_ABOVE_INTO_A_NOTICE_4_ELEMENT_(WHICH_CAN_BE_DESIGNED_AS_SPECIAL_BOX): Insérer l'avis de restriction ci-dessus dans un élément notice-4 (qui peut être conçu comme special box)
ACTIVATE_CACHE_FOR_TWIG_TEMPLATES: Activer le cache pour les templates Twig
ADD_MORE_URL_SCHEMES_FOR_EXTERNAL_LINKS_E_G__LIKE_DICT://_(COMMA_SEPARATED_LIST): Ajouter d'autres schémas d'url pour les liens externes. ex: dict:// (liste séparée par des virgules)
ADD_MORE_URL_SCHEMES_FOR_EXTERNAL_LINKS_E_G__LIKE_DICT://_(COMMA_SEPARATED_LIST): "Ajouter d'autres schémas d'url pour les liens externes. ex: dict:// (liste séparée par des virgules)"
CLEAR_CACHE: Vider le cache
DELETE_ALL_CACHE_FILES: Vider tous les fichiers de cache
DEVELOPER: Développeur

View File

@@ -239,7 +239,7 @@ IF_YOU_ADD_A_VALUE_FOR_THE_HEIGHT__THEN_THE_IMAGE_WILL_BE_CROPPED_: Se aggiungi
PROXY: Proxy
STANDARD_HEIGHT_FOR_IMAGES: Altezza standard per le immagini
STANDARD_WIDTH_FOR_IMAGES: Larghezza standard per le immagini
THE_FOLLOWING_OPTIONS_ARE_ONLY_FOR_DEVELOPERS: Le seguenti opzioni sono solo per sviluppatori e amministratori esperti. Cambia le opzioni solo se le capisci davvero. Ad esempio: non attivare mai la segnalazione degli errori per un sito Web live, utilizzare questa opzione solo per la correzione dei bug.
THE_FOLLOWING_OPTIONS_ARE_ONLY_FOR_DEVELOPERS: "Le seguenti opzioni sono solo per sviluppatori e amministratori esperti. Cambia le opzioni solo se le capisci davvero. Ad esempio: non attivare mai la segnalazione degli errori per un sito Web live, utilizzare questa opzione solo per la correzione dei bug."
THIS_APPLIES_ONLY_FOR_FUTURE_IMAGES_IN_THE_CONTENT_AREA_: Questo vale solo per le immagini future nell'area del contenuto.
TRUSTED_IPS_FOR_PROXY_(COMMA_SEPARATED): IP affidabili per proxy (separati da virgole)
TWIG_CACHE: Twig Cache

213
system/typemill/system.php Normal file
View File

@@ -0,0 +1,213 @@
<?php
use DI\Container;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Exception\HttpNotFoundException;
use Slim\Middleware\ErrorMiddleware;
use Slim\Psr7\Response as NewResponse;
use Slim\Factory\AppFactory;
use Slim\Views\Twig;
use Slim\Views\TwigMiddleware;
use Slim\Csrf\Guard;
use Slim\Flash\Messages;
use Nquire\Middleware\ValidationErrors;
use Nquire\Middleware\FlashMessages;
use Nquire\Middleware\JsonBodyParser;
require __DIR__ . '/../vendor/autoload.php';
/****************************
* HIDE ERRORS BY DEFAULT *
****************************/
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(E_ALL);
/****************************
* CONTAINER *
****************************/
# https://www.slimframework.com/docs/v4/start/upgrade.html#changes-to-container
$container = new Container();
AppFactory::setContainer($container);
$app = AppFactory::create();
$container = $app->getContainer();
$responseFactory = $app->getResponseFactory();
$routeParser = $app->getRouteCollector()->getRouteParser();
/****************************
* BASE PATH *
****************************/
# basepath must always be set in slim 4
$basepath = preg_replace('/(.*)\/.*/', '$1', $_SERVER['SCRIPT_NAME']);
$container->set('basePath', $basepath);
$app->setBasePath($basepath);
die('hello Typemill V2');
/****************************
* SETTINGS *
****************************/
$settings = require __DIR__ . '/settings/settings.php';
$container->set('settings', function() use ($settings)
{
return $settings;
});
# create a session
ini_set('session.cookie_httponly', 1 );
ini_set('session.use_strict_mode', 1);
ini_set('session.cookie_samesite', 'lax');
if(isset($_SERVER['HTTPS']))
{
ini_set('session.cookie_secure', 1);
session_name('__Secure-nquire-session');
}
else
{
session_name('nquire-session');
}
session_start();
# add flash messsages
$container->set('flash', function(){
return new Messages();
});
# Register Middleware On Container
$container->set('csrf', function () use ($responseFactory) {
return new Guard($responseFactory);
});
# Set view in Container
$container->set('view', function() use ($container) {
$twig = Twig::create(__DIR__ . DIRECTORY_SEPARATOR . 'views',['cache' => false, 'debug' => true]);
$twig->getEnvironment()->addGlobal('errors', NULL);
$twig->getEnvironment()->addGlobal('flash', NULL);
$twig->addExtension(new \Twig\Extension\DebugExtension());
$twig->addExtension(new \Nquire\Extensions\TwigUserExtension());
$twig->addExtension(new \Nquire\Extensions\TwigCsrfExtension($container->get('csrf')));
return $twig;
});
/****************************
* SET ROUTE PARSER TO USE NAMED ROUTES IN CONTROLLER *
****************************/
$container->set('routeParser', $routeParser);
/****************************
* MIDDLEWARE *
****************************/
# Add Validation Errors Middleware
$app->add(new ValidationErrors($container->get('view')));
# Add Flash Messages Middleware
$app->add(new FlashMessages($container->get('view')));
# Add csrf middleware globally
$app->add('csrf');
# Add Twig-View Middleware
$app->add(TwigMiddleware::createFromContainer($app));
# add JsonBodyParser Middleware
$app->add(new JsonBodyParser());
/**
* The routing middleware should be added earlier than the ErrorMiddleware
* Otherwise exceptions thrown from it will not be handled by the middleware
*/
$app->addRoutingMiddleware();
/**
* Add Error Middleware
*
* @param bool $displayErrorDetails -> Should be set to false in production
* @param bool $logErrors -> Parameter is passed to the default ErrorHandler
* @param bool $logErrorDetails -> Display error details in error log
* @param LoggerInterface|null $logger -> Optional PSR-3 Logger
*
* Note: This middleware should be added last. It will not handle any exceptions/errors
* for middleware added after it.
*/
# $errorMiddleware = $app->addErrorMiddleware(true, true, true);
$errorMiddleware = new ErrorMiddleware(
$app->getCallableResolver(),
$app->getResponseFactory(),
true,
false,
false
);
# Set the Not Found Handler
$errorMiddleware->setErrorHandler(HttpNotFoundException::class, function ($request, $exception) use ($container) {
$response = new NewResponse();
return $container->get('view')->render($response->withStatus(404), 'errors/404.twig');
});
$app->add($errorMiddleware);
/*
# Set the Not Found Handler
$errorMiddleware->setErrorHandler(
HttpNotFoundException::class,
function (ServerRequestInterface $request, Throwable $exception, bool $displayErrorDetails) {
$response = new Response();
$response->getBody()->write('404 NOT FOUND');
return $response->withStatus(404);
}
);
# Set the Not Allowed Handler
$errorMiddleware->setErrorHandler(
HttpMethodNotAllowedException::class,
function (ServerRequestInterface $request, Throwable $exception, bool $displayErrorDetails) {
$response = new Response();
$response->getBody()->write('405 NOT ALLOWED');
return $response->withStatus(405);
}
);
# Set the Not Found Handler
$errorMiddleware->setErrorHandler(
HttpNotFoundException::class,
function () {
die('not found');
}
);
$app->add($ErrorMiddleware);
*/
/************************
* ADD ROUTES *
************************/
require __DIR__ . '/routes/api.php';
require __DIR__ . '/routes/web.php';
$app->run();