mirror of
https://github.com/e107inc/e107.git
synced 2025-08-01 20:30:39 +02:00
Issue #3068 - Added a warning for misconfigured theme layouts.
Moved e_layout class to menumanager_class.php file. Closes #4030 - Menu Layout detection test. themeLan() was failing with themes containing hyphens in the folder name.
This commit is contained in:
@@ -3837,7 +3837,7 @@ class e107
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$theme = e_THEME . preg_replace('#[^\w/]#', '', $theme) . '/languages/';
|
$theme = e_THEME . filter_var($theme) . '/languages/';
|
||||||
}
|
}
|
||||||
|
|
||||||
$cstring = 'themelan/'.$theme.$fname.($flat ? '_1' : '_0');
|
$cstring = 'themelan/'.$theme.$fname.($flat ? '_1' : '_0');
|
||||||
|
@@ -2038,7 +2038,12 @@ class e_menuManager
|
|||||||
// TODO Sorting, visibility, parameters and delete.
|
// TODO Sorting, visibility, parameters and delete.
|
||||||
// TODO Get THIS http://jsbin.com/odiqi3 working with iFrames!! XXX XXX
|
// TODO Get THIS http://jsbin.com/odiqi3 working with iFrames!! XXX XXX
|
||||||
|
|
||||||
class e_layout
|
|
||||||
|
/**
|
||||||
|
* Used only for the menu-selector at the moment.
|
||||||
|
* Class e_layout
|
||||||
|
*/
|
||||||
|
class e_mm_layout
|
||||||
{
|
{
|
||||||
private $menuData = array();
|
private $menuData = array();
|
||||||
private $iframe = false;
|
private $iframe = false;
|
||||||
@@ -2436,8 +2441,19 @@ class e_layout
|
|||||||
|
|
||||||
$srch = array('<?php', '?>');
|
$srch = array('<?php', '?>');
|
||||||
|
|
||||||
|
// replace LAN file load.
|
||||||
|
$themeFileContent = preg_replace("/e107::lan\(['|\"]theme.*\);/","e107::themeLan(null, '".$theme."');", $themeFileContent);
|
||||||
|
// $themeFileContent = preg_replace("/define\(['|\"]BOOTSTRAP['|\"].*;/", '', $themeFileContent);
|
||||||
|
// $themeFileContent = preg_replace("/define\(['|\"]FONTAWESOME['|\"].*;/", '', $themeFileContent);
|
||||||
|
$themeFileContent = preg_replace("/LAN_[\w]*/", '""', $themeFileContent);
|
||||||
|
$themeFileContent = preg_replace("/include_lan\(.*;/", '', $themeFileContent);
|
||||||
|
|
||||||
|
$themeFileContent = preg_replace("/define\(.*;/", '', $themeFileContent);
|
||||||
|
|
||||||
$themeFileContent = preg_replace('/\(\s?THEME\s?\./', '( e_THEME. "' . $theme . '/" .', str_replace($srch, '', $themeFileContent));
|
$themeFileContent = preg_replace('/\(\s?THEME\s?\./', '( e_THEME. "' . $theme . '/" .', str_replace($srch, '', $themeFileContent));
|
||||||
|
|
||||||
|
$themeFileContent = str_replace('USER_WIDTH', "''", $themeFileContent);
|
||||||
|
|
||||||
$themeFileContent = str_replace('tablestyle', $tp->filter($theme, 'wd') . "_tablestyle", $themeFileContent); // rename function to avoid conflicts while parsing.
|
$themeFileContent = str_replace('tablestyle', $tp->filter($theme, 'wd') . "_tablestyle", $themeFileContent); // rename function to avoid conflicts while parsing.
|
||||||
|
|
||||||
$themeFileContent = str_replace("class " . $theme . "_theme", "class " . $theme . "__theme", $themeFileContent); // rename class to avoid conflicts while parsing.
|
$themeFileContent = str_replace("class " . $theme . "_theme", "class " . $theme . "__theme", $themeFileContent); // rename class to avoid conflicts while parsing.
|
||||||
@@ -2445,13 +2461,35 @@ class e_layout
|
|||||||
$themeFileContent = str_replace('__DIR__', var_export(dirname($file), true), $themeFileContent);
|
$themeFileContent = str_replace('__DIR__', var_export(dirname($file), true), $themeFileContent);
|
||||||
$themeFileContent = str_replace('__FILE__', var_export($file, true), $themeFileContent);
|
$themeFileContent = str_replace('__FILE__', var_export($file, true), $themeFileContent);
|
||||||
|
|
||||||
try
|
|
||||||
|
|
||||||
|
if(PHP_MAJOR_VERSION > 6)
|
||||||
{
|
{
|
||||||
@eval($themeFileContent);
|
try
|
||||||
|
{
|
||||||
|
eval($themeFileContent);
|
||||||
|
}
|
||||||
|
catch(Error $e)
|
||||||
|
{
|
||||||
|
|
||||||
|
trigger_error("Couldn't parse theme.php file. ". $e->getMessage()."\n\n".$themeFileContent);
|
||||||
|
echo "<div class='alert alert-danger'>Couldn't parse theme.php: " . $e->getMessage() . " </div>";
|
||||||
|
file_put_contents(e_LOG."menuManagerParseDebug.log", $themeFileContent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch(ParseError $e)
|
else
|
||||||
{
|
{
|
||||||
echo "<div class='alert alert-danger'>Couldn't parse theme.php: " . $e->getMessage() . " </div>";
|
try
|
||||||
|
{
|
||||||
|
eval($themeFileContent);
|
||||||
|
}
|
||||||
|
catch(ParseError $e)
|
||||||
|
{
|
||||||
|
trigger_error("Couldn't parse theme.php file.". $e->getMessage());
|
||||||
|
echo "<div class='alert alert-danger'>Couldn't parse theme.php: " . $e->getMessage() . " </div>";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3050,3 +3088,5 @@ class e_layout
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
define("EMESSLAN_TITLE_INFO", "System Information");
|
/*define("EMESSLAN_TITLE_INFO", "System Information");
|
||||||
define("EMESSLAN_TITLE_ERROR", "Error");
|
define("EMESSLAN_TITLE_ERROR", "Error");
|
||||||
define("EMESSLAN_TITLE_SUCCESS", "Success");
|
define("EMESSLAN_TITLE_SUCCESS", "Success");
|
||||||
define("EMESSLAN_TITLE_WARNING", "Warning");
|
define("EMESSLAN_TITLE_WARNING", "Warning");
|
||||||
define("EMESSLAN_TITLE_DEBUG", "System Debug");
|
define("EMESSLAN_TITLE_DEBUG", "System Debug");*/
|
||||||
|
|
||||||
define("MAW_THEME_1", "Basic-Light theme by <a href='http://manatwork.info' title='Man at Work Premium and Custom e107 Themes' rel='external'>mcpeace</a>.");
|
define("MAW_THEME_1", "Basic-Light theme by <a href='http://manatwork.info' title='Man at Work Premium and Custom e107 Themes' rel='external'>mcpeace</a>.");
|
||||||
define("MAW_THEME_2", "<a id='copyright' href='http://manatwork.info' title='Man at Work Premium and Custom e107 Themes' rel='copyright'>maw</a>");
|
define("MAW_THEME_2", "<a id='copyright' href='http://manatwork.info' title='Man at Work Premium and Custom e107 Themes' rel='copyright'>maw</a>");
|
||||||
|
@@ -1314,13 +1314,14 @@ class e107Test extends \Codeception\Test\Unit
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
public function testThemeLan()
|
public function testThemeLan()
|
||||||
{
|
{
|
||||||
$res = null;
|
$result = e107::themeLan(null, 'basic-light');
|
||||||
$this->assertTrue($res);
|
var_dump($result);
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
/*
|
||||||
public function testLan()
|
public function testLan()
|
||||||
{
|
{
|
||||||
$res = null;
|
$res = null;
|
||||||
|
@@ -16,23 +16,26 @@
|
|||||||
|
|
||||||
protected function _before()
|
protected function _before()
|
||||||
{
|
{
|
||||||
// require_once(e_HANDLER."menumanager_class.php");
|
require_once(e_HANDLER."menumanager_class.php");
|
||||||
}
|
}
|
||||||
|
|
||||||
private function copydir( $src, $dst )
|
private function copydir( $src, $dst )
|
||||||
{
|
{
|
||||||
if(!is_dir($src) || is_dir($dst))
|
if(!is_dir($src) || is_dir($dst))
|
||||||
{
|
{
|
||||||
|
echo 'Skipping directory creation. '.$dst.' already exists.'."\n";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mkdir($dst);
|
||||||
$dir = opendir($src);
|
|
||||||
@mkdir(dirname($dst));
|
|
||||||
|
|
||||||
$DS = DIRECTORY_SEPARATOR ;
|
$DS = DIRECTORY_SEPARATOR ;
|
||||||
|
|
||||||
while(false !== ($file = readdir($dir)))
|
$files = scandir($src);
|
||||||
|
|
||||||
|
unset($files[0], $files[1]);
|
||||||
|
|
||||||
|
foreach($files as $file)
|
||||||
{
|
{
|
||||||
if($file != '.' && $file != '..')
|
if($file != '.' && $file != '..')
|
||||||
{
|
{
|
||||||
@@ -47,7 +50,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
closedir($dir);
|
// closedir($dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -63,7 +66,8 @@
|
|||||||
|
|
||||||
public function testGetLayouts()
|
public function testGetLayouts()
|
||||||
{
|
{
|
||||||
/* FIXME: https://github.com/e107inc/e107/issues/4030
|
//FIXME: https://github.com/e107inc/e107/issues/4030
|
||||||
|
|
||||||
$src1 = codecept_data_dir()."testcore";
|
$src1 = codecept_data_dir()."testcore";
|
||||||
$dest1 = e_THEME."testcore";
|
$dest1 = e_THEME."testcore";
|
||||||
|
|
||||||
@@ -74,6 +78,7 @@
|
|||||||
|
|
||||||
$this->copydir($src2,$dest2);
|
$this->copydir($src2,$dest2);
|
||||||
|
|
||||||
|
|
||||||
$src3 = codecept_data_dir()."basic-light";
|
$src3 = codecept_data_dir()."basic-light";
|
||||||
$dest3 = e_THEME."basic-light";
|
$dest3 = e_THEME."basic-light";
|
||||||
|
|
||||||
@@ -82,11 +87,11 @@
|
|||||||
$tests = array(
|
$tests = array(
|
||||||
|
|
||||||
'bootstrap3' => array (
|
'bootstrap3' => array (
|
||||||
'templates' => array( // template key and string length
|
'templates' => array (
|
||||||
'jumbotron_home' => 3132,
|
0 => 'jumbotron_full',
|
||||||
'modern_business_home' => 3842,
|
1 => 'jumbotron_home',
|
||||||
'jumbotron_full' => 2239,
|
2 => 'jumbotron_sidebar_right',
|
||||||
'jumbotron_sidebar_right' => 2973
|
3 => 'modern_business_home',
|
||||||
),
|
),
|
||||||
'menus' => array (
|
'menus' => array (
|
||||||
'jumbotron_home' => array ('1','2','3','4','5','6','7','8','9','10','11','12','13','14','100','101','102','103','104','105','106','107',),
|
'jumbotron_home' => array ('1','2','3','4','5','6','7','8','9','10','11','12','13','14','100','101','102','103','104','105','106','107',),
|
||||||
@@ -99,8 +104,8 @@
|
|||||||
|
|
||||||
'testkubrick' => array (
|
'testkubrick' => array (
|
||||||
'templates' => array(
|
'templates' => array(
|
||||||
'legacyCustom' => 267,
|
'legacyCustom',
|
||||||
'legacyDefault' => 308
|
'legacyDefault'
|
||||||
),
|
),
|
||||||
'menus' => array(
|
'menus' => array(
|
||||||
'legacyCustom' => array(),
|
'legacyCustom' => array(),
|
||||||
@@ -110,9 +115,9 @@
|
|||||||
|
|
||||||
'testcore' => array (
|
'testcore' => array (
|
||||||
'templates' => array (
|
'templates' => array (
|
||||||
'HOME' => 1494,
|
'HOME',
|
||||||
'FULL' => 1269,
|
'FULL',
|
||||||
'legacyDefault'=> 1654
|
'legacyDefault'
|
||||||
),
|
),
|
||||||
'menus' => array(
|
'menus' => array(
|
||||||
'HOME' => array('2', '3', '4'),
|
'HOME' => array('2', '3', '4'),
|
||||||
@@ -123,10 +128,10 @@
|
|||||||
|
|
||||||
'basic-light' => array(
|
'basic-light' => array(
|
||||||
'templates' => array(
|
'templates' => array(
|
||||||
'default' => 3274,
|
'default' ,
|
||||||
'default-home' => 3274,
|
'default-home',
|
||||||
'simple-page' => 1553,
|
'simple-page',
|
||||||
'wide-page' => 1235
|
'wide-page'
|
||||||
),
|
),
|
||||||
'menus' => array(
|
'menus' => array(
|
||||||
'default' => array('1', '2', '3', '4'),
|
'default' => array('1', '2', '3', '4'),
|
||||||
@@ -142,8 +147,19 @@
|
|||||||
foreach($tests as $theme=>$vars)
|
foreach($tests as $theme=>$vars)
|
||||||
{
|
{
|
||||||
|
|
||||||
$result = e_menu_layout::getLayouts($theme);
|
$result = e_mm_layout::getLayouts($theme);
|
||||||
|
$templates = array_keys($result['templates']);
|
||||||
|
$this->assertSame($vars['templates'], $templates);
|
||||||
|
|
||||||
|
foreach($vars['menus'] as $key=>$arr)
|
||||||
|
{
|
||||||
|
$this->assertSame($arr, $result['menus'][$key], $key." is different");
|
||||||
|
}
|
||||||
|
|
||||||
|
// $this->assertEquals($templates, $vars['templates']);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
foreach($vars['templates'] as $key=>$length)
|
foreach($vars['templates'] as $key=>$length)
|
||||||
{
|
{
|
||||||
$content = str_replace(array("\r", "\n"),'',$result['templates'][$key]);
|
$content = str_replace(array("\r", "\n"),'',$result['templates'][$key]);
|
||||||
@@ -158,14 +174,14 @@
|
|||||||
foreach($vars['menus'] as $key=>$arr)
|
foreach($vars['menus'] as $key=>$arr)
|
||||||
{
|
{
|
||||||
$this->assertEquals($arr, $result['menus'][$key], $key." is different");
|
$this->assertEquals($arr, $result['menus'][$key], $key." is different");
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1645,8 +1645,8 @@ ul.col-selection { background-color: #FCFDFF; }
|
|||||||
.admin-right-panel .alert a.close { text-shadow: 0 1px 0 #fff; color: rgba(0,0,0,0.6) }
|
.admin-right-panel .alert a.close { text-shadow: 0 1px 0 #fff; color: rgba(0,0,0,0.6) }
|
||||||
.admin-right-panel .dropdown-menu { background-color: rgb(252, 253, 255); color: rgba(0,0,0,0.75) }
|
.admin-right-panel .dropdown-menu { background-color: rgb(252, 253, 255); color: rgba(0,0,0,0.75) }
|
||||||
.admin-right-panel .dropdown-menu a { color: rgba(0,0,0,0.75); }
|
.admin-right-panel .dropdown-menu a { color: rgba(0,0,0,0.75); }
|
||||||
#admin-menus #sc-admin-help { background: #373737 }
|
#admin-menus #sc-admin-help ,
|
||||||
|
#admin-menus .admin-ui-nav-menu { background: #373737 }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user