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