aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-08-07 16:56:16 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-08-07 16:56:16 +0200
commit409b987f7800efaad519d060552e9b029f7cf209 (patch)
treee06966134f10838f6ee3dec6e97f732ce5b76afb
parentSearch page now xhtml. (diff)
downloadcalp-409b987f7800efaad519d060552e9b029f7cf209.tar.gz
calp-409b987f7800efaad519d060552e9b029f7cf209.tar.xz
Slightly better search page.
-rw-r--r--module/entry-points/server.scm7
-rw-r--r--module/server/macro.scm3
-rw-r--r--module/server/util.scm23
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 #\&))))