143 lines
7.2 KiB
PHP
143 lines
7.2 KiB
PHP
<?php
|
|
/**
|
|
* app/templates/default/default.inc.php
|
|
*
|
|
* This is the loader for the default template.
|
|
*
|
|
* @version 5.0.1
|
|
* @author Joey Kimsey <Joey@thetempusproject.com>
|
|
* @link https://TheTempusProject.com
|
|
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
|
*/
|
|
namespace TheTempusProject\Templates;
|
|
|
|
use TheTempusProject\Houdini\Classes\Loader;
|
|
use TheTempusProject\Houdini\Classes\Template;
|
|
use TheTempusProject\Houdini\Classes\Views;
|
|
use TheTempusProject\Houdini\Classes\Navigation;
|
|
use TheTempusProject\Houdini\Classes\Components;
|
|
use TheTempusProject\Bedrock\Classes\Config;
|
|
use TheTempusProject\Bedrock\Functions\Input;
|
|
use TheTempusProject\TheTempusProject as App;
|
|
use Endroid\QrCode\Builder\Builder;
|
|
use Endroid\QrCode\Encoding\Encoding;
|
|
use Endroid\QrCode\ErrorCorrectionLevel;
|
|
use Endroid\QrCode\Label\LabelAlignment;
|
|
use Endroid\QrCode\Label\Font\OpenSans;
|
|
use Endroid\QrCode\RoundBlockSizeMode;
|
|
use Endroid\QrCode\Writer\PngWriter;
|
|
use TheTempusProject\Hermes\Functions\Route as Routes;
|
|
use TheTempusProject\Canary\Bin\Canary as Debug;
|
|
|
|
class DefaultLoader extends Loader {
|
|
private static $loaded = false;
|
|
const TEMPLATE_NAME = 'Default Tempus Project Template';
|
|
const BOOTSTRAP_CDN = 'https://cdn.jsdelivr.net/npm/bootstrap@3.3.6/dist/';
|
|
const FONT_AWESOME_URL = 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/';
|
|
|
|
public function __construct() {
|
|
if ( self::$loaded ) {
|
|
return;
|
|
}
|
|
Components::set( 'DARK_MODE_SETTING', '' );
|
|
Components::set( 'TEMPLATE_URL', Template::parse( '{ROOT_URL}app/templates/default/' ) );
|
|
if ( VENDOR_AUTOLOADED === true ) {
|
|
Components::set( 'FONT_AWESOME_URL', '/vendor/fortawesome/font-awesome/css/' );
|
|
Components::set( 'BOOTSTRAP_CDN', '/vendor/twbs/bootstrap/dist/' );
|
|
} else {
|
|
Components::set( 'BOOTSTRAP_CDN', self::BOOTSTRAP_CDN );
|
|
Components::set( 'FONT_AWESOME_URL', self::FONT_AWESOME_URL );
|
|
}
|
|
$this->addJs( '<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="{ROOT_URL}app/js/main.js"></script>' );
|
|
$this->addJs( '<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="{ROOT_URL}app/js/sw.js"></script>' );
|
|
Components::setIfNull( 'LOGO', Config::getValue( 'main/logo' ) ?? TP_DEFAULT_LOGO );
|
|
|
|
if ( ! empty( Config::getValue( 'share/enabled' ) ) ) {
|
|
$currentUrl = Routes::getAddress() . Input::get( 'url' );
|
|
$folder = IMAGE_DIRECTORY . 'qr-codes' . DIRECTORY_SEPARATOR ;
|
|
$filename = md5( $currentUrl ) . '.png';
|
|
|
|
if ( ! file_exists( $folder ) ) {
|
|
Debug::Info( 'Creating Directory because it does not exist' );
|
|
mkdir( $folder, 0777, true );
|
|
}
|
|
if ( ! empty( Config::getValue( 'share/qr' ) ) ) {
|
|
if ( ! file_exists( $folder . $filename ) ) {
|
|
Debug::Info( 'Creating qr-image because it does not exist' );
|
|
$builder = new Builder(
|
|
writer: new PngWriter(),
|
|
writerOptions: [],
|
|
validateResult: false,
|
|
data: Routes::getAddress() . Input::get( 'url' ),
|
|
encoding: new Encoding('UTF-8'),
|
|
errorCorrectionLevel: ErrorCorrectionLevel::High,
|
|
size: 200,
|
|
margin: 10,
|
|
roundBlockSizeMode: RoundBlockSizeMode::Margin,
|
|
logoPath: APP_ROOT_DIRECTORY . DIRECTORY_SEPARATOR . Config::getValue( 'main/logo' ),
|
|
logoResizeToWidth: 30,
|
|
logoPunchoutBackground: true,
|
|
labelText: Config::getValue( 'main/name' ),
|
|
labelFont: new OpenSans(14),
|
|
labelAlignment: LabelAlignment::Center
|
|
);
|
|
$result = $builder->build();
|
|
$result->saveToFile( $folder . $filename );
|
|
}
|
|
Components::set( 'QR_CODE','<img src="{ROOT_URL}images/qr-codes/' . $filename . '" alt="QR Code" class="img-fluid mb-2">' );
|
|
} else {
|
|
Components::setIfNull( 'QR_CODE', '' );
|
|
}
|
|
Components::setIfNull( 'SHARE_IMAGE', Views::simpleView( 'footer.share' ) );
|
|
} else {
|
|
Components::setIfNull( 'SHARE_IMAGE', '' );
|
|
}
|
|
|
|
if ( ! empty( Config::getValue( 'main/pwa' ) ) ) {
|
|
Components::setIfNull( 'PWA', Views::simpleView( 'pwa') );
|
|
} else {
|
|
Components::setIfNull( 'PWA', '' );
|
|
}
|
|
|
|
Components::setIfNull( 'COPY', Views::simpleView( 'footer.copy') );
|
|
Components::setIfNull( 'SOCIAL', Views::simpleView( 'footer.social') );
|
|
Components::prepend( 'FOOTER_LEFT', Views::simpleView( 'footer.left', Navigation::getMenuLinks( App::CONTACT_FOOTER_MENU_NAME ) ) );
|
|
Components::prepend( 'FOOTER_CENTER', Views::simpleView( 'footer.center', Navigation::getMenuLinks( App::INFO_FOOTER_MENU_NAME ) ) );
|
|
Components::prepend( 'FOOTER_RIGHT', Views::simpleView( 'footer.right') );
|
|
Components::setIfNull( 'FOOT', Views::simpleView( 'footer.container') );
|
|
|
|
/**
|
|
* Top-Nav
|
|
*/
|
|
if ( App::$isLoggedIn ) {
|
|
if ( ! empty( App::$activePrefs['darkMode'] ) ) {
|
|
Components::set( 'DARK_MODE_SETTING', 'true' );
|
|
$this->addCss( '<link rel="stylesheet" href="{ROOT_URL}app/css/main.css">' );
|
|
$this->addCss( '<link rel="stylesheet" href="{ROOT_URL}app/css/main-dark.css" id="dark-mode-stylesheet">' );
|
|
} else {
|
|
Components::set( 'DARK_MODE_SETTING', 'false' );
|
|
$this->addCss( '<link rel="stylesheet" href="{ROOT_URL}app/css/main.css">' );
|
|
$this->addCss( '<link rel="stylesheet" href="{ROOT_URL}app/css/main-dark.css" id="dark-mode-stylesheet" disabled>' );
|
|
}
|
|
Components::set( 'topNavRightDropdown', Template::parse( App::$topNavRightDropdown ) );
|
|
Components::set( 'STATUS', Views::simpleView( 'nav.statusLoggedIn' ) );
|
|
Components::set( 'USERNAME', \ucfirst( App::$activeUser->username ) );
|
|
Components::set( 'AVATAR', App::$activeUser->avatar );
|
|
} else {
|
|
Components::set( 'STATUS', Views::simpleView( 'nav.statusLoggedOut' ) );
|
|
$this->addCss( '<link rel="stylesheet" href="{ROOT_URL}app/css/main.css">' );
|
|
$this->addCss( '<link rel="stylesheet" href="{ROOT_URL}app/css/main-dark.css" id="dark-mode-stylesheet" disabled>' );
|
|
}
|
|
Components::set( 'topNavRight', Template::parse( App::$topNavRight . '{STATUS}' ) );
|
|
|
|
$menu = Views::simpleView( 'nav.main', Navigation::getMenuLinks( App::MAIN_MENU_NAME ) );
|
|
$activeMenu = Navigation::activePageSelect( $menu, Input::get( 'url' ), false, true );
|
|
Components::set( 'topNavLeft', $activeMenu );
|
|
|
|
Components::set( 'colorSelect', Views::simpleView( 'forms.colorSelect' ) );
|
|
Components::set( 'iconSelect', Views::simpleView( 'forms.iconSelect' ) );
|
|
Navigation::setCrumbComponent( 'BREADCRUMB', Input::get( 'url' ) );
|
|
$this->buildComponents();
|
|
self::$loaded = true;
|
|
}
|
|
} |