Skip to content

Commit a7b6c94

Browse files
committed
feat: Add Save date and comment checkbox
1 parent 86f271e commit a7b6c94

6 files changed

Lines changed: 118 additions & 10 deletions

File tree

tests-qa/acceptance/230_Moves/080_FullForm.robot

Lines changed: 56 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ Variables ../ressources/vars/geokrety.yml
99
Variables ../ressources/vars/waypoints.yml
1010
Test Setup Test Setup
1111

12+
*** Variables ***
13+
${REMEMBER_CHECKBOX} css:input#checkboxRememberData
14+
1215
*** Test Cases ***
1316

1417
Fill Form Naturally Require Coordinates
@@ -127,7 +130,55 @@ Check csrf
127130
Should Contain ${body} CSRF error, please try again.
128131
Delete All Sessions
129132

133+
Remember Saves Then Clears Prefill
134+
Sign In ${USER_1.name} Fast
135+
Go To Move
136+
137+
# --- First submission with Remember checked ---
138+
Input Text ${MOVE_TRACKING_CODE_INPUT} ${GEOKRETY_1.tc}
139+
Click Button And Check Panel Validation Has Success ${MOVE_TRACKING_CODE_NEXT_BUTTON} ${MOVE_TRACKING_CODE_PANEL} ${MOVE_LOG_TYPE_PANEL}
140+
Click LogType And Check Panel Validation Has Success ${MOVE_LOG_TYPE_GRABBED_RADIO} ${MOVE_LOG_TYPE_PANEL} ${MOVE_ADDITIONAL_DATA_PANEL}
141+
142+
Input Inscrybmde \#comment REMEMBERED_COMMENT
143+
Set DateTime 2025-08-28 10:05:00 +00:00
144+
Click Element ${REMEMBER_CHECKBOX}
145+
Panel validation has success ${MOVE_ADDITIONAL_DATA_PANEL}
146+
147+
Click Button ${MOVE_ADDITIONAL_DATA_SUBMIT_BUTTON}
148+
Wait Until Location Is ${PAGE_GEOKRETY_1_DETAILS_URL}/page/1\#log1
149+
150+
# --- Reopen form: should be prefilled ---
151+
Go To Move
152+
Open Panel ${MOVE_ADDITIONAL_DATA_PANEL}
153+
Textarea Value Should Be ${MOVE_ADDITIONAL_DATA_COMMENT_INPUT} REMEMBERED_COMMENT
154+
Input Value Should Be ${MOVE_ADDITIONAL_DATA_DATE_HIDDEN_INPUT} 2025-08-28
155+
Input Value Should Be ${MOVE_ADDITIONAL_DATA_HOUR_HIDDEN_INPUT} 13
156+
Input Value Should Be ${MOVE_ADDITIONAL_DATA_MINUTE_HIDDEN_INPUT} 5
157+
Input Value Should Be ${MOVE_ADDITIONAL_DATA_SECOND_HIDDEN_INPUT} 0
158+
Input Value Should Be ${MOVE_ADDITIONAL_DATA_TIMEZONE_HIDDEN_INPUT} +03:00
159+
Checkbox Should Be Selected ${REMEMBER_CHECKBOX}
160+
161+
# --- Second submission with Remember unchecked ---
162+
Open Panel ${MOVE_TRACKING_CODE_PANEL}
163+
Input Text ${MOVE_TRACKING_CODE_INPUT} ${GEOKRETY_1.tc}
164+
Click Button And Check Panel Validation Has Success ${MOVE_TRACKING_CODE_NEXT_BUTTON} ${MOVE_TRACKING_CODE_PANEL} ${MOVE_LOG_TYPE_PANEL}
165+
Click LogType And Check Panel Validation Has Success ${MOVE_LOG_TYPE_GRABBED_RADIO} ${MOVE_LOG_TYPE_PANEL}
166+
167+
Open Panel ${MOVE_ADDITIONAL_DATA_PANEL}
168+
Input Inscrybmde \#comment ANOTHER_COMMENT
169+
Set DateTime 2025-08-28 10:06:00 +00:00
170+
Run Keyword And Return Status Checkbox Should Be Selected ${REMEMBER_CHECKBOX}
171+
Click Element ${REMEMBER_CHECKBOX}
172+
Panel validation has success ${MOVE_ADDITIONAL_DATA_PANEL}
173+
174+
Click Button ${MOVE_ADDITIONAL_DATA_SUBMIT_BUTTON}
175+
Wait Until Location Is ${PAGE_GEOKRETY_1_DETAILS_URL}/page/1\#log2
130176

177+
# --- Reopen form: should NOT be prefilled anymore ---
178+
Go To Move
179+
Open Panel ${MOVE_ADDITIONAL_DATA_PANEL}
180+
Textarea Value Should Be ${MOVE_ADDITIONAL_DATA_COMMENT_INPUT} ${EMPTY}
181+
Checkbox Should Not Be Selected ${REMEMBER_CHECKBOX}
131182

132183
*** Keywords ***
133184

@@ -149,8 +200,8 @@ Click Button And Check Panel Validation Has Success
149200
Panel Is Open ${next_panel}
150201

151202
Click LogType And Check Panel Validation Has Success
152-
[Arguments] ${radio_value} ${current_panel} ${next_panel}
153-
Click Move Type ${radio_value}
154-
Panel validation has success ${current_panel}
155-
# Panel Is Collapsed ${current_panel}
156-
Panel Is Open ${next_panel}
203+
[Arguments] ${radio_value} ${current_panel} ${next_panel}=None
204+
Click Move Type ${radio_value}
205+
Panel validation has success ${current_panel}
206+
Run Keyword If '${next_panel}' != 'None'
207+
... Panel Is Open ${next_panel}

tests-qa/acceptance/ressources/ComponentsLocator.robot

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ ${MOVE_ADDITIONAL_DATA_DATE_TIME_PICKER_WIDGET_HOUR_PLUS} ${MOVE_ADDITIONAL_
341341
${MOVE_ADDITIONAL_DATA_DATE_HIDDEN_INPUT} //*[@id="inputHiddenDate"]
342342
${MOVE_ADDITIONAL_DATA_HOUR_HIDDEN_INPUT} //*[@id="inputHiddenHour"]
343343
${MOVE_ADDITIONAL_DATA_MINUTE_HIDDEN_INPUT} //*[@id="inputHiddenMinute"]
344+
${MOVE_ADDITIONAL_DATA_SECOND_HIDDEN_INPUT} //*[@id="inputHiddenSecond"]
344345
${MOVE_ADDITIONAL_DATA_TIMEZONE_HIDDEN_INPUT} //*[@id="inputHiddenTimezone"]
345346
${MOVE_ADDITIONAL_DATA_USERNAME_INPUT} //*[@id="username"]
346347
${MOVE_ADDITIONAL_DATA_COMMENT_INPUT} //*[@id="comment"]

tests-qa/acceptance/ressources/CustomActions.robot

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,11 @@ Panel Is Open
8383

8484
Open Panel
8585
[Arguments] ${element}
86-
${status} ${value} = Run Keyword And Ignore Error Panel Is Collapsed ${element} timeout=1
87-
Run Keyword If '${status}' == 'PASS'
88-
... Click Element ${element}/div[contains(@class, "panel-heading")]
89-
Panel Is Open ${element}
86+
${collapsed} = Run Keyword And Return Status Panel Is Collapsed ${element}
87+
Run Keyword If ${collapsed} Run Keywords
88+
... Scroll Into View ${element}
89+
... AND Click Element ${element}/div[contains(@class,"panel-heading")]
90+
Panel Is Open ${element}
9091

9192
Flash message shown
9293
[Arguments] ${message}

website/app-templates/smarty/forms/move.tpl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,19 @@
260260
</div>
261261
</div>
262262

263+
<div class="form-group">
264+
<div class="col-sm-offset-2 col-sm-6">
265+
<label for="checkboxRememberData" class="col-sm-2 control-label"></label>
266+
267+
<div class="checkbox">
268+
<label>
269+
<input type="checkbox" name="remember_data" id="checkboxRememberData" {if $rememberData}checked{/if} />
270+
{t}Remember date and comment{/t}
271+
</label>
272+
</div>
273+
</div>
274+
</div>
275+
263276
</div>
264277
</div>
265278
</div>

website/app-templates/smarty/js/moves/geokret_move.tpl.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ function clearLegacyFormat() {
404404
}
405405

406406
// Initialize date time
407-
$("#datetimepicker").data("DateTimePicker").date({if $move->id}moment.utc("{$move->moved_on_datetime->format('Y-m-d H:i:s')}"){else}moment(){/if}.local());
407+
$("#datetimepicker").data("DateTimePicker").date({if !is_null($move->moved_on_datetime)}moment("{$move->moved_on_datetime->format('c')}"){else}moment(){/if});
408408
dateToLegacyFormat();
409409

410410
// Initialize tracking code

website/app/GeoKrety/Controller/Pages/MoveCreate.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,27 @@ public function get(\Base $f3) {
6767
}
6868
}
6969

70+
if (!$this->move->id && !empty($_COOKIE['rememberMoveData'])) {
71+
$cookieData = json_decode($_COOKIE['rememberMoveData'], true);
72+
if (is_array($cookieData)) {
73+
// hydrate your move object
74+
$this->move->comment = $cookieData['comment'] ?? null;
75+
76+
if (!empty($cookieData['date'])) {
77+
$this->move->moved_on_datetime = sprintf(
78+
'%s %02d:%02d:%02d%s',
79+
$cookieData['date'],
80+
$cookieData['hour'] ?? 0,
81+
$cookieData['minute'] ?? 0,
82+
$cookieData['second'] ?? 0,
83+
$cookieData['tz'] ?? ''
84+
);
85+
}
86+
87+
Smarty::assign('rememberData', true);
88+
}
89+
}
90+
7091
$geokret = new GeokretWithDetails();
7192
$geokret->load(['gkid = ?', GK_HELP_GEOKRETY_EXAMPLE_3]);
7293
Smarty::assign('gk_example_3_tc', $geokret->tracking_code);
@@ -112,6 +133,27 @@ public function post(\Base $f3) {
112133
$this->renderErrors($moves, [$e->getMessage()]);
113134
}
114135

136+
$shouldRemember = (
137+
!$this->move->id
138+
&& filter_var($f3->get('POST.remember_data'), FILTER_VALIDATE_BOOLEAN)
139+
);
140+
$cookieValue = '';
141+
$cookieExpiry = time() - 3600; // default: clear cookie
142+
143+
if ($shouldRemember) {
144+
$rememberData = [
145+
'comment' => $move_data['comment'] ?? null,
146+
'date' => $move_data['date'] ?? null,
147+
'hour' => $move_data['hour'] ?? null,
148+
'minute' => $move_data['minute'] ?? null,
149+
'second' => $move_data['second'] ?? null,
150+
'tz' => $move_data['tz'] ?? null,
151+
];
152+
$cookieValue = json_encode($rememberData);
153+
$cookieExpiry = time() + (86400 * 30); // 30 days
154+
}
155+
setcookie('rememberMoveData', $cookieValue, $cookieExpiry, '/');
156+
115157
\Flash::instance()->addMessage(_('Your move has been saved.'), 'success');
116158
$this->f3->reroute($moves[0]->reroute_url);
117159
}

0 commit comments

Comments
 (0)