From 8a55d17cefc7e636fd9ed9d60abc46eca6552535 Mon Sep 17 00:00:00 2001 From: taggon Date: Thu, 3 Nov 2011 03:56:16 +0000 Subject: [PATCH] issue 831 : Fixed a bug that an error occured if conditional statements include line feeds. issue 843 : Fixed a bug that spaces at the back of template statements are removed. git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9795 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/template/TemplateHandler.class.php | 4 ++-- tests/classes/template/TemplateHandlerTest.php | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index ceeebfb6d..6ee48ba09 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -187,7 +187,7 @@ class TemplateHandler { $buff = $this->_parseInline($buff); // include, unload/load, import - $buff = preg_replace_callback('/{(@[\s\S]+?|(?=\$\w+|_{1,2}[A-Z]+|[!\(+-]|\w+(?:\(|::)|\d+|[\'"].*?[\'"]).+?)}|<(!--[#%])?(include|import|(un)?load(?(4)|(?:_js_plugin)?))(?(2)\("([^"]+)")(.*?)(?(2)\)--|\/)>|(\s*)/', array($this, '_parseResource'), $buff); + $buff = preg_replace_callback('/{(@[\s\S]+?|(?=\$\w+|_{1,2}[A-Z]+|[!\(+-]|\w+(?:\(|::)|\d+|[\'"].*?[\'"]).+?)}|<(!--[#%])?(include|import|(un)?load(?(4)|(?:_js_plugin)?))(?(2)\("([^"]+)")(.*?)(?(2)\)--|\/)>|(\s*)/', array($this, '_parseResource'), $buff); // remove block which is a virtual tag and remove comments $buff = preg_replace('@|\s?@is','',$buff); @@ -508,7 +508,7 @@ class TemplateHandler { $m[7] = substr($m[7],1); if(!preg_match('/^(?:((?:end)?(?:if|switch|for(?:each)?|while)|end)|(else(?:if)?)|(break@)?(case|default)|(break))$/', $m[7], $mm)) return ''; if($mm[1]) { - if($mm[1]{0} == 'e') return ''; + if($mm[1]{0} == 'e') return ''.$m[9]; $precheck = ''; if($mm[1] == 'switch') { diff --git a/tests/classes/template/TemplateHandlerTest.php b/tests/classes/template/TemplateHandlerTest.php index 2b975bc1e..364a22500 100644 --- a/tests/classes/template/TemplateHandlerTest.php +++ b/tests/classes/template/TemplateHandlerTest.php @@ -46,8 +46,8 @@ class TemplateHandlerTest extends PHPUnit_Framework_TestCase ), // ~ array( - 'LinkHello, world', - 'Linkcond){ ?>Hello, world' + 'LinkHello, world ', + 'Linkcond){ ?>Hello, world ' ), // ~ array( @@ -219,6 +219,11 @@ class TemplateHandlerTest extends PHPUnit_Framework_TestCase 'mobile', 'oBodex->display_extra_images[\'mobile\'] && $__Context->arr_extra && $__Context->arr_extra->bodex->mobile){ ?>mobile' ), + // issue 831 + array( + "
  • class=\"on\">", + "
  • act, array(\n'dispNmsAdminGroupList',\n'dispNmsAdminInsertGroup',\n'dispNmsAdminGroupInfo',\n'dispNmsAdminDeleteGroup'))){ ?>class=\"on\">" + ), ); }