3 # $Id: search.egw,v 1.36 1996/03/11 17:40:48 adam Exp $
5 proc start-scan {scanNo targetNo cache dir initSet} {
17 set host $hist($setNo,$targetNo,host)
19 html "<head><title> WWW/Z39.50 Gateway Scan " [splitHostSpec $host]
21 html "</head><body>\n"
29 } elseif {$dir == "f"} {
36 if {$hist($setNo,$scanNo,scanTerm) != ""} {
37 if {[z39scan $setNo $scanNo 0 $lines $pos $cache] != "1"} {
38 button-new-query 0 $setNo
39 egw_log debug "z39_scan failed"
42 html {<a href="http:} $env(SCRIPT_NAME)
43 html / $sessionId {/search.egw/} $setNo + $targetNo +
44 html [expr $scanNo - 1] + b {">}
46 html {<img src="/egwgif/button-previous-terms.gif" }
47 html {alt="Next Terms" border=0></a>}
49 html {Previous Terms</a> | }
52 html {<a href="http:} $env(SCRIPT_NAME)
53 html / $sessionId {/search.egw/} $setNo + $targetNo +
54 html [expr $scanNo + 1] + f {">}
56 html {<img src="/egwgif/button-next-terms.gif" }
57 html {alt="Next Terms" border=0></a>}
59 html {Next Terms</a> | }
63 button-new-query 0 $setNo
65 set databases [splitDatabaseSpec $host]
68 set databaseDefault [lindex $databases 0]
72 set databaseDefault $hist($oSetNo,$targetNo,database)
75 html {<form action="http:} $env(SCRIPT_NAME)
76 html / $sessionId {/search.egw/} $setNo + $targetNo {+1" method=get>} \n
77 set nodb [llength $databases]
80 html "Databases:<br>\n"
83 foreach d $databases {
84 html {<input type="checkbox" name="base" value="} $d
85 if {[lsearch $databaseDefault $d] == -1} {
88 html {" checked> } $d \n
93 html {<input type="checkbox" name="baseall" value="}
94 html [concat $databases] {"> All <br>} \n
97 html "Input your scan criteria:<br>\n"
98 set fields [lindex $targets($host) 2]
100 html {<select name="menu} $no {">} \n
103 set template [join $hist($oSetNo,form,menu$no)]
104 egw_log debug "template=$template"
106 if {[string length $template] > 0} {
107 html {<option> } $template \n
110 set name [lindex $f 0]
111 if {$template == $name} continue
112 html {<option> } $name \n
115 html {<input type="text" name="entry} $no {"}
117 html {<input type=submit name=submit value="Scan">}
122 if {$hist($setNo,$scanNo,scanTerm) == ""} {
124 button-new-query 0 $setNo
129 display-scan $setNo $scanNo 0
134 html {<a href="http:} $env(SCRIPT_NAME)
135 html / $sessionId {/search.egw/} $setNo + $targetNo +
136 html [expr $scanNo - 1] + b {">}
138 html {<img src="/egwgif/button-previous-terms.gif" }
139 html {alt="Next Terms" border=0></a>}
141 html {Previous Terms</a> | }
144 html {<a href="http:} $env(SCRIPT_NAME)
145 html / $sessionId {/search.egw/} $setNo + $targetNo +
146 html [expr $scanNo + 1] + f {">}
148 html {<img src="/egwgif/button-next-terms.gif" }
149 html {alt="Next Terms" border=0></a>}
151 html {Next Terms</a> | }
154 button-new-query 0 $setNo
158 html "<h3>Debug information</h3>\n"
159 html "sessionId: $sessionId <br>\n"
160 html "sessionParms: $sessionParms <br>\n"
161 foreach e {SERVER_NAME PATH_INFO SCRIPT_NAME} {
162 html $e {: } $env($e) {<br>} \n
164 html "form: " [egw_form] " <br>\n"
165 html "target: " $host " <br>\n"
166 html "databases: " $hist($setNo,$targetNo,database) " <br>\n"
167 html "selected: " [egw_form base] " <br>\n"
168 html "setNo: " $setNo " <br>\n"
169 html "nextSetNo: " $nextSetNo " <br>\n"
172 if {[info commands saveState] == ""} {
180 set setNo [lindex $sessionParms 0]
181 set targetNo [lindex $sessionParms 1]
182 set startPos [lindex $sessionParms 2]
183 set endPos [lindex $sessionParms 3]
185 if {[egw_form] != ""} {
186 set hist($nextSetNo,$targetNo,idAuthentication) \
187 $hist($setNo,$targetNo,idAuthentication)
188 set hist($nextSetNo,$targetNo,host) \
189 $hist($setNo,$targetNo,host)
191 if {$nextSetNo == $setNo} {
195 catch {unset hist($setNo,hits)}
197 set hist($setNo,scan) 0
199 set hist($setNo,form,menu1) [egw_form menu1]
200 set hist($setNo,form,menu2) [egw_form menu2]
201 set hist($setNo,form,menu3) [egw_form menu3]
203 set hist($setNo,form,entry1) [egw_form entry1]
204 set hist($setNo,form,entry2) [egw_form entry2]
205 set hist($setNo,form,entry3) [egw_form entry3]
207 set hist($setNo,form,logic1) [egw_form logic1]
208 set hist($setNo,form,logic2) [egw_form logic2]
209 set hist($setNo,form,logic3) {}
211 set host $hist($setNo,0,host)
213 set databases [splitDatabaseSpec $host]
215 set b [egw_form base]
216 if {[egw_form baseall] != ""} {
217 set hist($setNo,0,database) $databases
218 } elseif {$b == ""} {
219 set hist($setNo,0,database) $databases
221 set hist($setNo,0,database) $b
223 set hist($setNo,maxPresent) [egw_form hits]
224 if {$hist($setNo,maxPresent) == ""} {
225 set hist($setNo,maxPresent) 30
227 set hist($setNo,format) brief
228 set hist($setNo,sort) server
230 set i [lindex $sessionParms 2]
232 for {set j 1} {$j <= 3} {incr j} {
233 if {[egw_form scan$j] != ""} {
241 set hist($setNo,scan) $i
242 set termPlusAttr [build-scan $hist($setNo,0,host) $i]
243 set hist($setNo,$scanNo,scanTerm) [lindex $termPlusAttr 0]
244 set hist($setNo,scanAttr) [lindex $termPlusAttr 1]
245 start-scan $scanNo $targetNo 0 {} $setNo
246 html "</body></html>\n"
250 set query [build-query $hist($setNo,0,host) 3]
251 if {"x$query" == "x"} {
252 html "<head><title> WWW/Z39.50 Gateway Search</title>\n<body>\n"
253 displayError "Empty query" \
254 "You must specify at least one search word"
255 html "</body></html>\n"
258 set hist($setNo,0,query) $query
259 } elseif {[lindex $sessionParms 2] == "hyper"} {
260 egw_log debug "hyper search"
261 set hist($nextSetNo,$targetNo,idAuthentication) \
262 $hist($setNo,$targetNo,idAuthentication)
263 set hist($nextSetNo,$targetNo,host) \
264 $hist($setNo,$targetNo,host)
265 set hist($nextSetNo,$targetNo,database) \
266 $hist($setNo,$targetNo,database)
268 if {$nextSetNo == $setNo} {
272 catch {unset hist($setNo,hits)}
274 set hist($setNo,scan) 0
275 set hist($setNo,$targetNo,query) \
276 "$hist($setNo,scanAttr) \"[lindex $sessionParms 3]\""
277 egw_log debug "hyper databases: $hist($setNo,$targetNo,database)"
278 set hist($setNo,form,entry1) [lindex $sessionParms 3]
280 } elseif {[lindex $sessionParms 2] == "scan"} {
281 egw_log debug "star scan"
283 set hist($setNo,$scanNo,scanTerm) {}
284 start-scan $scanNo $targetNo 0 {} {}
285 html "</body></html>\n"
288 if {![info exists hist($setNo,scan)]} return
289 if {$hist($setNo,scan) > 0} {
290 set scanNo [lindex $sessionParms 2]
291 set dir [lindex $sessionParms 3]
295 start-scan $scanNo $targetNo 1 $dir $setNo
296 html "</body></html>\n"
300 set host $hist($setNo,$targetNo,host)
302 html "<head><title> WWW/Z39.50 Gateway Search " [splitHostSpec $host]
304 html "</head><body>\n"
306 display-result-set-s $setNo $targetNo $startPos $endPos
312 html "<h3>Debug information</h3>\n"
313 html "sessionId: $sessionId <br>\n"
314 html "sessionParms: $sessionParms <br>\n"
315 foreach n [array names env] {
316 html "env($n) = " $env($n) " <br>\n"
318 html "form: " [egw_form] " <br>\n"
319 html "target: " $host " <br>\n"
320 html "databases: " $hist($setNo,$targetNo,database) " <br>\n"
321 html "selected: " [egw_form base] " <br>\n"
322 html "query: --" $hist($setNo,$targetNo,query) "-- <br>"
323 html "setNo: " $setNo " <br>\n"
324 html "nextSetNo: " $nextSetNo " <br>\n"