From 08f07a9aa4a42530f477b6f81993b610493f7ba8 Mon Sep 17 00:00:00 2001 From: mark_story Date: Mon, 19 Oct 2009 23:44:50 -0400 Subject: [PATCH] Changing FormHelper::submit() to be able to create all types of submit buttons. Use 'type' option to create reset or button type inputs. Test cases added. --- cake/libs/view/helpers/form.php | 3 +++ cake/libs/view/helpers/html.php | 2 +- .../cases/libs/view/helpers/form.test.php | 23 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/cake/libs/view/helpers/form.php b/cake/libs/view/helpers/form.php index 5135bd5a7..dd8895ae2 100755 --- a/cake/libs/view/helpers/form.php +++ b/cake/libs/view/helpers/form.php @@ -1153,6 +1153,7 @@ class FormHelper extends AppHelper { $div = $options['div']; unset($options['div']); } + $options += array('type' => 'submit'); $divOptions = array('tag' => 'div'); if ($div === true) { @@ -1166,12 +1167,14 @@ class FormHelper extends AppHelper { } if (strpos($caption, '://') !== false) { + unset($options['type']); $out .= $this->output(sprintf( $this->Html->tags['submitimage'], $caption, $this->_parseAttributes($options, null, '', ' ') )); } elseif (preg_match('/\.(jpg|jpe|jpeg|gif|png|ico)$/', $caption)) { + unset($options['type']); if ($caption{0} !== '/') { $url = $this->webroot(IMAGES_URL . $caption); } else { diff --git a/cake/libs/view/helpers/html.php b/cake/libs/view/helpers/html.php index d6a4a2c75..f87be2818 100644 --- a/cake/libs/view/helpers/html.php +++ b/cake/libs/view/helpers/html.php @@ -58,7 +58,7 @@ class HtmlHelper extends AppHelper { 'password' => '', 'file' => '', 'file_no_model' => '', - 'submit' => '', + 'submit' => '', 'submitimage' => '', 'button' => '', 'image' => '', diff --git a/cake/tests/cases/libs/view/helpers/form.test.php b/cake/tests/cases/libs/view/helpers/form.test.php index a91896282..d195b11cb 100644 --- a/cake/tests/cases/libs/view/helpers/form.test.php +++ b/cake/tests/cases/libs/view/helpers/form.test.php @@ -4560,6 +4560,29 @@ class FormHelperTest extends CakeTestCase { ); $this->assertTags($result, $expected); + $result = $this->Form->submit('Next >', array('escape' => false)); + $expected = array( + 'div' => array('class' => 'submit'), + 'input' => array('type' => 'submit', 'value' => 'Next >'), + '/div' + ); + $this->assertTags($result, $expected); + + $result = $this->Form->submit('Reset!', array('type' => 'reset')); + $expected = array( + 'div' => array('class' => 'submit'), + 'input' => array('type' => 'reset', 'value' => 'Reset!'), + '/div' + ); + $this->assertTags($result, $expected); + } + +/** + * test image submit types. + * + * @return void + **/ + function testSubmitImage() { $result = $this->Form->submit('http://example.com/cake.power.gif'); $expected = array( 'div' => array('class' => 'submit'),