1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-30 21:40:43 +02:00

- Add template variable S_BLOCK_NAME

- Modify template::alter_block_array() so it supports modification of nested blocks
- Add (incomplete) tests for template::alter_block_array()


git-svn-id: file:///svn/phpbb/trunk@9116 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Chris Smith
2008-11-25 00:31:32 +00:00
parent 332521a369
commit c95f0c7935
4 changed files with 322 additions and 10 deletions

View File

@@ -22,6 +22,7 @@ class phpbb_template_template_test extends phpbb_test_case
{
private $template;
// Keep the contents of the cache for debugging?
const PRESERVE_CACHE = true;
private function display($handle)
@@ -359,5 +360,261 @@ class phpbb_template_template_test extends phpbb_test_case
unset($config['tpl_allow_php']);
}
public static function alter_block_array_data()
{
return array(
array(
'outer',
array('VARIABLE' => 'before'),
false,
'insert',
<<<EOT
outer - 0/4 - before
outer - 1/4
middle - 0/2
middle - 1/2
outer - 2/4
middle - 0/3
middle - 1/3
middle - 2/3
outer - 3/4
middle - 0/2
middle - 1/2
EOT
,
'Test inserting before on top level block',
),
array(
'outer',
array('VARIABLE' => 'after'),
true,
'insert',
<<<EOT
outer - 0/4
middle - 0/2
middle - 1/2
outer - 1/4
middle - 0/3
middle - 1/3
middle - 2/3
outer - 2/4
middle - 0/2
middle - 1/2
outer - 3/4 - after
EOT
,
'Test inserting after on top level block',
),
array(
'outer',
array('VARIABLE' => 'pos #1'),
1,
'insert',
<<<EOT
outer - 0/4
middle - 0/2
middle - 1/2
outer - 1/4 - pos #1
outer - 2/4
middle - 0/3
middle - 1/3
middle - 2/3
outer - 3/4
middle - 0/2
middle - 1/2
EOT
,
'Test inserting at 1 on top level block',
),
array(
'outer',
array('VARIABLE' => 'pos #1'),
0,
'change',
<<<EOT
outer - 0/3 - pos #1
middle - 0/2
middle - 1/2
outer - 1/3
middle - 0/3
middle - 1/3
middle - 2/3
outer - 2/3
middle - 0/2
middle - 1/2
EOT
,
'Test inserting at 1 on top level block',
),
array(
'outer[0].middle',
array('VARIABLE' => 'before'),
false,
'insert',
<<<EOT
outer - 0/3
middle - 0/3 - before
middle - 1/3
middle - 2/3
outer - 1/3
middle - 0/3
middle - 1/3
middle - 2/3
outer - 2/3
middle - 0/2
middle - 1/2
EOT
,
'Test inserting before on nested block',
),
array(
'outer[0].middle',
array('VARIABLE' => 'after'),
true,
'insert',
<<<EOT
outer - 0/3
middle - 0/3
middle - 1/3
middle - 2/3 - after
outer - 1/3
middle - 0/3
middle - 1/3
middle - 2/3
outer - 2/3
middle - 0/2
middle - 1/2
EOT
,
'Test inserting after on nested block',
),
array(
'outer[0].middle',
array('VARIABLE' => 'pos #1'),
1,
'insert',
<<<EOT
outer - 0/3
middle - 0/3
middle - 1/3 - pos #1
middle - 2/3
outer - 1/3
middle - 0/3
middle - 1/3
middle - 2/3
outer - 2/3
middle - 0/2
middle - 1/2
EOT
,
'Test inserting at pos 1 on nested block',
),
array(
'outer[1].middle',
array('VARIABLE' => 'before'),
false,
'insert',
<<<EOT
outer - 0/3
middle - 0/2
middle - 1/2
outer - 1/3
middle - 0/4 - before
middle - 1/4
middle - 2/4
middle - 3/4
outer - 2/3
middle - 0/2
middle - 1/2
EOT
,
'Test inserting before on nested block (pos 1)',
),
array(
'outer[].middle',
array('VARIABLE' => 'before'),
false,
'insert',
<<<EOT
outer - 0/3
middle - 0/2
middle - 1/2
outer - 1/3
middle - 0/3
middle - 1/3
middle - 2/3
outer - 2/3
middle - 0/3 - before
middle - 1/3
middle - 2/3
EOT
,
'Test inserting before on nested block (end)',
),
array(
'outer.middle',
array('VARIABLE' => 'before'),
false,
'insert',
<<<EOT
outer - 0/3
middle - 0/2
middle - 1/2
outer - 1/3
middle - 0/3
middle - 1/3
middle - 2/3
outer - 2/3
middle - 0/3 - before
middle - 1/3
middle - 2/3
EOT
,
'Test inserting before on nested block (end)',
),
);
}
/*
<<<EOT
outer - 0/3
middle - 0/2
middle - 1/2
outer - 1/3
middle - 0/3
middle - 1/3
middle - 2/3
outer - 2/3
middle - 0/2
middle - 1/2
EOT
,
*/
/**
* @dataProvider alter_block_array_data
*/
public function test_alter_block_array($alter_block, array $vararray, $key, $mode, $expect, $description)
{
$this->template->set_filenames(array('test' => 'loop_nested.html'));
// @todo Change this
$this->template->assign_block_vars('outer', array());
$this->template->assign_block_vars('outer.middle', array());
$this->template->assign_block_vars('outer.middle', array());
$this->template->assign_block_vars('outer', array());
$this->template->assign_block_vars('outer.middle', array());
$this->template->assign_block_vars('outer.middle', array());
$this->template->assign_block_vars('outer.middle', array());
$this->template->assign_block_vars('outer', array());
$this->template->assign_block_vars('outer.middle', array());
$this->template->assign_block_vars('outer.middle', array());
$this->assertEquals("outer - 0/3\nmiddle - 0/2\nmiddle - 1/2\nouter - 1/3\nmiddle - 0/3\nmiddle - 1/3\nmiddle - 2/3\nouter - 2/3\nmiddle - 0/2\nmiddle - 1/2", $this->display('test'), 'Ensuring template is built correctly before modification');
$this->template->alter_block_array($alter_block, $vararray, $key, $mode);
$this->assertEquals($expect, $this->display('test'), $description);
}
}
?>

View File

@@ -0,0 +1,8 @@
<!-- BEGIN outer -->
{outer.S_BLOCK_NAME} - {outer.S_ROW_NUM}/{outer.S_NUM_ROWS}<!-- IF outer.VARIABLE --> - {outer.VARIABLE}<!-- ENDIF -->
<!-- BEGIN middle -->
{middle.S_BLOCK_NAME} - {middle.S_ROW_NUM}/{middle.S_NUM_ROWS}<!-- IF middle.VARIABLE --> - {middle.VARIABLE}<!-- ENDIF -->
<!-- END middle -->
<!-- END outer -->