- {block} tags can be nested now

This commit is contained in:
Uwe.Tews
2009-03-28 12:20:53 +00:00
parent 7f00b38f34
commit 53e31d8162
3 changed files with 9 additions and 6 deletions

View File

@@ -1,4 +1,5 @@
03/28/2009 03/28/2009
- {block} tags can be nested now
- md5 hash function replace with crc32 for speed optimization - md5 hash function replace with crc32 for speed optimization
- file order for exted resource inverted - file order for exted resource inverted
- clear_compiled_tpl and clear_cache_all will not touch .svn folder any longer - clear_compiled_tpl and clear_cache_all will not touch .svn folder any longer

View File

@@ -26,7 +26,8 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
$this->optional_attributes = array('assign'); $this->optional_attributes = array('assign');
// check and get attributes // check and get attributes
$_attr = $this->_get_attributes($args); $_attr = $this->_get_attributes($args);
$this->_open_tag('block', $_attr); $save = array($_attr, $compiler->template->extracted_compiled_code, $compiler->template->extract_code);
$this->_open_tag('block', $save);
$compiler->template->extract_code = true; $compiler->template->extract_code = true;
$compiler->template->extracted_compiled_code = ''; $compiler->template->extracted_compiled_code = '';
$compiler->template->has_code = false; $compiler->template->has_code = false;

View File

@@ -28,18 +28,19 @@ class Smarty_Internal_Compile_BlockClose extends Smarty_Internal_CompileBase {
// check and get attributes // check and get attributes
$this->optional_attributes = array('name'); $this->optional_attributes = array('name');
$_attr = $this->_get_attributes($args); $_attr = $this->_get_attributes($args);
$saved_attr = $this->_close_tag(array('block')); $saved_data = $this->_close_tag(array('block'));
// if name does match to opening tag // if name does match to opening tag
if (isset($_attr['name']) && $saved_attr['name'] != $_attr['name']) { if (isset($_attr['name']) && $saved_data[0]['name'] != $_attr['name']) {
$this->compiler->trigger_template_error('mismatching name attributes "' . $saved_attr['name'] . '" and "' . $_attr['name'] . '"'); $this->compiler->trigger_template_error('mismatching name attributes "' . $saved_data[0]['name'] . '" and "' . $_attr['name'] . '"');
} }
$_name = trim($saved_attr['name'], "'"); $_name = trim($saved_data[0]['name'], "'");
if (!empty($compiler->template->block_data[$_name])) { if (!empty($compiler->template->block_data[$_name])) {
$_output = $compiler->template->block_data[$_name]['compiled']; $_output = $compiler->template->block_data[$_name]['compiled'];
} else { } else {
$_output = $compiler->template->extracted_compiled_code; $_output = $compiler->template->extracted_compiled_code;
} }
$compiler->template->extracted_compiled_code = ''; $compiler->template->extracted_compiled_code = $saved_data[1];
$compiler->template->extract_code = $saved_data[2];
return $_output; return $_output;
} }
} }