Implemented Nette/Latte engine.
This Engine allows for really neat ways to handle templates. It is an optional dependency which will be installed if composer is used.
This commit is contained in:
parent
c0d9781f6f
commit
955715c79b
95
Application/Views/errors/view.500.php
Normal file
95
Application/Views/errors/view.500.php
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* FuzeWorks.
|
||||||
|
*
|
||||||
|
* The FuzeWorks MVC PHP FrameWork
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015 TechFuze
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author TechFuze
|
||||||
|
* @copyright Copyright (c) 2013 - 2016, Techfuze. (http://techfuze.net)
|
||||||
|
* @copyright Copyright (c) 1996 - 2015, Free Software Foundation, Inc. (http://www.fsf.org/)
|
||||||
|
* @license http://opensource.org/licenses/GPL-3.0 GPLv3 License
|
||||||
|
*
|
||||||
|
* @link http://fuzeworks.techfuze.net
|
||||||
|
* @since Version 0.0.1
|
||||||
|
*
|
||||||
|
* @version Version 0.0.1
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Page not found</title>
|
||||||
|
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background: #ecf0f1;
|
||||||
|
border-bottom: 1px solid #DDD;
|
||||||
|
padding: 100px 0 100px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#setupcontainer {
|
||||||
|
max-width: 950px;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-centered{
|
||||||
|
float: none;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id='setupcontainer'>
|
||||||
|
<div class='row'>
|
||||||
|
<div class='col-lg-12 col-md-4 col-sm-12'>
|
||||||
|
<div id='contentPanel' class="panel panel-default" style='display:none'>
|
||||||
|
<div id='1' class="panel-body" style='display:none'>
|
||||||
|
<p class="lead">Internal Server Error</p>
|
||||||
|
<p>
|
||||||
|
The requested page could not be loaded.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Our apologies for the inconvenience.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
|
||||||
|
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var currentPage = 0;
|
||||||
|
var currentProgress = 0;
|
||||||
|
|
||||||
|
start();
|
||||||
|
function start() {
|
||||||
|
$("#contentPanel").fadeIn(500);
|
||||||
|
$("#1").fadeIn(500);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -35,6 +35,7 @@ namespace FuzeWorks;
|
|||||||
use FuzeWorks\TemplateEngine\JSONEngine;
|
use FuzeWorks\TemplateEngine\JSONEngine;
|
||||||
use FuzeWorks\TemplateEngine\PHPEngine;
|
use FuzeWorks\TemplateEngine\PHPEngine;
|
||||||
use FuzeWorks\TemplateEngine\SmartyEngine;
|
use FuzeWorks\TemplateEngine\SmartyEngine;
|
||||||
|
use FuzeWorks\TemplateEngine\LatteEngine;
|
||||||
use FuzeWorks\TemplateEngine\TemplateEngine;
|
use FuzeWorks\TemplateEngine\TemplateEngine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -479,6 +480,7 @@ class Layout
|
|||||||
self::registerEngine(new PHPEngine(), 'PHP', array('php'));
|
self::registerEngine(new PHPEngine(), 'PHP', array('php'));
|
||||||
self::registerEngine(new JsonEngine(), 'JSON', array('json'));
|
self::registerEngine(new JsonEngine(), 'JSON', array('json'));
|
||||||
self::registerEngine(new SmartyEngine(), 'Smarty', array('tpl'));
|
self::registerEngine(new SmartyEngine(), 'Smarty', array('tpl'));
|
||||||
|
self::registerEngine(new LatteEngine(), 'Latte', array('latte'));
|
||||||
self::$engines_loaded = true;
|
self::$engines_loaded = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -528,6 +530,7 @@ namespace FuzeWorks\TemplateEngine;
|
|||||||
|
|
||||||
use FuzeWorks\LayoutException;
|
use FuzeWorks\LayoutException;
|
||||||
use Smarty;
|
use Smarty;
|
||||||
|
use Latte\Engine as Latte;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface that all Template Engines must follow.
|
* Interface that all Template Engines must follow.
|
||||||
@ -752,6 +755,74 @@ class SmartyEngine implements TemplateEngine
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for the Latte Engine from Nette Framework.
|
||||||
|
*
|
||||||
|
* @author Abel Hoogeveen <abel@techfuze.net>
|
||||||
|
* @copyright Copyright (c) 2013 - 2016, Techfuze. (http://techfuze.net)
|
||||||
|
*/
|
||||||
|
class LatteEngine implements TemplateEngine
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instance of the Latte Engine
|
||||||
|
*
|
||||||
|
* @var Latte\Engine The Latte Engine to be used
|
||||||
|
*/
|
||||||
|
protected $latte;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the directory of the current template.
|
||||||
|
*
|
||||||
|
* @param string $directory Template Directory
|
||||||
|
*/
|
||||||
|
public function setDirectory($directory)
|
||||||
|
{
|
||||||
|
if (class_exists('\Latte\Engine', true))
|
||||||
|
{
|
||||||
|
// If possible, load Latte\Engine
|
||||||
|
$this->latte = new Latte;
|
||||||
|
$this->latte->setTempDirectory(realpath('Application'.DS.'Cache'));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new LayoutException("Could not load LatteEngine. Is it installed or Composer not loaded?", 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle and retrieve a template file.
|
||||||
|
*
|
||||||
|
* @param string $file Template File
|
||||||
|
* @param array $assigned_variables All the variables used in this view
|
||||||
|
*
|
||||||
|
* @return string Output of the template
|
||||||
|
*/
|
||||||
|
public function get($file, $assigned_variables)
|
||||||
|
{
|
||||||
|
$this->latte->render($file, $assigned_variables);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the file extensions that this template engine uses.
|
||||||
|
*
|
||||||
|
* @return array All used extensions. eg: array('php')
|
||||||
|
*/
|
||||||
|
public function getFileExtensions()
|
||||||
|
{
|
||||||
|
return array('latte');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset the template engine to its default state, so it can be used again clean.
|
||||||
|
*/
|
||||||
|
public function reset()
|
||||||
|
{
|
||||||
|
// If possible, load Latte\Engine
|
||||||
|
$this->latte = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Template Engine that exports all assigned variables as JSON.
|
* Template Engine that exports all assigned variables as JSON.
|
||||||
*
|
*
|
||||||
|
@ -205,7 +205,6 @@ class Logger {
|
|||||||
// Log it!
|
// Log it!
|
||||||
Factory::getInstance()->output->set_output('');
|
Factory::getInstance()->output->set_output('');
|
||||||
self::errorHandler($errno, $errstr, $errfile, $errline);
|
self::errorHandler($errno, $errstr, $errfile, $errline);
|
||||||
|
|
||||||
if (self::$useTracy === false)
|
if (self::$useTracy === false)
|
||||||
{
|
{
|
||||||
self::http_error('500');
|
self::http_error('500');
|
||||||
@ -249,6 +248,11 @@ class Logger {
|
|||||||
$context = $exception->getTraceAsString();
|
$context = $exception->getTraceAsString();
|
||||||
|
|
||||||
self::logError('Exception thrown: ' . $message . ' | ' . $code, null, $file, $line);
|
self::logError('Exception thrown: ' . $message . ' | ' . $code, null, $file, $line);
|
||||||
|
// And return a 500 because this error was fatal
|
||||||
|
if (self::$useTracy === false)
|
||||||
|
{
|
||||||
|
self::http_error('500');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -592,6 +596,7 @@ class Logger {
|
|||||||
|
|
||||||
// Try and load the view, if impossible, load HTTP code instead.
|
// Try and load the view, if impossible, load HTTP code instead.
|
||||||
try {
|
try {
|
||||||
|
Layout::reset();
|
||||||
Layout::view($view);
|
Layout::view($view);
|
||||||
} catch (LayoutException $exception) {
|
} catch (LayoutException $exception) {
|
||||||
// No error page could be found, just echo the result
|
// No error page could be found, just echo the result
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
"ext-curl": "*",
|
"ext-curl": "*",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"smarty/smarty": "~3.1",
|
"smarty/smarty": "~3.1",
|
||||||
"tracy/tracy": "*"
|
"tracy/tracy": "*",
|
||||||
|
"latte/latte": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "5.3.*",
|
"phpunit/phpunit": "5.3.*",
|
||||||
|
Loading…
Reference in New Issue
Block a user