1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-03 21:27:25 +02:00

Theme Preview working again. Use ?themepreview=themeDir

This commit is contained in:
Cameron
2021-01-01 14:05:51 -08:00
parent 1a510cb897
commit 78b0079a03
5 changed files with 67 additions and 42 deletions

View File

@@ -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);
}

View File

@@ -826,10 +826,9 @@ e107::getDebug()->logTime('Render Other');
echo e107::getParser()->parseTemplate("{ALERTS}");
}
if(defined("PREVIEWTHEME"))
{
themeHandler::showPreview();
e_theme::showPreview();
}

View File

@@ -1617,6 +1617,10 @@ class e107
{
$themedir = self::getPref('admintheme');
}
elseif(defined('PREVIEWTHEME'))
{
$themedir = PREVIEWTHEME;
}
else
{
$themedir= deftrue('USERTHEME', self::getPref('sitetheme'));

View File

@@ -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.
if(!defined('PREVIEWTHEME'))
{
$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);
}
$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))
{

View File

@@ -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 = "<br /><div class='indent'>".TPVLAN_1.".</div><br />";
$srch = array(
'{PREVIEWTHEMENAME}' => PREVIEWTHEME,
'{e_ADMIN}' => e_ADMIN
);*/
// $text = str_replace(array_keys($srch),$srch,$text);
echo "<div class='alert alert-warning alert-block'>Theme Preview Mode: <b>" . PREVIEWTHEME . "</b></div>";
// 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;
}
@@ -2989,22 +3024,6 @@ class themeHandler
exit;
}
static function showPreview()
{
e107::includeLan(e_LANGUAGEDIR.e_LANGUAGE."/admin/lan_theme.php");
$text = "<br /><div class='indent'>".TPVLAN_1.".</div><br />";
$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);
}