1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-04 05:37:32 +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']); e_theme::initTheme($pref['admintheme']);
} }
elseif (USERTHEME !== false && e_ADMIN_AREA === false) elseif (deftrue('USERTHEME') && e_ADMIN_AREA === false)
{ {
e_theme::initTheme(USERTHEME); e_theme::initTheme(USERTHEME);
} }

View File

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

View File

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

View File

@@ -373,10 +373,11 @@ class e_menu
// e107::getCache()->CachePageMD5 = md5(e_LANGUAGE.$menu_layout_field); // Disabled by line 93 of Cache class. // 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. //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)); $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); $menu_data = e107::unserialize($cacheData);
}
$eMenuArea = array(); $eMenuArea = array();
// $eMenuList = array(); // $eMenuList = array();
@@ -385,7 +386,9 @@ class e_menu
if(empty($menu_data) || !is_array($menu_data)) 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)) if($sql->gen($menu_qry))
{ {

View File

@@ -90,8 +90,16 @@ class e_theme
if($theme === null) if($theme === null)
{ {
$theme = deftrue('USERTHEME', e107::pref('core','sitetheme')); $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")) if(!is_readable(e_THEME.$theme."/layouts/".$key."_layout.html") || !is_readable(e_THEME.$theme."/theme.html"))
{ {
return false; return false;
@@ -122,6 +130,25 @@ class e_theme
return $LAYOUT; 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. * Load library dependencies.
@@ -1050,24 +1077,33 @@ class e_theme
} }
private static function initThemePreview($id) private static function initThemePreview($themeDir)
{ {
$themeobj = new themeHandler; $themeDir = filter_var($themeDir);
$themeArray = e107::getTheme()->getList('id'); $themeDir = basename($themeDir);
$id = (int) $id;
$themeDef = $themeobj->findDefault($themeArray[$id]); $themeobj = new themeHandler;
$themeDef = $themeobj->findDefault($themeDir);
define('THEME_LAYOUT', $themeDef); define('THEME_LAYOUT', $themeDef);
define('PREVIEWTHEME', e_THEME . $themeArray[$id] . '/'); define('PREVIEWTHEME', $themeDir);
define('PREVIEWTHEMENAME', $themeArray[$id]);
define('THEME', e_THEME . $themeArray[$id] . '/');
define('THEME_ABS', e_THEME_ABS . $themeArray[$id] . '/');
$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); define('THEME_LEGACY', $legacy);
unset($action);
} }
@@ -1117,10 +1153,9 @@ class e_theme
e107::getDebug()->logTime('Theme Check'); e107::getDebug()->logTime('Theme Check');
// e_QUERY not set when in single entry mod // 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($_GET['themepreview']);
self::initThemePreview($id);
self::initThemeLayout($pref); self::initThemeLayout($pref);
return; return;
} }
@@ -2989,22 +3024,6 @@ class themeHandler
exit; 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. * Set Theme as Main Theme.
@@ -3178,9 +3197,9 @@ class themeHandler
return e107::getParser()->filter($_POST['layout_default'], 'w'); 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); $l = e107::getTheme($theme)->get(); // $this->getThemeInfo($theme);
} }