|
|
|
|
@ -1,12 +1,13 @@ |
|
|
|
|
<?php |
|
|
|
|
|
|
|
|
|
declare(strict_types = 1); |
|
|
|
|
declare(strict_types=1); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @author Robert Strutts |
|
|
|
|
* @copyright (c) 2026, Robert Strutts |
|
|
|
|
* @license MIT |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
namespace IOcornerstone\Framework; |
|
|
|
|
|
|
|
|
|
use IOcornerstone\Framework\{ |
|
|
|
|
@ -22,414 +23,474 @@ use IOcornerstone\Framework\{ |
|
|
|
|
*/ |
|
|
|
|
class HtmlDocument |
|
|
|
|
{ |
|
|
|
|
private $title = ''; |
|
|
|
|
private $author = ''; |
|
|
|
|
private $description = ''; |
|
|
|
|
private $keywords = ''; |
|
|
|
|
private $robots = ''; |
|
|
|
|
private $head = ''; |
|
|
|
|
private $header = ''; |
|
|
|
|
private $body = ''; |
|
|
|
|
private $footer = ''; |
|
|
|
|
private $jsOnReady = ''; |
|
|
|
|
private $styles = ''; |
|
|
|
|
private $scripts = ''; |
|
|
|
|
private $mainStyles = ''; |
|
|
|
|
private $mainScripts = ''; |
|
|
|
|
private $activeCrumb = ''; |
|
|
|
|
private $breadcrumb = array(); |
|
|
|
|
|
|
|
|
|
public function __construct() { |
|
|
|
|
$this->title = Configure::get('html', 'title') ?? ''; |
|
|
|
|
$this->author = Configure::get('html', 'author') ?? ''; |
|
|
|
|
$this->footer = Configure::get('html', 'footer') ?? ''; |
|
|
|
|
$this->keywords = Configure::get('html', 'keywords') ?? ''; |
|
|
|
|
$this->description = Configure::get('html', 'description') ?? ''; |
|
|
|
|
$this->robots = Configure::get('html', 'robots'); |
|
|
|
|
$css = Configure::get('html', 'css'); |
|
|
|
|
if (Common::getCount($css) > 0) { |
|
|
|
|
foreach($css as $file=>$path) { |
|
|
|
|
if (is_array($file)) continue; |
|
|
|
|
if (is_array($path)) { |
|
|
|
|
if (isset($path['path'])) { |
|
|
|
|
$pathType = $path['path']; |
|
|
|
|
unset($path['path']); |
|
|
|
|
} else { |
|
|
|
|
$pathType = "project"; |
|
|
|
|
|
|
|
|
|
private $title = ''; |
|
|
|
|
private $author = ''; |
|
|
|
|
private $description = ''; |
|
|
|
|
private $keywords = ''; |
|
|
|
|
private $robots = ''; |
|
|
|
|
private $head = ''; |
|
|
|
|
private $header = ''; |
|
|
|
|
private $body = ''; |
|
|
|
|
private $footer = ''; |
|
|
|
|
private $jsOnReady = ''; |
|
|
|
|
private $styles = ''; |
|
|
|
|
private $scripts = ''; |
|
|
|
|
private $mainStyles = ''; |
|
|
|
|
private $mainScripts = ''; |
|
|
|
|
private $activeCrumb = ''; |
|
|
|
|
private $breadcrumb = []; |
|
|
|
|
|
|
|
|
|
public function __construct() |
|
|
|
|
{ |
|
|
|
|
$this->title = Configure::get('html', 'title') ?? ''; |
|
|
|
|
$this->author = Configure::get('html', 'author') ?? ''; |
|
|
|
|
$this->footer = Configure::get('html', 'footer') ?? ''; |
|
|
|
|
$this->keywords = Configure::get('html', 'keywords') ?? ''; |
|
|
|
|
$this->description = Configure::get('html', 'description') ?? ''; |
|
|
|
|
$this->robots = Configure::get('html', 'robots'); |
|
|
|
|
$css = Configure::get('html', 'css'); |
|
|
|
|
if (Common::getCount($css) > 0) { |
|
|
|
|
foreach ($css as $file => $path) { |
|
|
|
|
if (is_array($file)) |
|
|
|
|
continue; |
|
|
|
|
if (is_array($path)) { |
|
|
|
|
if (isset($path['path'])) { |
|
|
|
|
$pathType = $path['path']; |
|
|
|
|
unset($path['path']); |
|
|
|
|
} else { |
|
|
|
|
$pathType = "project"; |
|
|
|
|
} |
|
|
|
|
$this->addCss($file, $pathType, $path); |
|
|
|
|
} else { |
|
|
|
|
$this->addCss($file, $path); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$this->addCss($file, $pathType, $path); |
|
|
|
|
} else { |
|
|
|
|
$this->addCss($file, $path); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$js = Configure::get('html', 'javascript'); |
|
|
|
|
if (Common::getCount($js) >0) { |
|
|
|
|
foreach($js as $file=>$path) { |
|
|
|
|
if (is_array($file)) continue; |
|
|
|
|
if (is_array($path)) { |
|
|
|
|
if (isset($path['path'])) { |
|
|
|
|
$pathType = $path['path']; |
|
|
|
|
unset($path['path']); |
|
|
|
|
} else { |
|
|
|
|
$pathType = "project"; |
|
|
|
|
$js = Configure::get('html', 'javascript'); |
|
|
|
|
if (Common::getCount($js) > 0) { |
|
|
|
|
foreach ($js as $file => $path) { |
|
|
|
|
if (is_array($file)) |
|
|
|
|
continue; |
|
|
|
|
if (is_array($path)) { |
|
|
|
|
if (isset($path['path'])) { |
|
|
|
|
$pathType = $path['path']; |
|
|
|
|
unset($path['path']); |
|
|
|
|
} else { |
|
|
|
|
$pathType = "project"; |
|
|
|
|
} |
|
|
|
|
$this->addJs($file, $pathType, $path); |
|
|
|
|
} else { |
|
|
|
|
$this->addJs($file, $path); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$this->addJs($file, $pathType, $path); |
|
|
|
|
} else { |
|
|
|
|
$this->addJs($file, $path); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function clearCss(): void { |
|
|
|
|
$this->styles = ''; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function clearJs(): void { |
|
|
|
|
$this->scripts = ''; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set both Title and Header for HTML |
|
|
|
|
* @param string $title |
|
|
|
|
*/ |
|
|
|
|
public function setTitleAndHeader(string $title): void { |
|
|
|
|
$this->title = $title; |
|
|
|
|
$this->header = $title; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Author for HTML |
|
|
|
|
* @param string $title |
|
|
|
|
*/ |
|
|
|
|
public function setAuthor(string $author): void { |
|
|
|
|
$this->author = $author; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Title for HTML |
|
|
|
|
* @param string $title |
|
|
|
|
*/ |
|
|
|
|
public function setTitle(string $title): void { |
|
|
|
|
$this->title = $title; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Header for HTML |
|
|
|
|
* @param string $header |
|
|
|
|
*/ |
|
|
|
|
public function setHeader(string $header): void { |
|
|
|
|
$this->header = $header; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function setHead(string $head): void { |
|
|
|
|
$this->head = $head; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Footer for HTML |
|
|
|
|
* @param string $footer |
|
|
|
|
*/ |
|
|
|
|
public function setFooter(string $footer): void { |
|
|
|
|
|
|
|
|
|
public function clearCss(): void |
|
|
|
|
{ |
|
|
|
|
$this->styles = ''; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function clearJs(): void |
|
|
|
|
{ |
|
|
|
|
$this->scripts = ''; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set both Title and Header for HTML |
|
|
|
|
* @param string $title |
|
|
|
|
*/ |
|
|
|
|
public function setTitleAndHeader(string $title): void |
|
|
|
|
{ |
|
|
|
|
$this->title = $title; |
|
|
|
|
$this->header = $title; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Author for HTML |
|
|
|
|
* @param string $title |
|
|
|
|
*/ |
|
|
|
|
public function setAuthor(string $author): void |
|
|
|
|
{ |
|
|
|
|
$this->author = $author; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Title for HTML |
|
|
|
|
* @param string $title |
|
|
|
|
*/ |
|
|
|
|
public function setTitle(string $title): void |
|
|
|
|
{ |
|
|
|
|
$this->title = $title; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Header for HTML |
|
|
|
|
* @param string $header |
|
|
|
|
*/ |
|
|
|
|
public function setHeader(string $header): void |
|
|
|
|
{ |
|
|
|
|
$this->header = $header; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function setHead(string $head): void |
|
|
|
|
{ |
|
|
|
|
$this->head = $head; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Footer for HTML |
|
|
|
|
* @param string $footer |
|
|
|
|
*/ |
|
|
|
|
public function setFooter(string $footer): void |
|
|
|
|
{ |
|
|
|
|
// $this->add_css('footer.css', 'project'); |
|
|
|
|
$this->footer = $footer; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Description for HTML |
|
|
|
|
* @param string $description |
|
|
|
|
*/ |
|
|
|
|
public function setDescription(string $description): void { |
|
|
|
|
$this->description = $description; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Keywords for HTML |
|
|
|
|
* @param string $keywords |
|
|
|
|
*/ |
|
|
|
|
public function setKeywords(string $keywords): void { |
|
|
|
|
$this->keywords = $keywords; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Robots for HTML |
|
|
|
|
* @param string $robot |
|
|
|
|
*/ |
|
|
|
|
public function setRobots(string $robot): void { |
|
|
|
|
$this->robots = $robot; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function setBody(string $body): void { |
|
|
|
|
$this->body = $body; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Active BreadCrumb in HTML |
|
|
|
|
* @param string $active |
|
|
|
|
*/ |
|
|
|
|
public function setActiveCrumb(string $active): void { |
|
|
|
|
$this->activeCrumb = $active; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set BreadCrumbs using array (HyperLink => Name of Crumb) |
|
|
|
|
* @param array $crumbs Array(href => name) |
|
|
|
|
*/ |
|
|
|
|
public function setBreadcrumbs(array $crumbs): void { |
|
|
|
|
$this->breadcrumb = $crumbs; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function setAssetsFromArray(array $files, string $which, string $scope = 'project'): void { |
|
|
|
|
foreach($files as $file => $a) { |
|
|
|
|
switch($which) { |
|
|
|
|
case 'main_css': |
|
|
|
|
$this->addMainCss($file, $scope, $a); |
|
|
|
|
break; |
|
|
|
|
case 'css': |
|
|
|
|
$this->addCss($file, $scope, $a); |
|
|
|
|
break; |
|
|
|
|
case 'main_js': |
|
|
|
|
$this->addMainJs($file, $scope, $a); |
|
|
|
|
break; |
|
|
|
|
case 'js': |
|
|
|
|
$this->addJs($file, $scope, $a); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private function missingFile(string $file, string $scope, string $kind) { |
|
|
|
|
$failed = strtoupper($kind) . " filename of {$file} - {$scope} Asset Failed to Load!"; |
|
|
|
|
$this->addToJavascript("console.log(\"%c {$failed}\", \"color: red\")"); |
|
|
|
|
$comment = "<!-- {$failed} -->"; |
|
|
|
|
if ($kind === "css") { |
|
|
|
|
$this->styles .= $comment; |
|
|
|
|
} else if ($kind === "main_css") { |
|
|
|
|
$this->mainStyles .= $comment; |
|
|
|
|
} else if ($kind === "js") { |
|
|
|
|
$this->scripts .= $comment; |
|
|
|
|
} else if ($kind === "main_js") { |
|
|
|
|
$this->mainScripts .= $comment; |
|
|
|
|
$this->footer = $footer; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Description for HTML |
|
|
|
|
* @param string $description |
|
|
|
|
*/ |
|
|
|
|
public function setDescription(string $description): void |
|
|
|
|
{ |
|
|
|
|
$this->description = $description; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Keywords for HTML |
|
|
|
|
* @param string $keywords |
|
|
|
|
*/ |
|
|
|
|
public function setKeywords(string $keywords): void |
|
|
|
|
{ |
|
|
|
|
$this->keywords = $keywords; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Robots for HTML |
|
|
|
|
* @param string $robot |
|
|
|
|
*/ |
|
|
|
|
public function setRobots(string $robot): void |
|
|
|
|
{ |
|
|
|
|
$this->robots = $robot; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function setBody(string $body): void |
|
|
|
|
{ |
|
|
|
|
$this->body = $body; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set Active BreadCrumb in HTML |
|
|
|
|
* @param string $active |
|
|
|
|
*/ |
|
|
|
|
public function setActiveCrumb(string $active): void |
|
|
|
|
{ |
|
|
|
|
$this->activeCrumb = $active; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Set BreadCrumbs using array (HyperLink => Name of Crumb) |
|
|
|
|
* @param array $crumbs Array(href => name) |
|
|
|
|
*/ |
|
|
|
|
public function setBreadcrumbs(array $crumbs): void |
|
|
|
|
{ |
|
|
|
|
$this->breadcrumb = $crumbs; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function setAssetsFromArray(array $files, string $which, string $scope = 'project'): void |
|
|
|
|
{ |
|
|
|
|
foreach ($files as $file => $a) { |
|
|
|
|
switch ($which) { |
|
|
|
|
case 'main_css': |
|
|
|
|
$this->addMainCss($file, $scope, $a); |
|
|
|
|
break; |
|
|
|
|
case 'css': |
|
|
|
|
$this->addCss($file, $scope, $a); |
|
|
|
|
break; |
|
|
|
|
case 'main_js': |
|
|
|
|
$this->addMainJs($file, $scope, $a); |
|
|
|
|
break; |
|
|
|
|
case 'js': |
|
|
|
|
$this->addJs($file, $scope, $a); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private function missingFile(string $file, string $scope, string $kind) |
|
|
|
|
{ |
|
|
|
|
$failed = strtoupper($kind) . " filename of {$file} - {$scope} Asset Failed to Load!"; |
|
|
|
|
$this->addToJavascript("console.log(\"%c {$failed}\", \"color: red\")"); |
|
|
|
|
$comment = "<!-- {$failed} -->"; |
|
|
|
|
if ($kind === "css") { |
|
|
|
|
$this->styles .= $comment; |
|
|
|
|
} else if ($kind === "main_css") { |
|
|
|
|
$this->mainStyles .= $comment; |
|
|
|
|
} else if ($kind === "js") { |
|
|
|
|
$this->scripts .= $comment; |
|
|
|
|
} else if ($kind === "main_js") { |
|
|
|
|
$this->mainScripts .= $comment; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Add CSS stylesheet to HTML under main CSS |
|
|
|
|
* @param string $file |
|
|
|
|
* @param string $scope (project, framework, cdn) |
|
|
|
|
* @return bool was successful |
|
|
|
|
*/ |
|
|
|
|
public function addCss(string $file, string $scope = 'project', array $a = array()): bool |
|
|
|
|
{ |
|
|
|
|
$css = Assets::wrapAsset($file, $scope); |
|
|
|
|
if ($css === false) { |
|
|
|
|
$this->missingFile($file, $scope, "css"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
$this->styles .= Assets::wrapCss($file, $scope, $a); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Add JS JavaScript to HTML under main JS |
|
|
|
|
* @param string $file |
|
|
|
|
* @param string $scope (project, framework, cdn) |
|
|
|
|
* @return bool was successful |
|
|
|
|
*/ |
|
|
|
|
public function addJs(string $file, string $scope = 'project', array $a = array()): bool |
|
|
|
|
{ |
|
|
|
|
$js = Assets::wrapAsset($file, $scope); |
|
|
|
|
if ($js === false) { |
|
|
|
|
$this->jsLog($file . " - {$scope} Asset Failed to Load!"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
$this->scripts .= Assets::wrapJs($file, $scope, $a); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Add CSS stylesheet to HTML towards top of HTML for CSS |
|
|
|
|
* @param string $file |
|
|
|
|
* @param string $scope (project, framework, cdn) |
|
|
|
|
* @return bool was successful |
|
|
|
|
*/ |
|
|
|
|
public function addMainCss(string $file, string $scope = 'project', array $a = array()): bool |
|
|
|
|
{ |
|
|
|
|
$css = Assets::wrapAsset($file, $scope); |
|
|
|
|
if ($css === false) { |
|
|
|
|
$this->jsLog($file . " - {$scope} Asset Failed to Load!"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
$this->mainStyles .= Assets::wrapCss($file, $scope, $a); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Add JavaScript to HTML towards top of HTML for JS |
|
|
|
|
* @param string $file |
|
|
|
|
* @param string $scope (project, framework, cdn) |
|
|
|
|
* @return bool was successful |
|
|
|
|
*/ |
|
|
|
|
public function addMainJs(string $file, string $scope = 'project', array $a = array()): bool |
|
|
|
|
{ |
|
|
|
|
$js = Assets::wrapAsset($file, $scope); |
|
|
|
|
if ($js === false) { |
|
|
|
|
$this->jsLog($file . " - {$scope} Asset Failed to Load!"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
$this->mainScripts .= Assets::wrapJs($file, $scope, $a); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Adds JavaScript code to called after JQuery is ready. |
|
|
|
|
* @param string $code |
|
|
|
|
*/ |
|
|
|
|
//public function add_js_onready(string $code): void { |
|
|
|
|
// $this->js_onready .= \px_inline_js(\px_jquery_load($code)); |
|
|
|
|
//} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Log to JavaScript Console under Chrome Browser |
|
|
|
|
* @param string $log |
|
|
|
|
*/ |
|
|
|
|
public function jsLog(string $log): void |
|
|
|
|
{ |
|
|
|
|
$this->addToJavascript("console.log('{$log}');"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Place JavaScript in HTML |
|
|
|
|
* @param string $js |
|
|
|
|
*/ |
|
|
|
|
public function addToJavascript(string $js): void |
|
|
|
|
{ |
|
|
|
|
if (!empty($js)) { |
|
|
|
|
$this->scripts .= Assets::inlineJs($js); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Use CSS/JS for Database SSP |
|
|
|
|
public function datatables_code(): void { |
|
|
|
|
$this->addCss('datatables/datatables.min.css', 'cl'); |
|
|
|
|
$this->addJs('datatables/datatables_no_jquery.min.js', 'cl'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Add CSS stylesheet to HTML under main CSS |
|
|
|
|
* @param string $file |
|
|
|
|
* @param string $scope (project, framework, cdn) |
|
|
|
|
* @return bool was successful |
|
|
|
|
*/ |
|
|
|
|
public function addCss(string $file, string $scope = 'project', array $a = array()): bool { |
|
|
|
|
$css = Assets::wrapAsset($file, $scope); |
|
|
|
|
if ($css === false) { |
|
|
|
|
$this->missingFile($file, $scope, "css"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
$this->styles .= Assets::wrapCss($file, $scope, $a); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Add JS JavaScript to HTML under main JS |
|
|
|
|
* @param string $file |
|
|
|
|
* @param string $scope (project, framework, cdn) |
|
|
|
|
* @return bool was successful |
|
|
|
|
*/ |
|
|
|
|
public function addJs(string $file, string $scope = 'project', array $a = array()): bool { |
|
|
|
|
$js = Assets::wrapAsset($file, $scope); |
|
|
|
|
if ($js === false) { |
|
|
|
|
$this->js_log($file . " - {$scope} Asset Failed to Load!"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
$this->scripts .= Assets::wrapJs($file, $scope, $a); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Add CSS stylesheet to HTML towards top of HTML for CSS |
|
|
|
|
* @param string $file |
|
|
|
|
* @param string $scope (project, framework, cdn) |
|
|
|
|
* @return bool was successful |
|
|
|
|
*/ |
|
|
|
|
public function addMainCss(string $file, string $scope = 'project', array $a = array()): bool { |
|
|
|
|
$css = Assets::wrapAsset($file, $scope); |
|
|
|
|
if ($css === false) { |
|
|
|
|
$this->js_log($file . " - {$scope} Asset Failed to Load!"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
$this->mainStyles .= Assets::wrapCss($file, $scope, $a); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Add JavaScript to HTML towards top of HTML for JS |
|
|
|
|
* @param string $file |
|
|
|
|
* @param string $scope (project, framework, cdn) |
|
|
|
|
* @return bool was successful |
|
|
|
|
*/ |
|
|
|
|
public function addMainJs(string $file, string $scope = 'project', array $a = array()): bool { |
|
|
|
|
$js = Assets::wrapAsset($file, $scope); |
|
|
|
|
if ($js === false) { |
|
|
|
|
$this->js_log($file . " - {$scope} Asset Failed to Load!"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
$this->mainScripts .= Assets::wrapJs($file, $scope, $a); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Adds JavaScript code to called after JQuery is ready. |
|
|
|
|
* @param string $code |
|
|
|
|
*/ |
|
|
|
|
//public function add_js_onready(string $code): void { |
|
|
|
|
// $this->js_onready .= \px_inline_js(\px_jquery_load($code)); |
|
|
|
|
//} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Log to JavaScript Console under Chrome Browser |
|
|
|
|
* @param string $log |
|
|
|
|
*/ |
|
|
|
|
public function jsLog(string $log): void { |
|
|
|
|
$this->addToJavascript("console.log('{$log}');"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Place JavaScript in HTML |
|
|
|
|
* @param string $js |
|
|
|
|
*/ |
|
|
|
|
public function addToJavascript(string $js): void { |
|
|
|
|
if (! empty($js)) { |
|
|
|
|
$this->scripts .= Assets::inlineJs($js); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Use CSS/JS for Database SSP |
|
|
|
|
public function datatables_code(): void { |
|
|
|
|
$this->addCss('datatables/datatables.min.css', 'cl'); |
|
|
|
|
$this->addJs('datatables/datatables_no_jquery.min.js', 'cl'); |
|
|
|
|
} |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Author |
|
|
|
|
* @return string HTML Author |
|
|
|
|
*/ |
|
|
|
|
public function getAuthor(): string { |
|
|
|
|
return $this->author; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML TITLE |
|
|
|
|
* @return string HTML TITLE |
|
|
|
|
*/ |
|
|
|
|
public function getTitle(): string { |
|
|
|
|
return $this->title; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Header |
|
|
|
|
* @return string HTML Header |
|
|
|
|
*/ |
|
|
|
|
public function getHeader(): string { |
|
|
|
|
return $this->header; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function getBody(): string { |
|
|
|
|
return $this->body; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Footer |
|
|
|
|
* @return string HTML Footer |
|
|
|
|
*/ |
|
|
|
|
public function getFooter(): string { |
|
|
|
|
return $this->footer; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Meta data for Description |
|
|
|
|
* @return string HTML Meta Description |
|
|
|
|
*/ |
|
|
|
|
public function getDescription(): string { |
|
|
|
|
return $this->description; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Meta data for Keywords |
|
|
|
|
* @return string HTML Meta Keywords |
|
|
|
|
*/ |
|
|
|
|
public function getKeywords(): string { |
|
|
|
|
return $this->keywords; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Meta data for Robots |
|
|
|
|
* @return string HTML Meta Robots |
|
|
|
|
*/ |
|
|
|
|
public function getRobots(): ?string { |
|
|
|
|
return $this->robots; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML CSS |
|
|
|
|
* @return string HTML CSS |
|
|
|
|
*/ |
|
|
|
|
public function getStyles(): string { |
|
|
|
|
return $this->styles; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML JavaScripts |
|
|
|
|
* @return string HTML JS |
|
|
|
|
*/ |
|
|
|
|
public function getScripts(): string { |
|
|
|
|
return $this->scripts; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML main CSS @Top |
|
|
|
|
* @return string HTML CSS |
|
|
|
|
*/ |
|
|
|
|
public function getMainStyles(): string { |
|
|
|
|
return $this->mainStyles; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML main JS @Top |
|
|
|
|
* @return string HTML JavaScript |
|
|
|
|
*/ |
|
|
|
|
public function getMainScripts(): string { |
|
|
|
|
return $this->mainScripts; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML JS after main JS |
|
|
|
|
* @return string HTML JS |
|
|
|
|
*/ |
|
|
|
|
public function getJsOnReady(): string { |
|
|
|
|
return $this->jsOnReady; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Active BreadCrumb |
|
|
|
|
* @return string HTML Active BreadCrumb |
|
|
|
|
*/ |
|
|
|
|
public function getActiveCrumb(): string { |
|
|
|
|
return $this->activeCrumb; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML BreadCrumbs |
|
|
|
|
* @return string HTML BreadCrumbs |
|
|
|
|
*/ |
|
|
|
|
public function getBreadcrumbs(): array { |
|
|
|
|
return $this->breadcrumb; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function getHead(): string { |
|
|
|
|
return $this->head; |
|
|
|
|
} |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Author |
|
|
|
|
* @return string HTML Author |
|
|
|
|
*/ |
|
|
|
|
public function getAuthor(): string |
|
|
|
|
{ |
|
|
|
|
return $this->author; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML TITLE |
|
|
|
|
* @return string HTML TITLE |
|
|
|
|
*/ |
|
|
|
|
public function getTitle(): string |
|
|
|
|
{ |
|
|
|
|
return $this->title; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Header |
|
|
|
|
* @return string HTML Header |
|
|
|
|
*/ |
|
|
|
|
public function getHeader(): string |
|
|
|
|
{ |
|
|
|
|
return $this->header; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function getBody(): string |
|
|
|
|
{ |
|
|
|
|
return $this->body; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Footer |
|
|
|
|
* @return string HTML Footer |
|
|
|
|
*/ |
|
|
|
|
public function getFooter(): string |
|
|
|
|
{ |
|
|
|
|
return $this->footer; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Meta data for Description |
|
|
|
|
* @return string HTML Meta Description |
|
|
|
|
*/ |
|
|
|
|
public function getDescription(): string |
|
|
|
|
{ |
|
|
|
|
return $this->description; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Meta data for Keywords |
|
|
|
|
* @return string HTML Meta Keywords |
|
|
|
|
*/ |
|
|
|
|
public function getKeywords(): string |
|
|
|
|
{ |
|
|
|
|
return $this->keywords; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Meta data for Robots |
|
|
|
|
* @return string HTML Meta Robots |
|
|
|
|
*/ |
|
|
|
|
public function getRobots(): ?string |
|
|
|
|
{ |
|
|
|
|
return $this->robots; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML CSS |
|
|
|
|
* @return string HTML CSS |
|
|
|
|
*/ |
|
|
|
|
public function getStyles(): string |
|
|
|
|
{ |
|
|
|
|
return $this->styles; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML JavaScripts |
|
|
|
|
* @return string HTML JS |
|
|
|
|
*/ |
|
|
|
|
public function getScripts(): string |
|
|
|
|
{ |
|
|
|
|
return $this->scripts; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML main CSS @Top |
|
|
|
|
* @return string HTML CSS |
|
|
|
|
*/ |
|
|
|
|
public function getMainStyles(): string |
|
|
|
|
{ |
|
|
|
|
return $this->mainStyles; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML main JS @Top |
|
|
|
|
* @return string HTML JavaScript |
|
|
|
|
*/ |
|
|
|
|
public function getMainScripts(): string |
|
|
|
|
{ |
|
|
|
|
return $this->mainScripts; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML JS after main JS |
|
|
|
|
* @return string HTML JS |
|
|
|
|
*/ |
|
|
|
|
public function getJsOnReady(): string |
|
|
|
|
{ |
|
|
|
|
return $this->jsOnReady; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML Active BreadCrumb |
|
|
|
|
* @return string HTML Active BreadCrumb |
|
|
|
|
*/ |
|
|
|
|
public function getActiveCrumb(): string |
|
|
|
|
{ |
|
|
|
|
return $this->activeCrumb; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Used by Template file to render HTML BreadCrumbs |
|
|
|
|
* @return string HTML BreadCrumbs |
|
|
|
|
*/ |
|
|
|
|
public function getBreadcrumbs(): array |
|
|
|
|
{ |
|
|
|
|
return $this->breadcrumb; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function getHead(): string |
|
|
|
|
{ |
|
|
|
|
return $this->head; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function getBreadcrumbsAuto(): string |
|
|
|
|
{ |
|
|
|
|
if (! count($this->breadcrumb) && empty($this->activeCrumb)) { |
|
|
|
|
return ""; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$out = "<nav><ul class=\"breadcrumb\">" . PHP_EOL; |
|
|
|
|
|
|
|
|
|
foreach($this->breadcrumb as $link => $crumb) { |
|
|
|
|
$out .= "<li><a href=\"$link\">$crumb</a></li>" . PHP_EOL; |
|
|
|
|
} |
|
|
|
|
if (! empty($this->activeCrumb)) { |
|
|
|
|
$out .= "<li>" . $this->activeCrumb . "</li>" . PHP_EOL; |
|
|
|
|
} |
|
|
|
|
$out .= "</ul></nav>" . PHP_EOL; |
|
|
|
|
return $out; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|