Add tick mood display.

This commit is contained in:
Greg Sarjeant 2025-06-23 09:06:55 -04:00
parent efe9688289
commit 35033e50a6
6 changed files with 12 additions and 6 deletions

View File

@ -65,7 +65,7 @@ class AdminController extends Controller {
$basePath = trim($_POST['base_path'] ?? '/'); $basePath = trim($_POST['base_path'] ?? '/');
$itemsPerPage = (int) ($_POST['items_per_page'] ?? 25); $itemsPerPage = (int) ($_POST['items_per_page'] ?? 25);
$strictAccessibility = isset($_POST['strict_accessibility']); $strictAccessibility = isset($_POST['strict_accessibility']);
$showTickMood = isset($_POST['strict_accessibility']); $showTickMood = isset($_POST['show_tick_mood']);
// Password // Password
$password = $_POST['password'] ?? ''; $password = $_POST['password'] ?? '';

View File

@ -29,7 +29,7 @@ class HomeController extends Controller {
if ($_SERVER['REQUEST_METHOD'] === 'POST' and isset($_POST['new_tick'])) { if ($_SERVER['REQUEST_METHOD'] === 'POST' and isset($_POST['new_tick'])) {
// save the tick // save the tick
if (trim($_POST['new_tick'])){ if (trim($_POST['new_tick'])){
TickModel::save($_POST['new_tick']); TickModel::save($_POST['new_tick'], $_POST['tick_mood']);
} }
} }

View File

@ -72,7 +72,7 @@ class ConfigModel {
strict_accessibility, strict_accessibility,
show_tick_mood show_tick_mood
) )
VALUES (1, ?, ?, ?, ?, ?, ?)"); VALUES (1, ?, ?, ?, ?, ?, ?, ?, ?)");
} else { } else {
$stmt = $db->prepare("UPDATE settings SET $stmt = $db->prepare("UPDATE settings SET
site_title=?, site_title=?,

View File

@ -34,13 +34,14 @@ class TickModel {
// Ticks are pipe-delimited: timestamp|text // Ticks are pipe-delimited: timestamp|text
// But just in case a tick contains a pipe, only split on the first one that occurs // But just in case a tick contains a pipe, only split on the first one that occurs
list($time, $emoji, $tick) = explode('|', $line, 3); list($time, $mood, $tick) = explode('|', $line, 3);
// Build the timestamp from the date and time // Build the timestamp from the date and time
// Ticks are always stored in UTC // Ticks are always stored in UTC
$timestampUTC = "$year-$month-$day $time"; $timestampUTC = "$year-$month-$day $time";
yield [ yield [
'timestamp' => $timestampUTC, 'timestamp' => $timestampUTC,
'mood' => $mood,
'tick' => $tick, 'tick' => $tick,
]; ];
@ -51,7 +52,7 @@ class TickModel {
} }
} }
public static function save(string $tick): void { public static function save(string $tick, string $mood=''): void {
// build the tick path and filename from the current time // build the tick path and filename from the current time
$now = new DateTime('now', new DateTimeZone('UTC')); $now = new DateTime('now', new DateTimeZone('UTC'));
@ -70,7 +71,7 @@ class TickModel {
} }
// write the tick to the file (the file will be created if it doesn't exist) // write the tick to the file (the file will be created if it doesn't exist)
$content = $time . "|" . $tick . "\n"; $content = $time . '|' . $mood . '|' . $tick . "\n";
file_put_contents($filename, $content, FILE_APPEND); file_put_contents($filename, $content, FILE_APPEND);
} }

View File

@ -1,6 +1,7 @@
<?php <?php
class HomeView { class HomeView {
public function renderTicksSection(string $siteDescription, array $ticks, int $page, int $limit){ public function renderTicksSection(string $siteDescription, array $ticks, int $page, int $limit){
global $config;
ob_start(); ob_start();
?> ?>
@ -12,6 +13,9 @@ class HomeView {
?> ?>
<li class="tick" tabindex="0"> <li class="tick" tabindex="0">
<time datetime="<?php echo $datetime->format('c') ?>"><?php echo Util::escape_html($relativeTime) ?></time> <time datetime="<?php echo $datetime->format('c') ?>"><?php echo Util::escape_html($relativeTime) ?></time>
<?php if ($config->showTickMood): ?>
<span><?php echo $tick['mood'] ?></span>
<?php endif; ?>
<span class="tick-text"><?php echo Util::linkify(Util::escape_html($tick['tick'])) ?></span> <span class="tick-text"><?php echo Util::linkify(Util::escape_html($tick['tick'])) ?></span>
</li> </li>
<?php endforeach; ?> <?php endforeach; ?>

View File

@ -32,6 +32,7 @@
<div class="profile-tick"> <div class="profile-tick">
<form class="profile-tick-form" method="post"> <form class="profile-tick-form" method="post">
<input type="hidden" name="csrf_token" value="<?= Util::escape_html($_SESSION['csrf_token']) ?>"> <input type="hidden" name="csrf_token" value="<?= Util::escape_html($_SESSION['csrf_token']) ?>">
<input type="hidden" name="tick_mood" value="<?= Util::escape_html($user->mood) ?>">
<textarea name="new_tick" <textarea name="new_tick"
aria-label="What's ticking?" aria-label="What's ticking?"
placeholder="What's ticking?" placeholder="What's ticking?"