Added: pear/packages/HTML_QuickForm2/trunk/HTML/QuickForm2/Element/Static.php =================================================================== --- pear/packages/HTML_QuickForm2/trunk/HTML/QuickForm2/Element/Static.php (rev 0) +++ pear/packages/HTML_QuickForm2/trunk/HTML/QuickForm2/Element/Static.php 2010-05-10 10:21:10 UTC (rev 299206) @@ -0,0 +1,153 @@ +, + * Bertrand Mansion + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * The names of the authors may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category HTML + * @package HTML_QuickForm2 + * @author Alexey Borzov + * @author Bertrand Mansion + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version SVN: $Id$ + * @link http://pear.php.net/package/HTML_QuickForm2 + */ + +/** + * Base class for simple HTML_QuickForm2 elements (not Containers) + */ +require_once 'HTML/QuickForm2/Element.php'; + +/** + * Class for static elements that only contain text or markup + * + * @category HTML + * @package HTML_QuickForm2 + * @author Alexey Borzov + * @author Bertrand Mansion + * @version Release: @package_version@ + */ +class HTML_QuickForm2_Element_Static extends HTML_QuickForm2_Element +{ + + /** + * Contains options and data used for the element creation + * - content: Content of the static element + * @var array + */ + protected $data = array('content' => ''); + + public function getType() + { + return 'static'; + } + + /** + * Static element can not be frozen + * + * @param bool Whether element should be frozen or editable. This + * parameter is ignored in case of static elements + * @return bool Always returns false + */ + public function toggleFrozen($freeze = null) + { + return false; + } + + /** + * Sets the contents of the static element + * + * @param string Static content + * @return HTML_QuickForm2_Element_Static + */ + function setContent($content) + { + $this->data['content'] = $content; + return $this; + } + + /** + * Returns the contents of the static element + * + * @return string + */ + function getContent() + { + return $this->data['content']; + } + + /** + * Static element's content can also be set via this method + * + * @param mixed Element's value, this parameter is ignored + * @return HTML_QuickForm2_Element_Static + */ + public function setValue($value) + { + $this->setContent($value); + return $this; + } + + /** + * Static elements have no value + * + * @return null + */ + public function getValue() + { + return null; + } + + public function __toString() + { + return $this->getIndent() . $this->data['content']; + } + + /** + * Called when the element needs to update its value from form's data sources + * + * Static elements content can be updated with default form values. + */ + protected function updateValue() + { + foreach ($this->getDataSources() as $ds) { + if (!$ds instanceof HTML_QuickForm2_DataSource_Submit && + null !== ($value = $ds->getValue($this->getName()))) + { + $this->setContent($value); + return; + } + } + } +} +?> \ No newline at end of file Property changes on: pear/packages/HTML_QuickForm2/trunk/HTML/QuickForm2/Element/Static.php ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native Modified: pear/packages/HTML_QuickForm2/trunk/tests/QuickForm2/Element/AllTests.php =================================================================== --- pear/packages/HTML_QuickForm2/trunk/tests/QuickForm2/Element/AllTests.php 2010-05-10 10:18:55 UTC (rev 299205) +++ pear/packages/HTML_QuickForm2/trunk/tests/QuickForm2/Element/AllTests.php 2010-05-10 10:21:10 UTC (rev 299206) @@ -63,6 +63,7 @@ require_once dirname(__FILE__) . '/InputResetTest.php'; require_once dirname(__FILE__) . '/ButtonTest.php'; require_once dirname(__FILE__) . '/InputFileTest.php'; +require_once dirname(__FILE__) . '/StaticTest.php'; class QuickForm2_Element_AllTests { @@ -88,6 +89,7 @@ $suite->addTestSuite('HTML_QuickForm2_Element_InputResetTest'); $suite->addTestSuite('HTML_QuickForm2_Element_ButtonTest'); $suite->addTestSuite('HTML_QuickForm2_Element_InputFileTest'); + $suite->addTestSuite('HTML_QuickForm2_Element_StaticTest'); return $suite; } Added: pear/packages/HTML_QuickForm2/trunk/tests/QuickForm2/Element/StaticTest.php =================================================================== --- pear/packages/HTML_QuickForm2/trunk/tests/QuickForm2/Element/StaticTest.php (rev 0) +++ pear/packages/HTML_QuickForm2/trunk/tests/QuickForm2/Element/StaticTest.php 2010-05-10 10:21:10 UTC (rev 299206) @@ -0,0 +1,108 @@ +, + * Bertrand Mansion + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * The names of the authors may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category HTML + * @package HTML_QuickForm2 + * @author Alexey Borzov + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version SVN: $Id$ + * @link http://pear.php.net/package/HTML_QuickForm2 + */ + +/** + * Class for static elements + */ +require_once 'HTML/QuickForm2/Element/Static.php'; + +/** + * PHPUnit2 Test Case + */ +require_once 'PHPUnit/Framework/TestCase.php'; + + +/** + * Unit test for HTML_QuickForm2_Element_Input class + */ +class HTML_QuickForm2_Element_StaticTest extends PHPUnit_Framework_TestCase +{ + public function testSetContent() + { + $obj = new HTML_QuickForm2_Element_Static(); + $this->assertEquals('', (string)$obj); + $obj->setContent('content'); + $this->assertEquals('content', (string)$obj); + } + + public function testCanSetAndGetValue() + { + $obj = new HTML_QuickForm2_Element_Static(); + $obj->setValue('content'); + $this->assertEquals('content', (string)$obj); + $this->assertNull($obj->getValue()); + } + + public function testUpdateValueNoInject() + { + $_POST = array( + 'foo' => 'exploit', + 'bar' => 'exploit', + 'baz' => 'ok' + ); + + $form = new HTML_QuickForm2('submit', 'post', null, false); + $form->addDataSource(new HTML_QuickForm2_DataSource_Array(array( + 'foo' => 'foo', + 'bar' => 'bar' + ))); + + $foo = $form->appendChild(new HTML_QuickForm2_Element_Static('foo')); + $bar = $form->appendChild(new HTML_QuickForm2_Element_Static('bar')); + $baz = $form->appendChild(new HTML_QuickForm2_Element_InputText('baz')); + + $this->assertEquals('foo', $foo->getContent()); + $this->assertEquals('bar', $bar->getContent()); + $this->assertEquals('ok', $baz->getValue()); + } + + public function testFrozenNoEffect() + { + $obj = new HTML_QuickForm2_Element_Static(); + $obj->setContent('content'); + $obj->toggleFrozen(true); + $this->assertEquals('content', (string)$obj); + } +} +?> \ No newline at end of file Property changes on: pear/packages/HTML_QuickForm2/trunk/tests/QuickForm2/Element/StaticTest.php ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Added: svn:eol-style + native