Revision | 6 (tree) |
---|---|
Time | 2021-10-01 04:09:37 |
Author | ![]() |
todo items have a checkbox to set them as done/undone
@@ -234,6 +234,14 @@ | ||
234 | 234 | $db->close(); |
235 | 235 | } |
236 | 236 | |
237 | +if ($a === 'todocheck') { | |
238 | + $db = new SQLite3('agenda.sqlite3'); | |
239 | + $stmt = $db->prepare('UPDATE todos SET doneday = CASE WHEN doneday = 0 THEN :today ELSE 0 END WHERE id = :id'); | |
240 | + $stmt->bindvalue(':today', $today, SQLITE3_INTEGER); | |
241 | + $stmt->bindvalue(':id', $id, SQLITE3_INTEGER); | |
242 | + $stmt->execute(); | |
243 | + $db->close(); | |
244 | +} | |
237 | 245 | |
238 | 246 | if ($a === 'jmp') { |
239 | 247 | echo '<div class="column">' . "\n"; |
@@ -353,13 +361,18 @@ | ||
353 | 361 | |
354 | 362 | // display todos |
355 | 363 | $todofound = 0; |
356 | -$sqlres = $db->query("SELECT * FROM todos WHERE notbefore <= {$day} AND doneday <= {$day} ORDER BY notbefore, title;"); | |
364 | +$sqlres = $db->query("SELECT * FROM todos WHERE notbefore <= {$day} AND (doneday = 0 OR doneday >= {$day}) ORDER BY notbefore, title;"); | |
357 | 365 | while ($row = $sqlres->fetcharray()) { |
358 | 366 | if ($todofound === 0) { |
359 | 367 | $todofound = 1; |
360 | 368 | echo '<div class="columnsectitle">pending tasks</div>' . "\n"; |
361 | 369 | } |
362 | - echo ' <a href="?a=todo&day=' . $day . '&id=' . $row['id'] . '"><div class="todo">' . htmlspecialchars($row['title']) . "</div></a>\n"; | |
370 | + if ($row['doneday'] == 0) { | |
371 | + $checkbox = '☐'; | |
372 | + } else { | |
373 | + $checkbox = '☑'; | |
374 | + } | |
375 | + echo ' <div class="todo"><a href="?day=' . $day . '&a=todocheck&id=' . $row['id'] . '">' . $checkbox . '</a> <a href="?a=todo&day=' . $day . '&id=' . $row['id'] . '">' . htmlspecialchars($row['title']) . "</a></div>\n"; | |
363 | 376 | } |
364 | 377 | $sqlres->finalize(); |
365 | 378 | echo "</div>\n"; |