mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Fix issue where the incorrect meridian would be selected.
When combining 12 hour format, interval and afternoon times, the incorrect meridian would be selected. Moving the hour math into FormHelper::hour() makes that method generally more correct and lenient on its input. Fixes #3299
This commit is contained in:
parent
922d9865fa
commit
3729ac1f2f
2 changed files with 23 additions and 27 deletions
|
@ -2224,9 +2224,9 @@ class FormHelperTest extends CakeTestCase {
|
|||
'type' => 'time',
|
||||
'selected' => '18:15'
|
||||
));
|
||||
$this->assertRegExp('#<option value="06"[^>]*>6</option>#', $result);
|
||||
$this->assertRegExp('#<option value="15"[^>]*>15</option>#', $result);
|
||||
$this->assertRegExp('#<option value="pm"[^>]*>pm</option>#', $result);
|
||||
$this->assertContains('<option value="06" selected="selected">6</option>', $result);
|
||||
$this->assertContains('<option value="15" selected="selected">15</option>', $result);
|
||||
$this->assertContains('<option value="pm" selected="selected">pm</option>', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2235,6 +2235,15 @@ class FormHelperTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
public function testTimeSelectedWithInterval() {
|
||||
$result = $this->Form->input('Model.start_time', array(
|
||||
'type' => 'time',
|
||||
'interval' => 15,
|
||||
'selected' => '2012-10-23 15:57:00'
|
||||
));
|
||||
$this->assertContains('<option value="04" selected="selected">4</option>', $result);
|
||||
$this->assertContains('<option value="00" selected="selected">00</option>', $result);
|
||||
$this->assertContains('<option value="pm" selected="selected">pm</option>', $result);
|
||||
|
||||
$result = $this->Form->input('Model.start_time', array(
|
||||
'timeFormat' => 24,
|
||||
'type' => 'time',
|
||||
|
@ -5621,26 +5630,11 @@ class FormHelperTest extends CakeTestCase {
|
|||
|
||||
$this->Form->request->data['Model']['field'] = '';
|
||||
$result = $this->Form->hour('Model.field', true, array('value' => '23'));
|
||||
$expected = array(
|
||||
array('select' => array('name' => 'data[Model][field][hour]', 'id' => 'ModelFieldHour')),
|
||||
array('option' => array('value' => '')),
|
||||
'/option',
|
||||
array('option' => array('value' => '00')),
|
||||
'0',
|
||||
'/option',
|
||||
array('option' => array('value' => '01')),
|
||||
'1',
|
||||
'/option',
|
||||
array('option' => array('value' => '02')),
|
||||
'2',
|
||||
'/option',
|
||||
$hoursRegex,
|
||||
array('option' => array('value' => '23', 'selected' => 'selected')),
|
||||
'23',
|
||||
'/option',
|
||||
'/select',
|
||||
);
|
||||
$this->assertTags($result, $expected);
|
||||
$this->assertContains('<option value="23" selected="selected">23</option>', $result);
|
||||
|
||||
$result = $this->Form->hour('Model.field', false, array('value' => '23'));
|
||||
$this->assertContains('<option value="11" selected="selected">11</option>', $result);
|
||||
|
||||
|
||||
$this->Form->request->data['Model']['field'] = '2006-10-10 00:12:32';
|
||||
$result = $this->Form->hour('Model.field', true);
|
||||
|
|
|
@ -2042,6 +2042,11 @@ class FormHelper extends AppHelper {
|
|||
} elseif ($attributes['value'] === false) {
|
||||
$attributes['value'] = null;
|
||||
}
|
||||
|
||||
if ($attributes['value'] > 12 && !$format24Hours) {
|
||||
$attributes['value'] -= 12;
|
||||
}
|
||||
|
||||
return $this->select(
|
||||
$fieldName . ".hour",
|
||||
$this->_generateOptions($format24Hours ? 'hour24' : 'hour'),
|
||||
|
@ -2206,10 +2211,7 @@ class FormHelper extends AppHelper {
|
|||
if (!empty($timeFormat)) {
|
||||
$time = explode(':', $days[1]);
|
||||
|
||||
if (($time[0] > 12) && $timeFormat == '12') {
|
||||
$time[0] = $time[0] - 12;
|
||||
$meridian = 'pm';
|
||||
} elseif ($time[0] == '12' && $timeFormat == '12') {
|
||||
if ($time[0] >= '12' && $timeFormat == '12') {
|
||||
$meridian = 'pm';
|
||||
} elseif ($time[0] == '00' && $timeFormat == '12') {
|
||||
$time[0] = 12;
|
||||
|
|
Loading…
Reference in a new issue