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

162 lines
5.0 KiB
PHP

<?php
/**
* @version $Id: themelist.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
*/
// Check to ensure this file is within the rest of the framework
defined('JPATH_BASE') or die();
/**
* Renders a file list from a directory in the current templates directory
*/
class JElementThemelist extends JElement
{
/**
* Element name
*
* @access protected
* @var string
*/
var $_name = 'TemplateFilelist';
var $_front_side_template;
function fetchElement($name, $value, &$node, $control_name)
{
jimport( 'joomla.filesystem.folder' );
jimport( 'joomla.filesystem.file' );
$filter = $node->attributes('filter');
$exclude = $node->attributes('exclude');
$options = array ();
// Load 2x Catalog Themes
require_once(dirname(__FILE__) . "/../RokNavMenu.php");
RokNavMenu::setFrontSideTemplate();
RokNavMenu::loadCatalogs();
foreach(RokNavMenu::$themes as $theme_name => $theme_info){
$options[] = JHtml::_('select.option', $theme_name, $theme_info['fullname']);
}
// path to directory
$template_themes_path = '/templates/'.$this->_getFrontSideTemplate().'/html/mod_roknavmenu/themes';
$template_themes_full_path = JPath::clean(JPATH_ROOT.$template_themes_path);
$template_theme_text = JText::_("Template theme");
$module_themes_path = '/modules/mod_roknavmenu/themes';
$module_themes_full_path = JPath::clean(JPATH_ROOT.$module_themes_path);
$module_theme_text = JText::_("Default theme");
/**
* check for old school formatter and layout
*/
if ($this->_getOldFormatter() || $this->_getOldLayout()) {
return JText::sprintf("ROKNAVMENU.MSG.USING_OLD_FORMATTERS_AND_LAYOUTS", ($this->_getOldFormatter())? '<br/>'.$this->_getOldFormatter():'', ($this->_getOldLayout())?'<br/>'.$this->_getOldLayout():'');
}
if (!$node->attributes('hide_none'))
{
$options[] = JHtml::_('select.option', '-1', '- '.JText::_('Do not use').' -');
}
if (!$node->attributes('hide_default'))
{
$options[] = JHtml::_('select.option', '', '- '.JText::_('Use default').' -');
}
/** Get the Template Themes **/
if (JFolder::exists($template_themes_full_path) && !JFile::exists($template_themes_full_path."/catalog.php") ) {
$folders = JFolder::folders($template_themes_full_path, $filter);
if ( is_array($folders) )
{
reset($folders);
while (list($key, $val) = each($folders)) {
$folder =& $folders[$key];
if ($exclude)
{
if (preg_match( chr( 1 ) . $exclude . chr( 1 ), $folder ))
{
continue;
}
}
$options[] = JHtml::_('select.option', $template_themes_path.'/'.$folder, $template_theme_text." - ".$folder);
}
}
}
/** Get the Default Themes **/
if (JFolder::exists($module_themes_full_path) && !JFile::exists($module_themes_full_path."/catalog.php")) {
$folders = JFolder::folders($module_themes_full_path, $filter);
if ( is_array($folders) )
{
reset($folders);
while (list($key, $val) = each($folders)) {
$folder =& $folders[$key];
if ($exclude)
{
if (preg_match( chr( 1 ) . $exclude . chr( 1 ), $folder ))
{
continue;
}
}
$options[] = JHtml::_('select.option', $module_themes_path.'/'.$folder, $module_theme_text. " - ". $folder);
}
}
}
return JHtml::_('select.genericlist', $options, ''.$control_name.'['.$name.']', 'class="inputbox"', 'value', 'text', $value, "param$name");
}
function _getFrontSideTemplate() {
if (empty($this->_front_side_template)) {
$db =JFactory::getDBO();
// Get the current default template
$query = ' SELECT template '
.' FROM #__template_styles '
.' WHERE client_id = 0 '
.' AND home = 1 ';
$db->setQuery($query);
$defaultemplate = $db->loadResult();
$this->_front_side_template = $defaultemplate;
}
return $this->_front_side_template;
}
function _getOldFormatter() {
$paths = array(
JPath::clean('/templates/'.$this->_getFrontSideTemplate().'/html/mod_roknavmenu/formatters/default.php'),
JPath::clean('/templates/'.$this->_getFrontSideTemplate().'/html/mod_roknavmenu/formatter.php'),
JPath::clean('/modules/mod_roknavmenu/formatters/default.php')
);
for ($i = 0; $i < count($paths); $i++){
if (JFile::exists(JPATH_ROOT.$paths[$i])){
return $paths[$i];
}
}
return false;
}
function _getOldLayout() {
$paths = array(
JPath::clean('/templates/'.$this->_getFrontSideTemplate().'/html/mod_roknavmenu/layouts/default.php'),
JPath::clean('/templates/'.$this->_getFrontSideTemplate().'/html/mod_roknavmenu/default.php'),
JPath::clean('/modules/mod_roknavmenu/tmpl/default.php')
);
for ($i = 0; $i < count($paths); $i++){
if (JFile::exists(JPATH_ROOT.$paths[$i])){
return $paths[$i];
}
}
return false;
}
}