/** * Test to_date_select_tag() method * * Test {@link DateHelper::to_date_select_tag()} method */ public function testTo_date_select_tag() { $dh = new DateHelper('Person', 'birthdate'); $dh->controller_object = new ActionController(); $ar = new ActiveRecord(); $dh->controller_object->Person = $ar; // With no value in $_REQUEST, data should be // retrieved from the the ActiveRecord $ar->expect_query("birthdate", "1999-02-17"); // Test with default format $this->assertEquals('<select name="Person[birthdate(1i)]">' . "\n" . '<option value="1994">1994</option>' . "\n" . '<option value="1995">1995</option>' . "\n" . '<option value="1996">1996</option>' . "\n" . '<option value="1997">1997</option>' . "\n" . '<option value="1998">1998</option>' . "\n" . '<option value="1999" selected="selected">1999</option>' . "\n" . '<option value="2000">2000</option>' . "\n" . '<option value="2001">2001</option>' . "\n" . '<option value="2002">2002</option>' . "\n" . '<option value="2003">2003</option>' . "\n" . '<option value="2004">2004</option>' . "\n" . '</select>' . "\n" . ' <select name="Person[birthdate(2i)]">' . "\n" . '<option value="01">January</option>' . "\n" . '<option value="02" selected="selected">February</option>' . "\n" . '<option value="03">March</option>' . "\n" . '<option value="04">April</option>' . "\n" . '<option value="05">May</option>' . "\n" . '<option value="06">June</option>' . "\n" . '<option value="07">July</option>' . "\n" . '<option value="08">August</option>' . "\n" . '<option value="09">September</option>' . "\n" . '<option value="10">October</option>' . "\n" . '<option value="11">November</option>' . "\n" . '<option value="12">December</option>' . "\n" . '</select>' . "\n" . ' <select name="Person[birthdate(3i)]">' . "\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">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" selected="selected">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" . '</select>' . "\n", $dh->to_date_select_tag()); $_REQUEST['Person']['birthdate(1i)'] = '1955'; $_REQUEST['Person']['birthdate(2i)'] = '08'; $_REQUEST['Person']['birthdate(3i)'] = '13'; // Test with default format $this->assertEquals('<select name="Person[birthdate(1i)]">' . "\n" . '<option value="1950">1950</option>' . "\n" . '<option value="1951">1951</option>' . "\n" . '<option value="1952">1952</option>' . "\n" . '<option value="1953">1953</option>' . "\n" . '<option value="1954">1954</option>' . "\n" . '<option value="1955" selected="selected">1955</option>' . "\n" . '<option value="1956">1956</option>' . "\n" . '<option value="1957">1957</option>' . "\n" . '<option value="1958">1958</option>' . "\n" . '<option value="1959">1959</option>' . "\n" . '<option value="1960">1960</option>' . "\n" . '</select>' . "\n" . ' <select name="Person[birthdate(2i)]">' . "\n" . '<option value="01">January</option>' . "\n" . '<option value="02">February</option>' . "\n" . '<option value="03">March</option>' . "\n" . '<option value="04">April</option>' . "\n" . '<option value="05">May</option>' . "\n" . '<option value="06">June</option>' . "\n" . '<option value="07">July</option>' . "\n" . '<option value="08" selected="selected">August</option>' . "\n" . '<option value="09">September</option>' . "\n" . '<option value="10">October</option>' . "\n" . '<option value="11">November</option>' . "\n" . '<option value="12">December</option>' . "\n" . '</select>' . "\n" . ' <select name="Person[birthdate(3i)]">' . "\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">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" selected="selected">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" . '</select>' . "\n", $dh->to_date_select_tag()); // Test 'month_before_year' option $this->assertEquals('<select name="Person[birthdate(2i)]">' . "\n" . '<option value="01">January</option>' . "\n" . '<option value="02">February</option>' . "\n" . '<option value="03">March</option>' . "\n" . '<option value="04">April</option>' . "\n" . '<option value="05">May</option>' . "\n" . '<option value="06">June</option>' . "\n" . '<option value="07">July</option>' . "\n" . '<option value="08" selected="selected">August</option>' . "\n" . '<option value="09">September</option>' . "\n" . '<option value="10">October</option>' . "\n" . '<option value="11">November</option>' . "\n" . '<option value="12">December</option>' . "\n" . '</select>' . "\n" . ' <select name="Person[birthdate(1i)]">' . "\n" . '<option value="1950">1950</option>' . "\n" . '<option value="1951">1951</option>' . "\n" . '<option value="1952">1952</option>' . "\n" . '<option value="1953">1953</option>' . "\n" . '<option value="1954">1954</option>' . "\n" . '<option value="1955" selected="selected">1955</option>' . "\n" . '<option value="1956">1956</option>' . "\n" . '<option value="1957">1957</option>' . "\n" . '<option value="1958">1958</option>' . "\n" . '<option value="1959">1959</option>' . "\n" . '<option value="1960">1960</option>' . "\n" . '</select>' . "\n" . ' <select name="Person[birthdate(3i)]">' . "\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">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" selected="selected">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" . '</select>' . "\n", $dh->to_date_select_tag(array('month_before_year' => true))); // Test with 'discard_year' option $this->assertEquals('<select name="Person[birthdate(2i)]">' . "\n" . '<option value="01">January</option>' . "\n" . '<option value="02">February</option>' . "\n" . '<option value="03">March</option>' . "\n" . '<option value="04">April</option>' . "\n" . '<option value="05">May</option>' . "\n" . '<option value="06">June</option>' . "\n" . '<option value="07">July</option>' . "\n" . '<option value="08" selected="selected">August</option>' . "\n" . '<option value="09">September</option>' . "\n" . '<option value="10">October</option>' . "\n" . '<option value="11">November</option>' . "\n" . '<option value="12">December</option>' . "\n" . '</select>' . "\n" . ' <select name="Person[birthdate(3i)]">' . "\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">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" selected="selected">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" . '</select>' . "\n", $dh->to_date_select_tag(array('discard_year' => true))); // Test 'month_before_year' and 'discard_day' options $this->assertEquals('<select name="Person[birthdate(2i)]">' . "\n" . '<option value="01">January</option>' . "\n" . '<option value="02">February</option>' . "\n" . '<option value="03">March</option>' . "\n" . '<option value="04">April</option>' . "\n" . '<option value="05">May</option>' . "\n" . '<option value="06">June</option>' . "\n" . '<option value="07">July</option>' . "\n" . '<option value="08" selected="selected">August</option>' . "\n" . '<option value="09">September</option>' . "\n" . '<option value="10">October</option>' . "\n" . '<option value="11">November</option>' . "\n" . '<option value="12">December</option>' . "\n" . '</select>' . "\n" . ' <select name="Person[birthdate(1i)]">' . "\n" . '<option value="1950">1950</option>' . "\n" . '<option value="1951">1951</option>' . "\n" . '<option value="1952">1952</option>' . "\n" . '<option value="1953">1953</option>' . "\n" . '<option value="1954">1954</option>' . "\n" . '<option value="1955" selected="selected">1955</option>' . "\n" . '<option value="1956">1956</option>' . "\n" . '<option value="1957">1957</option>' . "\n" . '<option value="1958">1958</option>' . "\n" . '<option value="1959">1959</option>' . "\n" . '<option value="1960">1960</option>' . "\n" . '</select>' . "\n", $dh->to_date_select_tag(array('month_before_year' => true, 'discard_day' => true))); }
/** * @todo Document this method * * @param string object_name Name of an ActiveRecord subclass * @param string attribute_name Name of an attribute of $object_name * @param string[] options * @uses attribute_name * @uses column_type() * @uses error_wrapping() * @uses object_name * @uses DateHelper::to_date_select_tag() * @uses FormHelper::to_boolean_select_tag() * @uses FormHelper::to_input_field_tag() * @uses FormHelper::to_text_area_tag() * @uses to_datetime_select_tag() * @uses object() */ function to_tag($object_name, $attribute_name, $options = array()) { $this->object_name = $object_name; $this->attribute_name = $attribute_name; $form = new FormHelper($object_name, $attribute_name); switch ($this->column_type()) { case 'string': case 'varchar': case 'varchar2': $field_type = preg_match("/password/i", $this->attribute_name) ? "password" : "text"; $results = $form->to_input_field_tag($field_type, $options); break; case 'text': case 'blob': $results = $form->to_text_area_tag($options); break; case 'integer': case 'int': case 'number': case 'float': case 'real': $results = $form->to_input_field_tag("text", $options); break; case 'date': $form = new DateHelper($object_name, $attribute_name); $results = $form->to_date_select_tag($options); break; case 'datetime': case 'timestamp': $results = $this->to_datetime_select_tag($options); break; case 'boolean': case 'bool': $results = $form->to_boolean_select_tag($options); break; } if (count($this->object()->errors)) { $results = $this->error_wrapping($results, $this->object()->errors[$this->attribute_name]); } return $results; }