function fetchElement($name, $value, &$node, $control_name) { jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $doc = JFactory::getDocument(); $lang = JFactory::getLanguage(); $parameter_sets = array(); $filter = $node->attributes('filter'); $exclude = $node->attributes('exclude'); // Load 2x Catalog Themes require_once dirname(__FILE__) . "/../RokNavMenu.php"; RokNavMenu::setFrontSideTemplate(); RokNavMenu::loadCatalogs(); foreach (RokNavMenu::$themes as $theme_name => $theme_info) { $lang_file_path = JPath::clean($theme_info['path'] . '/language/' . $lang->_lang . '.ini'); $this->loadLangFile($lang_file_path, $theme_info['fullname']); $parms_file_path = JPath::clean($theme_info['path'] . '/parameters.xml'); if (JFile::exists($parms_file_path)) { $parameters = new JForm($this->_parent->_raw, JPath::clean($parms_file_path)); $parameter_sets[$theme_name] = $parameters->getParams(); } } // 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"); $module_js_path = JURI::root(true) . '/modules/mod_roknavmenu/lib/js'; $doc->addScript($module_js_path . "/switcher" . $this->_getJSVersion() . ".js"); $doc->addScriptDeclaration("window.addEvent('domready', function() {new NavMenuSwitcher('paramtheme');});"); /** Get the Template Themes parameters **/ 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; } } $theme_path = $template_themes_path . '/' . $folder; $langfile = JPath::clean(JPATH_ROOT . $theme_path . '/language/' . $lang->_lang . '.ini'); if (JFile::exists($langfile)) { $lang->_load($langfile, 'roknavmenu_theme_template_' . $folder); } $param_file_path = $theme_path . '/parameters.xml'; if (JFile::exists(JPath::clean(JPATH_ROOT . $param_file_path))) { $parameters = new JForm($this->_parent->_raw, JPath::clean(JPATH_ROOT . $param_file_path)); $parameter_sets[$theme_path] = $parameters->getParams(); } } } } /** Get the Default Themes parameters **/ 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; } } $theme_path = $module_themes_path . '/' . $folder; $langfile = JPath::clean(JPATH_ROOT . $theme_path . '/language/' . $lang->_lang . '.ini'); if (JFile::exists($langfile)) { $lang->_load($langfile, 'roknavmenu_theme_module_' . $folder); } $param_file_path = $theme_path . '/parameters.xml'; $parameter_sets[$theme_path] = array(); if (JFile::exists(JPath::clean(JPATH_ROOT . $param_file_path))) { $parameters = new JForm($this->_parent->_raw, JPath::clean(JPATH_ROOT . $param_file_path)); $parameter_sets[$theme_path] = $parameters->getParams(); } } } } $parameter_renders = array(); reset($parameter_sets); $html = ''; // render a parameter set while (list($key, $val) = each($parameter_sets)) { $params =& $parameter_sets[$key]; $cls = basename($key); if (empty($params)) { $html .= '<p class="' . $cls . '"><span>' . JText::_('ROKNAVMENU_MSG_NO_THEME_OPTIONS_AVAILABLE') . ' </span></p>'; } else { //render an individual parameter for ($i = 0; $i < count($params); $i++) { $param =& $params[$i]; $html .= '<p class="' . $cls . '"><span>' . $param[0] . ':</span>' . $param[1] . '</p>'; } } } return $html; }