From 409b987f7800efaad519d060552e9b029f7cf209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 7 Aug 2020 16:56:16 +0200 Subject: Slightly better search page. --- module/entry-points/server.scm | 7 ++++++- module/server/macro.scm | 3 +-- module/server/util.scm | 23 ++++++++++++----------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/module/entry-points/server.scm b/module/entry-points/server.scm index dd7175aa..054c8cbd 100644 --- a/module/entry-points/server.scm +++ b/module/entry-points/server.scm @@ -290,7 +290,12 @@ (head (title "Search results")) (body (h2 "Search term") - (pre ,(format #f "~y" search-term)) + (form + (pre (textarea (@ (name "q") (rows 5) (spellcheck false) + (style "width:100%")) + ,(format #f "~y" search-term))) + (input (@ (type submit)))) + (h2 "Result") ,@(for event in search-result `(div (@ (class "event")) ,(prop event 'SUMMARY))))))))))) diff --git a/module/server/macro.scm b/module/server/macro.scm index f8f8c6fd..ba70a484 100644 --- a/module/server/macro.scm +++ b/module/server/macro.scm @@ -73,8 +73,7 @@ (r:host (uri-host r:uri)) (r:port (uri-port r:uri)) (r:path (uri-path r:uri)) - (r:query (uri-decode (or (uri-query r:uri) "") - decode-plus-to-space?: #f)) + (r:query (uri-query r:uri)) (r:fragment (uri-fragment r:uri))) diff --git a/module/server/util.scm b/module/server/util.scm index 7f5ebdbe..ada4f266 100644 --- a/module/server/util.scm +++ b/module/server/util.scm @@ -1,16 +1,17 @@ (define-module (server util) :use-module (util) - :use-module (srfi srfi-1)) + :use-module (srfi srfi-1) + :use-module (web uri)) (define-public (parse-query query-string) - (unless (string-null? query-string) - (fold (lambda (str list) - ;; only split on the first equal. - ;; Does HTTP allow multiple equal signs in a data field? - ;; NOTE that this fails if str lacks an equal sign. - (define idx (string-index str #\=)) - (define key (substring str 0 idx)) - (define val (substring str (1+ idx))) - (cons* (-> key string->symbol symbol->keyword) val list)) - '() (string-split query-string #\&)))) + (unless (or (not query-string) (string-null? query-string)) + (fold (lambda (str list) + ;; only split on the first equal. + ;; Does HTTP allow multiple equal signs in a data field? + ;; NOTE that this fails if str lacks an equal sign. + (define idx (string-index str #\=)) + (define key (uri-decode (substring str 0 idx))) + (define val (uri-decode (substring str (1+ idx)))) + (cons* (-> key string->symbol symbol->keyword) val list)) + '() (string-split query-string #\&)))) -- cgit v1.2.3