Merge tag 'upstream/1.3.1'

Upstream version 1.3.1
This commit is contained in:
Mario Fetka 2018-03-08 14:20:47 +01:00
commit f3e9ef3687
25 changed files with 2949 additions and 2940 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,65 +1,65 @@
<?php <?php
/** /**
* Integrated Template - IT * Integrated Template - IT
* *
* PHP version 4 * PHP version 4
* *
* Copyright (c) 1997-2007 Ulf Wendel, Pierre-Alain Joye, * Copyright (c) 1997-2007 Ulf Wendel, Pierre-Alain Joye,
* David Soria Parra * David Soria Parra
* *
* This source file is subject to the New BSD license, That is bundled * This source file is subject to the New BSD license, That is bundled
* with this package in the file LICENSE, and is available through * with this package in the file LICENSE, and is available through
* the world-wide-web at * the world-wide-web at
* http://www.opensource.org/licenses/bsd-license.php * http://www.opensource.org/licenses/bsd-license.php
* If you did not receive a copy of the new BSDlicense and are unable * If you did not receive a copy of the new BSDlicense and are unable
* to obtain it through the world-wide-web, please send a note to * to obtain it through the world-wide-web, please send a note to
* pajoye@php.net so we can mail you a copy immediately. * pajoye@php.net so we can mail you a copy immediately.
* *
* Author: Ulf Wendel <ulf.wendel@phpdoc.de> * Author: Ulf Wendel <ulf.wendel@phpdoc.de>
* Pierre-Alain Joye <pajoye@php.net> * Pierre-Alain Joye <pajoye@php.net>
* David Soria Parra <dsp@php.net> * David Soria Parra <dsp@php.net>
* *
* @category HTML * @category HTML
* @package HTML_Template_IT * @package HTML_Template_IT
* @author Ulf Wendel <uw@netuse.de> * @author Ulf Wendel <uw@netuse.de>
* @license BSD http://www.opensource.org/licenses/bsd-license.php * @license BSD http://www.opensource.org/licenses/bsd-license.php
* @version CVS: $Id: IT_Error.php 295117 2010-02-15 23:25:21Z clockwerx $ * @version CVS: $Id$
* @link http://pear.php.net/packages/HTML_Template_IT * @link http://pear.php.net/packages/HTML_Template_IT
* @access public * @access public
*/ */
require_once "PEAR.php"; require_once "PEAR.php";
/** /**
* IT[X] Error class * IT[X] Error class
* *
* @category HTML * @category HTML
* @package HTML_Template_IT * @package HTML_Template_IT
* @author Ulf Wendel <uw@netuse.de> * @author Ulf Wendel <uw@netuse.de>
* @license BSD http://www.opensource.org/licenses/bsd-license.php * @license BSD http://www.opensource.org/licenses/bsd-license.php
* @link http://pear.php.net/packages/HTML_Template_IT * @link http://pear.php.net/packages/HTML_Template_IT
* @access public * @access public
*/ */
class IT_Error extends PEAR_Error class IT_Error extends PEAR_Error
{ {
/** /**
* Prefix of all error messages. * Prefix of all error messages.
* *
* @var string * @var string
*/ */
var $error_message_prefix = "IntegratedTemplate Error: "; var $error_message_prefix = "IntegratedTemplate Error: ";
/** /**
* Creates an cache error object. * Creates an cache error object.
* *
* @param string $msg error message * @param string $msg error message
* @param string $file file where the error occured * @param string $file file where the error occured
* @param string $line linenumber where the error occured * @param string $line linenumber where the error occured
*/ */
function IT_Error($msg, $file = __FILE__, $line = __LINE__) function __construct($msg, $file = __FILE__, $line = __LINE__)
{ {
$this->PEAR_Error(sprintf("%s [%s on line %d].", $msg, $file, $line)); $this->PEAR_Error(sprintf("%s [%s on line %d].", $msg, $file, $line));
} // end func IT_Error } // end func IT_Error
} // end class IT_Error } // end class IT_Error
?> ?>

View File

@ -1,22 +1,22 @@
Redistribution and use in source and binary forms, with or without modification Redistribution and use in source and binary forms, with or without modification
, are permitted provided that the following conditions are met: , are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, th 1. Redistributions of source code must retain the above copyright notice, th
is list of conditions and the following disclaimer. is list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, 2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation and/ this list of conditions and the following disclaimer in the documentation and/
or other materials provided with the distribution. or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products derived 3. The name of the author may not be used to endorse or promote products derived
from this software without specific prior written permission. from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WA THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WA
RRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABIL RRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABIL
ITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR C AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR C
ONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOW GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOW
EVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILI EVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILI
TY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE U TY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE U
SE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,27 +1,27 @@
<?php <?php
require_once 'HTML/Template/IT.php'; require_once 'HTML/Template/IT.php';
$data = array ( $data = array (
'0' => array('Stig', 'Bakken'), '0' => array('Stig', 'Bakken'),
'1' => array('Martin', 'Jansen'), '1' => array('Martin', 'Jansen'),
'2' => array('Alexander', 'Merz') '2' => array('Alexander', 'Merz')
); );
$tpl = new HTML_Template_IT('./templates'); $tpl = new HTML_Template_IT('./templates');
$tpl->loadTemplatefile('main.tpl.htm', true, true); $tpl->loadTemplatefile('main.tpl.htm', true, true);
foreach ($data as $name) { foreach ($data as $name) {
foreach ($name as $cell) { foreach ($name as $cell) {
// Assign data to the inner block // Assign data to the inner block
$tpl->setCurrentBlock('cell'); $tpl->setCurrentBlock('cell');
$tpl->setVariable('DATA', $cell); $tpl->setVariable('DATA', $cell);
$tpl->parseCurrentBlock(); $tpl->parseCurrentBlock();
} }
// Assign data and the inner block to the // Assign data and the inner block to the
// outer block // outer block
$tpl->setCurrentBlock('row'); $tpl->setCurrentBlock('row');
$tpl->parseCurrentBlock(); $tpl->parseCurrentBlock();
} }
// print the output // print the output
$tpl->show(); $tpl->show();
?> ?>

View File

@ -1,58 +1,62 @@
<?php <?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/** /**
* An example for the usage of ITX::addBlockfile * An example for the usage of ITX::addBlockfile
* *
* @version CVS: $Id: sample_itx_addblockfile.php 216180 2006-07-11 21:56:05Z dsp $ * @version CVS: $Id$
*/ */
require_once 'HTML/Template/ITX.php'; // Show all errors and warnings
error_reporting(E_ALL);
$data = array (array ('packagename'=>'mypackage', ini_set('display_errors', 1);
'version' =>'1.0',
'changelog' => array ('fix bug #002', require_once 'HTML/Template/ITX.php';
'add author FOO to AUTHORS')
), $data = array (array ('packagename'=>'mypackage',
array ('packagename'=>'mypackage', 'version' =>'1.0',
'version' =>'1.0 RC 1', 'changelog' => array ('fix bug #002',
'changelog' => array ('fix bug #002', 'add author FOO to AUTHORS')
'added method foo()') ),
) array ('packagename'=>'mypackage',
); 'version' =>'1.0 RC 1',
'changelog' => array ('fix bug #002',
$tpl = new HTML_Template_ITX('./templates'); 'added method foo()')
$tpl->loadTemplatefile('addblockfile_main.tpl.htm', true, true); )
);
// The complete content of "addblockfile_main.tpl.htm" will be loaded into a block
// called "list_template". The placeholder {DESCRIPTION} will be replaced $tpl = new HTML_Template_ITX('./templates');
// with the added block "list_template". $tpl->loadTemplatefile('addblockfile_main.tpl.htm', true, true);
$tpl->addBlockfile('DESCRIPTION', 'list_template', 'addblockfile_list.tpl.htm');
// The complete content of "addblockfile_main.tpl.htm" will be loaded into a block
// called "list_template". The placeholder {DESCRIPTION} will be replaced
// we now have the following blocks loaded: // with the added block "list_template".
// __global__, row, list_template and listelement $tpl->addBlockfile('DESCRIPTION', 'list_template', 'addblockfile_list.tpl.htm');
// lets assign the data.
foreach ($data as $entry) {
// assign data to the inner block (listelement) of list_template. // we now have the following blocks loaded:
$tpl->setCurrentBlock('listelement'); // __global__, row, list_template and listelement
foreach ($entry['changelog'] as $changelogentry) { // lets assign the data.
$tpl->setVariable('ENTRY', $changelogentry); foreach ($data as $entry) {
$tpl->parseCurrentBlock(); // assign data to the inner block (listelement) of list_template.
} $tpl->setCurrentBlock('listelement');
foreach ($entry['changelog'] as $changelogentry) {
// assign data to the added list_template block $tpl->setVariable('ENTRY', $changelogentry);
$tpl->setCurrentBlock('list_template'); $tpl->parseCurrentBlock();
$tpl->setVariable('LISTNAME', $entry['version']); }
$tpl->parseCurrentBlock();
// assign data to the added list_template block
// back in the original templatefile we assign data to the row block $tpl->setCurrentBlock('list_template');
// notice: $tpl->setVariable('LISTNAME', $entry['version']);
// {DESCRIPTION} is not longer available, because it was replaced by the $tpl->parseCurrentBlock();
// list_template block
$tpl->setCurrentBlock('row'); // back in the original templatefile we assign data to the row block
$tpl->setVariable('NAME', $entry['packagename']); // notice:
$tpl->parseCurrentBlock(); // {DESCRIPTION} is not longer available, because it was replaced by the
} // list_template block
$tpl->setCurrentBlock('row');
$tpl->show(); $tpl->setVariable('NAME', $entry['packagename']);
?> $tpl->parseCurrentBlock();
}
$tpl->show();
?>

View File

@ -1,6 +1,6 @@
{LISTNAME} {LISTNAME}
<ul> <ul>
<!-- BEGIN listelement --> <!-- BEGIN listelement -->
<li>{ENTRY}</li> <li>{ENTRY}</li>
<!-- END listelement --> <!-- END listelement -->
</ul> </ul>

View File

@ -1,12 +1,12 @@
<html> <html>
<body> <body>
<table> <table>
<!-- BEGIN row --> <!-- BEGIN row -->
<tr> <tr>
<td>{NAME}</td> <td>{NAME}</td>
<td>{DESCRIPTION}</td> <td>{DESCRIPTION}</td>
</tr> </tr>
<!-- END row --> <!-- END row -->
</table> </table>
</body> </body>
</html> </html>

View File

@ -1,13 +1,13 @@
<html> <html>
<table border> <table border>
<!-- BEGIN row --> <!-- BEGIN row -->
<tr> <tr>
<!-- BEGIN cell --> <!-- BEGIN cell -->
<td> <td>
{DATA} {DATA}
</td> </td>
<!-- END cell --> <!-- END cell -->
</tr> </tr>
<!-- END row --> <!-- END row -->
</table> </table>
</html> </html>

View File

@ -1,416 +1,416 @@
<?php <?php
require_once 'HTML/Template/IT.php'; require_once 'HTML/Template/IT.php';
require_once 'PHPUnit/Framework/TestCase.php'; require_once 'PHPUnit/Framework/TestCase.php';
class ITTest extends PHPUnit_Framework_TestCase class ITTest extends PHPUnit_Framework_TestCase
{ {
/** /**
* An HTML_Template_IT object * An HTML_Template_IT object
* @var object * @var object
*/ */
var $tpl; var $tpl;
function setUp() function setUp()
{ {
$this->tpl = new HTML_Template_IT(dirname(__FILE__) . '/templates'); $this->tpl = new HTML_Template_IT(dirname(__FILE__) . '/templates');
} }
function tearDown() function tearDown()
{ {
unset($this->tpl); unset($this->tpl);
} }
function _stripWhitespace($str) function _stripWhitespace($str)
{ {
return preg_replace('/\\s+/', '', $str); return preg_replace('/\\s+/', '', $str);
} }
function _methodExists($name) function _methodExists($name)
{ {
if (in_array(strtolower($name), get_class_methods($this->tpl))) { if (in_array(strtolower($name), get_class_methods($this->tpl))) {
return true; return true;
} }
$this->assertTrue(false, 'method '. $name . ' not implemented in ' . get_class($this->tpl)); $this->assertTrue(false, 'method '. $name . ' not implemented in ' . get_class($this->tpl));
return false; return false;
} }
/** /**
* Tests a setTemplate method * Tests a setTemplate method
* *
*/ */
function testSetTemplate() function testSetTemplate()
{ {
$result = $this->tpl->setTemplate('A template', false, false); $result = $this->tpl->setTemplate('A template', false, false);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error setting template: '. $result->getMessage()); $this->assertTrue(false, 'Error setting template: '. $result->getMessage());
} }
$this->assertEquals('A template', $this->tpl->get()); $this->assertEquals('A template', $this->tpl->get());
} }
/** /**
* Tests a loadTemplatefile method * Tests a loadTemplatefile method
* *
*/ */
function testLoadTemplatefile() function testLoadTemplatefile()
{ {
$result = $this->tpl->loadTemplatefile('loadtemplatefile.html', false, false); $result = $this->tpl->loadTemplatefile('loadtemplatefile.html', false, false);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
$this->assertEquals('A template', trim($this->tpl->get())); $this->assertEquals('A template', trim($this->tpl->get()));
} }
/** /**
* Tests a setVariable method * Tests a setVariable method
* *
*/ */
function testSetVariable() function testSetVariable()
{ {
$result = $this->tpl->setTemplate('{placeholder1} {placeholder2} {placeholder3}', true, true); $result = $this->tpl->setTemplate('{placeholder1} {placeholder2} {placeholder3}', true, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error setting template: '. $result->getMessage()); $this->assertTrue(false, 'Error setting template: '. $result->getMessage());
} }
// "scalar" call // "scalar" call
$this->tpl->setVariable('placeholder1', 'var1'); $this->tpl->setVariable('placeholder1', 'var1');
// array call // array call
$this->tpl->setVariable(array( $this->tpl->setVariable(array(
'placeholder2' => 'var2', 'placeholder2' => 'var2',
'placeholder3' => 'var3' 'placeholder3' => 'var3'
)); ));
$this->assertEquals('var1 var2 var3', $this->tpl->get()); $this->assertEquals('var1 var2 var3', $this->tpl->get());
} }
/** /**
* Tests the <!-- INCLUDE --> functionality * Tests the <!-- INCLUDE --> functionality
* *
*/ */
function testInclude() function testInclude()
{ {
$result = $this->tpl->loadTemplateFile('include.html', false, false); $result = $this->tpl->loadTemplateFile('include.html', false, false);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
$this->assertEquals('Master file; Included file', trim($this->tpl->get())); $this->assertEquals('Master file; Included file', trim($this->tpl->get()));
} }
/** /**
* *
*/ */
function testCurrentBlock() function testCurrentBlock()
{ {
$result = $this->tpl->loadTemplateFile('blockiteration.html', true, true); $result = $this->tpl->loadTemplateFile('blockiteration.html', true, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
$this->tpl->setVariable('outer', 'a'); $this->tpl->setVariable('outer', 'a');
$this->tpl->setCurrentBlock('inner_block'); $this->tpl->setCurrentBlock('inner_block');
for ($i = 0; $i < 5; $i++) { for ($i = 0; $i < 5; $i++) {
$this->tpl->setVariable('inner', $i + 1); $this->tpl->setVariable('inner', $i + 1);
$this->tpl->parseCurrentBlock(); $this->tpl->parseCurrentBlock();
} // for } // for
$this->assertEquals('a|1|2|3|4|5#', $this->_stripWhitespace($this->tpl->get())); $this->assertEquals('a|1|2|3|4|5#', $this->_stripWhitespace($this->tpl->get()));
} }
/** /**
* *
*/ */
function testRemovePlaceholders() function testRemovePlaceholders()
{ {
$result = $this->tpl->setTemplate('{placeholder1},{placeholder2},{placeholder3}', true, true); $result = $this->tpl->setTemplate('{placeholder1},{placeholder2},{placeholder3}', true, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error setting template: '. $result->getMessage()); $this->assertTrue(false, 'Error setting template: '. $result->getMessage());
} }
// we do not set {placeholder3} // we do not set {placeholder3}
$this->tpl->setVariable(array( $this->tpl->setVariable(array(
'placeholder1' => 'var1', 'placeholder1' => 'var1',
'placeholder2' => 'var2' 'placeholder2' => 'var2'
)); ));
$this->assertEquals('var1,var2,', $this->tpl->get()); $this->assertEquals('var1,var2,', $this->tpl->get());
// Now, we should really add a switch for keeping {stuff} in // Now, we should really add a switch for keeping {stuff} in
// data supplied to setVariable() safe. Until then, removing it should // data supplied to setVariable() safe. Until then, removing it should
// be expected behaviour // be expected behaviour
$result = $this->tpl->setTemplate('{placeholder1},{placeholder2},{placeholder3}', true, true); $result = $this->tpl->setTemplate('{placeholder1},{placeholder2},{placeholder3}', true, true);
$this->tpl->setOption('preserve_input', false); $this->tpl->setOption('preserve_input', false);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error setting template: '. $result->getMessage()); $this->assertTrue(false, 'Error setting template: '. $result->getMessage());
} }
$this->tpl->setVariable(array( $this->tpl->setVariable(array(
'placeholder1' => 'var1', 'placeholder1' => 'var1',
'placeholder2' => 'var2', 'placeholder2' => 'var2',
'placeholder3' => 'var3{stuff}' 'placeholder3' => 'var3{stuff}'
)); ));
$this->assertEquals('var1,var2,var3', $this->tpl->get()); $this->assertEquals('var1,var2,var3', $this->tpl->get());
$result = $this->tpl->setTemplate('{placeholder1},{placeholder2},{placeholder3}', true, true); $result = $this->tpl->setTemplate('{placeholder1},{placeholder2},{placeholder3}', true, true);
$this->tpl->setOption('preserve_input', true); $this->tpl->setOption('preserve_input', true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error setting template: '. $result->getMessage()); $this->assertTrue(false, 'Error setting template: '. $result->getMessage());
} }
$this->tpl->setVariable(array( $this->tpl->setVariable(array(
'placeholder1' => 'var1', 'placeholder1' => 'var1',
'placeholder2' => 'var2', 'placeholder2' => 'var2',
'placeholder3' => 'var3{stuff}' 'placeholder3' => 'var3{stuff}'
)); ));
$this->assertEquals('var1,var2,var3{stuff}', $this->tpl->get()); $this->assertEquals('var1,var2,var3{stuff}', $this->tpl->get());
} }
/** /**
* *
*/ */
function testTouchBlock() function testTouchBlock()
{ {
$result = $this->tpl->loadTemplateFile('blockiteration.html', false, true); $result = $this->tpl->loadTemplateFile('blockiteration.html', false, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
$this->tpl->setVariable('outer', 'data'); $this->tpl->setVariable('outer', 'data');
// inner_block should be preserved in output, even if empty // inner_block should be preserved in output, even if empty
$this->tpl->touchBlock('inner_block'); $this->tpl->touchBlock('inner_block');
$this->assertEquals('data|{inner}#', $this->_stripWhitespace($this->tpl->get())); $this->assertEquals('data|{inner}#', $this->_stripWhitespace($this->tpl->get()));
} }
// Not available in stock class // Not available in stock class
/** /**
* *
*/ */
/* /*
function testHideBlock() function testHideBlock()
{ {
if (!$this->_methodExists('hideBlock')) { if (!$this->_methodExists('hideBlock')) {
return; return;
} }
$result = $this->tpl->loadTemplateFile('blockiteration.html', false, true); $result = $this->tpl->loadTemplateFile('blockiteration.html', false, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
$this->tpl->setVariable(array( $this->tpl->setVariable(array(
'outer' => 'data', 'outer' => 'data',
'inner' => 'stuff' 'inner' => 'stuff'
)); ));
// inner_block is not empty, but should be removed nonetheless // inner_block is not empty, but should be removed nonetheless
$this->tpl->hideBlock('inner_block'); $this->tpl->hideBlock('inner_block');
$this->assertEquals('data#', $this->_stripWhitespace($this->tpl->get())); $this->assertEquals('data#', $this->_stripWhitespace($this->tpl->get()));
} }
*/ */
/** /**
* *
*/ */
/* /*
function testSetGlobalVariable() function testSetGlobalVariable()
{ {
if (!$this->_methodExists('setGlobalVariable')) { if (!$this->_methodExists('setGlobalVariable')) {
return; return;
} }
$result = $this->tpl->loadTemplateFile('globals.html', false, true); $result = $this->tpl->loadTemplateFile('globals.html', false, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
$this->tpl->setGlobalVariable('glob', 'glob'); $this->tpl->setGlobalVariable('glob', 'glob');
// {var2} is not, block_two should be removed // {var2} is not, block_two should be removed
$this->tpl->setVariable(array( $this->tpl->setVariable(array(
'var1' => 'one', 'var1' => 'one',
'var3' => 'three' 'var3' => 'three'
)); ));
for ($i = 0; $i < 3; $i++) { for ($i = 0; $i < 3; $i++) {
$this->tpl->setVariable('var4', $i + 1); $this->tpl->setVariable('var4', $i + 1);
$this->tpl->parse('block_four'); $this->tpl->parse('block_four');
} // for } // for
$this->assertEquals('glob:one#glob:three|glob:1|glob:2|glob:3#', $this->_stripWhitespace($this->tpl->get())); $this->assertEquals('glob:one#glob:three|glob:1|glob:2|glob:3#', $this->_stripWhitespace($this->tpl->get()));
} }
*/ */
/** /**
* Test for bug #9501. preg_replace treat $<NUM> and \<NUM> as * Test for bug #9501. preg_replace treat $<NUM> and \<NUM> as
* backreferences. IT escapes them. * backreferences. IT escapes them.
* *
*/ */
function testBug9501() function testBug9501()
{ {
$this->tpl->setTemplate("Test: {VALUE}"); $this->tpl->setTemplate("Test: {VALUE}");
$this->tpl->clearCache = true; $this->tpl->clearCache = true;
$this->tpl->setVariable("VALUE", '$12.34'); $this->tpl->setVariable("VALUE", '$12.34');
$this->assertEquals('Test: $12.34', $this->tpl->get()); $this->assertEquals('Test: $12.34', $this->tpl->get());
$this->tpl->setVariable("VALUE", '$1256.34'); $this->tpl->setVariable("VALUE", '$1256.34');
$this->assertEquals('Test: $1256.34', $this->tpl->get()); $this->assertEquals('Test: $1256.34', $this->tpl->get());
$this->tpl->setVariable("VALUE", '^1.34'); $this->tpl->setVariable("VALUE", '^1.34');
$this->assertEquals('Test: ^1.34', $this->tpl->get()); $this->assertEquals('Test: ^1.34', $this->tpl->get());
$this->tpl->setVariable("VALUE", '$1.34'); $this->tpl->setVariable("VALUE", '$1.34');
$this->assertEquals('Test: $1.34', $this->tpl->get()); $this->assertEquals('Test: $1.34', $this->tpl->get());
$this->tpl->setVariable("VALUE", '\$12.34'); $this->tpl->setVariable("VALUE", '\$12.34');
$this->assertEquals('Test: \$12.34', $this->tpl->get()); $this->assertEquals('Test: \$12.34', $this->tpl->get());
$this->tpl->setVariable("VALUE", "\$12.34"); $this->tpl->setVariable("VALUE", "\$12.34");
$this->assertEquals('Test: $12.34', $this->tpl->get()); $this->assertEquals('Test: $12.34', $this->tpl->get());
$this->tpl->setVariable("VALUE", "\$12.34"); $this->tpl->setVariable("VALUE", "\$12.34");
$this->assertEquals('Test: $12.34', $this->tpl->get()); $this->assertEquals('Test: $12.34', $this->tpl->get());
// $12 is not parsed as a variable as it starts with a number // $12 is not parsed as a variable as it starts with a number
$this->tpl->setVariable("VALUE", "$12.34"); $this->tpl->setVariable("VALUE", "$12.34");
$this->assertEquals('Test: $12.34', $this->tpl->get()); $this->assertEquals('Test: $12.34', $this->tpl->get());
$this->tpl->setVariable("VALUE", "\\$12.34"); $this->tpl->setVariable("VALUE", "\\$12.34");
$this->assertEquals('Test: \$12.34', $this->tpl->get()); $this->assertEquals('Test: \$12.34', $this->tpl->get());
// taken from the bugreport // taken from the bugreport
$word = 'Cost is $456.98'; $word = 'Cost is $456.98';
$this->tpl->setVariable("VALUE", $word); $this->tpl->setVariable("VALUE", $word);
$this->assertEquals('Test: Cost is $456.98', $this->tpl->get()); $this->assertEquals('Test: Cost is $456.98', $this->tpl->get());
$word = "Cost is \$" . '183.22'; $word = "Cost is \$" . '183.22';
$this->tpl->setVariable("VALUE", $word); $this->tpl->setVariable("VALUE", $word);
$this->assertEquals('Test: Cost is $183.22', $this->tpl->get()); $this->assertEquals('Test: Cost is $183.22', $this->tpl->get());
} }
function testBug9783 () function testBug9783 ()
{ {
$this->tpl->setTemplate("<!-- BEGIN entry -->{DATA} <!-- END entry -->", true, true); $this->tpl->setTemplate("<!-- BEGIN entry -->{DATA} <!-- END entry -->", true, true);
$data = array ('{Bakken}', 'Soria', 'Joye'); $data = array ('{Bakken}', 'Soria', 'Joye');
foreach ($data as $name) { foreach ($data as $name) {
$this->tpl->setCurrentBlock('entry'); $this->tpl->setCurrentBlock('entry');
$this->tpl->setVariable('DATA', $name); $this->tpl->setVariable('DATA', $name);
$this->tpl->parseCurrentBlock(); $this->tpl->parseCurrentBlock();
} }
$this->assertEquals('{Bakken} Soria Joye', trim($this->tpl->get())); $this->assertEquals('{Bakken} Soria Joye', trim($this->tpl->get()));
} }
function testBug9853 () function testBug9853 ()
{ {
$this->tpl->loadTemplatefile("bug_9853_01.tpl", true, true); $this->tpl->loadTemplatefile("bug_9853_01.tpl", true, true);
$this->tpl->setVariable("VAR" , "Ok !"); $this->tpl->setVariable("VAR" , "Ok !");
$this->tpl->parse("foo1"); $this->tpl->parse("foo1");
$this->tpl->setVariable("VAR" , "Ok !"); $this->tpl->setVariable("VAR" , "Ok !");
$this->tpl->parse("foo2"); $this->tpl->parse("foo2");
$this->tpl->setVariable("VAR." , "Ok !"); $this->tpl->setVariable("VAR." , "Ok !");
$this->tpl->setVariable("VAR2" , "Okay"); $this->tpl->setVariable("VAR2" , "Okay");
$this->tpl->parse("bar"); $this->tpl->parse("bar");
$this->tpl->parse(); $this->tpl->parse();
$output01 = $this->tpl->get(); $output01 = $this->tpl->get();
$this->tpl->loadTemplatefile("bug_9853_02.tpl", true, true); $this->tpl->loadTemplatefile("bug_9853_02.tpl", true, true);
$this->tpl->setVariable("VAR" , "Ok !"); $this->tpl->setVariable("VAR" , "Ok !");
$this->tpl->parse("foo."); $this->tpl->parse("foo.");
$this->tpl->setVariable("VAR" , "Ok !"); $this->tpl->setVariable("VAR" , "Ok !");
$this->tpl->parse("foo2"); $this->tpl->parse("foo2");
$this->tpl->setVariable("VAR." , "Ok !"); $this->tpl->setVariable("VAR." , "Ok !");
$this->tpl->setVariable("VAR2" , "Okay"); $this->tpl->setVariable("VAR2" , "Okay");
$this->tpl->parse("bar"); $this->tpl->parse("bar");
$this->tpl->parse(); $this->tpl->parse();
$output02 = $this->tpl->get(); $output02 = $this->tpl->get();
$this->assertEquals($output01, $output02); $this->assertEquals($output01, $output02);
} }
/** /**
* Tests iterations over two blocks * Tests iterations over two blocks
* *
*/ */
function testBlockIteration() function testBlockIteration()
{ {
$data = array( $data = array(
'a', 'a',
array('b', array('1', '2', '3', '4')), array('b', array('1', '2', '3', '4')),
'c', 'c',
array('d', array('5', '6', '7')) array('d', array('5', '6', '7'))
); );
$result = $this->tpl->loadTemplateFile('blockiteration.html', true, true); $result = $this->tpl->loadTemplateFile('blockiteration.html', true, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
foreach ($data as $value) { foreach ($data as $value) {
if (is_array($value)) { if (is_array($value)) {
$this->tpl->setVariable('outer', $value[0]); $this->tpl->setVariable('outer', $value[0]);
foreach ($value[1] as $v) { foreach ($value[1] as $v) {
$this->tpl->setVariable('inner', $v); $this->tpl->setVariable('inner', $v);
$this->tpl->parse('inner_block'); $this->tpl->parse('inner_block');
} }
} else { } else {
$this->tpl->setVariable('outer', $value); $this->tpl->setVariable('outer', $value);
} }
$this->tpl->parse('outer_block'); $this->tpl->parse('outer_block');
} }
$this->assertEquals('a#b|1|2|3|4#c#d|5|6|7#', $this->_stripWhitespace($this->tpl->get())); $this->assertEquals('a#b|1|2|3|4#c#d|5|6|7#', $this->_stripWhitespace($this->tpl->get()));
} }
/** /**
* *
* *
*/ */
function testTouchBlockIteration() function testTouchBlockIteration()
{ {
$data = array('a','b','c','d','e'); $data = array('a','b','c','d','e');
$result = $this->tpl->loadTemplateFile('blockiteration.html', true, true); $result = $this->tpl->loadTemplateFile('blockiteration.html', true, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
for ($i = 0; $i < count($data); $i++) { for ($i = 0; $i < count($data); $i++) {
$this->tpl->setVariable('outer', $data[$i]); $this->tpl->setVariable('outer', $data[$i]);
// the inner_block is empty and should be removed // the inner_block is empty and should be removed
if (0 == $i % 2) { if (0 == $i % 2) {
$this->tpl->touchBlock('inner_block'); $this->tpl->touchBlock('inner_block');
} }
$this->tpl->parse('outer_block'); $this->tpl->parse('outer_block');
} }
$this->assertEquals('a|#b#c|#d#e|#', $this->_stripWhitespace($this->tpl->get())); $this->assertEquals('a|#b#c|#d#e|#', $this->_stripWhitespace($this->tpl->get()));
} }
public function testShouldSetOptionsCorrectly() { public function testShouldSetOptionsCorrectly() {
$result = $this->tpl->setOption('removeEmptyBlocks', false); $result = $this->tpl->setOption('removeEmptyBlocks', false);
$this->assertFalse(PEAR::isError($result)); $this->assertFalse(PEAR::isError($result));
$this->assertFalse($this->tpl->removeEmptyBlocks); $this->assertFalse($this->tpl->removeEmptyBlocks);
$result = $this->tpl->setOption('removeEmptyBlocks', true); $result = $this->tpl->setOption('removeEmptyBlocks', true);
$this->assertFalse(PEAR::isError($result)); $this->assertFalse(PEAR::isError($result));
$this->assertTrue($this->tpl->removeEmptyBlocks); $this->assertTrue($this->tpl->removeEmptyBlocks);
} }
public function testPlaceholderReplacementScope() { public function testPlaceholderReplacementScope() {
$result = $this->tpl->loadTemplateFile('placeholderreplacementscope.html', true, true); $result = $this->tpl->loadTemplateFile('placeholderreplacementscope.html', true, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->fail('Error loading template file: ' . $result->getMessage()); $this->fail('Error loading template file: ' . $result->getMessage());
} }
$this->tpl->setCurrentBlock('foo'); $this->tpl->setCurrentBlock('foo');
$this->tpl->setVariable('var1','test'); $this->tpl->setVariable('var1','test');
$this->tpl->parseCurrentBlock(); $this->tpl->parseCurrentBlock();
$this->tpl->setCurrentBlock('bar'); $this->tpl->setCurrentBlock('bar');
$this->tpl->setVariable('var1','not'); $this->tpl->setVariable('var1','not');
$this->tpl->setVariable('var2','good'); $this->tpl->setVariable('var2','good');
$this->tpl->parseCurrentBlock(); $this->tpl->parseCurrentBlock();
$actual = $this->_stripWhitespace($this->tpl->get()); $actual = $this->_stripWhitespace($this->tpl->get());
$this->assertEquals('testgood', $actual); $this->assertEquals('testgood', $actual);
} }
} }
?> ?>

View File

@ -1,171 +1,171 @@
<?php <?php
require_once 'HTML/Template/ITX.php'; require_once 'HTML/Template/ITX.php';
require_once 'PHPUnit/Framework/TestCase.php'; require_once 'PHPUnit/Framework/TestCase.php';
require_once 'ITTest.php'; require_once 'ITTest.php';
function _uppercaseCallback($ary) function _uppercaseCallback($ary)
{ {
return strtoupper($ary[0]); return strtoupper($ary[0]);
} }
class Callbacks class Callbacks
{ {
function _lowercaseCallback($ary) static function _lowercaseCallback($ary)
{ {
return strtolower($ary[0]); return strtolower($ary[0]);
} }
function _numberFormatCallback($float, $decimals) static function _numberFormatCallback($float, $decimals)
{ {
return number_format($float, $decimals); return number_format($float, $decimals);
} }
} }
class ITXTest extends ITTest class ITXTest extends ITTest
{ {
function setUp() function setUp()
{ {
$this->tpl = new HTML_Template_ITX(dirname(__FILE__) . '/templates'); $this->tpl = new HTML_Template_ITX(dirname(__FILE__) . '/templates');
} }
function testPlaceholderExists() function testPlaceholderExists()
{ {
$this->tpl->setTemplate('{var}'); $this->tpl->setTemplate('{var}');
$this->assertSame("__global__", $this->tpl->placeholderExists('var'), 'Existing placeholder \'var\' reported as nonexistant'); $this->assertSame("__global__", $this->tpl->placeholderExists('var'), 'Existing placeholder \'var\' reported as nonexistant');
$this->assertSame("", $this->tpl->placeholderExists('foobar'), 'Nonexistant placeholder \'foobar\' reported as existing'); $this->assertSame("", $this->tpl->placeholderExists('foobar'), 'Nonexistant placeholder \'foobar\' reported as existing');
$this->assertSame("__global__", $this->tpl->placeholderExists('var', '__global__'), 'Existing in block \'__global__\' placeholder \'var\' reported as nonexistant'); $this->assertSame("__global__", $this->tpl->placeholderExists('var', '__global__'), 'Existing in block \'__global__\' placeholder \'var\' reported as nonexistant');
$this->assertSame("", $this->tpl->placeholderExists('foobar', '__global__'), 'Nonexistant in block \'__global__\' placeholder \'foobar\' reported as existing'); $this->assertSame("", $this->tpl->placeholderExists('foobar', '__global__'), 'Nonexistant in block \'__global__\' placeholder \'foobar\' reported as existing');
} }
function testBlockExists() function testBlockExists()
{ {
$this->tpl->setTemplate('{var}'); $this->tpl->setTemplate('{var}');
$this->assertTrue($this->tpl->blockExists('__global__'), 'Existing block \'__global__\' reported as nonexistant'); $this->assertTrue($this->tpl->blockExists('__global__'), 'Existing block \'__global__\' reported as nonexistant');
$this->assertTrue(!$this->tpl->blockExists('foobar'), 'Nonexistant block \'foobar\' reported as existing'); $this->assertTrue(!$this->tpl->blockExists('foobar'), 'Nonexistant block \'foobar\' reported as existing');
} }
function testAddBlock() function testAddBlock()
{ {
$result = $this->tpl->loadTemplatefile('blocks.html', true, true); $result = $this->tpl->loadTemplatefile('blocks.html', true, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
$this->tpl->addBlock('var', 'added', 'added:{new_var}'); $this->tpl->addBlock('var', 'added', 'added:{new_var}');
$this->assertTrue($this->tpl->blockExists('added'), 'The new block seems to be missing'); $this->assertTrue($this->tpl->blockExists('added'), 'The new block seems to be missing');
$this->assertTrue(!$this->tpl->placeholderExists('var'), 'The old variable seems to be still present in the template'); $this->assertTrue(!$this->tpl->placeholderExists('var'), 'The old variable seems to be still present in the template');
$this->tpl->setVariable('new_var', 'new_value'); $this->tpl->setVariable('new_var', 'new_value');
$this->assertEquals('added:new_value', $this->_stripWhitespace($this->tpl->get())); $this->assertEquals('added:new_value', $this->_stripWhitespace($this->tpl->get()));
} }
function testAddBlockfile() function testAddBlockfile()
{ {
$result = $this->tpl->loadTemplatefile('blocks.html', true, true); $result = $this->tpl->loadTemplatefile('blocks.html', true, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
$result = $this->tpl->addBlockfile('var', 'added', 'addblock.html'); $result = $this->tpl->addBlockfile('var', 'added', 'addblock.html');
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error adding block from file: '. $result->getMessage()); $this->assertTrue(false, 'Error adding block from file: '. $result->getMessage());
} }
$this->assertTrue($this->tpl->blockExists('added'), 'The new block seems to be missing'); $this->assertTrue($this->tpl->blockExists('added'), 'The new block seems to be missing');
$this->assertTrue(!$this->tpl->placeholderExists('var'), 'The old variable seems to be still present in the template'); $this->assertTrue(!$this->tpl->placeholderExists('var'), 'The old variable seems to be still present in the template');
$this->tpl->setVariable('new_var', 'new_value'); $this->tpl->setVariable('new_var', 'new_value');
$this->assertEquals('added:new_value', $this->_stripWhitespace($this->tpl->get())); $this->assertEquals('added:new_value', $this->_stripWhitespace($this->tpl->get()));
} }
function testReplaceBlock() function testReplaceBlock()
{ {
$result = $this->tpl->loadTemplatefile('blocks.html', true, true); $result = $this->tpl->loadTemplatefile('blocks.html', true, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
$this->tpl->setVariable('old_var', 'old_value'); $this->tpl->setVariable('old_var', 'old_value');
$this->tpl->parse('old_block'); $this->tpl->parse('old_block');
// old_block's contents should be discarded // old_block's contents should be discarded
$this->tpl->replaceBlock('old_block', 'replaced:{replaced_var}#', false); $this->tpl->replaceBlock('old_block', 'replaced:{replaced_var}#', false);
$this->assertTrue(!$this->tpl->blockExists('old_inner_block') && !$this->tpl->placeholderExists('old_var'), $this->assertTrue(!$this->tpl->blockExists('old_inner_block') && !$this->tpl->placeholderExists('old_var'),
'The replaced block\'s contents seem to be still present'); 'The replaced block\'s contents seem to be still present');
$this->tpl->setVariable('replaced_var', 'replaced_value'); $this->tpl->setVariable('replaced_var', 'replaced_value');
$this->tpl->parse('old_block'); $this->tpl->parse('old_block');
// this time old_block's contents should be preserved // this time old_block's contents should be preserved
$this->tpl->replaceBlock('old_block', 'replaced_again:{brand_new_var}', true); $this->tpl->replaceBlock('old_block', 'replaced_again:{brand_new_var}', true);
$this->tpl->setVariable('brand_new_var', 'brand_new_value'); $this->tpl->setVariable('brand_new_var', 'brand_new_value');
$this->assertEquals('replaced:replaced_value#replaced_again:brand_new_value', $this->_stripWhitespace($this->tpl->get())); $this->assertEquals('replaced:replaced_value#replaced_again:brand_new_value', $this->_stripWhitespace($this->tpl->get()));
} }
function testReplaceBlockfile() function testReplaceBlockfile()
{ {
$result = $this->tpl->loadTemplatefile('blocks.html', true, true); $result = $this->tpl->loadTemplatefile('blocks.html', true, true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error loading template file: '. $result->getMessage()); $this->assertTrue(false, 'Error loading template file: '. $result->getMessage());
} }
$this->tpl->setVariable('old_var', 'old_value'); $this->tpl->setVariable('old_var', 'old_value');
$this->tpl->parse('old_block'); $this->tpl->parse('old_block');
// old_block's contents should be discarded // old_block's contents should be discarded
$result = $this->tpl->replaceBlockfile('old_block', 'replaceblock.html', false); $result = $this->tpl->replaceBlockfile('old_block', 'replaceblock.html', false);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error replacing block from file: '. $result->getMessage()); $this->assertTrue(false, 'Error replacing block from file: '. $result->getMessage());
} }
$this->assertTrue(!$this->tpl->blockExists('old_inner_block') && !$this->tpl->placeholderExists('old_var'), $this->assertTrue(!$this->tpl->blockExists('old_inner_block') && !$this->tpl->placeholderExists('old_var'),
'The replaced block\'s contents seem to be still present'); 'The replaced block\'s contents seem to be still present');
$this->tpl->setVariable(array( $this->tpl->setVariable(array(
'replaced_var' => 'replaced_value', 'replaced_var' => 'replaced_value',
'replaced_inner_var' => 'inner_value' 'replaced_inner_var' => 'inner_value'
)); ));
$this->tpl->parse('old_block'); $this->tpl->parse('old_block');
// this time old_block's contents should be preserved // this time old_block's contents should be preserved
$result = $this->tpl->replaceBlockfile('old_block', 'addblock.html', true); $result = $this->tpl->replaceBlockfile('old_block', 'addblock.html', true);
if (PEAR::isError($result)) { if (PEAR::isError($result)) {
$this->assertTrue(false, 'Error replacing block from file: '. $result->getMessage()); $this->assertTrue(false, 'Error replacing block from file: '. $result->getMessage());
} }
$this->tpl->setVariable('new_var', 'again'); $this->tpl->setVariable('new_var', 'again');
$this->assertEquals('replaced:replaced_value|inner_value#added:again', $this->_stripWhitespace($this->tpl->get())); $this->assertEquals('replaced:replaced_value|inner_value#added:again', $this->_stripWhitespace($this->tpl->get()));
} }
function testCallback() function testCallback()
{ {
$this->tpl->setTemplate('callback:func_uppercase(word)'); $this->tpl->setTemplate('callback:func_uppercase(word)');
$this->tpl->setCallbackFunction('uppercase', '_uppercaseCallback'); $this->tpl->setCallbackFunction('uppercase', '_uppercaseCallback');
$res = $this->tpl->performCallback(); $res = $this->tpl->performCallback();
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$this->assertTrue(false, 'Error performing callback: '. $res->getMessage()); $this->assertTrue(false, 'Error performing callback: '. $res->getMessage());
} }
$this->assertEquals('callback:WORD', $this->tpl->get()); $this->assertEquals('callback:WORD', $this->tpl->get());
$this->tpl->setTemplate('callback:func_lowercase(Word)'); $this->tpl->setTemplate('callback:func_lowercase(Word)');
$this->tpl->setCallbackFunction('lowercase', array('Callbacks','_lowercaseCallback')); $this->tpl->setCallbackFunction('lowercase', array('Callbacks','_lowercaseCallback'));
$res = $this->tpl->performCallback(); $res = $this->tpl->performCallback();
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$this->assertTrue(false, 'Error performing callback: '. $res->getMessage()); $this->assertTrue(false, 'Error performing callback: '. $res->getMessage());
} }
$this->assertEquals('callback:word', $this->tpl->get()); $this->assertEquals('callback:word', $this->tpl->get());
$this->tpl->setTemplate('callback:func_lowercase(Word)'); $this->tpl->setTemplate('callback:func_lowercase(Word)');
$this->tpl->setCallbackFunction('lowercase', array(new Callbacks,'_lowercaseCallback')); $this->tpl->setCallbackFunction('lowercase', array(new Callbacks,'_lowercaseCallback'));
$res = $this->tpl->performCallback(); $res = $this->tpl->performCallback();
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$this->assertTrue(false, 'Error performing callback: '. $res->getMessage()); $this->assertTrue(false, 'Error performing callback: '. $res->getMessage());
} }
$this->assertEquals('callback:word', $this->tpl->get()); $this->assertEquals('callback:word', $this->tpl->get());
$this->tpl->setTemplate('callback:func_numberFormat(1.5, 2)'); $this->tpl->setTemplate('callback:func_numberFormat(1.5, 2)');
$this->tpl->setCallbackFunction('numberFormat', array('Callbacks', '_numberFormatCallback'), '', true); $this->tpl->setCallbackFunction('numberFormat', array('Callbacks', '_numberFormatCallback'), '', true);
$res = $this->tpl->performCallback(); $res = $this->tpl->performCallback();
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$this->assertTrue(false, 'Error performing callback: '. $res->getMessage()); $this->assertTrue(false, 'Error performing callback: '. $res->getMessage());
} }
$this->assertEquals('callback:1.50', $this->tpl->get()); $this->assertEquals('callback:1.50', $this->tpl->get());
$this->tpl->setTemplate('callback:func_numberFormat(1.5, 2)'); $this->tpl->setTemplate('callback:func_numberFormat(1.5, 2)');
$GLOBALS['obj'] = new Callbacks; $GLOBALS['obj'] = new Callbacks;
$this->tpl->setCallbackFunction('numberFormat', '_numberFormatCallback', 'obj', true); $this->tpl->setCallbackFunction('numberFormat', '_numberFormatCallback', 'obj', true);
$res = $this->tpl->performCallback(); $res = $this->tpl->performCallback();
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
$this->assertTrue(false, 'Error performing callback: '. $res->getMessage()); $this->assertTrue(false, 'Error performing callback: '. $res->getMessage());
} }
$this->assertEquals('callback:1.50', $this->tpl->get()); $this->assertEquals('callback:1.50', $this->tpl->get());
} }
} }
?> ?>

View File

@ -1,7 +1,7 @@
<!-- BEGIN outer_block --> <!-- BEGIN outer_block -->
{outer} {outer}
<!-- BEGIN inner_block --> <!-- BEGIN inner_block -->
|{inner} |{inner}
<!-- END inner_block --> <!-- END inner_block -->
# #
<!-- END outer_block --> <!-- END outer_block -->

View File

@ -1,8 +1,8 @@
{var} {var}
<!-- BEGIN old_block --> <!-- BEGIN old_block -->
old:{old_var} old:{old_var}
<!-- BEGIN old_inner_block --> <!-- BEGIN old_inner_block -->
|{old_inner_var} |{old_inner_var}
<!-- END old_inner_block --> <!-- END old_inner_block -->
# #
<!-- END old_block --> <!-- END old_block -->

View File

@ -1,13 +1,13 @@
<!-- BEGIN block_one --> <!-- BEGIN block_one -->
{glob}:{var1}# {glob}:{var1}#
<!-- END block_one --> <!-- END block_one -->
<!-- BEGIN block_two --> <!-- BEGIN block_two -->
{glob}:{var2}# {glob}:{var2}#
<!-- END block_two --> <!-- END block_two -->
<!-- BEGIN block_three --> <!-- BEGIN block_three -->
{glob}:{var3} {glob}:{var3}
<!-- BEGIN block_four --> <!-- BEGIN block_four -->
|{glob}:{var4} |{glob}:{var4}
<!-- END block_four --> <!-- END block_four -->
# #
<!-- END block_three --> <!-- END block_three -->

View File

@ -1 +1 @@
Master file; <!-- INCLUDE __include.html --> Master file; <!-- INCLUDE __include.html -->

View File

@ -1,5 +1,5 @@
replaced:{replaced_var} replaced:{replaced_var}
<!-- BEGIN new_inner_block --> <!-- BEGIN new_inner_block -->
|{replaced_inner_var} |{replaced_inner_var}
<!-- END new_inner_block --> <!-- END new_inner_block -->
# #

6
package.sig Normal file
View File

@ -0,0 +1,6 @@
-----BEGIN PGP SIGNATURE-----
iEYEABECAAYFAlpl7wAACgkQcqMhusJF8XUPAgCgkkhDLmcbWpQvpV5aXtWXmSME
1eAAoMuMxtygcY5OOoitupbXVn1sDGYF
=tmsd
-----END PGP SIGNATURE-----

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<package packagerversion="1.9.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd"> <package packagerversion="1.10.5" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
<name>HTML_Template_IT</name> <name>HTML_Template_IT</name>
<channel>pear.php.net</channel> <channel>pear.php.net</channel>
<summary>Integrated Templates</summary> <summary>Integrated Templates</summary>
@ -10,7 +10,7 @@ There are two classes to use for templating. HTML_Template_IT is used for basic
<name>Gregory Currie</name> <name>Gregory Currie</name>
<user>gregorycu</user> <user>gregorycu</user>
<email>gregorycu@php.net</email> <email>gregorycu@php.net</email>
<active>yes</active> <active>no</active>
</lead> </lead>
<lead> <lead>
<name>Pierre-Alain Joye</name> <name>Pierre-Alain Joye</name>
@ -36,10 +36,10 @@ There are two classes to use for templating. HTML_Template_IT is used for basic
<email>ulf.wendel@phpdoc.de</email> <email>ulf.wendel@phpdoc.de</email>
<active>no</active> <active>no</active>
</developer> </developer>
<date>2010-03-10</date> <date>2018-01-22</date>
<time>19:08:10</time> <time>14:02:10</time>
<version> <version>
<release>1.3.0</release> <release>1.3.1</release>
<api>1.3.0</api> <api>1.3.0</api>
</version> </version>
<stability> <stability>
@ -48,49 +48,33 @@ There are two classes to use for templating. HTML_Template_IT is used for basic
</stability> </stability>
<license>Modified BSD license</license> <license>Modified BSD license</license>
<notes> <notes>
Changes since last stable release (1.2.1): - PR #2: Fixes for deprecated code
- Add support for pear package 2.0 format
- Remove support for pear package 1.0 format
- Fix bug #9501, doller signs disapear if preg_match is used.
- Fix bug #9783, don&apos;t remove variable which values follow the variable pattern
To allow backwards compatbility an option preserve_input is added.
If it is false, the old behaviour will be used and therefore those values will be deleted.
Default is true, so new behaviour.
- Fix bug #9853, problems with dots in placeholders or blocknames
- Fix bug #13935, docblock is wrong
- Fix bug #17129
- Add option &apos;preserve_input&apos; to only remove unkown variable that were present
during setTemplate or loadTemplatefile
which is the behaviour before 1.3.0a1
- Improved PHPCS (Request #15039)
- Added unit tests
- Fixed unit tests
</notes> </notes>
<contents> <contents>
<dir name="/"> <dir name="/">
<file md5sum="157f1b27090288fbce921b762697c3f4" name="examples/sample_it.php" role="doc" /> <file md5sum="ba285cf25750a900690f2388ee31a103" name="examples/sample_it.php" role="doc" />
<file md5sum="1d2363fa8640780392af6c51e9c3713f" name="examples/sample_itx_addblockfile.php" role="doc" /> <file md5sum="8da7b1692566f5f67b7070402cb949dc" name="examples/sample_itx_addblockfile.php" role="doc" />
<file md5sum="43a3535aa4d5e9df400babae53d82a08" name="examples/templates/addblockfile_list.tpl.htm" role="doc" /> <file md5sum="342278cc5fe8ca6c66591cd5ee389402" name="examples/templates/addblockfile_list.tpl.htm" role="doc" />
<file md5sum="16f4927420fa169875167a4874e7add7" name="examples/templates/addblockfile_main.tpl.htm" role="doc" /> <file md5sum="697f694a67db6b96d247a24bdfd44f9b" name="examples/templates/addblockfile_main.tpl.htm" role="doc" />
<file md5sum="2c851fcec88007eef66c28a9d8f10ceb" name="examples/templates/main.tpl.htm" role="doc" /> <file md5sum="834e1e6d40b2f34906aa17f9969bd891" name="examples/templates/main.tpl.htm" role="doc" />
<file md5sum="886a6044e8186e3b1e1d8c5b004246af" name="HTML/Template/IT.php" role="php" /> <file md5sum="ff54f9a70504c2c64f81b9d4e1897c3b" name="HTML/Template/IT.php" role="php" />
<file md5sum="16b0300b5fbe3be7a1df976ce5d27c4f" name="HTML/Template/ITX.php" role="php" /> <file md5sum="226a20af0aa45c0838863f73103b91af" name="HTML/Template/ITX.php" role="php" />
<file md5sum="484d2aa6a504a351a1d3e2b8bb39612d" name="HTML/Template/IT_Error.php" role="php" /> <file md5sum="52a5e675aec5f68c4c3111a17307a860" name="HTML/Template/IT_Error.php" role="php" />
<file md5sum="e576a94c06b323e4cfc6bcf9dda017c2" name="tests/AllTests.php" role="test" /> <file md5sum="e576a94c06b323e4cfc6bcf9dda017c2" name="tests/AllTests.php" role="test" />
<file md5sum="adabbbb8cf54dc80720b7929e594cbec" name="tests/ITTest.php" role="test" /> <file md5sum="a12627343ed2962dc629181dd4fa1994" name="tests/ITTest.php" role="test" />
<file md5sum="80139a8b443488dac801fae748b6f2c2" name="tests/ITXTest.php" role="test" /> <file md5sum="e0d736f03900f6fc9e6132c7549a96b8" name="tests/ITXTest.php" role="test" />
<file md5sum="e50de49b74a1d96bb77ddae2d0abdfc3" name="tests/templates/addblock.html" role="test" /> <file md5sum="bca97392b741f553d10203f04549a423" name="tests/templates/addblock.html" role="test" />
<file md5sum="22e56437378e53d08ba07d3dd2aa4b85" name="tests/templates/blockiteration.html" role="test" /> <file md5sum="d4e1caf0b07b85e49e0e82ab83e91ed3" name="tests/templates/blockiteration.html" role="test" />
<file md5sum="4173bf97eec43787532e247ef9b2611a" name="tests/templates/blocks.html" role="test" /> <file md5sum="aa11dc0ba8c94c71f0ed6e448770f913" name="tests/templates/blocks.html" role="test" />
<file md5sum="7014497a69b346957fb3d2b5fa44ffd4" name="tests/templates/bug_9853_01.tpl" role="test" /> <file md5sum="7014497a69b346957fb3d2b5fa44ffd4" name="tests/templates/bug_9853_01.tpl" role="test" />
<file md5sum="385013ff6be875da2888087e96c6a93c" name="tests/templates/bug_9853_02.tpl" role="test" /> <file md5sum="385013ff6be875da2888087e96c6a93c" name="tests/templates/bug_9853_02.tpl" role="test" />
<file md5sum="2611d6ec574a65716f1bc2ca95cb8c63" name="tests/templates/globals.html" role="test" /> <file md5sum="ed6cb6de29d69890c611f11ce90e1e85" name="tests/templates/globals.html" role="test" />
<file md5sum="db5b226eff0218c831749c07042529f2" name="tests/templates/include.html" role="test" /> <file md5sum="8ac12c5d1c85787dd44ed5c93a392dfe" name="tests/templates/include.html" role="test" />
<file md5sum="d9a6425eebdfc6981465b4a228dbee51" name="tests/templates/loadtemplatefile.html" role="test" /> <file md5sum="bd4c99366021b8bd88ba220ec829eae5" name="tests/templates/loadtemplatefile.html" role="test" />
<file md5sum="8747e8c70d20b6c86d1d19af2eadd874" name="tests/templates/placeholderreplacementscope.html" role="test" /> <file md5sum="8747e8c70d20b6c86d1d19af2eadd874" name="tests/templates/placeholderreplacementscope.html" role="test" />
<file md5sum="5c7e2e9c32306db4b6667d2b57f1c0ac" name="tests/templates/replaceblock.html" role="test" /> <file md5sum="a3d70ab52bdb9f3c14702879865a55d6" name="tests/templates/replaceblock.html" role="test" />
<file md5sum="310552db4653b34dbb0f993847572fc5" name="tests/templates/__include.html" role="test" /> <file md5sum="fb1681e6ffa470d92859fac3496b960e" name="tests/templates/__include.html" role="test" />
<file md5sum="7073f9a84fa6da71e7a505a777dda302" name="LICENSE" role="doc" /> <file md5sum="f8790e48b597dff12a643e08e9be3fab" name="LICENSE" role="doc" />
</dir> </dir>
</contents> </contents>
<dependencies> <dependencies>
@ -331,5 +315,20 @@ Changes since last stable release (1.2.1):
- Fixed unit tests - Fixed unit tests
</notes> </notes>
</release> </release>
<release>
<version>
<release>1.3.1</release>
<api>1.3.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<date>2018-01-22</date>
<license>Modified BSD license</license>
<notes>
- PR #2: Fixes for deprecated code
</notes>
</release>
</changelog> </changelog>
</package> </package>