Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 167

Show
Ignore:
Timestamp:
12/15/04 12:47:50 (4 years ago)
Author:
david
Message:

Fixed DateHelper#date_select so that you can pass include_blank as an option even if you don't use start_year and end_year #59 [what-a-day]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/actionpack/CHANGELOG

    r161 r167  
    11*SVN* 
     2 
     3* Fixed DateHelper#date_select so that you can pass include_blank as an option even if you don't use start_year and end_year #59 [what-a-day] 
    24 
    35* Added that controllers will now search for a layout in $template_root/layouts/$controller_name.r(html|xml), so PostsController will look 
  • trunk/actionpack/lib/action_view/helpers/date_helper.rb

    r114 r167  
    159159      def select_year(date, options = {}) 
    160160        year_options = [] 
    161         unless date.kind_of?(Fixnum) then default_start_year, default_end_year = date.year - 5, date.year + 5 end 
     161        y = date.kind_of?(Fixnum) ? (y = (date == 0) ? Date.today.year : date) : date.year 
     162        default_start_year, default_end_year = y-5, y+5 
    162163 
    163164        (options[:start_year] || default_start_year).upto(options[:end_year] || default_end_year) do |year| 
  • trunk/actionpack/test/template/date_helper_test.rb

    r114 r167  
    102102    ) 
    103103  end 
     104   
     105  def test_select_date_with_no_start_year 
     106    expected =  %(<select name="date[first][year]">\n) 
     107    (Date.today.year-5).upto(Date.today.year+1) do |y| 
     108      if y == Date.today.year  
     109        expected << %(<option selected="selected">#{y}</option>\n) 
     110      else 
     111        expected << %(<option>#{y}</option>\n) 
     112      end 
     113    end 
     114    expected << "</select>\n" 
     115 
     116    expected << %(<select name="date[first][month]">\n) 
     117    expected << %(<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) 
     118    expected << "</select>\n" 
     119 
     120    expected << %(<select name="date[first][day]">\n) 
     121    expected << 
     122%(<option>1</option>\n<option>2</option>\n<option>3</option>\n<option>4</option>\n<option>5</option>\n<option>6</option>\n<option>7</option>\n<option>8</option>\n<option>9</option>\n<option>10</option>\n<option>11</option>\n<option>12</option>\n<option>13</option>\n<option>14</option>\n<option>15</option>\n<option selected="selected">16</option>\n<option>17</option>\n<option>18</option>\n<option>19</option>\n<option>20</option>\n<option>21</option>\n<option>22</option>\n<option>23</option>\n<option>24</option>\n<option>25</option>\n<option>26</option>\n<option>27</option>\n<option>28</option>\n<option>29</option>\n<option>30</option>\n<option>31</option>\n) 
     123    expected << "</select>\n" 
     124     
     125    assert_equal expected, select_date( 
     126      Time.mktime(Date.today.year, 8, 16), :end_year => Date.today.year+1, :prefix => "date[first]" 
     127    ) 
     128  end 
     129 
     130  def test_select_date_with_no_end_year 
     131    expected =  %(<select name="date[first][year]">\n) 
     132    2003.upto(2008) do |y| 
     133      if y == 2003 
     134        expected << %(<option selected="selected">#{y}</option>\n) 
     135      else 
     136        expected << %(<option>#{y}</option>\n) 
     137      end 
     138    end 
     139    expected << "</select>\n" 
     140 
     141    expected << %(<select name="date[first][month]">\n) 
     142    expected << %(<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) 
     143    expected << "</select>\n" 
     144 
     145    expected << %(<select name="date[first][day]">\n) 
     146    expected << 
     147%(<option>1</option>\n<option>2</option>\n<option>3</option>\n<option>4</option>\n<option>5</option>\n<option>6</option>\n<option>7</option>\n<option>8</option>\n<option>9</option>\n<option>10</option>\n<option>11</option>\n<option>12</option>\n<option>13</option>\n<option>14</option>\n<option>15</option>\n<option selected="selected">16</option>\n<option>17</option>\n<option>18</option>\n<option>19</option>\n<option>20</option>\n<option>21</option>\n<option>22</option>\n<option>23</option>\n<option>24</option>\n<option>25</option>\n<option>26</option>\n<option>27</option>\n<option>28</option>\n<option>29</option>\n<option>30</option>\n<option>31</option>\n) 
     148    expected << "</select>\n" 
     149     
     150    assert_equal expected, select_date( 
     151      Time.mktime(2003, 8, 16), :start_year => 2003, :prefix => "date[first]" 
     152    ) 
     153  end 
     154 
     155  def test_select_date_with_no_start_or_end_year 
     156    expected =  %(<select name="date[first][year]">\n) 
     157    (Date.today.year-5).upto(Date.today.year+5) do |y| 
     158      if y == Date.today.year  
     159        expected << %(<option selected="selected">#{y}</option>\n) 
     160      else 
     161        expected << %(<option>#{y}</option>\n) 
     162      end 
     163    end 
     164    expected << "</select>\n" 
     165 
     166    expected << %(<select name="date[first][month]">\n) 
     167    expected << %(<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) 
     168    expected << "</select>\n" 
     169 
     170    expected << %(<select name="date[first][day]">\n) 
     171    expected << 
     172%(<option>1</option>\n<option>2</option>\n<option>3</option>\n<option>4</option>\n<option>5</option>\n<option>6</option>\n<option>7</option>\n<option>8</option>\n<option>9</option>\n<option>10</option>\n<option>11</option>\n<option>12</option>\n<option>13</option>\n<option>14</option>\n<option>15</option>\n<option selected="selected">16</option>\n<option>17</option>\n<option>18</option>\n<option>19</option>\n<option>20</option>\n<option>21</option>\n<option>22</option>\n<option>23</option>\n<option>24</option>\n<option>25</option>\n<option>26</option>\n<option>27</option>\n<option>28</option>\n<option>29</option>\n<option>30</option>\n<option>31</option>\n) 
     173    expected << "</select>\n" 
     174     
     175    assert_equal expected, select_date( 
     176      Time.mktime(Date.today.year, 8, 16), :prefix => "date[first]" 
     177    ) 
     178  end 
     179 
     180  def test_date_select_with_zero_value 
     181    expected =  %(<select name="date[first][year]">\n) 
     182    expected << %(<option>2003</option>\n<option>2004</option>\n<option>2005</option>\n) 
     183    expected << "</select>\n" 
     184 
     185    expected << %(<select name="date[first][month]">\n) 
     186    expected << %(<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">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) 
     187    expected << "</select>\n" 
     188 
     189    expected << %(<select name="date[first][day]">\n) 
     190    expected << 
     191%(<option>1</option>\n<option>2</option>\n<option>3</option>\n<option>4</option>\n<option>5</option>\n<option>6</option>\n<option>7</option>\n<option>8</option>\n<option>9</option>\n<option>10</option>\n<option>11</option>\n<option>12</option>\n<option>13</option>\n<option>14</option>\n<option>15</option>\n<option>16</option>\n<option>17</option>\n<option>18</option>\n<option>19</option>\n<option>20</option>\n<option>21</option>\n<option>22</option>\n<option>23</option>\n<option>24</option>\n<option>25</option>\n<option>26</option>\n<option>27</option>\n<option>28</option>\n<option>29</option>\n<option>30</option>\n<option>31</option>\n) 
     192    expected << "</select>\n" 
     193     
     194    assert_equal expected, select_date(0, :start_year => 2003, :end_year => 2005, :prefix => "date[first]") 
     195  end 
     196 
     197  def test_date_select_with_zero_value_and_no_start_year 
     198    expected =  %(<select name="date[first][year]">\n) 
     199    (Date.today.year-5).upto(Date.today.year+1) { |y| expected << %(<option>#{y}</option>\n) } 
     200    expected << "</select>\n" 
     201 
     202    expected << %(<select name="date[first][month]">\n) 
     203    expected << %(<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">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) 
     204    expected << "</select>\n" 
     205 
     206    expected << %(<select name="date[first][day]">\n) 
     207    expected << 
     208%(<option>1</option>\n<option>2</option>\n<option>3</option>\n<option>4</option>\n<option>5</option>\n<option>6</option>\n<option>7</option>\n<option>8</option>\n<option>9</option>\n<option>10</option>\n<option>11</option>\n<option>12</option>\n<option>13</option>\n<option>14</option>\n<option>15</option>\n<option>16</option>\n<option>17</option>\n<option>18</option>\n<option>19</option>\n<option>20</option>\n<option>21</option>\n<option>22</option>\n<option>23</option>\n<option>24</option>\n<option>25</option>\n<option>26</option>\n<option>27</option>\n<option>28</option>\n<option>29</option>\n<option>30</option>\n<option>31</option>\n) 
     209    expected << "</select>\n" 
     210     
     211    assert_equal expected, select_date(0, :end_year => Date.today.year+1, :prefix => "date[first]") 
     212  end 
     213 
     214  def test_date_select_with_zero_value_and_no_end_year 
     215    expected =  %(<select name="date[first][year]">\n) 
     216    2003.upto(2009) { |y| expected << %(<option>#{y}</option>\n) } 
     217    expected << "</select>\n" 
     218 
     219    expected << %(<select name="date[first][month]">\n) 
     220    expected << %(<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">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) 
     221    expected << "</select>\n" 
     222 
     223    expected << %(<select name="date[first][day]">\n) 
     224    expected << 
     225%(<option>1</option>\n<option>2</option>\n<option>3</option>\n<option>4</option>\n<option>5</option>\n<option>6</option>\n<option>7</option>\n<option>8</option>\n<option>9</option>\n<option>10</option>\n<option>11</option>\n<option>12</option>\n<option>13</option>\n<option>14</option>\n<option>15</option>\n<option>16</option>\n<option>17</option>\n<option>18</option>\n<option>19</option>\n<option>20</option>\n<option>21</option>\n<option>22</option>\n<option>23</option>\n<option>24</option>\n<option>25</option>\n<option>26</option>\n<option>27</option>\n<option>28</option>\n<option>29</option>\n<option>30</option>\n<option>31</option>\n) 
     226    expected << "</select>\n" 
     227     
     228    assert_equal expected, select_date(0, :start_year => 2003, :prefix => "date[first]") 
     229  end 
     230   
     231  def test_date_select_with_zero_value_and_no_start_and_end_year 
     232    expected =  %(<select name="date[first][year]">\n) 
     233    (Date.today.year-5).upto(Date.today.year+5) { |y| expected << %(<option>#{y}</option>\n) } 
     234    expected << "</select>\n" 
     235 
     236    expected << %(<select name="date[first][month]">\n) 
     237    expected << %(<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">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) 
     238    expected << "</select>\n" 
     239 
     240    expected << %(<select name="date[first][day]">\n) 
     241    expected << 
     242%(<option>1</option>\n<option>2</option>\n<option>3</option>\n<option>4</option>\n<option>5</option>\n<option>6</option>\n<option>7</option>\n<option>8</option>\n<option>9</option>\n<option>10</option>\n<option>11</option>\n<option>12</option>\n<option>13</option>\n<option>14</option>\n<option>15</option>\n<option>16</option>\n<option>17</option>\n<option>18</option>\n<option>19</option>\n<option>20</option>\n<option>21</option>\n<option>22</option>\n<option>23</option>\n<option>24</option>\n<option>25</option>\n<option>26</option>\n<option>27</option>\n<option>28</option>\n<option>29</option>\n<option>30</option>\n<option>31</option>\n) 
     243    expected << "</select>\n" 
     244     
     245    assert_equal expected, select_date(0, :prefix => "date[first]") 
     246  end 
     247 
    104248end