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\BlockWrapperRenderer;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoetVendor\Carbon\CarbonImmutable;
|
||||
|
||||
class Date {
|
||||
|
||||
@@ -124,8 +125,13 @@ class Date {
|
||||
'selected' => null,
|
||||
];
|
||||
|
||||
// is default today
|
||||
if (!empty($block['params']['is_default_today'])) {
|
||||
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
|
||||
$defaults['selected'] = (int)strftime('%m');
|
||||
}
|
||||
// merge block with defaults
|
||||
@@ -155,8 +161,13 @@ class Date {
|
||||
'to' => (int)strftime('%Y'),
|
||||
];
|
||||
|
||||
// is default today
|
||||
if (!empty($block['params']['is_default_today'])) {
|
||||
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
|
||||
$defaults['selected'] = (int)strftime('%Y');
|
||||
}
|
||||
|
||||
@@ -181,8 +192,13 @@ class Date {
|
||||
$defaults = [
|
||||
'selected' => null,
|
||||
];
|
||||
// is default today
|
||||
if (!empty($block['params']['is_default_today'])) {
|
||||
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
|
||||
$defaults['selected'] = (int)strftime('%d');
|
||||
}
|
||||
|
||||
|
@@ -108,4 +108,25 @@ class DateTest extends \MailPoetUnitTest {
|
||||
$selectedYear = $this->htmlParser->getElementByXpath($html, "//option[@selected='selected']", 2);
|
||||
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