49 lines
1.2 KiB
Scheme
49 lines
1.2 KiB
Scheme
(define-structure plugin plugin-interface
|
|
(open servlets
|
|
httpd-request
|
|
url
|
|
scsh
|
|
scheme)
|
|
(begin
|
|
|
|
(define number-input-field (make-number-input-field '(maxlength 10)))
|
|
|
|
(define (get-number input-text . maybe-title)
|
|
(let* ((title (if (pair? maybe-title) (car maybe-title) #f))
|
|
(result
|
|
(send-html/suspend
|
|
(lambda (new-url)
|
|
`(html ,(if title
|
|
`(title ,title) '())
|
|
(body
|
|
,(if title `(h1 ,title) '())
|
|
(p (a (@ href "reset")
|
|
"click here to reset server's plugin cache"))
|
|
(p
|
|
(form ,new-url
|
|
,input-text
|
|
,number-input-field
|
|
,(make-submit-button)))))))))
|
|
(if result
|
|
(input-field-value number-input-field
|
|
(form-query (http-url:search (request:url result))))
|
|
(get-number input-text "Please enter a number"))))
|
|
|
|
(define (get-number1)
|
|
(get-number "First number:"))
|
|
|
|
(define (get-number2)
|
|
(get-number "Second number:"))
|
|
|
|
(define (main req)
|
|
(let ((number1 (get-number1))
|
|
(number2 (get-number2)))
|
|
(send-html
|
|
`(html (title "Result")
|
|
(body (h1 "Result")
|
|
(p ,(number->string (+ number1 number2)))
|
|
(a (@ (href "/")) "done"))))
|
|
|
|
"this string will never be evaluated"))
|
|
))
|
|
|