mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #7343 from egtann/master
Add start_hour and end_hour options for select_hour helper
This commit is contained in:
commit
52f90ea66f
3 changed files with 42 additions and 1 deletions
|
@ -1,5 +1,7 @@
|
|||
## Rails 4.0.0 (unreleased) ##
|
||||
|
||||
* Add start_hour and end_hour options to the select_hour helper. *Evan Tann*
|
||||
|
||||
* Raises an ArgumentError when the first argument in `form_for` contain `nil`
|
||||
or is empty.
|
||||
|
||||
|
|
|
@ -427,6 +427,9 @@ module ActionView
|
|||
# # Generate a time select field with hours in the AM/PM format
|
||||
# select_time(my_time, :ampm => true)
|
||||
#
|
||||
# # Generates a time select field with hours that range from 2 to 14
|
||||
# select_time(my_time, :start_hour => 2, :end_hour => 14)
|
||||
#
|
||||
# # Generates a time select with a custom prompt. Use <tt>:prompt</tt> to true for generic prompts.
|
||||
# select_time(my_time, :prompt => {:day => 'Choose day', :month => 'Choose month', :year => 'Choose year'})
|
||||
# select_time(my_time, :prompt => {:hour => true}) # generic prompt for hours
|
||||
|
@ -504,6 +507,9 @@ module ActionView
|
|||
#
|
||||
# # Generate a select field for hours in the AM/PM format
|
||||
# select_hour(my_time, :ampm => true)
|
||||
#
|
||||
# # Generates a select field that includes options for hours from 2 to 14.
|
||||
# select_hour(my_time, :start_hour => 2, :end_hour => 14)
|
||||
def select_hour(datetime, options = {}, html_options = {})
|
||||
DateTimeSelector.new(datetime, options, html_options).select_hour
|
||||
end
|
||||
|
@ -734,7 +740,11 @@ module ActionView
|
|||
if @options[:use_hidden] || @options[:discard_hour]
|
||||
build_hidden(:hour, hour)
|
||||
else
|
||||
build_options_and_select(:hour, hour, :end => 23, :ampm => @options[:ampm])
|
||||
options = {}
|
||||
options[:ampm] = @options[:ampm] || false
|
||||
options[:start] = @options[:start_hour] || 0
|
||||
options[:end] = @options[:end_hour] || 23
|
||||
build_options_and_select(:hour, hour, options)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -1243,6 +1243,35 @@ class DateHelperTest < ActionView::TestCase
|
|||
:prompt => {:day => 'Choose day', :month => 'Choose month', :year => 'Choose year', :hour => 'Choose hour', :minute => 'Choose minute'})
|
||||
end
|
||||
|
||||
def test_select_datetime_with_custom_hours
|
||||
expected = %(<select id="date_first_year" name="date[first][year]">\n)
|
||||
expected << %(<option value="">Choose year</option>\n<option value="2003" selected="selected">2003</option>\n<option value="2004">2004</option>\n<option value="2005">2005</option>\n)
|
||||
expected << "</select>\n"
|
||||
|
||||
expected << %(<select id="date_first_month" name="date[first][month]">\n)
|
||||
expected << %(<option value="">Choose month</option>\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8" selected="selected">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n)
|
||||
expected << "</select>\n"
|
||||
|
||||
expected << %(<select id="date_first_day" name="date[first][day]">\n)
|
||||
expected << %(<option value="">Choose day</option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16" selected="selected">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n)
|
||||
expected << "</select>\n"
|
||||
|
||||
expected << " — "
|
||||
|
||||
expected << %(<select id="date_first_hour" name="date[first][hour]">\n)
|
||||
expected << %(<option value="">Choose hour</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08" selected="selected">08</option>\n<option value="09">09</option>\n)
|
||||
expected << "</select>\n"
|
||||
|
||||
expected << " : "
|
||||
|
||||
expected << %(<select id="date_first_minute" name="date[first][minute]">\n)
|
||||
expected << %(<option value="">Choose minute</option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04" selected="selected">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n)
|
||||
expected << "</select>\n"
|
||||
|
||||
assert_dom_equal expected, select_datetime(Time.mktime(2003, 8, 16, 8, 4, 18), :start_year => 2003, :end_year => 2005, :start_hour => 1, :end_hour => 9, :prefix => "date[first]",
|
||||
:prompt => {:day => 'Choose day', :month => 'Choose month', :year => 'Choose year', :hour => 'Choose hour', :minute => 'Choose minute'})
|
||||
end
|
||||
|
||||
def test_select_datetime_with_hidden
|
||||
expected = %(<input id="date_first_year" name="date[first][year]" type="hidden" value="2003" />\n)
|
||||
expected << %(<input id="date_first_month" name="date[first][month]" type="hidden" value="8" />\n)
|
||||
|
|
Loading…
Reference in a new issue