1 |
#!/opt/isis/OpenIsis/tcl/bin/tspr |
2 |
<%-- |
3 |
test Tcl server page |
4 |
$Id: demo.cgi,v 1.1 2003/04/29 19:01:14 kripke Exp $ |
5 |
--%><%! |
6 |
|
7 |
# package require mime; |
8 |
# namespace import ::mime::*; |
9 |
# a procedure to make live with requests easier: |
10 |
# it uses the current value of the $isis server variable to send a request |
11 |
# so we can switch servers by setting isis, yet use a single command |
12 |
proc ::isis {request args} { |
13 |
global isis |
14 |
$isis .req delete |
15 |
$isis .req set -type $request |
16 |
# eval so that the single list of args becomes multiple parameters |
17 |
eval $isis req $args |
18 |
::puts stderr "###req\n[$isis .req serialize]###res\n[$isis .res serialize]###" |
19 |
# we don't clone the result rec, but provide a procedure |
20 |
# if {"read" == $request} { |
21 |
# clone result data as v; throws exception if no such record |
22 |
# $isis .res .rec clone v |
23 |
# } |
24 |
# return the size (number of records or mfns) |
25 |
$isis .res get size |
26 |
} |
27 |
|
28 |
# convenient access to the result |
29 |
proc ::res {args} { |
30 |
global isis |
31 |
eval $isis .res $args |
32 |
} |
33 |
|
34 |
# wrapper for current result record |
35 |
# add the "rowid" command, which the record is lacking for some reason |
36 |
# add a "get first", if args is a single integer |
37 |
proc ::v {args} { |
38 |
global isis |
39 |
if {"rowid" == $args} { |
40 |
return [$isis .res get rowid] |
41 |
} |
42 |
if {[string is integer $args]} { # v 24 |
43 |
return [lindex [$isis .res .rec get $args] 0] |
44 |
} |
45 |
eval $isis .res .rec $args |
46 |
} |
47 |
|
48 |
|
49 |
%><% |
50 |
# request standard tags |
51 |
# -10 SCRIPT_NAME |
52 |
# -11 PATH_INFO |
53 |
# -12 REMOTE_USER |
54 |
# |
55 |
global env |
56 |
|
57 |
set script [lindex [request get -10] 0] |
58 |
set path [lindex [request get -11] 0] |
59 |
|
60 |
set query [lindex [request get 1] 0] |
61 |
|
62 |
set db cds |
63 |
|
64 |
set ::isis [openIsis] ;# contact local server |
65 |
$::isis add -syspath /opt/isis/db -dbpath $db -defaultdb $db |
66 |
isis open |
67 |
|
68 |
# query max row |
69 |
isis maxrow |
70 |
set max [res get rowid] |
71 |
%><html> |
72 |
<head> |
73 |
<meta http-equiv="Content-Type" content="text/html; charset=Cp850"> |
74 |
</head> |
75 |
<body> |
76 |
max mfn in <%=db%> is <%=max%> |
77 |
<form action="<%=script%>"> |
78 |
enter query or mfn: |
79 |
<input type="text" name="1" value="<%=query%>"/> |
80 |
<input type="submit" name="2" value="ok"/> |
81 |
</form> |
82 |
<br/> |
83 |
<% |
84 |
if [string is integer $query] { |
85 |
set mfns $query |
86 |
} else { # query |
87 |
isis query -mode 128 -key $query |
88 |
set mfns [res get rowid] |
89 |
%> |
90 |
found mfns |
91 |
<% |
92 |
foreach mfn $mfns { |
93 |
%> |
94 |
<a href="#<%=mfn%>"><%=mfn%></a> |
95 |
<% |
96 |
} |
97 |
} |
98 |
%> |
99 |
<table> |
100 |
<% |
101 |
foreach mfn $mfns { |
102 |
isis read -rowid $mfn |
103 |
%> |
104 |
<tr><td><b>MFN</b></td><td><b><a name="<%=mfn%>"/><%=mfn%></b></td></tr> |
105 |
<% |
106 |
::openIsis::Tspr detail.tsp |
107 |
} |
108 |
%> |
109 |
</table> |
110 |
</body> |
111 |
</html> |