diff options
| author | uwe.tews@googlemail.com <uwe.tews@googlemail.com> | 2010-09-17 18:10:10 +0000 |
|---|---|---|
| committer | uwe.tews@googlemail.com <uwe.tews@googlemail.com> | 2010-09-17 18:10:10 +0000 |
| commit | 18bcfa2ba796128a66129c65484d7953eb968131 (patch) | |
| tree | 7845875782d554df0b4b32317bb65ad3987fa509 /libs/sysplugins | |
| parent | 66752cd790ac9ee52e278127f1d0297f2cc4f187 (diff) | |
| download | smarty-18bcfa2ba796128a66129c65484d7953eb968131.tar.gz smarty-18bcfa2ba796128a66129c65484d7953eb968131.tar.bz2 smarty-18bcfa2ba796128a66129c65484d7953eb968131.zip | |
- bugfix {$smarty.template} and {$smarty.current_dir} did not compile correctly within {block} tags
- bugfix corrected error message on missing template files in extends resource
- bugfix untility compileAllTemplates() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS
Diffstat (limited to 'libs/sysplugins')
4 files changed, 22 insertions, 8 deletions
diff --git a/libs/sysplugins/smarty_internal_compile_block.php b/libs/sysplugins/smarty_internal_compile_block.php index 4e10a396..76e8f20b 100644 --- a/libs/sysplugins/smarty_internal_compile_block.php +++ b/libs/sysplugins/smarty_internal_compile_block.php @@ -34,6 +34,8 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase { $compiler->nocache = true; } } + // set flag for {block} tag + $compiler->smarty->inheritance = true; // must merge includes $this->compiler->smarty->merge_compiled_includes = true; @@ -109,6 +111,8 @@ class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase { $compiler->smarty->merge_compiled_includes = $saved_data[2]; // $_output content has already nocache code processed $compiler->suppressNocacheProcessing = true; + // reset flag + $compiler->smarty->inheritance = false; return $_output; } } diff --git a/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/libs/sysplugins/smarty_internal_compile_private_special_variable.php index cd90a119..ec628b05 100644 --- a/libs/sysplugins/smarty_internal_compile_private_special_variable.php +++ b/libs/sysplugins/smarty_internal_compile_private_special_variable.php @@ -56,11 +56,21 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C break; case 'template': - $_template_name = $compiler->template->template_resource; + if ($compiler->smarty->inheritance) { + $ptr = $compiler->template->parent; + } else { + $ptr = $compiler->template; + } + $_template_name = $ptr->template_resource; return "'$_template_name'"; case 'current_dir': - $_template_dir_name = dirname($compiler->template->getTemplateFilepath()); + if ($compiler->smarty->inheritance) { + $ptr = $compiler->template->parent; + } else { + $ptr = $compiler->template; + } + $_template_dir_name = dirname($ptr->getTemplateFilepath()); return "'$_template_dir_name'"; case 'version': diff --git a/libs/sysplugins/smarty_internal_resource_extends.php b/libs/sysplugins/smarty_internal_resource_extends.php index 5db8e761..891c950f 100644 --- a/libs/sysplugins/smarty_internal_resource_extends.php +++ b/libs/sysplugins/smarty_internal_resource_extends.php @@ -55,6 +55,9 @@ class Smarty_Internal_Resource_Extends { $_files = explode('|', $_template->resource_name); foreach ($_files as $_file) { $_filepath = $_template->buildTemplateFilepath ($_file); + if ($_filepath === false) { + throw new SmartyException("Unable to load template 'file : {$_file}'"); + } if ($_filepath !== false) { if ($_template->security) { $_template->smarty->security_handler->isTrustedResourceDir($_filepath); @@ -90,9 +93,6 @@ class Smarty_Internal_Resource_Extends { $_files = array_reverse($this->allFilepaths); foreach ($_files as $_filepath) { // read template file - if ($_filepath === false) { - throw new SmartyException("Unable to load template 'file : {$_file}'"); - } if ($_filepath != $_files[0]) { $_template->properties['file_dependency'][sha1($_filepath)] = array($_filepath, filemtime($_filepath)); } diff --git a/libs/sysplugins/smarty_internal_utility.php b/libs/sysplugins/smarty_internal_utility.php index e3cb6cec..8759cbd3 100644 --- a/libs/sysplugins/smarty_internal_utility.php +++ b/libs/sysplugins/smarty_internal_utility.php @@ -67,10 +67,10 @@ class Smarty_Internal_Utility { $_file = $_fileinfo->getFilename(); if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue; if ($_fileinfo->getPath() == substr($_dir, 0, -1)) { - $_template_file = $_file; + $_template_file = $_file; } else { - $_template_file = substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file; - } + $_template_file = substr(substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file,1); + } echo '<br>', $_dir, '---', $_template_file; flush(); $_start_time = microtime(true); |
