mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
API CHANGE TimeField doesn't internally store value as "Y-m-d g:ia" (including date), but only as "g:ia"
BUGFIX Allowing TimeField and subclasses to be set to NULL through setValue() BUGFIX Added TimeField->dataValue() to apply same conversion as setValue() MINOR Added TimeFieldTest git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@79355 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
5fb45eb846
commit
efb6f0ceaf
@ -1,39 +1,38 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Time field.
|
|
||||||
* Default Value represented in the format passed as constructor.
|
|
||||||
*
|
|
||||||
* @todo Add localization support, see http://open.silverstripe.com/ticket/2931
|
* @todo Add localization support, see http://open.silverstripe.com/ticket/2931
|
||||||
*
|
*
|
||||||
* @package forms
|
* @package forms
|
||||||
* @subpackage fields-datetime
|
* @subpackage fields-datetime
|
||||||
*/
|
*/
|
||||||
class TimeField extends TextField {
|
class TimeField extends TextField {
|
||||||
// Stores our time format;
|
|
||||||
protected $timeformat;
|
/**
|
||||||
|
* @var string $timeformat Time description compatible with date() syntax.
|
||||||
|
*/
|
||||||
|
protected $timeformat = "g:ia";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor saves the format difference. Timefields shouldn't
|
* Constructor saves the format difference. Timefields shouldn't
|
||||||
* have a problem with length as times can only be represented in on way.
|
* have a problem with length as times can only be represented in on way.
|
||||||
|
*
|
||||||
* @param $name string The name of the field
|
* @param $name string The name of the field
|
||||||
* @param $title string The Title of the field
|
* @param $title string The Title of the field
|
||||||
* @param $value string the value for the field
|
* @param $value string the value for the field
|
||||||
* @param $timeformat string The Time format in date php format e.g. G:ia
|
* @param $timeformat string The Time format in date php format e.g. G:ia
|
||||||
*/
|
*/
|
||||||
function __construct($name, $title = null, $value = "",$timeformat = "g:ia"){
|
function __construct($name, $title = null, $value = "",$timeformat = null){
|
||||||
parent::__construct($name,$title,$value);
|
parent::__construct($name,$title,$value);
|
||||||
$this->timeformat = $timeformat;
|
|
||||||
|
if($timeformat) $this->timeformat = $timeformat;
|
||||||
|
}
|
||||||
|
|
||||||
|
function dataValue() {
|
||||||
|
return date($this->timeformat,strtotime($this->value));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Change the setValue to store the time (in a datetime field)
|
|
||||||
* we store the current date as well (although we don't use it for this field)
|
|
||||||
*/
|
|
||||||
function setValue($val) {
|
function setValue($val) {
|
||||||
if( $val )
|
$this->value = date($this->timeformat,strtotime($val));
|
||||||
$this->value = (date("Y-m-d",time()) . " " . date("H:i",strtotime($val)) );
|
|
||||||
else
|
|
||||||
$this->value = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -43,18 +42,6 @@ class TimeField extends TextField {
|
|||||||
return new TimeField_Readonly( $this->name, $this->title, $this->dataValue(),$this->timeformat);
|
return new TimeField_Readonly( $this->name, $this->title, $this->dataValue(),$this->timeformat);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Added to the value of the input, put the date into the format
|
|
||||||
* specified in the constructer.
|
|
||||||
*/
|
|
||||||
function attrValue(){
|
|
||||||
if($this->value){
|
|
||||||
return date($this->timeformat,strtotime($this->value));
|
|
||||||
}else{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
32
tests/forms/TimeFieldTest.php
Normal file
32
tests/forms/TimeFieldTest.php
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @package sapphire
|
||||||
|
* @subpackage tests
|
||||||
|
*/
|
||||||
|
class TimeFieldTest extends SapphireTest {
|
||||||
|
function testDataValue12h() {
|
||||||
|
$dateField12h = new TimeField('Time', 'Time');
|
||||||
|
|
||||||
|
$dateField12h->setValue('11pm');
|
||||||
|
$this->assertEquals($dateField12h->dataValue(), '11:00pm');
|
||||||
|
|
||||||
|
$dateField12h->setValue('23:59');
|
||||||
|
$this->assertEquals($dateField12h->dataValue(), '11:59pm');
|
||||||
|
|
||||||
|
$dateField12h->setValue('11:59pm');
|
||||||
|
$this->assertEquals($dateField12h->dataValue(), '11:59pm');
|
||||||
|
}
|
||||||
|
|
||||||
|
function testDataValue24h() {
|
||||||
|
$dateField24h = new TimeField('Time', 'Time', null, 'H:i');
|
||||||
|
|
||||||
|
$dateField24h->setValue('11pm');
|
||||||
|
$this->assertEquals($dateField24h->dataValue(), '23:00');
|
||||||
|
|
||||||
|
$dateField24h->setValue('23:59');
|
||||||
|
$this->assertEquals($dateField24h->dataValue(), '23:59');
|
||||||
|
|
||||||
|
$dateField24h->setValue('11:59pm');
|
||||||
|
$this->assertEquals($dateField24h->dataValue(), '23:59');
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user