File: app3.tcl

package info (click to toggle)
aolserver4 4.5.1-18.1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 12,008 kB
  • sloc: ansic: 45,126; tcl: 5,533; sh: 1,037; makefile: 380; pascal: 219; php: 13
file content (103 lines) | stat: -rw-r--r-- 3,067 bytes parent folder | download | duplicates (10)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#
# The Genstory script from the AOLserver Tcl
# Documentation
#
# Example 3a: Form generation and handling
#
# Two functions are registered. One generates and
# returns an HTML form, and the other processes
# the data in the form.
#
# Things to notice:
#
# * Different functions are registered to the same
#   URL with different methods.  Note that some browsers
#   do not cache results properly when you do this.
#
# * The genstory function returns an error status
#   (500) if the client doesn't pass in any form data.
#
# * Form data is stored in an ns_set, and accessed
#   like any other set (e.g., header data).
#
# * A counter is used to loop through all the key
#   value pairs in the form.
    
ns_register_proc GET /genstory genstoryform
ns_register_proc POST /genstory genstory
   
proc genstoryform {conn context} {
   	ns_return $conn 200 text/html \
    	"<HTML>
    	<HEAD>
	<TITLE>Automatic Story Generator</TITLE>
	</HEAD>
	<BODY>
    	<H1>
	Automatic Story Generator
    	</H1>
	<FORM ACTION=http://localhost/genstory
		METHOD=POST>
    	Noun: <INPUT TYPE=text NAME=noun1><BR>
    	Noun: <INPUT TYPE=text NAME=noun2><BR>
	Name: <INPUT TYPE=text NAME=name1><BR>
	Name: <INPUT TYPE=text NAME=name2><BR>
	Adjective: <INPUT TYPE=text NAME=adjective1><BR>
	Adjective: <INPUT TYPE=text NAME=adjective2><BR>
	Verb: <INPUT TYPE=text NAME=verb1><BR>
	Verb: <INPUT TYPE=text NAME=verb2><BR>
	<P><INPUT TYPE=submit VALUE=\"Generate\">
	<P><P>Note:  The form you are filling out was generated
	dynamically.  No cgi-bin was used for this, and no separate
	process was started.  All of this is happening within a thread
	of the AOLserver process.
    	</FORM>
	<P>
    	</BODY></HTML>"
}
    
proc genstory {conn ignore}  {
	set formdata [ns_conn form $conn]
 
    	if {$formdata == ""}  {
		ns_return $conn 200 text/plain "Need form data!"
		return
	}

	# Build up a human-readable representation of the form data.
	set hrformdata "<dl>"
	set size [ns_set size $formdata]
	for {set i 0} {$i < $size} {incr i}  {
		append hrformdata "<dt>[ns_set key $formdata $i]</dt>\
			<dd>[ns_set value $formdata $i]</dd>"
	}
	append hrformdata "</dl>"

    	ns_return $conn 200 text/html \
	"<HTML>
	<HEAD>
	<TITLE>The story of [ns_set get $formdata name1] and
	[ns_set get $formdata name2]</TITLE>
	</HEAD>
	<BODY>
	<H1>
	The story of [ns_set get $formdata name1] and
	[ns_set get $formdata name2]
	</H1>
	<P>Once upon a time [ns_set get $formdata name1] and
	[ns_set get $formdata name2] went for a 
	walk in the woods looking for a [ns_set get $formdata noun1].
	[ns_set get $formdata name1] was 
	feeling [ns_set get $formdata adjective1] because
	[ns_set get $formdata name2] was so
	[ns_set get $formdata adjective2].  So
	[ns_set get $formdata name1] decided to
	[ns_set get $formdata verb1] [ns_set get $formdata name2]
	with a [ns_set get $formdata noun2].  This made
	[ns_set get $formdata name2] [ns_set get $formdata verb2]
	[ns_set get $formdata name1].
	<P><CENTER>The End</CENTER>
	The form data that made this possible:<BR>
	$hrformdata
	</BODY></HTML>"
}