Skip to content
Permalink
Browse files

Fixing datetime generation with form input()

  • Loading branch information...
lorenzo committed Feb 25, 2014
1 parent fb7566c commit 360ae37ef15c3bb06e881ff64b8b026eaa72e5d8
Showing with 24 additions and 112 deletions.
  1. +0 −37 src/View/Helper/FormHelper.php
  2. +24 −75 tests/TestCase/View/Helper/FormHelperTest.php
@@ -1100,43 +1100,6 @@ protected function _extractOption($name, $options, $default = null) {
*/
protected function _inputLabel($fieldName, $label, $options) {
$labelAttributes = [];
$idKey = null;
if ($options['type'] === 'date' || $options['type'] === 'datetime') {
$firstInput = 'M';
if (
array_key_exists('dateFormat', $options) &&
($options['dateFormat'] === null || $options['dateFormat'] === 'NONE')
) {
$firstInput = 'H';
} elseif (!empty($options['dateFormat'])) {
$firstInput = substr($options['dateFormat'], 0, 1);
}
switch ($firstInput) {
case 'D':
$idKey = 'day';
$labelAttributes['for'] .= 'Day';
break;
case 'Y':
$idKey = 'year';
$labelAttributes['for'] .= 'Year';
break;
case 'M':
$idKey = 'month';
$labelAttributes['for'] .= 'Month';
break;
case 'H':
$idKey = 'hour';
$labelAttributes['for'] .= 'Hour';
}
}
if ($options['type'] === 'time') {
$labelAttributes['for'] .= 'Hour';
$idKey = 'hour';
}
if (isset($idKey) && isset($options['id']) && isset($options['id'][$idKey])) {
$labelAttributes['for'] = $options['id'][$idKey];
}
if (is_array($label)) {
$labelText = null;
if (isset($label['text'])) {
@@ -2622,92 +2622,41 @@ public function testInputCheckbox() {
}
/**
* test form->input() with datetime, date and time types
* test form->input() with datetime
*
* @return void
*/
public function testInputDatetime() {
$this->markTestIncomplete('Need to revisit once models work again.');
extract($this->dateRegex);
$this->Form = $this->getMock(
'Cake\View\Helper\FormHelper',
['datetime'],
[new View(null)]
);
$this->Form->expects($this->once())->method('datetime')
->with('prueba', [
'type' => 'datetime',
'timeFormat' => 24,
'minYear' => 2008,
'maxYear' => 2011,
'interval' => 15,
'options' => null,
'empty' => false,
'id' => 'prueba'
])
->will($this->returnValue('This is it!'));
$result = $this->Form->input('prueba', array(
'type' => 'datetime', 'timeFormat' => 24, 'dateFormat' => 'DMY', 'minYear' => 2008,
'maxYear' => date('Y') + 1, 'interval' => 15
));
$result = explode(':', $result);
$this->assertNotRegExp('#<option value="12"[^>]*>12</option>#', $result[1]);
$this->assertNotRegExp('#<option value="50"[^>]*>50</option>#', $result[1]);
$this->assertRegExp('#<option value="15"[^>]*>15</option>#', $result[1]);
$this->assertRegExp('#<option value="30"[^>]*>30</option>#', $result[1]);
//related to ticket #5013
$result = $this->Form->input('Contact.date', array(
'type' => 'date', 'class' => 'customClass', 'onChange' => 'function(){}'
));
$this->assertRegExp('/class="customClass"/', $result);
$this->assertRegExp('/onChange="function\(\)\{\}"/', $result);
$result = $this->Form->input('Contact.date', array(
'type' => 'date', 'id' => 'customId', 'onChange' => 'function(){}'
'type' => 'datetime', 'timeFormat' => 24, 'minYear' => 2008,
'maxYear' => 2011, 'interval' => 15
));
$this->assertRegExp('/id="customIdDay"/', $result);
$this->assertRegExp('/id="customIdMonth"/', $result);
$this->assertRegExp('/onChange="function\(\)\{\}"/', $result);
$result = $this->Form->input('Model.field', array(
'type' => 'datetime', 'timeFormat' => 24, 'id' => 'customID'
));
$this->assertRegExp('/id="customIDDay"/', $result);
$this->assertRegExp('/id="customIDHour"/', $result);
$result = explode('</select><select', $result);
$result = explode(':', $result[1]);
$this->assertRegExp('/option value="23"/', $result[0]);
$this->assertNotRegExp('/option value="24"/', $result[0]);
$result = $this->Form->input('Model.field', array(
'type' => 'datetime', 'timeFormat' => 12
));
$result = explode('</select><select', $result);
$result = explode(':', $result[1]);
$this->assertRegExp('/option value="12"/', $result[0]);
$this->assertNotRegExp('/option value="13"/', $result[0]);
$this->Form->request->data = array('Contact' => array('created' => null));
$result = $this->Form->input('Contact.created', array('empty' => 'Date Unknown'));
$expected = array(
'div' => array('class' => 'input date'),
'label' => array('for' => 'ContactCreatedMonth'),
'Created',
'div' => array('class' => 'input datetime'),
'label' => array('for' => 'prueba'),
'Prueba',
'/label',
array('select' => array('name' => 'Contact[created][month]', 'id' => 'ContactCreatedMonth')),
array('option' => array('value' => '')), 'Date Unknown', '/option',
$monthsRegex,
'/select', '-',
array('select' => array('name' => 'Contact[created][day]', 'id' => 'ContactCreatedDay')),
array('option' => array('value' => '')), 'Date Unknown', '/option',
$daysRegex,
'/select', '-',
array('select' => array('name' => 'Contact[created][year]', 'id' => 'ContactCreatedYear')),
array('option' => array('value' => '')), 'Date Unknown', '/option',
$yearsRegex,
'/select',
'This is it!',
'/div'
);
$this->assertTags($result, $expected);
$this->Form->request->data = array('Contact' => array('created' => null));
$result = $this->Form->input('Contact.created', array('type' => 'datetime', 'dateFormat' => 'NONE'));
$this->assertRegExp('/for\="ContactCreatedHour"/', $result);
$this->Form->request->data = array('Contact' => array('created' => null));
$result = $this->Form->input('Contact.created', array('type' => 'datetime', 'timeFormat' => 'NONE'));
$this->assertRegExp('/for\="ContactCreatedMonth"/', $result);
$result = $this->Form->input('Contact.created', array(
'type' => 'date',
'id' => array('day' => 'created-day', 'month' => 'created-month', 'year' => 'created-year'),
'timeFormat' => 'NONE'
));
$this->assertRegExp('/for\="created-month"/', $result);
}
/**

0 comments on commit 360ae37

Please sign in to comment.
You can’t perform that action at this time.