diff --git a/class2.php b/class2.php index 00d7dc641..946348c07 100755 --- a/class2.php +++ b/class2.php @@ -1377,7 +1377,7 @@ if(!defined('THEME')) { e_theme::initTheme($pref['admintheme']); } - elseif (USERTHEME !== false && e_ADMIN_AREA === false) + elseif (deftrue('USERTHEME') && e_ADMIN_AREA === false) { e_theme::initTheme(USERTHEME); } diff --git a/e107_core/templates/header_default.php b/e107_core/templates/header_default.php index a617bc132..ac5c77654 100644 --- a/e107_core/templates/header_default.php +++ b/e107_core/templates/header_default.php @@ -826,10 +826,9 @@ e107::getDebug()->logTime('Render Other'); echo e107::getParser()->parseTemplate("{ALERTS}"); } - - if(defined("PREVIEWTHEME")) + if(defined("PREVIEWTHEME")) { - themeHandler::showPreview(); + e_theme::showPreview(); } diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php index e02fc66ad..2d59dd1b2 100644 --- a/e107_handlers/e107_class.php +++ b/e107_handlers/e107_class.php @@ -1617,6 +1617,10 @@ class e107 { $themedir = self::getPref('admintheme'); } + elseif(defined('PREVIEWTHEME')) + { + $themedir = PREVIEWTHEME; + } else { $themedir= deftrue('USERTHEME', self::getPref('sitetheme')); diff --git a/e107_handlers/menu_class.php b/e107_handlers/menu_class.php index c052e7d2e..51363daf8 100644 --- a/e107_handlers/menu_class.php +++ b/e107_handlers/menu_class.php @@ -368,15 +368,16 @@ class e_menu private function getDataLegacy() { $sql = e107::getDb(); - $menu_layout_field = THEME_LAYOUT!=e107::getPref('sitetheme_deflayout') ? THEME_LAYOUT : ""; + $menu_layout_field = THEME_LAYOUT != e107::getPref('sitetheme_deflayout') ? THEME_LAYOUT : ""; // e107::getCache()->CachePageMD5 = md5(e_LANGUAGE.$menu_layout_field); // Disabled by line 93 of Cache class. //FIXME add a function to the cache class for this. - $cacheData = e107::getCache()->retrieve_sys("menus_".USERCLASS_LIST."_".md5(e_LANGUAGE.$menu_layout_field)); - - // $menu_data = json_decode($cacheData,true); - $menu_data = e107::unserialize($cacheData); + if(!defined('PREVIEWTHEME')) + { + $cacheData = e107::getCache()->retrieve_sys("menus_".USERCLASS_LIST."_".md5(e_LANGUAGE.$menu_layout_field)); + $menu_data = e107::unserialize($cacheData); + } $eMenuArea = array(); // $eMenuList = array(); @@ -385,7 +386,9 @@ class e_menu if(empty($menu_data) || !is_array($menu_data)) { - $menu_qry = 'SELECT * FROM #menus WHERE menu_location > 0 AND menu_class IN ('.USERCLASS_LIST.') AND menu_layout = "'.$menu_layout_field.'" ORDER BY menu_location,menu_order'; + $menu_qry = 'SELECT * FROM #menus WHERE menu_location > 0 AND menu_class IN ('.USERCLASS_LIST.') '; + $menu_qry .= !defined('PREVIEWTHEME') ? 'AND menu_layout = "'.$menu_layout_field.'" ' : ''; + $menu_qry .= 'ORDER BY menu_location,menu_order'; if($sql->gen($menu_qry)) { diff --git a/e107_handlers/theme_handler.php b/e107_handlers/theme_handler.php index b92feeba7..0a6e75e0a 100644 --- a/e107_handlers/theme_handler.php +++ b/e107_handlers/theme_handler.php @@ -90,8 +90,16 @@ class e_theme if($theme === null) { $theme = deftrue('USERTHEME', e107::pref('core','sitetheme')); + + if(defined('PREVIEWTHEME')) + { + $theme = PREVIEWTHEME; + } + } + + if(!is_readable(e_THEME.$theme."/layouts/".$key."_layout.html") || !is_readable(e_THEME.$theme."/theme.html")) { return false; @@ -122,6 +130,25 @@ class e_theme return $LAYOUT; } + public static function showPreview() + { + + /* + e107::includeLan(e_LANGUAGEDIR.e_LANGUAGE."/admin/lan_theme.php"); + $text = "
".TPVLAN_1.".

"; + + $srch = array( + '{PREVIEWTHEMENAME}' => PREVIEWTHEME, + '{e_ADMIN}' => e_ADMIN + );*/ + + // $text = str_replace(array_keys($srch),$srch,$text); + echo "
Theme Preview Mode: " . PREVIEWTHEME . "
"; + + // global $ns; + // $ns->tablerender(TPVLAN_2, $text); + } + /** * Load library dependencies. @@ -1050,24 +1077,33 @@ class e_theme } - private static function initThemePreview($id) + private static function initThemePreview($themeDir) { - $themeobj = new themeHandler; - $themeArray = e107::getTheme()->getList('id'); - $id = (int) $id; + $themeDir = filter_var($themeDir); + $themeDir = basename($themeDir); - $themeDef = $themeobj->findDefault($themeArray[$id]); + $themeobj = new themeHandler; + $themeDef = $themeobj->findDefault($themeDir); define('THEME_LAYOUT', $themeDef); - define('PREVIEWTHEME', e_THEME . $themeArray[$id] . '/'); - define('PREVIEWTHEMENAME', $themeArray[$id]); - define('THEME', e_THEME . $themeArray[$id] . '/'); - define('THEME_ABS', e_THEME_ABS . $themeArray[$id] . '/'); + define('PREVIEWTHEME', $themeDir); - $legacy = (file_exists(e_THEME_ABS . $themeArray[$id] . '/theme.xml') === false); + define('THEME', e_THEME . $themeDir . '/'); + define('THEME_ABS', e_THEME_ABS . $themeDir . '/'); + $legacy = (file_exists(e_THEME . $themeDir . '/theme.xml') === false); + + if($legacy === true) + { + $version = 1.0; + } + else + { + $version = (file_exists(e_THEME . $themeDir . '/theme.html')) ? 2.3 : 2.0; + } + + define('THEME_VERSION', $version); define('THEME_LEGACY', $legacy); - unset($action); } @@ -1117,10 +1153,9 @@ class e_theme e107::getDebug()->logTime('Theme Check'); // e_QUERY not set when in single entry mod - if (ADMIN && strpos($_SERVER['QUERY_STRING'], 'themepreview') !== false) + if (getperms('0') && !empty($_GET['themepreview'])) { - list($action, $id) = explode('.', $_SERVER['QUERY_STRING']); - self::initThemePreview($id); + self::initThemePreview($_GET['themepreview']); self::initThemeLayout($pref); return; } @@ -2988,24 +3023,8 @@ class themeHandler echo "\n"; exit; } - - static function showPreview() - { - e107::includeLan(e_LANGUAGEDIR.e_LANGUAGE."/admin/lan_theme.php"); - $text = "
".TPVLAN_1.".

"; - $srch = array( - '{PREVIEWTHEMENAME}' => PREVIEWTHEMENAME, - '{e_ADMIN}' => e_ADMIN - ); - $text = str_replace(array_keys($srch),$srch,$text); - - global $ns; - $ns->tablerender(TPVLAN_2, $text); - } - - /** * Set Theme as Main Theme. * @@ -3178,9 +3197,9 @@ class themeHandler return e107::getParser()->filter($_POST['layout_default'], 'w'); } - $l = $this->themeArray[$theme]; + // $l = $this->themeArray[$theme]; - if(!$l) + // if(!$l) { $l = e107::getTheme($theme)->get(); // $this->getThemeInfo($theme); }