Changeset 5950
- Timestamp:
- 11/10/07 15:20:39 (1 year ago)
- Files:
-
- trunk/lib/widget/sfWidgetFormDate.class.php (modified) (2 diffs)
- trunk/lib/widget/sfWidgetFormDateTime.class.php (modified) (1 diff)
- trunk/lib/widget/sfWidgetFormTime.class.php (modified) (2 diffs)
- trunk/test/unit/widget/sfWidgetFormDateTest.php (modified) (2 diffs)
- trunk/test/unit/widget/sfWidgetFormDateTimeTest.php (modified) (2 diffs)
- trunk/test/unit/widget/sfWidgetFormTimeTest.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/widget/sfWidgetFormDate.class.php
r5937 r5950 46 46 { 47 47 // convert value to a timestamp 48 $value = ctype_digit($value) ? (integer) $value : strtotime($value); 48 if (is_array($value)) 49 { 50 $value = $this->convertDateArrayToTimestamp($value); 51 } 52 else 53 { 54 $value = ctype_digit($value) ? (integer) $value : strtotime($value); 55 } 49 56 50 57 $date = array(); … … 64 71 return implode($this->getOption('separator'), $date); 65 72 } 73 74 /** 75 * Converts an array representing a date to a timestamp. 76 * 77 * The array can contains the following keys: year, month, day, hour, minute, second 78 * 79 * @param array An array of date elements 80 * 81 * @return integer A timestamp 82 */ 83 protected function convertDateArrayToTimestamp($value) 84 { 85 $clean = mktime(isset($value['hour']) ? $value['hour'] : 0, isset($value['minute']) ? $value['minute'] : 0, isset($value['second']) ? $value['second'] : 0, $value['month'], $value['day'], $value['year']); 86 87 return false === $clean ? null : $clean; 88 } 66 89 } trunk/lib/widget/sfWidgetFormDateTime.class.php
r5937 r5950 49 49 function render($name, $value = null, $attributes = array(), $errors = array()) 50 50 { 51 // convert value to a timestamp52 $value = ctype_digit($value) ? (integer) $value : strtotime($value);53 54 51 // date 55 52 $options = $this->getOptionsFor('date'); trunk/lib/widget/sfWidgetFormTime.class.php
r5937 r5950 47 47 { 48 48 // convert value to a timestamp 49 $value = ctype_digit($value) ? (integer) $value : strtotime($value); 49 if (is_array($value)) 50 { 51 $value = $this->convertDateArrayToTimestamp($value); 52 } 53 else 54 { 55 $value = ctype_digit($value) ? (integer) $value : strtotime($value); 56 } 50 57 51 58 $time = array(); … … 68 75 return implode($this->getOption('separator'), $time); 69 76 } 77 78 /** 79 * Converts an array representing a date to a timestamp. 80 * 81 * The array can contains the following keys: hour, minute, second 82 * 83 * @param array An array of date elements 84 * 85 * @return integer A timestamp 86 */ 87 protected function convertDateArrayToTimestamp($value) 88 { 89 $clean = mktime(isset($value['hour']) ? $value['hour'] : 0, isset($value['minute']) ? $value['minute'] : 0, isset($value['second']) ? $value['second'] : 0); 90 91 return false === $clean ? null : $clean; 92 } 70 93 } trunk/test/unit/widget/sfWidgetFormDateTest.php
r5937 r5950 11 11 require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); 12 12 13 $t = new lime_test( 19, new lime_output_color());13 $t = new lime_test(22, new lime_output_color()); 14 14 15 15 $w = new sfWidgetFormDate(); … … 35 35 $t->is($css->matchSingle('#foo_day option[value="'.$values['day'].'"][selected="selected"]')->getValue(), $values['day'], '->render() renders a select tag for the day'); 36 36 } 37 38 $values = array('year' => 2005, 'month' => 10, 'day' => 15); 39 $dom->loadHTML($w->render('foo', $values)); 40 $css = new sfDomCssSelector($dom); 41 42 // selected date 43 $t->is($css->matchSingle('#foo_year option[value="'.$values['year'].'"][selected="selected"]')->getValue(), $values['year'], '->render() renders a select tag for the year'); 44 $t->is($css->matchSingle('#foo_month option[value="'.$values['month'].'"][selected="selected"]')->getValue(), $values['month'], '->render() renders a select tag for the month'); 45 $t->is($css->matchSingle('#foo_day option[value="'.$values['day'].'"][selected="selected"]')->getValue(), $values['day'], '->render() renders a select tag for the day'); 37 46 38 47 $dom->loadHTML($w->render('foo', '2005-10-15')); trunk/test/unit/widget/sfWidgetFormDateTimeTest.php
r5938 r5950 11 11 require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); 12 12 13 $t = new lime_test( 34, new lime_output_color());13 $t = new lime_test(40, new lime_output_color()); 14 14 15 15 $dom = new DomDocument('1.0', 'utf-8'); … … 38 38 $t->is($css->matchSingle('#foo_second option[value="'.$values['second'].'"][selected="selected"]')->getValue(), $values['second'], '->render() renders a select tag for the second'); 39 39 } 40 41 $values = array('year' => 2005, 'month' => 10, 'day' => 15, 'hour' => 12, 'minute' => 30, 'second' => 35); 42 $dom->loadHTML($w->render('foo', $values)); 43 $css = new sfDomCssSelector($dom); 44 45 // selected date / time 46 $t->is($css->matchSingle('#foo_year option[value="'.$values['year'].'"][selected="selected"]')->getValue(), $values['year'], '->render() renders a select tag for the year'); 47 $t->is($css->matchSingle('#foo_month option[value="'.$values['month'].'"][selected="selected"]')->getValue(), $values['month'], '->render() renders a select tag for the month'); 48 $t->is($css->matchSingle('#foo_day option[value="'.$values['day'].'"][selected="selected"]')->getValue(), $values['day'], '->render() renders a select tag for the day'); 49 $t->is($css->matchSingle('#foo_hour option[value="'.$values['hour'].'"][selected="selected"]')->getValue(), $values['hour'], '->render() renders a select tag for the hour'); 50 $t->is($css->matchSingle('#foo_minute option[value="'.$values['minute'].'"][selected="selected"]')->getValue(), $values['minute'], '->render() renders a select tag for the minute'); 51 $t->is($css->matchSingle('#foo_second option[value="'.$values['second'].'"][selected="selected"]')->getValue(), $values['second'], '->render() renders a select tag for the second'); 40 52 41 53 $dom->loadHTML($w->render('foo', '2005-10-15 12:30:35')); trunk/test/unit/widget/sfWidgetFormTimeTest.php
r5938 r5950 11 11 require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); 12 12 13 $t = new lime_test( 17, new lime_output_color());13 $t = new lime_test(20, new lime_output_color()); 14 14 15 15 $w = new sfWidgetFormTime(array('with_seconds' => true)); … … 34 34 $t->is($css->matchSingle('#foo_second option[value="35"][selected="selected"]')->getValue(), 35, '->render() renders a select tag for the second'); 35 35 } 36 37 $values = array('hour' => 12, 'minute' => '30', 'second' => 35); 38 $dom->loadHTML($w->render('foo', $values)); 39 $css = new sfDomCssSelector($dom); 40 41 // selected date 42 $t->is($css->matchSingle('#foo_hour option[value="12"][selected="selected"]')->getValue(), 12, '->render() renders a select tag for the hour'); 43 $t->is($css->matchSingle('#foo_minute option[value="30"][selected="selected"]')->getValue(), 30, '->render() renders a select tag for the minute'); 44 $t->is($css->matchSingle('#foo_second option[value="35"][selected="selected"]')->getValue(), 35, '->render() renders a select tag for the second'); 36 45 37 46 $dom->loadHTML($w->render('foo', '12:30:35'));