Files
Component-Builder/admin/compiler/joomla_4/SITE_HEADERCHECK.php
Robot 64bc4327eb Release of v4.1.1-beta2
Adds new JCB package engine. Fix issue with loading the Component Builder Wiki. Adds advanced version update notice to the Component Builder Dashboard. Completely refactors the class that builds the Component Dashboard. #1134. Adds Initialize, Reset, and Push functionality to the Repository entities. Completely refactors the SQL teaks and SQL dump classes. Changes J4 fields to allow NULL. Fix a bug in Dynamic Get JavaScript that causes table columns to not load.
2025-06-27 10:36:15 +00:00

136 lines
3.2 KiB
PHP

<?php
/**
* @package Joomla.Component.Builder
*
* @created 4th September 2022
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this JCB template file (EVER)
defined('_JCB_TEMPLATE') or die;
?>
###BOM###
namespace ###NAMESPACEPREFIX###\Component\###ComponentNamespace###\Site\Helper;
use Joomla\CMS\Factory;
use Joomla\CMS\Document\Document;
use Joomla\CMS\Application\CMSApplication;
// No direct access to this file
\defined('_JEXEC') or die;
/**
* Helper class for checking loaded scripts and styles in the document header.
*
* @since 3.2.0
*/
class HeaderCheck
{
/**
* @var CMSApplication Application object
*
* @since 3.2.0
*/
protected CMSApplication $app;
/**
* @var Document object
*
* @since 3.2.0
*/
protected Document $document;
/**
* Construct the app and document
*
* @since 3.2.0
*/
public function __construct()
{
// Initializes the application object.
$this->app ??= Joomla___39403062_84fb_46e0_bac4_0023f766e827___Power::getApplication();
// Initializes the document object.
$this->document = $this->app->getDocument();
}
/**
* Check if a JavaScript file is loaded in the document head.
*
* @param string $scriptName Name of the script to check.
*
* @return bool True if the script is loaded, false otherwise.
* @since 3.2.0
*/
public function js_loaded(string $scriptName): bool
{
return $this->isLoaded($scriptName, 'scripts');
}
/**
* Check if a CSS file is loaded in the document head.
*
* @param string $scriptName Name of the stylesheet to check.
*
* @return bool True if the stylesheet is loaded, false otherwise.
* @since 3.2.0
*/
public function css_loaded(string $scriptName): bool
{
return $this->isLoaded($scriptName, 'styleSheets');
}
/**
* Abstract method to check if a given script or stylesheet is loaded.
*
* @param string $scriptName Name of the script or stylesheet.
* @param string $type Type of asset to check ('scripts' or 'styleSheets').
*
* @return bool True if the asset is loaded, false otherwise.
* @since 3.2.0
*/
private function isLoaded(string $scriptName, string $type): bool
{
// UIkit specific check
if ($this->isUIkit($scriptName))
{
return true;
}
$head_data = $this->document->getHeadData();
foreach (array_keys($head_data[$type]) as $script)
{
if (stristr($script, $scriptName))
{
return true;
}
}
return false;
}
/**
* Check for UIkit framework specific conditions.
*
* @param string $scriptName Name of the script or stylesheet.
*
* @return bool True if UIkit specific conditions are met, false otherwise.
* @since 3.2.0
*/
private function isUIkit(string $scriptName): bool
{
if (strpos($scriptName, 'uikit') !== false)
{
$get_template_name = $this->app->getTemplate('template')->template;
if (strpos($get_template_name, 'yoo') !== false)
{
return true;
}
}
return false;
}
}