Work on target definitions.
[egate.git] / www / z39util.tcl
index 9413385..ca41b99 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $Id: z39util.tcl,v 1.16 1996/01/03 08:59:45 adam Exp $
+# $Id: z39util.tcl,v 1.24 1996/01/24 14:14:20 adam Exp $
 #
 proc saveState {} {
     uplevel #0 {
@@ -70,6 +70,8 @@ proc display-brief {zset no tno} {
     global setNo
     global sessionId
 
+
+    html {<li>}
     set type [$zset type $no]
     if {$type == "SD"} {
         set err [lindex [$zset diag $no] 1]
@@ -83,7 +85,6 @@ proc display-brief {zset no tno} {
     if {$type != "DB"} {
         return
     }
-    html "${no}"
     set rtype [$zset recordType $no]
     if {$rtype == "SUTRS"} {
         html [join [$zset getSutrs $no]]
@@ -91,12 +92,70 @@ proc display-brief {zset no tno} {
         return
     } 
     if {![catch {
-        set title [lindex [$zset getMarc $no field 245 * a] 0]
-        set year [lindex [$zset getMarc $no field 260 * c] 0]
+        set author [$zset getMarc $no field 100 * a]
+        set corp [$zset getMarc $no field 110 * a]
+        set meet [$zset getMarc $no field 111 * a]
+        set title [$zset getMarc $no field 245 * a]
+       if {[llength $author] == 0} {
+            set cover [$zset getMarc $no field 245 * {[bc]}]
+       } else {
+            set cover [$zset getMarc $no field 245 * b]
+       }
+       set location [$zset getMarc $no field 260 * a] 
+       set publisher [$zset getMarc $no field 260 * b]
+        set year [$zset getMarc $no field 260 * c]
     } ] } {
-        html {<a href="http:} $env(SCRIPT_NAME) /
-        html $sessionId {/showfull.egw/} $setNo + $tno + $no + full 
-        html {"> } $title {</a>} " <i> ${year} </i>"
+        set p 0
+        foreach a $author {
+            if {$p} {
+                html ", "
+            }
+            html $a
+            set p 1
+        }
+        foreach a $corp {
+            if {$p} {
+                html ", "
+            }
+            html $a
+            set p 1
+        }
+        foreach a $meet {
+            if {$p} {
+                html ", "
+            }
+            html $a
+            set p 1
+        }
+        if {$p} {
+            html ": "
+        }
+       html {<em>}
+       set nope 1
+        foreach v $title {
+            html $v
+            set nope 0
+        }
+        if {$nope} {
+            html {No title} 
+        }
+        html {</em> }
+       foreach v $cover {
+           html $v
+       }
+        html {<br>}
+       foreach v $location {
+           html " $v"
+        }
+       foreach v $publisher {
+           html " $v"
+        }
+       foreach v $year {
+           html " $v"
+        }
+        html { -- <a href="http:} $env(SCRIPT_NAME) /
+        html $sessionId {/showfull.egw/} $setNo + $tno + $no + full {">}
+       html "<em>view full</em></a>"
     }
     html "<br>\n"
 }
@@ -149,7 +208,7 @@ proc display-raw {zset no tno} {
             }
             html $data
         }
-        htmlr {<br>}
+        html "<br>\n"
     }
 }
 
@@ -268,8 +327,17 @@ proc display-full {zset no tno} {
     }
     set n [dl-marc-field $zset $no 710 a "Corporate Name" {} ", "]
     if {$n == 0} {
-        set n [dl-marc-field $zset $no 710 a "Corporate Name" {} ", "]
+        set n [dl-marc-field $zset $no 110 a "Corporate Name" {} ", "]
     }
+    set n [dl-marc-field $zset $no 711 a "Meeting Name" {} ", "]
+    if {$n > 0} {
+       dd-marc-field $zset $no 711 {[bndc]} " " ""
+    } else {
+        set n [dl-marc-field $zset $no 111 a "Meeting Name" {} ", "]
+       if {$n > 0} {
+           dd-marc-field $zset $no 111 {[bndc]} " " " "
+       }
+    } 
     set n [dl-marc-field $zset $no 245 {a} "Title" {} " "]
     if {$n > 0} {
         dd-marc-field $zset $no 245 b "<em>" "</em>"
@@ -364,9 +432,10 @@ proc display-rec {from to dfunc tno} {
 proc build-scan {t i} {
     global targets
 
-    set term [wform entry$i]
+    set term [egw_form entry$i]
     if {$term != ""} {
-        set field [wform menu$i]
+        set field [join [egw_form menu$i]]
+        set attr {Title}
         foreach x [lindex $targets($t) 2] {
             if {[lindex $x 0] == $field} {
                 set attr [lindex $x 1]
@@ -383,9 +452,9 @@ proc build-query {t ilines} {
     set op {}
     set q {}
     for {set i 1} {$i <= $ilines} {incr i} {
-        set term [wform entry$i]
-        if {$term != ""} {
-            set field [wform menu$i]
+        set term [join [egw_form entry$i]]
+        if {[string length $term] > 0} {
+            set field [join [egw_form menu$i]]
             foreach x [lindex $targets($t) 2] {
                 if {[lindex $x 0] == $field} {
                     set attr [lindex $x 1]
@@ -401,7 +470,7 @@ proc build-query {t ilines} {
             {}
                 { set q "${attr} ${term}" }
             }
-            set op [wform logic$i]
+            set op [egw_form logic$i]
         }
     }
     return $q
@@ -444,7 +513,7 @@ proc z39scan {setNo scanNo tno scanLines scanPos cache} {
             displayError "Cannot connect to target" $host
             return 0
         } elseif {$sessionWait == 0} {
-            if {[catch {zwait sessionWait 300}]} {
+            if {[catch {egw_wait sessionWait 300}]} {
                $zz disconnect
                 displayError "Cannot connect to target" $host
                 return 0
@@ -461,7 +530,7 @@ proc z39scan {setNo scanNo tno scanLines scanPos cache} {
            $zz disconnect
             return 0
         }
-        if {[catch {zwait sessionWait 60}]} {
+        if {[catch {egw_wait sessionWait 60}]} {
             displayError "Cannot initialize target" $host
            $zz disconnect
             return 0
@@ -494,8 +563,8 @@ proc z39scan {setNo scanNo tno scanLines scanPos cache} {
     set sessionWait 0
     $zs scan "${scanAttr} ${scanTerm}"
 
-    if {[catch {zwait sessionWait 600}]} {
-        wlog debug "timeout/cancel in scan"
+    if {[catch {egw_wait sessionWait 60}]} {
+        egw_log debug "timeout/cancel in scan"
         displayError "Timeout in scan" {}
         html "</body></html>\n"
         $zz disconnect
@@ -541,9 +610,10 @@ proc display-scan {setNo scanNo tno} {
         }
     }
     for {set i 0} {$i < $m} {incr i} {
+        regsub -all {\ } [lindex [$zs scanLine $i] 1] + tterm
         html {<a href="http:} $env(SCRIPT_NAME)
         html / $sessionId {/query.egw/} $hist($setNo,host) + $setNo +
-        html $hist($setNo,scan) + [lindex [$zs scanLine $i] 1] {">}
+        html $hist($setNo,scan) +  $tterm {">}
         html [lindex [$zs scanLine $i] 1]
         html {</a>: <em>}
         html [lindex [$zs scanLine $i] 2]
@@ -585,7 +655,7 @@ proc z39search {setNo piggy tno elements} {
             displayError "Cannot connect to target" $host
             return 0
         } elseif {$sessionWait == 0} {
-            if {[catch {zwait sessionWait 300}]} {
+            if {[catch {egw_wait sessionWait 300}]} {
                $zz disconnect
                 displayError "Cannot connect to target" $host
                 return 0
@@ -602,7 +672,7 @@ proc z39search {setNo piggy tno elements} {
            $zz disconnect
             return 0
         }
-        if {[catch {zwait sessionWait 60}]} {
+        if {[catch {egw_wait sessionWait 60}]} {
             displayError "Cannot initialize target" $host
            $zz disconnect
             return 0
@@ -634,7 +704,7 @@ proc z39search {setNo piggy tno elements} {
     $zz.$setNo mediumSetElementSetNames $elements
     $zz.$setNo recordElements $elements
 
-    wlog debug "database=$database"
+    egw_log debug "database=$database"
     eval $zz.$setNo databaseNames $database
 
     $zz.$setNo preferredRecordSyntax USMARC
@@ -652,8 +722,8 @@ proc z39search {setNo piggy tno elements} {
     set sessionWait 0
     $zz.$setNo search $query
 
-    if {[catch {zwait sessionWait 600}]} {
-        wlog debug "timeout/cancel in search"
+    if {[catch {egw_wait sessionWait 600}]} {
+        egw_log debug "timeout/cancel in search"
         displayError "Timeout in search" {}
         html "</body></html>\n"
         $zz disconnect
@@ -676,7 +746,7 @@ proc init-m-response {i} {
     global zstatus
     global zleft
 
-    wlog debug "init-m-response"
+    egw_log debug "init-m-response"
 
     set zstatus($i) 1
     incr zleft -1
@@ -686,7 +756,7 @@ proc connect-m-response {i} {
     global zstatus
     global zleft
 
-    wlog debug "connect-m-response"
+    egw_log debug "connect-m-response"
     z39$i callback [list init-m-response $i]
     if {[catch {z39$i init}]} {
         set zstatus($i) -1
@@ -698,7 +768,7 @@ proc fail-m-response {i} {
     global zstatus
     global zleft
     
-    wlog debug "fail-m-response"
+    egw_log debug "fail-m-response"
     set zstatus($i) -1
     incr zleft -1
 }
@@ -749,8 +819,8 @@ proc z39msearch {setNo piggy elements} {
         } 
     }
     while {$zleft > 0} {
-        wlog debug "Waiting for init response"
-        if {[catch {zwait zleft 10}]} {
+        egw_log debug "Waiting for init response"
+        if {[catch {egw_wait zleft 10}]} {
             break
         }
     }
@@ -785,7 +855,7 @@ proc z39msearch {setNo piggy elements} {
                 z39$i.$setNo mediumSetPresentNumber 0
             }
             set zstatus($i) 1
-            wlog debug "search " $hist($setNo,$i,query)
+            egw_log debug "search " $hist($setNo,$i,query)
             z39$i.$setNo search $hist($setNo,$i,query)
             incr zleft
         } else {
@@ -793,8 +863,8 @@ proc z39msearch {setNo piggy elements} {
         }
     }
     while {$zleft > 0} {
-        wlog debug "Waiting for search response"
-        if {[catch {zwait zleft 30}]} {
+        egw_log debug "Waiting for search response"
+        if {[catch {egw_wait zleft 30}]} {
             break
         }
     }
@@ -839,8 +909,8 @@ proc z39present {setNo tno setOffset setMax dfunc elements} {
         if {$got < $toGet} {
             set sessionWait 0
             $zz.$setNo present $setOffset $toGet
-            if {[catch {zwait sessionWait 300}]} {
-                wlog debug "timeout/cancel in present"
+            if {[catch {egw_wait sessionWait 300}]} {
+                egw_log debug "timeout/cancel in present"
                $zz disconnect
                 break
            }
@@ -858,7 +928,7 @@ proc z39present {setNo tno setOffset setMax dfunc elements} {
         display-rec $setOffset [expr $got + $setOffset - 1] $dfunc $tno
         set setOffset [expr $got + $setOffset]
         set toGet [expr 1 + $setMax - $setOffset]
-        wflush
+        egw_flush
     }
 }
 
@@ -872,33 +942,46 @@ proc z39history {} {
     if {![info exists nextSetNo]} {
         return
     }
-    html "<hr><h2>History</h2><dl><br>\n"
+    html "<h2>History</h2><dl><br>\n"
     for {set setNo 1} {$setNo < $nextSetNo} {incr setNo} {
-        html {<dt> <a href="http:} $env(SCRIPT_NAME)
-        html / $sessionId {/search.egw/} $setNo + 1
-        html + $hist($setNo,maxPresent)
-        html {"> } [lindex $targets($hist($setNo,host)) 0]
-        if {[llength $hist($setNo,database)] > 1} {
+        if {$hist($setNo,scan) > 0} continue
+        set host $hist($setNo,host)
+        html {<dt> } [lindex $targets($host) 0]
+        if {[llength [lindex $targets($host) 1]] > 1} {
             html ": "
             foreach b $hist($setNo,database) {
                 html " $b"
             }
         }
-        html "</a>\n"
-        html "<dd> "
+        html {. }
+
         if {[info exists hist($setNo,hits)]} {
-            html $hist($setNo,hits) " hits"
+            html { <a href="http:} $env(SCRIPT_NAME)
+            html / $sessionId {/search.egw/} $setNo + 1
+            html + $hist($setNo,maxPresent)
+            html {">Result</a>: } $hist($setNo,hits) { hits.}
         } else {
-            html failed
+            html {Search failed.}
+        }
+        html "<dd>\n"
+        html { <a href="http:} $env(SCRIPT_NAME)
+        html / $sessionId {/query.egw/} $host + $setNo 
+        html {">Query</a>: }
+        set op {}
+        for {set i 1} {$i <= 3} {incr i} {
+            if {[string length $hist($setNo,form,entry$i)] > 0} {
+                html " <b>" [join $op " "] "</b> "
+                html $hist($setNo,form,menu$i) "=" $hist($setNo,form,entry$i)
+                set op $hist($setNo,form,logic$i)
+            }
         }
-        html "\n"
     }
     html "</dl>\n"
 }
 
 proc displayError {msga msgb} {
     html "<p><center>\n"
-    html {<img src="/gif/noway.gif" alt="Error">}
+    html {<img src="/egwgif/noway.gif" alt="Error">}
     html "<h2>" $msga "</h2>\n"
     if {$msgb != ""} {
         html "<h3>" $msgb "</h3>\n"
@@ -906,4 +989,123 @@ proc displayError {msga msgb} {
     html "</center><p>\n"
 }
 
-set useIcons 1
+proc button-europagate {} {
+    global useIcons
+    if {$useIcons} {
+        html {<img src="/egwgif/button-egw.gif" alt="Europagate" border=0></a>}
+    } else {
+        html {Europagate | }
+    }
+}
+
+proc button-define-target {more} {
+    global useIcons
+    global env
+    global sessionId
+
+    html {<a href="http:} $env(SCRIPT_NAME)
+    html / $sessionId {/tform.egw}
+    if {$useIcons} {
+        html {"><img src="/egwgif/button-define-target.gif" }
+       html {alt="New Target" border=0></a>}
+    } else {
+        html {">New Target</a>}
+        if {$more} {
+            html " | \n"
+        } else {
+            html "\n"
+        }
+    }
+}
+
+proc button-new-target {more} {
+    global useIcons
+    global env
+    global sessionId
+
+    html {<a href="http:} $env(SCRIPT_NAME)
+    html / $sessionId {/targets.egw}
+    if {$useIcons} {
+        html {"><img src="/egwgif/button-new-target.gif" }
+       html {alt="New Target" border=0></a>}
+    } else {
+        html {">New Target</a>}
+        if {$more} {
+            html " | \n"
+        } else {
+            html "\n"
+        }
+    }
+}
+
+proc button-view-history {more} {
+    global useIcons
+    global env
+    global sessionId
+    global nextSetNo
+
+    html {<a href="http:} $env(SCRIPT_NAME)
+    html / $sessionId {/history.egw;}
+    catch { html "/" $nextSetNo}
+    if {$useIcons} {
+        html {"><img src="/egwgif/button-view-history.gif" alt="View History" }
+        html {border=0></a>}
+    } else {
+        html {">View History</a>}
+        if {$more} {
+            html " | \n"
+        } else {
+            html "\n"
+        }
+    }
+}
+
+proc button-new-query {more setNo} {
+    global useIcons
+    global env
+    global sessionId
+    global hist
+
+    html {<a href="http:} $env(SCRIPT_NAME)
+    html / $sessionId {/query.egw/} $hist($setNo,host) + $setNo {">}
+    if {$useIcons} {
+        html {<img src="/egwgif/button-new-query.gif" }
+       html {alt="New Query" border=0></a>}
+    } else {
+        html {New Query</a>}
+        if {$more} {
+            html " | \n"
+        } else {
+            html "\n"
+        }
+    }
+}
+
+proc button-scan-window {more setNo} {
+    global useIcons
+    global env
+    global sessionId
+    global hist
+
+    html {<a href="http:} $env(SCRIPT_NAME)
+    html / $sessionId {/search.egw/} $setNo + {scan} {">}
+    if {$useIcons} {
+        html {<img src="/egwgif/button-scan-window.gif" }
+       html {alt="Scan" border=0></a>}
+    } else {
+        html {Scan</a>}
+        if {$more} {
+            html " | \n"
+        } else {
+            html "\n"
+        }
+    }
+}
+
+proc maintenance {} {
+    html {<hr>This page is maintained by }
+    html {<a href="mailto:pwh@dtv.dk"> Peter Wad Hansen </a>.}
+    html {Last modified 24. january 1996. <br>}
+    html {<em> This and the following pages are under construction and }
+    html {will continue to be so until the end of January 1996.</em>}
+}