X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=www%2Fz39util.tcl;h=8740be44742c7b7eab30d3ea135425806e25fca6;hb=4938d0c2e8f4e1eec397c2bfbbc7e23fd150c369;hp=aa5378202b21b4ded38f4edb51340988c5e66e0b;hpb=2db244d8b36c27ed7af8591fe334869fef60c57b;p=egate.git diff --git a/www/z39util.tcl b/www/z39util.tcl index aa53782..8740be4 100644 --- a/www/z39util.tcl +++ b/www/z39util.tcl @@ -1,5 +1,5 @@ # -# $Id: z39util.tcl,v 1.34 1996/02/29 15:41:40 adam Exp $ +# $Id: z39util.tcl,v 1.36 1996/03/07 12:46:09 adam Exp $ # proc saveState {} { uplevel #0 { @@ -65,9 +65,8 @@ proc fail-response {} { set sessionWait -1 } -proc display-brief {zset no tno} { +proc display-brief {zset no setNo targetNo} { global env - global setNo global sessionId html {
  • } @@ -92,7 +91,7 @@ proc display-brief {zset no tno} { } if {$rtype == "WAIS"} { html { } + html $sessionId {/showfull.egw/} $setNo + $targetNo + $no + full {">} html [join [$zset getWAIS $no headline]] html {} html "
    \n" @@ -113,7 +112,7 @@ proc display-brief {zset no tno} { set year [$zset getMarc $no field 260 * c] } dispError ] } { html { } + html $sessionId {/showfull.egw/} $setNo + $targetNo + $no + full {">} set p 0 foreach a $author { if {$p} { @@ -159,7 +158,7 @@ proc display-brief {zset no tno} { html { } } else { html { } + html $sessionId {/showfull.egw/} $setNo + $targetNo + $no + full {">} html {No Title} html { } html "Error: " $dispError "\n" @@ -304,85 +303,82 @@ proc dl-marc-field-rec {zset no tag lead start stop startid sep} { } } -proc display-full-wais {zset no} { - set i0 0 - set i1 0 - set refNo 0 - set body [$zset getWAIS $no text] +proc display-full-wais {zset no setNo targetNo} { + global env + global hist + global sessionId - while {[string length [set c [string index $body $i1]]]} { - if {[string compare $c \n]} { - incr i1 - continue - } - set l [string trim [string range $body $i0 $i1]] - egw_log debug "line=$l" - incr i1 - set i0 $i1 + set i 0 + set element junk + htmlToken l [join [$zset getWAIS $no text]] { if {[string compare [string index $l 0] {<}]} { - egw_log "xxxxxxxxxxxxxxxx" - continue - } - if {[set mark [string first > $l ]] < 1} { - egw_log "yyyyyyyyyyyyyyyy" + set data($element) $l continue } - set data [string trim [string range $l [expr $mark +1] end]] - incr mark -1 - set sw [string range $l 1 $mark] - egw_log debug "sw=$sw" - egw_log debug "data=$data" - switch -exact $sw { - ti { - set title $data + switch -exact $l { + { + set element title + } + { + set element dateOfLastModification } - dm { - set dateOfLastModification $data + { + set element controlIdentifier } - ci { - set controlIdentifier $data + { + set element lastChecked } - lc { - set lastChecked $data + { + set element bytes } - by { - set bytes $data + { + set element linkage } - avli { - set linkage $data + { + incr i } - cr { - incr refNo +
  • { + set element "$i,linkage" } - li { - set crossRef($refNo,linkage) $data + { + set element "$i,title" } - cp { - set crossRef($refNo,title) $data + default { + set element junk } } } - html {Title: } {} $title "
    \n" - html {URL: } $linkage "
    \n" - if {[info exists bytes]} { - html {Bytes: } $bytes "
    \n" + if {![info exists data(title)] || ![info exists data(linkage)]} { + html "" [join [$zset getWAIS $no text]] "\n" + return + } + html {Title: } {} $data(title) "
    \n" + html {URL: } $data(linkage) "
    \n" + html {Score: } [$zset getWAIS $no score] "
    \n" + html {Lines: } [$zset getWAIS $no lines] "
    \n" + if {[info exists data(bytes)]} { + html {Bytes: } $data(bytes) "
    \n" } - if {[info exists dateOfLastModification]} { - html {Last modified: } $dateOfLastModification "
    \n" + if {[info exists data(dateOfLastModification)]} { + html {Last modified: } $data(dateOfLastModification) "
    \n" } - if {[info exists lastChecked]} { - html {Last checked: } $lastChecked "
    \n" + if {[info exists data(lastChecked)]} { + html {Last checked: } $data(lastChecked) "
    \n" } + html {} + html {Similar WAIS record
    } html "\n" } -proc display-full {zset no tno} { +proc display-full {zset no setNo targetNo} { set type [$zset type $no] if {$type == "SD"} { set err [lindex [$zset diag $no] 1] @@ -402,7 +398,7 @@ proc display-full {zset no tno} { return } if {$rtype == "WAIS"} { - display-full-wais $zset $no + display-full-wais $zset $no $setNo $targetNo return } if {[catch {set r [$zset getMarc $no line * * *]}]} { @@ -502,19 +498,10 @@ proc display-full {zset no tno} { } -proc display-rec {from to dfunc tno} { - global setNo - - if {$tno > 0} { - while {$from <= $to} { - eval "$dfunc z39${tno}.${setNo} $from $tno" - incr from - } - } else { - while {$from <= $to} { - eval "$dfunc z39.${setNo} $from 0" - incr from - } +proc display-rec {from to dfunc setNo targetNo} { + while {$from <= $to} { + eval "$dfunc z39${targetNo}.${setNo} $from $setNo $targetNo" + incr from } } @@ -579,21 +566,13 @@ proc z39scan {setNo scanNo tno scanLines scanPos cache} { global sessionWait global targets - if {$tno > 0} { - set zz z39$tno - set host $hist($setNo,$tno,host) - set idAuth $hist($setNo,$tno,idAuthentication) - set database $hist($setNo,$tno,database) - set scanAttr $hist($setNo,$tno,scanAttr) - set scanTerm $hist($setNo,$tno,$scanNo,scanTerm) - } else { - set zz z39 - set host $hist($setNo,host) - set idAuth $hist($setNo,idAuthentication) - set database $hist($setNo,database) - set scanAttr $hist($setNo,scanAttr) - set scanTerm $hist($setNo,$scanNo,scanTerm) - } + set zz z39$tno + set host $hist($setNo,$tno,host) + set idAuth $hist($setNo,$tno,idAuthentication) + set database $hist($setNo,$tno,database) + set scanAttr $hist($setNo,scanAttr) + set scanTerm $hist($setNo,$scanNo,scanTerm) + mkAssoc $zz $host if {[catch [list set oldHost [$zz connect]]]} { set oldHost "" @@ -685,11 +664,7 @@ proc display-scan {setNo scanNo tno} { global env global sessionId - if {$tno > 0} { - set zz z39$tno - } else { - set zz z39 - } + set zz z39$tno set zs $zz.s$scanNo.$setNo set m [$zs numberOfEntriesReturned] @@ -722,7 +697,7 @@ proc display-scan {setNo scanNo tno} { } else { regsub -all {\ } [lindex [$zs scanLine $i] 1] + tterm html {} } html [lindex [$zs scanLine $i] 1] @@ -739,19 +714,13 @@ proc z39search {setNo piggy tno elements} { global sessionWait global targets - if {$tno > 0} { - set zz z39$tno - set host $hist($setNo,$tno,host) - set idAuth $hist($setNo,$tno,idAuthentication) - set database $hist($setNo,$tno,database) - set query $hist($setNo,$tno,query) - } else { - set zz z39 - set host $hist($setNo,host) - set idAuth $hist($setNo,idAuthentication) - set database $hist($setNo,database) - set query $hist($setNo,query) - } + set zz z39$tno + set host $hist($setNo,$tno,host) + set idAuth $hist($setNo,$tno,idAuthentication) + set database $hist($setNo,$tno,database) + set query $hist($setNo,$tno,query) + catch {set docId $hist($setNo,$tno,queryId)} + mkAssoc $zz $host if {[catch [list set oldHost [$zz connect]]]} { set oldHost "" @@ -841,9 +810,14 @@ proc z39search {setNo piggy tno elements} { } set sessionWait 0 egw_log debug "search: $query" - $zz.$setNo search $query - if {[catch {egw_wait sessionWait 60}]} { + if {[info exists docId]} { + $zz.$setNo search $query $docId + } else { + $zz.$setNo search $query + } + + if {!$sessionWait && [catch {egw_wait sessionWait 60}]} { egw_log debug "timeout/cancel in search" displayError "Timeout in search" {} html "\n" @@ -1106,13 +1080,8 @@ proc z39present {setNo tno setOffset setMax dfunc elements} { global sessionWait global targets - if {$tno > 0} { - set zz z39$tno - set host $hist($setNo,$tno,host) - } else { - set zz z39 - set host $hist($setNo,host) - } + set zz z39$tno + set host $hist($setNo,$tno,host) if {![lindex $targets($host) 5]} { set elements {} @@ -1149,13 +1118,114 @@ proc z39present {setNo tno setOffset setMax dfunc elements} { break } } - display-rec $setOffset [expr $got + $setOffset - 1] $dfunc $tno + display-rec $setOffset [expr $got + $setOffset - 1] $dfunc $setNo $tno set setOffset [expr $got + $setOffset] set toGet [expr 1 + $setMax - $setOffset] egw_flush } } +proc buttons-result-set-s {setNo targetNo setMax startPos after} { + global sessionId + global useIcons + global env + global hist + + set zz z39$targetNo + html "

    \n" + button-europagate + if {$setMax > 0 && $setMax < [$zz.$setNo resultCount]} { + html {Next Records} + } else { + html {">Next Records} " | \n" + } + } + if {$setMax > 0 && $startPos != "" && $startPos != "1"} { + html {} + } else { + html {">Previous Records} " | \n" + } + } + button-new-query 1 $setNo + button-new-target 1 + button-view-history 0 + + html "

    \n" +} + +proc display-result-set-s {setNo targetNo startPos endPos} { + global hist + global useIcons + + set zz z39$targetNo + set host $hist($setNo,$targetNo,host) + set idAuth $hist($setNo,$targetNo,idAuthentication) + set database $hist($setNo,$targetNo,database) + set query $hist($setNo,$targetNo,query) + + set useIcons 1 + + if {$startPos == ""} { + if {[z39search $setNo 1 $targetNo B] != "1"} { + return + } + set r [$zz.$setNo resultCount] + + set setMax [$zz.$setNo resultCount] + if {$setMax > $hist($setNo,maxPresent)} { + set setMax $hist($setNo,maxPresent) + } + buttons-result-set-s $setNo $targetNo $setMax $startPos 0 + + set setOffset [$zz.$setNo numberOfRecordsReturned] + if {$setMax > 0} { + html {

    Records 1-} $setMax " out of $r

    \n" + } else { + html "

    No hits

    \n" + } + egw_flush + html "