- {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
- {block} tags can be nested now
- md5 hash function replace with crc32 for speed optimization
- file order for exted resource inverted
- 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');
// check and get attributes
$_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->extracted_compiled_code = '';
$compiler->template->has_code = false;

View File

@@ -28,18 +28,19 @@ class Smarty_Internal_Compile_BlockClose extends Smarty_Internal_CompileBase {
// check and get attributes
$this->optional_attributes = array('name');
$_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 (isset($_attr['name']) && $saved_attr['name'] != $_attr['name']) {
$this->compiler->trigger_template_error('mismatching name attributes "' . $saved_attr['name'] . '" and "' . $_attr['name'] . '"');
if (isset($_attr['name']) && $saved_data[0]['name'] != $_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])) {
$_output = $compiler->template->block_data[$_name]['compiled'];
} else {
$_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;
}
}