Skip to content

Commit bf88282

Browse files
javiexinmarc1706
authored andcommitted
[ticket/14994] Refactor template->assign_block_var
Refactor assign_block_var to use the same block selection mechanism as is used in alter_block_array. This allows creating new blocks at any position in the template structure, not only on the last block. Allows selecting a block as outer[2].middle. Added tests. PHPBB3-14994
1 parent e32324c commit bf88282

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

tests/template/template_test.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,46 @@ public function test_delete_alter_block_array()
998998
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Deleting by index out of bounds, ignored');
999999
}
10001000

1001+
public function test_indexed_assign_block_vars()
1002+
{
1003+
$this->template->set_filenames(array('test' => 'loop_nested.html'));
1004+
1005+
$this->template->assign_var('TEST_MORE', true);
1006+
1007+
// @todo Change this
1008+
$this->template->assign_block_vars('outer', array());
1009+
$this->template->assign_block_vars('outer.middle', array());
1010+
$this->template->assign_block_vars('outer', array());
1011+
$this->template->assign_block_vars('outer.middle', array());
1012+
$this->template->assign_block_vars('outer.middle', array());
1013+
$this->template->assign_block_vars('outer', array());
1014+
$this->template->assign_block_vars('outer.middle', array());
1015+
$this->template->assign_block_vars('outer.middle', array());
1016+
$this->template->assign_block_vars('outer.middle', array());
1017+
1018+
$expect = 'outer - 0[outer|3]middle - 0[middle|1]outer - 1[outer|3]middle - 0[middle|2]middle - 1[middle|2]outer - 2[outer|3]middle - 0[middle|3]middle - 1[middle|3]middle - 2[middle|3]';
1019+
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Ensuring template is built correctly before modification');
1020+
1021+
$this->template->assign_block_vars('outer[0].middle', array('VARIABLE' => 'test'));
1022+
1023+
$expect = 'outer - 0[outer|3]middle - 0[middle|2]middle - 1 - test[middle|2]outer - 1[outer|3]middle - 0[middle|2]middle - 1[middle|2]outer - 2[outer|3]middle - 0[middle|3]middle - 1[middle|3]middle - 2[middle|3]';
1024+
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Inserting at the first outer block');
1025+
1026+
$this->template->assign_block_vars('outer[1].middle[0].inner', array());
1027+
1028+
$expect = 'outer - 0[outer|3]middle - 0[middle|2]middle - 1 - test[middle|2]outer - 1[outer|3]middle - 0[middle|2]inner - 0[inner|1]middle - 1[middle|2]outer - 2[outer|3]middle - 0[middle|3]middle - 1[middle|3]middle - 2[middle|3]';
1029+
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Creating an inner block at the first middle block in the second outer block');
1030+
1031+
$this->template->assign_block_vars('outer[1].middle[0].inner', array());
1032+
1033+
$expect = 'outer - 0[outer|3]middle - 0[middle|2]middle - 1 - test[middle|2]outer - 1[outer|3]middle - 0[middle|2]inner - 0[inner|2]inner - 1[inner|2]middle - 1[middle|2]outer - 2[outer|3]middle - 0[middle|3]middle - 1[middle|3]middle - 2[middle|3]';
1034+
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Inserting another inner block in the same place');
1035+
1036+
$this->template->assign_block_vars('outer.middle[1].inner', array('VARIABLE' => 'test'));
1037+
1038+
$expect = 'outer - 0[outer|3]middle - 0[middle|2]middle - 1 - test[middle|2]outer - 1[outer|3]middle - 0[middle|2]inner - 0[inner|2]inner - 1[inner|2]middle - 1[middle|2]outer - 2[outer|3]middle - 0[middle|3]middle - 1[middle|3]inner - 0 - test[inner|1]middle - 2[middle|3]';
1039+
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Inserting another inner block in the same place');
1040+
}
10011041

10021042
public function assign_block_vars_array_data()
10031043
{

tests/template/templates/loop_nested.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@
22
outer - {outer.S_ROW_COUNT}<!-- IF outer.VARIABLE --> - {outer.VARIABLE}<!-- ENDIF --><!-- IF TEST_MORE -->[{outer.S_BLOCK_NAME}|{outer.S_NUM_ROWS}]<!-- ENDIF -->
33
<!-- BEGIN middle -->
44
middle - {outer.middle.S_ROW_COUNT}<!-- IF outer.middle.VARIABLE --> - {outer.middle.VARIABLE}<!-- ENDIF --><!-- IF TEST_MORE -->[{outer.middle.S_BLOCK_NAME}|{outer.middle.S_NUM_ROWS}]<!-- ENDIF -->
5+
<!-- BEGIN inner -->
6+
inner - {outer.middle.inner.S_ROW_COUNT}<!-- IF outer.middle.inner.VARIABLE --> - {outer.middle.inner.VARIABLE}<!-- ENDIF --><!-- IF TEST_MORE -->[{outer.middle.inner.S_BLOCK_NAME}|{outer.middle.inner.S_NUM_ROWS}]<!-- ENDIF -->
7+
<!-- END inner -->
58
<!-- END middle -->
69
<!-- END outer -->

0 commit comments

Comments
 (0)