forked from cadence/breezewiki
Add global search on home page
This commit is contained in:
parent
82978e7c13
commit
711a8225fb
5 changed files with 42 additions and 3 deletions
|
@ -10,6 +10,7 @@
|
|||
(make-reloadable-entry-point (quote varname) filename))))
|
||||
|
||||
(require-reloadable "src/page-category.rkt" page-category)
|
||||
(require-reloadable "src/page-global-search.rkt" page-global-search)
|
||||
(require-reloadable "src/page-home.rkt" page-home)
|
||||
(require-reloadable "src/page-not-found.rkt" page-not-found)
|
||||
(require-reloadable "src/page-proxy.rkt" page-proxy)
|
||||
|
@ -31,6 +32,7 @@
|
|||
(dispatcher-tree
|
||||
; order of these does not matter
|
||||
page-category
|
||||
page-global-search
|
||||
page-home
|
||||
page-not-found
|
||||
page-proxy
|
||||
|
|
2
dist.rkt
2
dist.rkt
|
@ -4,6 +4,7 @@
|
|||
"src/dispatcher-tree.rkt")
|
||||
|
||||
(require (only-in "src/page-category.rkt" page-category))
|
||||
(require (only-in "src/page-global-search.rkt" page-global-search))
|
||||
(require (only-in "src/page-home.rkt" page-home))
|
||||
(require (only-in "src/page-not-found.rkt" page-not-found))
|
||||
(require (only-in "src/page-proxy.rkt" page-proxy))
|
||||
|
@ -20,6 +21,7 @@
|
|||
(dispatcher-tree
|
||||
; order of these does not matter
|
||||
page-category
|
||||
page-global-search
|
||||
page-home
|
||||
page-not-found
|
||||
page-proxy
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
(sequencer:make
|
||||
(pathprocedure:make "/" (hash-ref ds 'page-home))
|
||||
(pathprocedure:make "/proxy" (hash-ref ds 'page-proxy))
|
||||
(pathprocedure:make "/search" (hash-ref ds 'page-global-search))
|
||||
(filter:make #rx"^/[a-z-]+/wiki/Category:.+$" (lift:make (hash-ref ds 'page-category)))
|
||||
(filter:make #rx"^/[a-z-]+/wiki/.+$" (lift:make (hash-ref ds 'page-wiki)))
|
||||
(filter:make #rx"^/[a-z-]+/search$" (lift:make (hash-ref ds 'page-search)))
|
||||
|
|
25
src/page-global-search.rkt
Normal file
25
src/page-global-search.rkt
Normal file
|
@ -0,0 +1,25 @@
|
|||
#lang racket/base
|
||||
(require racket/dict
|
||||
; web server libs
|
||||
net/url
|
||||
web-server/http
|
||||
"application-globals.rkt"
|
||||
"url-utils.rkt"
|
||||
"xexpr-utils.rkt")
|
||||
|
||||
(provide
|
||||
page-global-search)
|
||||
|
||||
(define (page-global-search req)
|
||||
(define wikiname (dict-ref (url-query (request-uri req)) 'wikiname #f))
|
||||
(define q (dict-ref (url-query (request-uri req)) 'q #f))
|
||||
(response-handler
|
||||
(if (not (and wikiname q))
|
||||
(response/output
|
||||
#:code 400
|
||||
#:mime-type "text/plain"
|
||||
(λ (out)
|
||||
(displayln "Requires wikiname and q parameters." out)))
|
||||
(generate-redirect (format "/~a/search?~a"
|
||||
wikiname
|
||||
(params->query `(("q" . ,q))))))))
|
|
@ -32,6 +32,15 @@
|
|||
"breezewiki.com")))
|
||||
(p "If you'd like to be automatically sent to BreezeWiki every time in the future, "
|
||||
(a (@ (href "https://docs.breezewiki.com/Automatic_Redirection.html")) "check out the tutorial in the manual."))
|
||||
(h2 "Find a page")
|
||||
(form (@ (action "/search"))
|
||||
(label (@ (class "paired__label"))
|
||||
"Wiki name"
|
||||
(input (@ (name "wikiname") (class "paired__input") (type "text") (placeholder "pokemon") (required))))
|
||||
(label (@ (class "paired__label"))
|
||||
"Search query"
|
||||
(input (@ (name "q") (class "paired__input") (type "text") (placeholder "Eevee") (required))))
|
||||
(button "Search"))
|
||||
(h2 "Example pages")
|
||||
(ul
|
||||
,@(map (λ (x)
|
||||
|
|
Loading…
Reference in a new issue