list_themes(); $smarty->assign_by_ref('themes', $themes); $theme_options = $themelib->list_theme_options($a_theme); $smarty->assign('theme_options', $theme_options); $themePrefs = TikiLib::lib('prefs')->getThemePrefs(); $smarty->assign('themePrefs', $themePrefs); // get thumbnail if there is one $thumbfile = $themelib->get_thumbnail_file($prefs['site_theme'], $prefs['site_theme_option']); if (empty($thumbfile)) { $thumbfile = $themelib->get_thumbnail_file($prefs['site_theme']); } if (empty($thumbfile)) { $thumbfile = 'img/trans.png'; } $smarty->assign('thumbfile', $thumbfile); // hash of themes and their options and their thumbnail images if ($prefs['feature_jquery'] == 'y') { $js = 'var theme_options = {'; foreach ($themes as $theme => $value) { $js .= "\n'$theme':['" . $themelib->get_thumbnail_file($theme, '') . '\',{'; $options = $themelib->list_theme_options($theme); if ($options) { foreach ($options as $option) { $js .= "'$option':'" . $themelib->get_thumbnail_file($theme, $option) . '\','; } $js = substr($js, 0, strlen($js) - 1) . '}'; } else { $js .= '}'; } $js .= '],'; } $js = substr($js, 0, strlen($js) - 1); $js .= '};'; //Setup theme layouts array matching themes and theme:options with their respective layouts $js .= 'var theme_layouts = '; foreach ($themes as $theme => $value) { $theme_layouts[$theme] = $csslib->list_user_selectable_layouts($theme); $options = $themelib->list_theme_options($theme); if ($options) { foreach ($options as $option) { $theme_layouts[$theme . ':' . $option] = $csslib->list_user_selectable_layouts($theme, $option); } } } //encode $theme_layouts into json to allow js below to fetch layouts based on theme selected by user $theme_layouts_js = json_encode($theme_layouts); $js .= $theme_layouts_js . ";"; // JS to handle theme/option changes client-side // the var (theme_options) has to be declared in the same block for AJAX call scope $none = json_encode(tr('None')); $headerlib->add_js( <<').attr('value','').text($none)); if (themeDropDown.val()) { \$.each(ops[1], function(i, val) { optionDropDown.append(\$('