joomla_test/modules/mod_roknavmenu/lib/librokmenu/AbstractRokMenuLayout.php
2020-01-02 22:20:31 +07:00

116 lines
3.4 KiB
PHP

<?php
/**
* @version $Id: AbstractRokMenuLayout.php 4585 2012-10-27 01:44:54Z btowles $
* @author RocketTheme http://www.rockettheme.com
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/
require_once(dirname(__FILE__) . '/RokMenuLayout.php');
/**
*
*/
abstract class AbstractRokMenuLayout implements RokMenuLayout
{
protected $args = array();
protected $scripts = array();
protected $inlineScript = '';
protected $styles = array();
protected $inlineStyle = '';
protected $browser;
protected $staged = false;
public function __construct(&$args)
{
$this->args =& $args;
$this->browser = new RokBrowserCheck();
}
public function doStageHeader()
{
if ($this->staged) return;
$this->stageHeader();
$this->staged = true;
}
public function getInlineScript()
{
return $this->inlineScript;
}
public function getInlineStyle()
{
return $this->inlineStyle;
}
public function getStyleFiles()
{
return $this->styles;
}
public function getScriptFiles()
{
return $this->scripts;
}
/**
* Enqeues a script file after doing the browser specific check.
* @param $scriptFile the script file relative to the themes root dir
* @return void
*/
protected function addScript($scriptFile, $prefix = 'rokmenu_')
{
$full_path = $this->args['theme_path'] . '/' . dirname($scriptFile) . '/';
$relative_path = $this->args['theme_rel_path'] . '/' . dirname($scriptFile) . '/';
$url_path = $this->args['theme_url'] . '/' . dirname($scriptFile) . '/';
$file_checks = array_reverse($this->browser->getChecks($scriptFile));
foreach ($file_checks as $file_check) {
if (file_exists($full_path . $file_check) && is_readable($full_path . $file_check)) {
$this->scripts[$prefix . $file_check] = array(
'full' => $full_path . $file_check,
'relative' => $relative_path . $file_check,
'url' => $url_path . $file_check
);
break;
}
}
}
/**
* Add a css style file and any browser specific versions of it
* @param $styleFile the css style file relative to the themes root dir
* @return void
*/
protected function addStyle($styleFile, $prefix = 'rokmenu_')
{
$full_path = $this->args['theme_path'] . '/' . dirname($styleFile) . '/';
$relative_path = $this->args['theme_rel_path'] . '/' . dirname($styleFile) . '/';
$url_path = $this->args['theme_url'] . '/' . dirname($styleFile) . '/';
$file_checks = $this->browser->getChecks($styleFile);
foreach ($file_checks as $file_check) {
if (file_exists($full_path . $file_check) && is_readable($full_path . $file_check)) {
$this->styles[$prefix . $file_check] = array(
'full' => $full_path . $file_check,
'relative' => $relative_path . $file_check,
'url' => $url_path . $file_check
);
}
}
}
protected function appendInlineStyle($inlineStyle)
{
$this->inlineStyle .= $inlineStyle;
}
protected function appendInlineScript($inlineScript)
{
$this->inlineScript .= $inlineScript;
}
}