Fix pre-selecting date value
[MAILPOET-3470]
This commit is contained in:
@@ -5,6 +5,7 @@ namespace MailPoet\Form\Block;
|
|||||||
use MailPoet\Form\BlockStylesRenderer;
|
use MailPoet\Form\BlockStylesRenderer;
|
||||||
use MailPoet\Form\BlockWrapperRenderer;
|
use MailPoet\Form\BlockWrapperRenderer;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
use MailPoetVendor\Carbon\CarbonImmutable;
|
||||||
|
|
||||||
class Date {
|
class Date {
|
||||||
|
|
||||||
@@ -124,8 +125,13 @@ class Date {
|
|||||||
'selected' => null,
|
'selected' => null,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if (!empty($block['params']['value'])) {
|
||||||
|
$date = CarbonImmutable::createFromFormat('Y-m-d H:i:s', $block['params']['value']);
|
||||||
|
if ($date instanceof CarbonImmutable) {
|
||||||
|
$defaults['selected'] = (int)strftime('%m', $date->getTimestamp());
|
||||||
|
}
|
||||||
|
} elseif (!empty($block['params']['is_default_today'])) {
|
||||||
// is default today
|
// is default today
|
||||||
if (!empty($block['params']['is_default_today'])) {
|
|
||||||
$defaults['selected'] = (int)strftime('%m');
|
$defaults['selected'] = (int)strftime('%m');
|
||||||
}
|
}
|
||||||
// merge block with defaults
|
// merge block with defaults
|
||||||
@@ -155,8 +161,13 @@ class Date {
|
|||||||
'to' => (int)strftime('%Y'),
|
'to' => (int)strftime('%Y'),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if (!empty($block['params']['value'])) {
|
||||||
|
$date = CarbonImmutable::createFromFormat('Y-m-d H:i:s', $block['params']['value']);
|
||||||
|
if ($date instanceof CarbonImmutable) {
|
||||||
|
$defaults['selected'] = (int)strftime('%Y', $date->getTimestamp());
|
||||||
|
}
|
||||||
|
} elseif (!empty($block['params']['is_default_today'])) {
|
||||||
// is default today
|
// is default today
|
||||||
if (!empty($block['params']['is_default_today'])) {
|
|
||||||
$defaults['selected'] = (int)strftime('%Y');
|
$defaults['selected'] = (int)strftime('%Y');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,8 +192,13 @@ class Date {
|
|||||||
$defaults = [
|
$defaults = [
|
||||||
'selected' => null,
|
'selected' => null,
|
||||||
];
|
];
|
||||||
|
if (!empty($block['params']['value'])) {
|
||||||
|
$date = CarbonImmutable::createFromFormat('Y-m-d H:i:s', $block['params']['value']);
|
||||||
|
if ($date instanceof CarbonImmutable) {
|
||||||
|
$defaults['selected'] = (int)strftime('%d', $date->getTimestamp());
|
||||||
|
}
|
||||||
|
} elseif (!empty($block['params']['is_default_today'])) {
|
||||||
// is default today
|
// is default today
|
||||||
if (!empty($block['params']['is_default_today'])) {
|
|
||||||
$defaults['selected'] = (int)strftime('%d');
|
$defaults['selected'] = (int)strftime('%d');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -108,4 +108,25 @@ class DateTest extends \MailPoetUnitTest {
|
|||||||
$selectedYear = $this->htmlParser->getElementByXpath($html, "//option[@selected='selected']", 2);
|
$selectedYear = $this->htmlParser->getElementByXpath($html, "//option[@selected='selected']", 2);
|
||||||
expect($selectedYear->textContent)->equals($currentYear);
|
expect($selectedYear->textContent)->equals($currentYear);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testItShouldAddValue() {
|
||||||
|
$this->baseMock->expects($this->once())->method('renderLabel')->willReturn('<label></label>');
|
||||||
|
$this->baseMock->expects($this->once())->method('getFieldName')->willReturn('Field name');
|
||||||
|
$this->baseMock->expects($this->any())->method('getInputValidation')->willReturn(' validation="1" ');
|
||||||
|
|
||||||
|
$block = $this->block;
|
||||||
|
$block['params']['date_type'] = 'year_month_day';
|
||||||
|
$block['params']['date_format'] = 'MM/DD/YYYY';
|
||||||
|
$block['params']['is_default_today'] = '';
|
||||||
|
$block['params']['value'] = '2009-02-09 00:00:00';
|
||||||
|
|
||||||
|
$html = $this->date->render($block, []);
|
||||||
|
|
||||||
|
$selectedMonth = $this->htmlParser->getElementByXpath($html, "//option[@selected='selected']", 0);
|
||||||
|
expect($selectedMonth->textContent)->equals('February');
|
||||||
|
$selectedDay = $this->htmlParser->getElementByXpath($html, "//option[@selected='selected']", 1);
|
||||||
|
expect($selectedDay->textContent)->equals('9');
|
||||||
|
$selectedYear = $this->htmlParser->getElementByXpath($html, "//option[@selected='selected']", 2);
|
||||||
|
expect($selectedYear->textContent)->equals('2009');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user