commit 09969028b8d591c7b5fbdbe03d0c49a487a49669
parent 3236bc5e20c7ffa8b105761058355024dddea776
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date: Mon, 31 Aug 2026 18:04:30 +0000
Tag pages in CGI
Diffstat:
1 file changed, 34 insertions(+), 0 deletions(-)
diff --git a/src/cgi.scm b/src/cgi.scm
@@ -890,6 +890,35 @@ END-OF-CSS
(cadr row)
"GROUP BY url_id ORDER BY ptime")))))
+(define (view-tag tag)
+ (let ((row (query fetch-row
+ (sql/transient db "SELECT id,name
+ FROM tag WHERE name=?;")
+ tag)))
+ (if (null? row)
+ (write-string "Status: 404\r\n\r\n")
+ (gruik-list-view
+ (conc "Tag " (cadr row))
+ post-fragment
+ '()
+ "SELECT gruik.id,mark,ptime,section,title,url,comment_url,
+ group_concat('#'||name,' '),COALESCE(description,notes)
+ FROM gruik LEFT OUTER JOIN gruik_tags ON gruik_id=gruik.id
+ LEFT OUTER JOIN tag ON tag_id=tag.id
+ WHERE gruik.id IN (SELECT gruik_id FROM gruik_tags WHERE tag_id=?1)
+ GROUP BY gruik.id
+ UNION ALL
+ SELECT -entry.id,(CASE WHEN protected=0 THEN 10 ELSE 11 END),
+ strftime('%Y.%m.%d %H:%M:%S',ctime,'unixepoch') AS ptime,
+ COALESCE(source,'Untracked Ien'),
+ COALESCE(title,''),url,source_url,
+ group_concat('#'||name,' '),COALESCE(description,notes)
+ FROM entry LEFT OUTER JOIN tagrel ON url_id=entry.id
+ LEFT OUTER JOIN tag ON tag_id=tag.id
+ WHERE entry.id IN (SELECT url_id FROM tagrel WHERE tag_id=?1)
+ GROUP BY url_id ORDER BY ptime"
+ (car row)))))
+
(define (view-url-search op q)
(gruik-list-view
(conc "Gruks " op " " q)
@@ -1227,6 +1256,10 @@ END-OF-CSS
(sequence* ((_ (char-seq "selection/"))
(id (as-string (one-or-more irc-digit))))
(result (lambda () (view-selection (string->number id))))))
+(define route-tag
+ (sequence* ((_ (char-seq "tag/"))
+ (tag (as-string (one-or-more item))))
+ (result (lambda () (view-tag tag)))))
(define route-url-search
(sequence* ((_ (char-seq "url?"))
(op (any-of (char-seq "glob")
@@ -1270,6 +1303,7 @@ END-OF-CSS
route-new
route-no-comm
route-selection
+ route-tag
route-url-search
route-x-new)))))