diff --git a/_test/tests/inc/form/buttonelement.test.php b/_test/tests/inc/form/buttonelement.test.php new file mode 100644 index 0000000000..8e1a7e1e29 --- /dev/null +++ b/_test/tests/inc/form/buttonelement.test.php @@ -0,0 +1,40 @@ +addButton('foo', 'Hello World')->val('bam')->attr('type', 'submit'); + + $html = $form->toHTML(); + $pq = phpQuery::newDocumentXHTML($html); + + $input = $pq->find('button[name=foo]'); + $this->assertTrue($input->length == 1); + $this->assertEquals('bam', $input->val()); + $this->assertEquals('submit', $input->attr('type')); + $this->assertEquals('Hello World', $input->text()); // tags were escaped + + $b = $input->find('b'); // no tags found + $this->assertTrue($b->length == 0); + } + + function test_html() { + $form = new Form\Form(); + $form->addButtonHTML('foo', 'Hello World')->val('bam')->attr('type', 'submit'); + + $html = $form->toHTML(); + $pq = phpQuery::newDocumentXHTML($html); + + $input = $pq->find('button[name=foo]'); + $this->assertTrue($input->length == 1); + $this->assertEquals('bam', $input->val()); + $this->assertEquals('submit', $input->attr('type')); + $this->assertEquals('Hello World', $input->text()); // tags are stripped here + + $b = $input->find('b'); // tags found + $this->assertTrue($b->length == 1); + } +} diff --git a/inc/Form/ButtonElement.php b/inc/Form/ButtonElement.php new file mode 100644 index 0000000000..77c30ed4ff --- /dev/null +++ b/inc/Form/ButtonElement.php @@ -0,0 +1,34 @@ + $name, 'value' => 1)); + $this->content = $content; + } + + /** + * The HTML representation of this element + * + * @return string + */ + public function toHTML() { + return ''; + } + +} diff --git a/inc/Form/Form.php b/inc/Form/Form.php index 625557fa19..738f2bcf89 100644 --- a/inc/Form/Form.php +++ b/inc/Form/Form.php @@ -233,6 +233,30 @@ public function addTextarea($name, $label = '', $pos = -1) { return $this->addElement(new TextareaElement($name, $label), $pos); } + /** + * Adds a simple button, escapes the content for you + * + * @param string $name + * @param string $content + * @param int $pos + * @return Element + */ + public function addButton($name, $content, $pos = -1) { + return $this->addElement(new ButtonElement($name, hsc($content)), $pos); + } + + /** + * Adds a simple button, allows HTML for content + * + * @param string $name + * @param string $html + * @param int $pos + * @return Element + */ + public function addButtonHTML($name, $html, $pos = -1) { + return $this->addElement(new ButtonElement($name, $html), $pos); + } + /** * Add fixed HTML to the form *