Skip to content

Commit f0e8413

Browse files
committed
Use FormUid for controls ...
... to prevent the schedule view mode switcher resetting the timezone picker.
1 parent de6c4fa commit f0e8413

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

application/controllers/ScheduleController.php

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,13 @@ public function indexAction(): void
5656
->on(Form::ON_SUCCESS, function (ScheduleDetail\Controls $controls) use ($id) {
5757
$redirectUrl = Links::schedule($id)->with(['mode' => $controls->getMode()]);
5858
$requestUrl = Url::fromRequest();
59-
if ($requestUrl->getParam('mode') !== $controls->getValue('mode')) {
60-
$defaultTimezoneParam = TimezonePicker::DEFAULT_TIMEZONE_PARAM;
61-
if ($requestUrl->hasParam($defaultTimezoneParam)) {
62-
$redirectUrl->addParams(
63-
[$defaultTimezoneParam => $requestUrl->getParam($defaultTimezoneParam)]
64-
);
65-
}
66-
$this->redirectNow($redirectUrl);
59+
$defaultTimezoneParam = TimezonePicker::DEFAULT_TIMEZONE_PARAM;
60+
if ($requestUrl->hasParam($defaultTimezoneParam)) {
61+
$redirectUrl->addParams(
62+
[$defaultTimezoneParam => $requestUrl->getParam($defaultTimezoneParam)]
63+
);
6764
}
65+
$this->redirectNow($redirectUrl);
6866
})
6967
->handleRequest($this->getServerRequest());
7068

library/Notifications/Web/Control/TimezonePicker.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,24 @@
77
use DateTimeZone;
88
use ipl\Html\Form;
99
use ipl\Html\HtmlElement;
10+
use ipl\Web\Common\FormUid;
1011

1112
/**
1213
* A simple dropdown menu to pick a timezone.
1314
*/
1415
class TimezonePicker extends Form
1516
{
17+
use FormUid;
18+
1619
/** @var string Default timezone param */
1720
public const DEFAULT_TIMEZONE_PARAM = 'display_timezone';
1821

19-
protected $defaultAttributes = ['class' => 'timezone-picker'];
22+
protected $defaultAttributes = ['class' => 'timezone-picker', 'name' => 'timezone-picker-form'];
2023

2124
public function assemble(): void
2225
{
26+
$this->addElement($this->createUidElement());
27+
2328
$this->addElement(
2429
'select',
2530
static::DEFAULT_TIMEZONE_PARAM,

library/Notifications/Widget/Detail/ScheduleDetail/Controls.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,19 @@
1212
use ipl\Html\HtmlElement;
1313
use ipl\Html\Text;
1414
use ipl\I18n\Translation;
15+
use ipl\Web\Common\FormUid;
1516

1617
class Controls extends Form
1718
{
1819
use Translation;
20+
use FormUid;
1921

2022
/** @var string The default mode */
2123
public const DEFAULT_MODE = 'week';
2224

2325
protected $method = 'POST';
2426

25-
protected $defaultAttributes = ['class' => 'schedule-controls'];
27+
protected $defaultAttributes = ['class' => 'schedule-controls', 'name' => 'schedule-detail-controls-form'];
2628

2729
/**
2830
* Get the chosen mode
@@ -74,6 +76,8 @@ protected function onSuccess()
7476

7577
protected function assemble()
7678
{
79+
$this->addElement($this->createUidElement());
80+
7781
$param = 'mode';
7882
$options = [
7983
'day' => $this->translate('Day'),

0 commit comments

Comments
 (0)