File: subrequest1.lisp

package info (click to toggle)
kpax 20061019-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 848 kB
  • ctags: 1,007
  • sloc: lisp: 7,343; makefile: 93
file content (58 lines) | stat: -rw-r--r-- 2,333 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
;;;; -*- mode: lisp -*-
;;;;
;;;; $Id: subrequest1.lisp,v 1.4 2005/04/26 12:40:15 sven Exp $
;;;;
;;;; A demo of doing a subrequest using the XMLHttpRequest JavaScript object.
;;;;
;;;; Copyright (C) 2004 Sven Van Caekenberghe, Beta Nine BVBA. All Rights Reserved.
;;;;
;;;; You are granted the rights to distribute and use this software
;;;; as governed by the terms of the Lisp Lesser GNU Public License
;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;;

(in-package :kpax-user)

(defwebapp :subrequest1
  (:index 'subrequest1-start)
  (:web-functions '(subrequest1-compute))
  (:static-root "static/")
  (:unsecure t))

(defun subrequest1-start (request-response)
  (html-page (out request-response)
    (:html 
     (:head 
      (:title "Subrequest1!") 
      (:link :rel "stylesheet" :type "text/css" :href (static-url request-response :server "nx.css")))
     (:body 
      (:script :type "text/javascript" :src (static-url request-response :webapp "subrequest1.js") "")
      (:script :type "text/javascript" 
       (fmt "base_url=\"~a\";" (dynamic-url request-response 'subrequest1-compute)))
      (:h1 "Subrequest1!")
      (:div :class "NX_panel"
       (:span :class "NX_title" "Add two numbers")
       (:div :class "NX_border"
        (:form :style "margin-top:10px;"
         (:input :type "text" :name "number1" :value "0") :br
         "+" :br
         (:input :type "text" :name "number2" :value "0") :br
         (:div :class "NX_buttons" :style "margin-top:10px; margin-bottom:10px;"
          (:a 
           :class "NX_button" 
           :onclick "compute_response();" :title "Add" 
           "="))
         (:input :type "text" :name "sum" :value "0"))))))))

(defun subrequest1-compute (request-response)
  (let ((number1 (util:parse-integer-safely (get-request-parameter-value request-response "number1")))
        (number2 (util:parse-integer-safely (get-request-parameter-value request-response "number2")))
        (out (get-content-stream request-response)))
    (setf (get-response-mime-type request-response) "text/plain")
    (if (and number1 number2)
        (let ((sum (+ number1 number2)))
          (setf (get-attribute (get-session request-response) :sum) sum) ;; for testing only ;-)
          (format out "~d" sum))
      (format out "ERROR NaN"))))

;;;; eof