sunet/scheme/httpd/surflets/web-server/root/surflets/add2.scm

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"))
))