Partial bootstrap 4.5 support
This commit is contained in:
@@ -103,6 +103,24 @@ class Output {
|
||||
$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,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();
|
||||
|
||||
Executable
+128
@@ -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,4 +1,4 @@
|
||||
<?php
|
||||
<?php
|
||||
|
||||
use Template\RenderableTemplate as RenderableTemplate;
|
||||
|
||||
@@ -7,13 +7,20 @@ class Dashboard extends RenderableTemplate {
|
||||
public $content;
|
||||
|
||||
public function render() {
|
||||
global $DROPDOWN, $SIDEBAR;
|
||||
|
||||
if (is_ajax_request()) {
|
||||
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 = '';
|
||||
|
||||
@@ -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,15 +43,9 @@ 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>';
|
||||
|
||||
@@ -53,9 +54,17 @@ class Dashboard extends RenderableTemplate {
|
||||
$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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
use RR\Response as R;
|
||||
|
||||
class WellcomeController{
|
||||
|
||||
function welcome(){
|
||||
R::json(Array('message' => Lang::getString('welcome', 'welcome')))->send()->done();
|
||||
}
|
||||
|
||||
}
|
||||
Vendored
+16
-3
@@ -45,7 +45,7 @@ function revalidate_screen() {
|
||||
$(this).mask($(this).data('format'), {});
|
||||
});
|
||||
|
||||
$('[data-toggle="popover"]').popover();
|
||||
//$('[data-toggle="popover"]').popover();
|
||||
|
||||
$('select').each(function () {
|
||||
if (typeof $(this).data('value') !== "undefined" && $(this).data('value') !== '') {
|
||||
@@ -69,6 +69,19 @@ function revalidate_screen() {
|
||||
});
|
||||
});
|
||||
|
||||
$(".wysiwyg").each(function () {
|
||||
$(this).trumbowyg();
|
||||
});
|
||||
|
||||
$(".form-control-range").each(function(i, item){
|
||||
$(item).on('change', function(item, i){
|
||||
$(item.currentTarget)
|
||||
.parent()
|
||||
.find('.range-monitor')
|
||||
.html(item.currentTarget.value + "%");
|
||||
})
|
||||
});
|
||||
|
||||
$('.popup-toggle').each(() => {
|
||||
var template = '<div class="modal-dialog"> <div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal"> X </button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body">{{aaa}}</div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div>';
|
||||
if ($(this).hasClass('processed')) {
|
||||
@@ -436,7 +449,7 @@ $('.remote-element').each(function () {
|
||||
//============================== Template Boot
|
||||
|
||||
/* Função de aparecer ou desaparecer o menu lateral */
|
||||
$("#menu-toggle").on('click', function (e) {
|
||||
$(".menu-toggle").on('click', function (e) {
|
||||
e.preventDefault();
|
||||
//e.preventPropagation();
|
||||
$("#wrapper").toggleClass("toggled");
|
||||
@@ -449,7 +462,7 @@ if (user_config.menu_default) {
|
||||
}
|
||||
|
||||
/* Função de aparecer ou desaparecer o menu lateral Secundário*/
|
||||
$("#menu-toggle").on('contextmenu', function (e) {
|
||||
$(".menu-toggle").on('contextmenu', function (e) {
|
||||
e.preventDefault();
|
||||
//e.preventPropagation();
|
||||
alert("Configs maluquinhas");
|
||||
|
||||
Vendored
+75
-52
@@ -10,9 +10,24 @@ table tr .selected{
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/*
|
||||
* Bootstrap Overwrite
|
||||
*/
|
||||
body a, body a:visited {
|
||||
text-decoration: none;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.dropdown-toggle{
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.dropdown-toggle:hover{
|
||||
color: #666;
|
||||
}
|
||||
|
||||
/* Bootstrap Overwrite */
|
||||
|
||||
.card{
|
||||
border-radius: 0px !important;
|
||||
}
|
||||
|
||||
.form-group div{
|
||||
padding: 0px;
|
||||
@@ -31,9 +46,13 @@ body{
|
||||
font-size: 1pc;
|
||||
}
|
||||
|
||||
/*
|
||||
-------------------------------------------------------
|
||||
*/
|
||||
/* Prevent bootstrap to interfere with metis menu */
|
||||
.nav .active .collapse{
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------*/
|
||||
|
||||
textarea{
|
||||
resize: vertical;
|
||||
@@ -70,7 +89,6 @@ textarea{
|
||||
\___ \ | | | | | | __| | _ < / /\ \ | _ /
|
||||
____) |_| |_| |__| | |____| |_) / ____ \| | \ \
|
||||
|_____/|_____|_____/|______|____/_/ \_\_| \_\
|
||||
|
||||
*/
|
||||
|
||||
#wrapper {
|
||||
@@ -79,10 +97,15 @@ textarea{
|
||||
|
||||
#sidebar-wrapper {
|
||||
background-color: #000 !important;
|
||||
height: 1000px;
|
||||
width: 200px;
|
||||
background-color: #fff;
|
||||
position: fixed!important;
|
||||
z-index: 10000;
|
||||
}
|
||||
|
||||
#wrapper.toggled {
|
||||
padding-left: 250px;
|
||||
/*padding-left: 250px;*/
|
||||
}
|
||||
|
||||
#sidebar-wrapper {
|
||||
@@ -106,7 +129,7 @@ textarea{
|
||||
#page-content-wrapper {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
padding: 15px;
|
||||
padding: 0px !important;
|
||||
}
|
||||
|
||||
#wrapper .toggled #page-content-wrapper {
|
||||
@@ -118,49 +141,6 @@ textarea{
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------------- */
|
||||
.logo{
|
||||
text-align: center;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.logo > img {
|
||||
width:50%;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------*/
|
||||
|
||||
.search-nav{
|
||||
text-align: center;
|
||||
margin-bottom:15px;
|
||||
}
|
||||
|
||||
.search-nav > input{
|
||||
margin: 0 auto;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#side-second-menu{
|
||||
display:none;
|
||||
}
|
||||
|
||||
#side-menu li, #side-second-menu li{
|
||||
width:100%;
|
||||
}
|
||||
|
||||
#side-menu li a, #side-second-menu li a{
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
#side-menu li i, #side-second-menu li i{
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.nav-dropdown{
|
||||
margin-right: 20px !important;
|
||||
}
|
||||
|
||||
/* Sidebar responsiveness */
|
||||
@media(min-width:768px) {
|
||||
#wrapper {
|
||||
@@ -188,6 +168,49 @@ textarea{
|
||||
position: relative;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.menu-small{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.logo{
|
||||
text-align: center;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.logo > img {
|
||||
width:50%;
|
||||
}
|
||||
|
||||
.search-nav{
|
||||
text-align: center;
|
||||
margin-bottom:15px;
|
||||
}
|
||||
|
||||
.search-nav > input{
|
||||
margin: 0 auto;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#side-second-menu{
|
||||
display:none;
|
||||
}
|
||||
|
||||
#side-menu li, #side-second-menu li{
|
||||
width:100%;
|
||||
}
|
||||
|
||||
#side-menu li a, #side-second-menu li a{
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
#side-menu li i, #side-second-menu li i{
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.nav-dropdown{
|
||||
margin-right: 20px !important;
|
||||
}
|
||||
|
||||
/* Header ---------------------------*/
|
||||
|
||||
File diff suppressed because one or more lines are too long
+6
-6
File diff suppressed because one or more lines are too long
+7
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user