diff options
author | xibbar <xibbar@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-09-28 15:41:12 +0000 |
---|---|---|
committer | xibbar <xibbar@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-09-28 15:41:12 +0000 |
commit | 9acff4872df1ab628abfae923691f911b58d6d3f (patch) | |
tree | 6cd27989dd3fbe6d36d3751c9faa54b189fe1b2a | |
parent | 645a0eb8ec7c71f7635207580e3fd90837e0d8cc (diff) | |
download | ruby-9acff4872df1ab628abfae923691f911b58d6d3f.tar.gz |
* lib/cgi/html.rb (CGI::HtmlExtension::{radio_group, checkbox_group}):
can specify the false as checked or selected value.
[ruby-core:18306], [ruby-core:18307]
* test/cgi/test_cgi_tag_helper.rb: add a test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19617 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/cgi/html.rb | 16 | ||||
-rwxr-xr-x | test/cgi/test_cgi_tag_helper.rb | 11 |
3 files changed, 27 insertions, 8 deletions
@@ -1,3 +1,11 @@ +Mon Sep 29 00:30:20 2008 Takeyuki Fujioka <xibbar@ruby-lang.org> + + * lib/cgi/html.rb (CGI::HtmlExtension::{radio_group, checkbox_group}): + can specify the false as checked or selected value. + [ruby-core:18306], [ruby-core:18307] + + * test/cgi/test_cgi_tag_helper.rb: add a test. + Sun Sep 28 23:08:38 2008 Takeyuki Fujioka <xibbar@ruby-lang.org> * lib/cgi/html.rb (CGI::HtmlExtension::popup_menu): diff --git a/lib/cgi/html.rb b/lib/cgi/html.rb index aac53f9256..74aa730be7 100644 --- a/lib/cgi/html.rb +++ b/lib/cgi/html.rb @@ -248,12 +248,12 @@ class CGI if value.kind_of?(String) checkbox(name, value) + value else - if value[value.size - 1] == true - checkbox(name, value[0], true) + - value[value.size - 2] + if value[-1] == true || value[-1] == false + checkbox(name, value[0], value[-1]) + + value[-2] else checkbox(name, value[0]) + - value[value.size - 1] + value[-1] end end }.join @@ -703,12 +703,12 @@ class CGI if value.kind_of?(String) radio_button(name, value) + value else - if value[value.size - 1] == true - radio_button(name, value[0], true) + - value[value.size - 2] + if value[-1] == true || value[-1] == false + radio_button(name, value[0], value[-1]) + + value[-2] else radio_button(name, value[0]) + - value[value.size - 1] + value[-1] end end }.join diff --git a/test/cgi/test_cgi_tag_helper.rb b/test/cgi/test_cgi_tag_helper.rb index 38533a11e8..618130b822 100755 --- a/test/cgi/test_cgi_tag_helper.rb +++ b/test/cgi/test_cgi_tag_helper.rb @@ -313,6 +313,17 @@ class CGITagHelperTest < Test::Unit::TestCase assert_match(/^<INPUT .*VALUE="aa".*>bb<INPUT .*VALUE="cc".*>dd$/,str) assert_match(/^<INPUT .*TYPE="radio".*>bb<INPUT .*TYPE="radio".*>dd$/,str) assert_match(/^<INPUT .*NAME="foo".*>bb<INPUT .*NAME="foo".*>dd$/,str) + str=cgi.checkbox_group("foo",["aa","bb"],["cc","dd",true]) + assert_match(/^<INPUT .*VALUE="aa".*>bb<INPUT .*VALUE="cc".*>dd$/,str) + assert_match(/^<INPUT .*TYPE="checkbox".*>bb<INPUT .*TYPE="checkbox".*>dd$/,str) + assert_match(/^<INPUT .*NAME="foo".*>bb<INPUT .*NAME="foo".*>dd$/,str) + assert_match(/^<INPUT .*>bb<INPUT .*CHECKED.*>dd$/,str) + if RUBY_VERSION>="1.9" + str=cgi.radio_group("foo",["aa","bb"],["cc","dd",false]) + assert_match(/^<INPUT .*VALUE="aa".*>bb<INPUT .*VALUE="cc".*>dd$/,str) + assert_match(/^<INPUT .*TYPE="radio".*>bb<INPUT .*TYPE="radio".*>dd$/,str) + assert_match(/^<INPUT .*NAME="foo".*>bb<INPUT .*NAME="foo".*>dd$/,str) + end end =begin |