From a9660e3fe307c1c92a6c55d6efd4df7e85e36c21 Mon Sep 17 00:00:00 2001 From: ngleader Date: Thu, 22 Sep 2011 08:36:51 +0000 Subject: [PATCH] Fixed some bugs in TemplateHandler class git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9274 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/template/TemplateHandler.class.php | 30 +++++++++++-------- .../template/TemplateHandlerTest.class.php | 28 ++++++++++++++--- 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index bc0c062c9..88a6dbe8b 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -389,15 +389,18 @@ if($cmd == 'import') $cmd = 'load'; } - $isRemoteFile = !!preg_match('@^https?://@i', $attr['target']); - - if(!$isRemoteFile && !preg_match('@^\.?/@',$attr['target'])) $attr['target'] = './'.$attr['target']; - $metafile = ''; $pathinfo = pathinfo($attr['target']); - $relativeDir = $this->_getRelativeDir($pathinfo['dirname']); - if(!$isRemoteFile) $attr['target'] = $relativeDir.'/'.$pathinfo['basename']; + $isRemoteFile = !!preg_match('@^https?://@i', $attr['target']); + + if(!$isRemoteFile) { + if(!preg_match('@^\.?/@',$attr['target'])) $attr['target'] = './'.$attr['target']; + + $relativeDir = $this->_getRelativeDir($pathinfo['dirname']); + + $attr['target'] = $relativeDir.'/'.$pathinfo['basename']; + } switch($pathinfo['extension']) { @@ -411,18 +414,19 @@ } break; case 'js': - if($cmd == 'unload') { - $result = "Context::unloadFile('{$attr['target']}','{$attr['targetie']}');"; + if($cmd == 'load') { + $metafile = $attr['target']; + $result = "\$__tmp=array('{$attr['target']}','{$attr['type']}','{$attr['targetie']}','{$attr['index']}','{$attr['usecdn']}','{$attr['cdnprefix']}','{$attr['cdnversion']}');Context::loadFile(\$__tmp);unset(\$__tmp);"; } else { - $result = "\$__tmp=array('{$attr['target']}','{$attr['media']}','{$attr['targetie']}','{$attr['index']}','{$attr['usecdn']}','{$attr['cdnprefix']}','{$attr['cdnversion']}');Context::loadFile(\$__tmp);unset(\$__tmp);"; + $result = "Context::unloadFile('{$attr['target']}','{$attr['targetie']}');"; } break; case 'css': - if($cmd == 'unload') { - $result = "Context::unloadFile('{$attr['target']}','{$attr['targetie']}','{$attr['media']}');"; - } else { + if($cmd == 'load') { $metafile = $attr['target']; - $result = "\$__tmp=array('{$attr['target']}','{$attr['type']}','{$attr['targetie']}','{$attr['index']}','{$attr['usecdn']}','{$attr['cdnprefix']}','{$attr['cdnversion']}');Context::loadFile(\$__tmp);unset(\$__tmp);"; + $result = "\$__tmp=array('{$attr['target']}','{$attr['media']}','{$attr['targetie']}','{$attr['index']}','{$attr['usecdn']}','{$attr['cdnprefix']}','{$attr['cdnversion']}');Context::loadFile(\$__tmp);unset(\$__tmp);"; + } else { + $result = "Context::unloadFile('{$attr['target']}','{$attr['targetie']}','{$attr['media']}');"; } break; } diff --git a/tests/classes/template/TemplateHandlerTest.class.php b/tests/classes/template/TemplateHandlerTest.class.php index 7b104f335..42759109c 100644 --- a/tests/classes/template/TemplateHandlerTest.class.php +++ b/tests/classes/template/TemplateHandlerTest.class.php @@ -103,11 +103,31 @@ class TemplateHandlerTest extends PHPUnit_Framework_TestCase '
This is another dummy
', 'compile(\'tests/classes\',\'sample.html\') ?>
This is another dummy
' ), + // + array( + '', + '' + ), // array( '', '' ), + // + array( + '', + '' + ), + // + array( + '', + '' + ), + // + array( + '', + '' + ), // comment array( '', @@ -118,12 +138,12 @@ class TemplateHandlerTest extends PHPUnit_Framework_TestCase '', 'foo){ ?>' ), - // relative path + // relative path1 array( '', '' ), - // relative path + // relative path2 array( '', '' @@ -136,7 +156,7 @@ class TemplateHandlerTest extends PHPUnit_Framework_TestCase // issue 103 array( '', - '' + '' ), // issue 135 array( @@ -156,7 +176,7 @@ class TemplateHandlerTest extends PHPUnit_Framework_TestCase */ public function testParse($tpl, $expected) { - $tmpl = new TemplateHandler(); + $tmpl = TemplateHandler::getInstance(); $tmpl->init(dirname(__FILE__), 'sample.html'); $result = $tmpl->parse($tpl, $expected);