public function setValue($val)
 {
     if ($val == array('date' => '', 'time' => '')) {
         $val = null;
     }
     parent::setValue($val);
 }
 function testSetValueWithDmyArray()
 {
     $f = new DatetimeField('Datetime', 'Datetime');
     $f->getDateField()->setConfig('dmyfields', true);
     $f->setValue(array('date' => array('day' => 29, 'month' => 03, 'year' => 2003), 'time' => '11pm'));
     $this->assertEquals($f->dataValue(), '2003-03-29 23:00:00');
 }
 public function testTimezoneFromConfig()
 {
     $oldTz = date_default_timezone_get();
     date_default_timezone_set('Europe/Berlin');
     // Berlin and Auckland have 12h time difference in northern hemisphere summer, but Berlin and Moscow only 2h.
     $f = new DatetimeField('Datetime', 'Datetime');
     $f->setConfig('usertimezone', 'Europe/Moscow');
     $f->setValue(array('date' => '24/06/2003', 'time' => '23:59:59'));
     $this->assertEquals('2003-06-24 21:59:59', $f->dataValue(), 'Data value matches server timezone');
     date_default_timezone_set($oldTz);
 }
 public function testSetTimeField()
 {
     $form = $this->getMockForm();
     $field = new DatetimeField('Datetime', 'Datetime');
     $field->setForm($form);
     $field->setValue(array('date' => '24/06/2003', 'time' => '23:59:59'));
     $timeField = new TimeField('Datetime[time]');
     $field->setTimeField($timeField);
     $this->assertEquals($timeField->getForm(), $form, 'Sets form on new field');
     $this->assertEquals('23:59:59', $timeField->dataValue(), 'Sets existing value on new field');
 }
 protected function getBaseFields()
 {
     $testState = $this->environment->getState();
     $fields = new FieldList($textfield = new TextField('fixture', 'Fixture YAML file path'), $datetimeField = new DatetimeField('datetime', 'Custom date'), new HiddenField('flush', null, 1));
     $textfield->setAttribute('placeholder', 'Example: framework/tests/security/MemberTest.yml');
     $datetimeField->getDateField()->setConfig('dateformat', 'yyyy-MM-dd')->setConfig('showcalendar', true)->setAttribute('placeholder', 'Date (yyyy-MM-dd)');
     $datetimeField->getTimeField()->setConfig('timeformat', 'HH:mm:ss')->setAttribute('placeholder', 'Time (HH:mm:ss)');
     $datetimeField->setValue(isset($testState->datetime) ? $testState->datetime : null);
     $this->extend('updateBaseFields', $fields);
     return $fields;
 }
 function getHTML($page)
 {
     Requirements::css('cmsworkflow/css/FutureStateNavigatorItem.css');
     Requirements::javascript(THIRDPARTY_DIR . '/jquery/jquery.js');
     Requirements::javascript(THIRDPARTY_DIR . '/jquery-livequery/jquery.livequery.js');
     Requirements::javascript('cmsworkflow/javascript/futurestate.js');
     $datetimeField = new DatetimeField('FutureStateDate', 'Date');
     $datetimeField->getDateField()->setConfig('showcalendar', true);
     $datetimeField->getTimeField()->setConfig('showdropdown', true);
     $datetime = SiteTreeFutureState::get_future_datetime();
     if ($datetime) {
         $datetimeField->setValue($datetime);
     }
     $data = new ArrayData(array('Page' => $page, 'DateTimeField' => $datetimeField, 'Current' => (bool) $datetime));
     return $data->renderWith(array('FutureStateNavigatorItem'));
 }