Logs of changes.
[egate.git] / www / search.egw
1 <html>
2 {
3 # $Id: search.egw,v 1.35 1996/03/08 16:47:05 adam Exp $
4
5 proc start-scan {scanNo targetNo cache dir initSet} {
6     global sessionId
7     global sessionParms
8     global sessionWait
9     global setNo
10     global hist
11     global targets
12     global nextSetNo
13     global env
14     global useIcons
15     global debug
16
17     set host $hist($setNo,$targetNo,host)
18
19     html "<head><title> WWW/Z39.50 Gateway Scan " [splitHostSpec $host]
20     html " </title>\n"
21     html "</head><body>\n"
22
23     set useIcons 1
24     button-europagate
25
26     if {$dir == "b"} {
27         set lines 20
28         set pos 20
29     } elseif {$dir == "f"} {
30         set lines 20
31         set pos 1
32     } else {
33         set lines 20
34         set pos 10
35     }
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"
40             return
41         }
42         html {<a href="http:} $env(SCRIPT_NAME)
43         html / $sessionId {/search.egw/} $setNo + $targetNo + 
44         html [expr $scanNo - 1] + b {">}
45         if {$useIcons} {
46             html {<img src="/egwgif/button-previous-terms.gif" }
47             html {alt="Next Terms" border=0></a>}
48         } else {
49             html {Previous Terms</a> | }
50         }
51
52         html {<a href="http:} $env(SCRIPT_NAME)
53         html / $sessionId {/search.egw/} $setNo + $targetNo +
54         html [expr $scanNo + 1] + f {">}
55         if {$useIcons} {
56             html {<img src="/egwgif/button-next-terms.gif" }
57             html {alt="Next Terms" border=0></a>}
58         } else {
59             html {Next Terms</a> | }
60         }
61         html {</a>}
62     }
63     button-new-query 0 $setNo
64
65     set databases [splitDatabaseSpec $host]
66
67     if {$initSet == ""} {
68         set databaseDefault [lindex $databases 0]
69         set oSetNo 0
70     } else {
71         set oSetNo $initSet
72         set databaseDefault $hist($oSetNo,$targetNo,database)
73     }
74     
75     html {<form action="http:} $env(SCRIPT_NAME)
76     html / $sessionId {/search.egw/} $setNo + $targetNo {+1" method=get>} \n
77     set nodb [llength $databases]
78     if {$nodb > 1} {
79         if {$nodb > 2} {
80             html "Databases:<br>\n"
81         }
82         set i 0
83         foreach d $databases {
84             html {<input type="checkbox" name="base" value="} $d 
85             if {[lsearch $databaseDefault $d] == -1} {
86                 html {"> } $d \n
87             } else {
88                 html {" checked> } $d \n
89             }
90         }
91         html "<br>\n"
92         if {$nodb > 2} {
93             html {<input type="checkbox" name="baseall" value="} 
94             html [concat $databases] {"> All <br>} \n
95         }
96     }
97     html "Input your scan criteria:<br>\n"
98     set fields [lindex $targets($host) 2]
99     set no 1
100     html {<select name="menu} $no {">} \n
101     set template {}
102     if {$oSetNo > 0} {
103         set template [join $hist($oSetNo,form,menu$no)]
104         egw_log debug "template=$template"
105     }
106     if {[string length $template] > 0} {
107         html {<option> } $template \n
108     }
109     foreach f $fields {
110         set name [lindex $f 0]
111         if {$template == $name} continue
112         html {<option> } $name \n
113     }
114     html "</select>\n"
115     html {<input type="text" name="entry} $no {"}
116     html { size=35> }
117     html {<input type=submit name=submit value="Scan">}
118     html "\n"
119     html {</form><br>}
120
121     set useIcons 0
122     if {$hist($setNo,$scanNo,scanTerm) == ""} {
123         button-europagate
124         button-new-query 0 $setNo        
125         return
126     }
127
128     html "<p>\n"
129     display-scan $setNo $scanNo 0
130     html "<p>\n"
131
132     button-europagate
133
134     html {<a href="http:} $env(SCRIPT_NAME)
135     html / $sessionId {/search.egw/} $setNo + $targetNo +
136     html [expr $scanNo - 1] + b {">}
137     if {$useIcons} {
138         html {<img src="/egwgif/button-previous-terms.gif" }
139         html {alt="Next Terms" border=0></a>}
140     } else {
141         html {Previous Terms</a> | }
142     }
143
144     html {<a href="http:} $env(SCRIPT_NAME)
145     html / $sessionId {/search.egw/} $setNo + $targetNo +
146     html [expr $scanNo + 1] + f {">}
147     if {$useIcons} {
148         html {<img src="/egwgif/button-next-terms.gif" }
149         html {alt="Next Terms" border=0></a>}
150     } else {
151         html {Next Terms</a> | }
152     }
153     html {</a>}
154     button-new-query 0 $setNo
155
156     if {!$debug} return
157     html "<hr>\n"
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
163     }
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"    
170 }
171
172     if {[info commands saveState] == ""} {
173         source z39util.tcl
174     }
175     global sessionWait
176     global nextSetNo
177     global setNo
178     global hist
179
180     set setNo [lindex $sessionParms 0]
181     set targetNo [lindex $sessionParms 1]
182     set startPos [lindex $sessionParms 2]
183     set endPos [lindex $sessionParms 3]
184
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)
190
191         if {$nextSetNo == $setNo} {
192             set setNo $nextSetNo
193             incr nextSetNo
194         } else {
195             catch {unset hist($setNo,hits)}
196         }
197         set hist($setNo,scan) 0
198
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]
202
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]
206
207         set hist($setNo,form,logic1) [egw_form logic1]
208         set hist($setNo,form,logic2) [egw_form logic2]
209         set hist($setNo,form,logic3) {}
210         
211         set host $hist($setNo,0,host)
212
213         set databases [splitDatabaseSpec $host]
214
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
220         } else {
221             set hist($setNo,0,database) $b
222         }
223         set hist($setNo,maxPresent) [egw_form hits]
224         if {$hist($setNo,maxPresent) == ""} {
225             set hist($setNo,maxPresent) 30
226         }
227         set i [lindex $sessionParms 2]
228         if {$i == ""} {
229             for {set j 1} {$j <= 3} {incr j} {
230                 if {[egw_form scan$j] != ""} {
231                     set i $j
232                     break
233                 }
234             }
235         }
236         if {$i != ""} {
237             set scanNo 1000
238             set hist($setNo,scan) $i
239             set termPlusAttr [build-scan $hist($setNo,0,host) $i]
240             set hist($setNo,$scanNo,scanTerm) [lindex $termPlusAttr 0]
241             set hist($setNo,scanAttr) [lindex $termPlusAttr 1]
242             start-scan $scanNo $targetNo 0 {} $setNo
243             html "</body></html>\n"
244             egw_abort
245             return
246         }
247         set query [build-query $hist($setNo,0,host) 3]
248         if {"x$query" == "x"} {
249             html "<head><title> WWW/Z39.50 Gateway Search</title>\n<body>\n"
250             displayError "Empty query" \
251                 "You must specify at least one search word"
252             html "</body></html>\n"
253             egw_abort
254         }
255         set hist($setNo,0,query) $query
256     } elseif {[lindex $sessionParms 2] == "hyper"} {
257         egw_log debug "hyper search"
258         set hist($nextSetNo,$targetNo,idAuthentication) \
259             $hist($setNo,$targetNo,idAuthentication)
260         set hist($nextSetNo,$targetNo,host) \
261             $hist($setNo,$targetNo,host)
262         set hist($nextSetNo,$targetNo,database) \
263             $hist($setNo,$targetNo,database)
264
265         if {$nextSetNo == $setNo} {
266             set setNo $nextSetNo
267             incr nextSetNo
268         } else {
269             catch {unset hist($setNo,hits)}
270         }
271         set hist($setNo,scan) 0
272         set hist($setNo,$targetNo,query) \
273             "$hist($setNo,scanAttr) \"[lindex $sessionParms 3]\""
274         egw_log debug "hyper databases: $hist($setNo,$targetNo,database)"
275         set hist($setNo,form,entry1) [lindex $sessionParms 3]
276         set startPos ""
277     } elseif {[lindex $sessionParms 2] == "scan"} {
278         egw_log debug "star scan"
279         set scanNo 1000
280         set hist($setNo,$scanNo,scanTerm) {}
281         start-scan $scanNo $targetNo 0 {} {}
282         html "</body></html>\n"
283         egw_abort
284     } else {
285         if {![info exists hist($setNo,scan)]} return
286         if {$hist($setNo,scan) > 0} {
287             set scanNo [lindex $sessionParms 2]
288             set dir [lindex $sessionParms 3]
289             if {$scanNo == ""} {
290                 set scanNo 1000
291             }
292             start-scan $scanNo $targetNo 1 $dir $setNo
293             html "</body></html>\n"
294             egw_abort
295         }
296     }
297     set host $hist($setNo,$targetNo,host)
298
299     html "<head><title> WWW/Z39.50 Gateway Search " [splitHostSpec $host] 
300     html " </title>\n"
301     html "</head><body>\n"
302
303     display-result-set-s $setNo $targetNo $startPos $endPos
304 }
305 {
306     global debug
307     if {!$debug} return
308     html "<hr>\n"
309     html "<h3>Debug information</h3>\n"
310     html "sessionId: $sessionId <br>\n"
311     html "sessionParms: $sessionParms <br>\n"
312     foreach n [array names env] {
313         html "env($n) = " $env($n) " <br>\n"
314     }
315     html "form: " [egw_form] " <br>\n"
316     html "target: " $host " <br>\n"
317     html "databases: " $hist($setNo,$targetNo,database) " <br>\n"
318     html "selected: " [egw_form base] " <br>\n"
319     html "query: --" $hist($setNo,$targetNo,query) "-- <br>"
320     html "setNo: " $setNo " <br>\n"
321     html "nextSetNo: " $nextSetNo " <br>\n"
322 }
323 </body>
324 </html>