Fix pre-selecting date value

[MAILPOET-3470]
This commit is contained in:
Pavel Dohnal
2021-04-14 15:36:16 +02:00
committed by Veljko V
parent 4a10646814
commit 65c9bad64c
2 changed files with 43 additions and 6 deletions

View File

@@ -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');
}

View File

@@ -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');
}
}