search box
svn: r8496 original commit: 58e12e98359f076bcdac08547b41a7afabfc0cb2
This commit is contained in:
parent
43c556ccc2
commit
6c9bd9f30d
|
@ -76,7 +76,8 @@
|
||||||
,@(map (lambda (x) (if (string? x) x (format "~a" x))) body)
|
,@(map (lambda (x) (if (string? x) x (format "~a" x))) body)
|
||||||
"\n"))))
|
"\n"))))
|
||||||
|
|
||||||
#reader scribble/reader
|
#reader scribble/reader (begin ; easier to format
|
||||||
|
|
||||||
(define search-script
|
(define search-script
|
||||||
@script{
|
@script{
|
||||||
var search_nodes = null;
|
var search_nodes = null;
|
||||||
|
@ -99,9 +100,15 @@
|
||||||
search_nodes.push(all_links[i]);
|
search_nodes.push(all_links[i]);
|
||||||
}
|
}
|
||||||
var search_box = document.getElementById("search_box");
|
var search_box = document.getElementById("search_box");
|
||||||
if (location.search.indexOf('?q=') == 0) {
|
if (location.search.length > 0) {
|
||||||
var search = location.search.substring(3)
|
var paramstrs = location.search.substring(1).split(/[@";"&]/);
|
||||||
search_box.value = search;
|
for (var i in paramstrs) {
|
||||||
|
var param = paramstrs[i].split(/=/);
|
||||||
|
if (param.length == 2 && param[0] == "q") {
|
||||||
|
search_box.value = unescape(param[1]).replace(/\+/g," ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (search_box.value != "") do_search(search_box.value);
|
if (search_box.value != "") do_search(search_box.value);
|
||||||
search_box.focus();
|
search_box.focus();
|
||||||
|
@ -143,11 +150,30 @@
|
||||||
}
|
}
|
||||||
}})
|
}})
|
||||||
|
|
||||||
#reader scribble/reader
|
|
||||||
(define search-field
|
(define search-field
|
||||||
@`p{Search: @(input ((type "text") (id "search_box")
|
@`p{Search: @(input ((type "text") (id "search_box")
|
||||||
(onChange "delayed_search(this.value,event);")
|
(onchange "delayed_search(this.value,event);")
|
||||||
(onKeyUp "delayed_search(this.value,event);")))})
|
(onkeyup "delayed_search(this.value,event);")))})
|
||||||
|
|
||||||
|
(define (search-index-box index-url) ; appears on every page
|
||||||
|
(let ([sa string-append])
|
||||||
|
`(input
|
||||||
|
((style ,(sa "font-size: 75%; margin: 0px; padding: 0px; border: 1px;"
|
||||||
|
" background-color: #eee; color: #888;"))
|
||||||
|
(type "text")
|
||||||
|
(value "...search...")
|
||||||
|
(onkeypress ,(sa "if (event && event.keyCode==13"
|
||||||
|
" && this.value.indexOf(\"...search...\")<0) {"
|
||||||
|
" location=\"doc-index.html?q=\"+escape(this.value);"
|
||||||
|
" };"))
|
||||||
|
(onfocus ,(sa "this.style.color=\"black\";"
|
||||||
|
" if (this.value.indexOf(\"...search...\")>=0)"
|
||||||
|
" this.value=\"\";"))
|
||||||
|
(onblur ,(sa "if (this.value.match(/^ *$/)) {"
|
||||||
|
" this.style.color=\"#888\";"
|
||||||
|
" this.value=\"...search...\"; }"))))))
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
;; ----------------------------------------
|
;; ----------------------------------------
|
||||||
;; main mixin
|
;; main mixin
|
||||||
|
@ -471,100 +497,83 @@
|
||||||
(define/public (derive-filename d) "bad.html")
|
(define/public (derive-filename d) "bad.html")
|
||||||
|
|
||||||
(define/private (navigation d ri pre-space?)
|
(define/private (navigation d ri pre-space?)
|
||||||
(let ([parent (part-parent d ri)])
|
(define parent (part-parent d ri))
|
||||||
(let*-values ([(prev next) (find-siblings d ri)]
|
(let*-values ([(prev next) (find-siblings d ri)]
|
||||||
[(prev) (if prev
|
[(prev) (if prev
|
||||||
(let loop ([prev prev])
|
(let loop ([prev prev])
|
||||||
(if (and (toc-part? prev)
|
(if (and (toc-part? prev)
|
||||||
(pair? (part-parts prev)))
|
(pair? (part-parts prev)))
|
||||||
(loop (car (last-pair (part-parts prev))))
|
(loop (car (last-pair (part-parts prev))))
|
||||||
prev))
|
prev))
|
||||||
(and parent
|
(and parent (toc-part? parent) parent))]
|
||||||
(toc-part? parent)
|
[(next) (cond
|
||||||
parent))]
|
[(and (toc-part? d)
|
||||||
[(next) (cond
|
(pair? (part-parts d)))
|
||||||
[(and (toc-part? d)
|
(car (part-parts d))]
|
||||||
(pair? (part-parts d)))
|
[(and (not next) parent (toc-part? parent))
|
||||||
(car (part-parts d))]
|
(let-values ([(prev next)
|
||||||
[(and (not next)
|
(find-siblings parent ri)])
|
||||||
parent
|
next)]
|
||||||
(toc-part? parent))
|
[else next])]
|
||||||
(let-values ([(prev next)
|
[(index) (let loop ([d d])
|
||||||
(find-siblings parent ri)])
|
(let ([p (part-parent d ri)])
|
||||||
next)]
|
(if p
|
||||||
[else next])]
|
(loop p)
|
||||||
[(index) (let loop ([d d])
|
(let ([subs (part-parts d)])
|
||||||
(let ([p (part-parent d ri)])
|
(and (pair? subs)
|
||||||
(if p
|
(let ([d (car (last-pair subs))])
|
||||||
(loop p)
|
(and (part-style? d 'index)
|
||||||
(let ([subs (part-parts d)])
|
d)))))))])
|
||||||
(and (pair? subs)
|
(define (render . content)
|
||||||
(let ([d (car (last-pair subs))])
|
(render-content content d ri))
|
||||||
(and (part-style? d 'index)
|
(if (not (or prev next parent index up-path))
|
||||||
d)))))))])
|
null
|
||||||
(if (and (not prev)
|
`(,@(if pre-space? '((p nbsp)) null)
|
||||||
(not next)
|
(div ([class "navleft"])
|
||||||
(not parent)
|
,@(render (make-element
|
||||||
(not index)
|
(if parent
|
||||||
(not up-path))
|
(make-target-url "index.html" #f)
|
||||||
null
|
"nonavigation")
|
||||||
`(,@(if pre-space? '((p nbsp)) null)
|
contents-content))
|
||||||
(div ([class "navleft"])
|
,@(if index
|
||||||
,@(render-content
|
`(nbsp
|
||||||
(append
|
,@(render (if (eq? d index)
|
||||||
(list
|
(make-element "nonavigation" index-content)
|
||||||
(make-element
|
(make-link-element
|
||||||
(if parent
|
#f index-content (car (part-tags index)))))
|
||||||
(make-target-url "index.html" #f)
|
,@(if (eq? d index)
|
||||||
"nonavigation")
|
null
|
||||||
contents-content))
|
;; FIXME: put the real url of the index file
|
||||||
(if index
|
`((small nbsp ,(search-index-box "doc-index.html")))))
|
||||||
(list
|
null))
|
||||||
'nbsp
|
(div ([class "navright"])
|
||||||
(if (eq? d index)
|
,@(render
|
||||||
(make-element
|
(make-element
|
||||||
"nonavigation"
|
(if parent
|
||||||
index-content)
|
(make-target-url
|
||||||
(make-link-element
|
(if prev (derive-filename prev) "index.html")
|
||||||
#f
|
#f)
|
||||||
index-content
|
"nonavigation")
|
||||||
(car (part-tags index)))))
|
prev-content)
|
||||||
null))
|
sep-element
|
||||||
d
|
(make-element
|
||||||
ri))
|
(if (or parent up-path)
|
||||||
(div ([class "navright"])
|
(make-target-url
|
||||||
,@(render-content
|
(if parent
|
||||||
(list
|
(if (toc-part? parent)
|
||||||
(make-element
|
(derive-filename parent)
|
||||||
(if parent
|
"index.html")
|
||||||
(make-target-url (if prev
|
up-path)
|
||||||
(derive-filename prev)
|
#f)
|
||||||
"index.html")
|
"nonavigation")
|
||||||
#f)
|
up-content)
|
||||||
"nonavigation")
|
sep-element
|
||||||
prev-content)
|
(make-element
|
||||||
sep-element
|
(if next
|
||||||
(make-element
|
(make-target-url (derive-filename next) #f)
|
||||||
(if (or parent
|
"nonavigation")
|
||||||
up-path)
|
next-content)))
|
||||||
(make-target-url
|
(p nbsp)))))
|
||||||
(if parent
|
|
||||||
(if (toc-part? parent)
|
|
||||||
(derive-filename parent)
|
|
||||||
"index.html")
|
|
||||||
up-path)
|
|
||||||
#f)
|
|
||||||
"nonavigation")
|
|
||||||
up-content)
|
|
||||||
sep-element
|
|
||||||
(make-element
|
|
||||||
(if next
|
|
||||||
(make-target-url (derive-filename next) #f)
|
|
||||||
"nonavigation")
|
|
||||||
next-content))
|
|
||||||
d
|
|
||||||
ri))
|
|
||||||
(p nbsp))))))
|
|
||||||
|
|
||||||
(define/override (render-one d ri fn)
|
(define/override (render-one d ri fn)
|
||||||
(render-one-part d ri fn null))
|
(render-one-part d ri fn null))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user