Partial bootstrap 4.5 support

This commit is contained in:
2022-01-20 04:01:51 +00:00
parent 47091f1754
commit 62f3a633d7
15 changed files with 324 additions and 130 deletions
@@ -11,7 +11,7 @@ class Output {
private $_template = '';
private $_extension = '';
private function __construct() {
$this->_template = ( defined('TEMPLATE_DEFAULT') ) ? TEMPLATE_DEFAULT : 'DefaultTemplate';
$this->_extension = ( defined('TEMPLATE_FILETYPE') ) ? TEMPLATE_FILETYPE : '.mustache';
@@ -43,7 +43,7 @@ class Output {
array_pop($segments);
$location = implode('/', $segments) . '/views/';
}
self::getInstance()->setView($name, $values, $location)->render();
}
@@ -82,7 +82,7 @@ class Output {
}
include_once __DIR__."/classes/".strtolower($instance->_template)."/".$instance->_template.'.php';
$class = new $instance->_template;
$class->setView($instance->view)->render();
@@ -95,14 +95,32 @@ class Output {
public static function addSubmenu($key, $name, $icon = '', $attributes = [], $weight = 0){
global $SIDEBAR;
$SIDEBAR->create_submenu($key, $name, $icon, $attributes , $weight);
$SIDEBAR->create_submenu($key, $name, $icon, $attributes , $weight);
}
public static function addOnSubmenu($key, $route, $name, $icon = '', $attributes = [], $weight = 0){
global $SIDEBAR;
$SIDEBAR->add_on_new($key, $route, $name, $icon, $attributes, $weight);
}
//========
public static function headAdd($route, $name){
global $DROPDOWN;
$DROPDOWN[] = ['route' => $route, 'name' => $name];
}
public static function addSubHeader($key, $name, $icon = '', $attributes = [], $weight = 0){
global $DROPDOWN;
$DROPDOWN->create_submenu($key, $name, $icon, $attributes , $weight);
}
public static function addOnSubHeader($key, $route, $name, $icon = '', $attributes = [], $weight = 0){
global $DROPDOWN;
$DROPDOWN->add_on_new($key, $route, $name, $icon, $attributes, $weight);
}
public static function icon($icon){
return "<i class='$icon' aria-hidden='true'></i>";
}
+7 -3
View File
@@ -1,15 +1,19 @@
<?php
use Routes\RouteCollection as RouteCollection;
use Menus\Menu as Menu;
use Routes\RouteCollection as RouteCollection;
// use App\Core\Template\Output as Output;
RouteCollection::get('*', function(){
include_once 'Output.class.php';
// include_once 'Output.class.php';
GLOBAL $SIDEBAR, $DROPDOWN;
$SIDEBAR = new Menu( array('id' => 'side-menu', 'class' => "nav") );
$DROPDOWN = new Menu( array("class" => 'dropdown-menu') );
//HACK
//$DROPDOWN = new Menu( array("class" => 'dropdown-menu') );
$DROPDOWN = [];
}, -11)->doIgnore();
+128
View File
@@ -0,0 +1,128 @@
<?php
namespace App\Core\Template;
class Output {
private static $_instance;
private $view = false;
protected $values = Array();
private $_template = '';
private $_extension = '';
private function __construct() {
$this->_template = ( defined('TEMPLATE_DEFAULT') ) ? TEMPLATE_DEFAULT : 'DefaultTemplate';
$this->_extension = ( defined('TEMPLATE_FILETYPE') ) ? TEMPLATE_FILETYPE : '.mustache';
}
private static function newObj() {
if (!isset(self::$_instance)) {
self::$_instance = new Output();
}
return self::$_instance;
}
public function getInstance() {
if (!isset(self::$_instance)) {
return self::newObj();
}
return self::$_instance;
}
public function setTemplate($template = 'DefaultTemplate') {
self::getInstance()->_template = $template;
// self::getInstance()->_template = '';
return self::getInstance();
}
public static function renderView($name, $values = null, $location = null) {
if (!$location) {
$segments = explode('/', debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)[0]['file']);
array_pop($segments);
$location = implode('/', $segments) . '/views/';
}
self::getInstance()->setView($name, $values, $location)->render();
}
public static function setView($name = '', $values = Array(), $location = null) {
if($name == ''){ return self::getInstance(); }
$instance = self::getInstance();
$folder = '';
if (!$location) {
$segments = explode('/', debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)[0]['file']);
array_pop($segments);
$location = implode('/', $segments) . '/views/';
}
$folder = $location;
$location .= $name;
if (strpos($instance->_extension, $location) == 0) {
$location .= $instance->_extension;
}
$instance->view = Array();
$instance->view['location'] = $location;
$instance->view['folder'] = $folder;
$instance->view['values'] = $values;
return self::getInstance();
}
public static function addValue($key, $value){
self::getInstance()->view['values'][$key] = $value;
}
public static function render() {
$instance = self::getInstance();
if(!is_file(__DIR__."/classes/".strtolower($instance->_template)."/".$instance->_template.'.php') ){
$instance->_template = 'DefaultTemplate';
}
include_once __DIR__."/classes/".strtolower($instance->_template)."/".$instance->_template.'.php';
$class = new $instance->_template;
$class->setView($instance->view)->render();
}
public static function addMenu($route, $name, $icon = '', $attributes = [], $weight = 0){
global $SIDEBAR;
$SIDEBAR->add($route, $name, $icon, $attributes, $weight);
}
public static function addSubmenu($key, $name, $icon = '', $attributes = [], $weight = 0){
global $SIDEBAR;
$SIDEBAR->create_submenu($key, $name, $icon, $attributes , $weight);
}
public static function addOnSubmenu($key, $route, $name, $icon = '', $attributes = [], $weight = 0){
global $SIDEBAR;
$SIDEBAR->add_on_new($key, $route, $name, $icon, $attributes, $weight);
}
//========
public static function headAdd($route, $name){
global $DROPDOWN;
$DROPDOWN[] = ['route' => $route, 'name' => $name];
}
public static function addSubHeader($key, $name, $icon = '', $attributes = [], $weight = 0){
global $DROPDOWN;
$DROPDOWN->create_submenu($key, $name, $icon, $attributes , $weight);
}
public static function addOnSubHeader($key, $route, $name, $icon = '', $attributes = [], $weight = 0){
global $DROPDOWN;
$DROPDOWN->add_on_new($key, $route, $name, $icon, $attributes, $weight);
}
public static function icon($icon){
return "<i class='$icon' aria-hidden='true'></i>";
}
}
@@ -1,22 +1,29 @@
<?php
<?php
use Template\RenderableTemplate as RenderableTemplate;
class Dashboard extends RenderableTemplate {
public $content;
public function render() {
global $DROPDOWN, $SIDEBAR;
if (is_ajax_request()) {
$this->content = file_get_contents($this->getView()['location']);
$this->implate();
if(is_file($this->getView()['location'])){
$this->content = file_get_contents($this->getView()['location']);
$this->implate();
}else{
$this->content = '';
$this->implate();
}
return;
}
global $DROPDOWN, $SIDEBAR;
//global $DROPDOWN, $SIDEBAR;
$head = '';
$head .= '<script src="/plugins/jquery/jquery.min.js"></script>';
$head .= '<script src="/plugins/mousetrap/mousetrap.min.js"></script>';
@@ -24,7 +31,7 @@ class Dashboard extends RenderableTemplate {
$head .= '<script src="/plugins/jquery-mask-plugin/jquery.mask.min.js"></script>';
$head .= '<link href="/plugins/bootstrap/bootstrap.min.css" rel="stylesheet" />';
$head .= '<script src="/plugins/bootstrap/bootstrap.min.js"></script>';
$head .= '<script src="/plugins/bootstrap/bootstrap.bundle.min.js"></script>';
$head .= '<link href="/plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet" />';
@@ -36,35 +43,37 @@ class Dashboard extends RenderableTemplate {
$head .= '<link href="/plugins/metisMenu/metisMenu.min.css" rel="stylesheet">';
$head .= '<script src="/plugins/metisMenu/metisMenu.min.js"></script>';
$head .= '<link href="/plugins/select2/select2.min.css" rel="stylesheet">';
$head .= '<script src="/plugins/select2/select2.min.js"></script>';
$head .= '<link rel="stylesheet" href="/plugins/datatables/dataTables.css">';
$head .= '<script src="/plugins/datatables/dataTables.js"></script>';
$head .= '<link rel="stylesheet" href="/plugins/trumbowyg/ui/trumbowyg.min.css">';
$head .= '<script src="/plugins/trumbowyg/trumbowyg.min.js"></script>';
$foot = '';
$foot .= '<script src="/dist/script.js"></script>';
$this->content = file_get_contents(__DIR__ . '/template.html');
$this->content = str_replace("{{usermenu}}", "", $this->content);
$this->content = str_replace("{{elements}}", $SIDEBAR->render(), $this->content);
$header = '';
//HACK
foreach ($DROPDOWN as $item){
$header .= "<a class='dropdown-item' href='".$item['route']."'>".$item['name']."</a>";
}
$this->content = str_replace("{{dropdown}}", $header, $this->content);
$this->content = str_replace("{{head}}", $head, $this->content);
if(is_file($this->getView()['location'])){
if(isset($this->getView()['location']) && is_file($this->getView()['location'])){
$this->content = str_replace('{{>content}}', $this->replaceSections(file_get_contents($this->getView()['location']), $this->_view['values']), $this->content);
}else{
$this->content = str_replace('{{>content}}', '', $this->content);
}
$this->content = str_replace("{{footer}}", $foot, $this->content);
$this->implate();
}
}
@@ -9,17 +9,18 @@
<div id="wrapper">
<!-- Sidebar -->
<nav id="sidebar-wrapper">
<button class="form-control btn-danger menu-toggle menu-small">Fechar</button>
<div class="logo" style="">
<img src='/media/logo_white.png' alt="logo" />
</div>
<div class="search-nav" style="">
<input class="form-control" type="text" placeholder="Busca"/>
</div>
{{elements}}
<ul id="side-second-menu" class="hidden nav">
</ul>
<ul id="side-second-menu" class="hidden nav"></ul>
</nav>
<!-- /#sidebar-wrapper -->
<!-- /#sidebar-wrapper -->
@@ -31,24 +32,19 @@
<ul class="nav navbar-nav navbar-left">
<li class="tooltip-sidebar-toggle">
<a href="" id="menu-toggle">
<a href="" class="menu-toggle">
<i class="fa fa-th-list" aria-hidden="true"></i>
</a>
</li>
</ul>
<ul class="nav navbar-top-links navbar-right">
<!--{{usermenu}}-->
<li class="nav-item dropdown no-arrow">
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-user fa-fw"></i>
<i class="fa fa-cog fa-fw"></i>
</a>
<div class="dropdown-menu dropdown-menu-right" >
<a class="dropdown-item" href="#">Profile</a>
<a class="dropdown-item" href="#"><i class=""></i>Settings</a>
<a class="dropdown-item" href="#"><i class=""></i>Activity Log</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#" ><i class=""></i>Logout</a>
{{dropdown}}
</div>
</li>
</ul>
-11
View File
@@ -1,11 +0,0 @@
<?php
use RR\Response as R;
class WellcomeController{
function welcome(){
R::json(Array('message' => Lang::getString('welcome', 'welcome')))->send()->done();
}
}