X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=www%2Fz39util.tcl;h=5186f297d6260884f7a1338e3ddfdad8015f4bec;hb=d6e784b546a740266f0e3c06749444bf43cb2b48;hp=aa5378202b21b4ded38f4edb51340988c5e66e0b;hpb=2db244d8b36c27ed7af8591fe334869fef60c57b;p=egate.git diff --git a/www/z39util.tcl b/www/z39util.tcl index aa53782..5186f29 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.49 1997/11/19 13:29:13 adam Exp $ # proc saveState {} { uplevel #0 { @@ -65,14 +65,13 @@ proc fail-response {} { set sessionWait -1 } -proc display-brief {zset no tno} { +proc display-medium {zset no setNo targetNo} { global env - global setNo global sessionId - html {
  • } set type [$zset type $no] if {$type == "SD"} { + html {
  • } set err [lindex [$zset diag $no] 1] set add [lindex [$zset diag $no] 2] if {$add != {}} { @@ -84,20 +83,114 @@ proc display-brief {zset no tno} { if {$type != "DB"} { return } + html {
  • } set rtype [$zset recordType $no] - if {$rtype == "SUTRS"} { - html [join [$zset getSutrs $no]] - html "
    \n" - return + switch $rtype { + SUTRS { + html { } + html [join [$zset getSutrs $no]] + html "
    \n" + return + } } - if {$rtype == "WAIS"} { + if {![catch { + 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] + set score [$zset getMarc $no field 999 * r] + } dispError ] } { html { } - html [join [$zset getWAIS $no headline]] - html {} - html "
    \n" + html $sessionId {/showfull.egw/} $setNo + $targetNo + $no + full {">} + 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 ": " + } + set nope 1 + foreach v $title { + html $v + set nope 0 + } + set v [join $cover ""] + if {[string length $v] > 0} { + set nope 0 + html $v + } elseif {$nope} { + html "No Title" + } + html { } + if {[scan $score %d nscore] == 1} { + html "; Score " $nscore + } + } else { + html { } + html {No Title} + html { } + html "Error: " $dispError "\n" + } + html "
    \n" +} + +proc display-brief {zset no setNo targetNo} { + global env + global sessionId + + set type [$zset type $no] + if {$type == "SD"} { + html {
  • } + set err [lindex [$zset diag $no] 1] + set add [lindex [$zset diag $no] 2] + if {$add != {}} { + set add " :${add}" + } + html "${no} Error ${err}${add}
    \n" + return + } + if {$type != "DB"} { return } + html {
  • } + set rtype [$zset recordType $no] + switch $rtype { + SUTRS { + html { } + html [string range [join [$zset getSutrs $no]] 0 70] + html "
    \n" + return + } + } if {![catch { set author [$zset getMarc $no field 100 * a] set corp [$zset getMarc $no field 110 * a] @@ -113,7 +206,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} { @@ -139,11 +232,13 @@ proc display-brief {zset no tno} { if {$p} { html ": " } + html {} set nope 1 foreach v $title { html $v set nope 0 } + html {} if {$nope} { set v [join $cover ""] if {[string length $v] > 40} { @@ -159,7 +254,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" @@ -167,26 +262,32 @@ proc display-brief {zset no tno} { html "
    \n" } -proc display-raw {zset no tno} { +proc display-raw {zset no setNo targetNo} { set type [$zset type $no] - if {$type == "SD"} { - set err [lindex [$zset diag $no] 1] - set add [lindex [$zset diag $no] 2] - if {$add != {}} { - set add " :${add}" + switch $type { + SD { + set err [lindex [$zset diag $no] 1] + set add [lindex [$zset diag $no] 2] + if {$add != {}} { + set add " :${add}" + } + html "

    ${no}

    \n" + html "Error ${err}${add}
    \n" + return + } + DB { + } + default { + return } - html "

    ${no}

    \n" - html "Error ${err}${add}
    \n" - return - } - if {$type != "DB"} { - return } set rtype [$zset recordType $no] - if {$rtype == "SUTRS"} { - html [join [$zset getSutrs $no]] "
    \n" - return - } + switch $rtype { + SUTRS { + html "\n" [join [$zset getSutrs $no]] "\n\n" + return + } + } if {[catch {set r [$zset getMarc $no line * * *]}]} { html "Unknown record type: $rtype
    \n" return @@ -202,7 +303,7 @@ proc display-raw {zset no tno} { if {[string index $indicator $i] == " "} { html "-" } else { - html [string index $tag $i] + html [string index $indicator $i] } } } @@ -304,111 +405,11 @@ 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] - - 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 - if {[string compare [string index $l 0] {<}]} { - egw_log "xxxxxxxxxxxxxxxx" - continue - } - if {[set mark [string first > $l ]] < 1} { - egw_log "yyyyyyyyyyyyyyyy" - 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 - } - dm { - set dateOfLastModification $data - } - ci { - set controlIdentifier $data - } - lc { - set lastChecked $data - } - by { - set bytes $data - } - avli { - set linkage $data - } - cr { - incr refNo - } - li { - set crossRef($refNo,linkage) $data - } - cp { - set crossRef($refNo,title) $data - } - } - } - html {Title: } {} $title "
    \n" - html {URL: } $linkage "
    \n" - if {[info exists bytes]} { - html {Bytes: } $bytes "
    \n" - } - if {[info exists dateOfLastModification]} { - html {Last modified: } $dateOfLastModification "
    \n" - } - if {[info exists lastChecked]} { - html {Last checked: } $lastChecked "
    \n" - } - html "\n" -} +proc display-full-marc {zset no setNo targetNo} { + global env + global hist + global sessionId -proc display-full {zset no tno} { - set type [$zset type $no] - if {$type == "SD"} { - set err [lindex [$zset diag $no] 1] - set add [lindex [$zset diag $no] 2] - if {$add != {}} { - set add " :${add}" - } - html "Error ${err}${add}
    \n" - return - } - if {$type != "DB"} { - return - } - set rtype [$zset recordType $no] - if {$rtype == "SUTRS"} { - html [join [$zset getSutrs $no]] "
    \n" - return - } - if {$rtype == "WAIS"} { - display-full-wais $zset $no - return - } - if {[catch {set r [$zset getMarc $no line * * *]}]} { - html "Unknown record type: $rtype
    \n" - return - } html "
    \n" set n [dl-marc-field $zset $no 700 a "Author" "Authors" "
    \n"] if {$n == 0} { @@ -497,25 +498,49 @@ proc display-full {zset no tno} { dl-marc-field $zset $no 537 * "Source of data" {} "
    \n" dl-marc-field $zset $no 538 * "System details" {} "
    \n" dl-marc-field $zset $no 787 {[rstw6]} "Related information" {} "
    \n" + dl-marc-field $zset $no 999 r "Score" {} ", " dl-marc-field $zset $no 001 * "Local control number" {} ", " html "
    \n" } - -proc display-rec {from to dfunc tno} { - global setNo - - if {$tno > 0} { - while {$from <= $to} { - eval "$dfunc z39${tno}.${setNo} $from $tno" - incr from +proc display-full {zset no setNo targetNo} { + set type [$zset type $no] + switch $type { + SD { + set err [lindex [$zset diag $no] 1] + set add [lindex [$zset diag $no] 2] + if {$add != {}} { + set add " :${add}" + } + html "Error ${err}${add}
    \n" + return } - } else { - while {$from <= $to} { - eval "$dfunc z39.${setNo} $from 0" - incr from + DB { + } + default { + return + } + } + set rtype [$zset recordType $no] + switch $rtype { + SUTRS { + html "
    " [join [$zset getSutrs $no]] "

    \n" + return } } + if {[catch {set r [$zset getMarc $no line * * *]}]} { + html "Unknown record type: $rtype
    \n" + return + } + display-full-marc $zset $no $setNo $targetNo +} + + +proc display-rec {from to dfunc setNo targetNo} { + while {$from <= $to} { + eval "$dfunc z39${targetNo}.${setNo} $from $setNo $targetNo" + incr from + } } proc build-scan {t i} { @@ -542,34 +567,30 @@ proc build-query {t ilines} { set q {} for {set i 1} {$i <= $ilines} {incr i} { set term [join [egw_form entry$i]] - if {[lindex $targets($t) 6] == "1"} { - if {[string length $op] == 0} { - set q $term - } else { - set q "$term $q" - } - set op [egw_form logic$i] - continue - } - 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] - } + if {[string length $term] == 0} continue + set field [join [egw_form menu$i]] + catch {unset attr} + foreach x [lindex $targets($t) 2] { + if {![string compare [lindex $x 0] $field]} { + set attr [lindex $x 1] } - switch $op { + } + if {![info exists attr]} { + egw_log debug "attr failed for $t" + set attr [lindex [lindex [lindex $targets($t) 2] 0] 1] + } + egw_log debug "op=${op}" + switch $op { And - { set q "@and $q ${attr} \"${term}\"" } + { set q "@and $q ${attr} \"${term}\""; egw_log debug AND } Or - { set q "@or $q ${attr} \"${term}\"" } - {And not} - { set q "@not $q ${attr} \"${term}\"" } + { set q "@or $q ${attr} \"${term}\""; egw_log debug OR } {} - { set q "${attr} \"${term}\"" } - } - set op [egw_form logic$i] + { set q "${attr} \"${term}\""; egw_log debug NOPE } + default + { set q "@not $q ${attr} \"${term}\""; egw_log debug ANDNOT } } + set op [egw_form logic$i] } return $q } @@ -579,21 +600,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 "" @@ -684,12 +697,9 @@ proc display-scan {setNo scanNo tno} { global targets global env global sessionId + global scriptQuery - 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] @@ -717,12 +727,12 @@ proc display-scan {setNo scanNo tno} { if {0} { regsub -all {\ } [lindex [$zs scanLine $i] 1] + tterm html {} } else { regsub -all {\ } [lindex [$zs scanLine $i] 1] + tterm html {} } html [lindex [$zs scanLine $i] 1] @@ -739,19 +749,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 "" @@ -801,22 +805,14 @@ proc z39search {setNo piggy tno elements} { return 0 } } elseif {![catch [list $zz.$setNo smallSetUpperBound 0]]} { - if {$tno > 0} { - if {[info exists hist($setNo,$tno,hits)]} { - return 1 - } - } else { - if {[info exists hist($setNo,hits)]} { - return 1 - } + if {[info exists hist($setNo,$tno,hits)]} { + return 1 } } - if {[lindex $targets($host) 6] == "1"} { - wais-set $zz.$setNo $zz - } else { - ir-set $zz.$setNo $zz - } + ir-set $zz.$setNo $zz + $zz.$setNo preferredRecordSyntax [lindex $targets($host) 1] + egw_log debug "set syntax to [lindex $targets($host) 1]" if {![lindex $targets($host) 5]} { set elements {} } @@ -827,8 +823,6 @@ proc z39search {setNo piggy tno elements} { egw_log debug "database=$database" eval $zz.$setNo databaseNames $database - $zz.$setNo preferredRecordSyntax USMARC - $zz callback [list search-response $zz.$setNo] if {$piggy} { $zz.$setNo largeSetLowerBound 999999 @@ -841,9 +835,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" @@ -859,7 +858,7 @@ proc z39search {setNo piggy tno elements} { if {$sessionWait != 1} { return 0 } - set hist($setNo,hits) [$zz.$setNo resultCount] + set hist($setNo,$tno,hits) [$zz.$setNo resultCount] return 1 } @@ -975,7 +974,6 @@ proc z39msearch {setNo elements start number cache} { } egw_log debug "old=$oldHost this=$thisHost" z39$i idAuthentication $hist($setNo,$i,idAuthentication) - html "Connecting to target " $thisHost "
    \n" set zstatus($i) -1 if {![catch {z39$i connect $thisHost}]} { incr zleft @@ -983,7 +981,20 @@ proc z39msearch {setNo elements start number cache} { } while {$zleft > 0} { egw_log debug "Waiting for init response" - if {[catch {egw_wait zleft 20}]} { + if {[catch {egw_wait zleft 20} reason]} { + if {![string compare $reason cancel]} { + for {set i 1} {$i <= $not} {incr i} { + set zstatus($i) -1 + catch {z39$i disconnect} + } + return + } else { + for {set i 1} {$i <= $not} {incr i} { + if {$zstatus($i) == -1} { + catch {z39$i disconnect} + } + } + } break } } @@ -1000,16 +1011,14 @@ proc z39msearch {setNo elements start number cache} { } continue } - if {[catch [list z39$i.$setNo preferredRecordSyntax USMARC]]} { + if {[catch [list z39$i.$setNo preferredRecordSyntax]]} { if {$debug} { html "ok
    \n" } - if {[lindex $targets($host) 6] == "1"} { - wais-set z39$i.$setNo z39$i - } else { - ir-set z39$i.$setNo z39$i - } + ir-set z39$i.$setNo z39$i + z39$i.$setNo preferredRecordSyntax [lindex $targets($host) 1] + egw_log debug "set syntax to [lindex $targets($host) 1]" set hist($setNo,$i,offset) 0 eval z39$i.$setNo databaseNames $hist($setNo,$i,database) @@ -1023,7 +1032,6 @@ proc z39msearch {setNo elements start number cache} { z39$i.$setNo elementSetNames $thisElements z39$i.$setNo recordElements $thisElements - z39$i.$setNo preferredRecordSyntax USMARC z39$i callback [list search-m-response $setNo $i $start $number] if {$start == 1} { @@ -1037,8 +1045,12 @@ proc z39msearch {setNo elements start number cache} { } set zstatus($i) 1 incr zleft - egw_log debug "setNo=$setNo msearch " $hist($setNo,$i,query) - z39$i.$setNo search $hist($setNo,$i,query) + egw_log debug "msearch host=" $hist($setNo,$i,host) + egw_log debug "setNo=$setNo query=" $hist($setNo,$i,query) "=" + if {[catch {z39$i.$setNo search $hist($setNo,$i,query)}]} { + set zstatus($i) -1 + incr zleft -1 + } } elseif {[z39$i.$setNo resultCount] >= $start} { if {[expr $start + $number - 1] > [z39$i.$setNo resultCount]} { set tnumber [expr [z39$i.$setNo resultCount] - $start + 1] @@ -1075,7 +1087,6 @@ proc z39msearch {setNo elements start number cache} { } html "present
    \n" - z39$i.$setNo preferredRecordSyntax USMARC z39$i callback [list search-m-response $setNo $i $start $tnumber] incr zleft egw_log debug "mpresent start=$start number=$tnumber" @@ -1086,9 +1097,24 @@ proc z39msearch {setNo elements start number cache} { } } } + + while {$zleft > 0} { egw_log debug "Waiting for search/present response" - if {[catch {egw_wait zleft 60}]} { + if {[catch {egw_wait zleft 60} reason]} { + if {![string compare $reason cancel]} { + for {set i 1} {$i <= $not} {incr i} { + catch {z39$i disconnect} + set zstatus($i) -1 + } + return + } else { + for {set i 1} {$i <= $not} {incr i} { + if {$zstatus($i) != 2} { + catch {z39$i disconnect} + } + } + } break } } @@ -1106,13 +1132,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 +1170,237 @@ 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-main + if {$setMax > 0 && $setMax < [$zz.$setNo resultCount]} { + if {!$useIcons} { + html "\n | " + } + html {} + } else { + html {">Next Records} + } + } + if {$setMax > 0 && $startPos != "" && $startPos != "1"} { + if {!$useIcons} { + html "\n | " + } + html {} + } else { + html {">Previous Records} + } + } + if {$targetNo > 0} { + button-result-set $setNo $targetNo + } + button-new-query $setNo + button-new-target + button-view-history + + html "

    \n" +} + +proc score-sort {l r} { + return [expr [lindex $r 0] - [lindex $l 0]] +} + +proc display-result-set-m-score {setNo} { + global hist + global useIcons + global zstatus + global targets + + set not $hist($setNo,0,host) + for {set i 1} {$i <= $not} {incr i} { + if {$zstatus($i) != 2} continue + set status [z39$i.$setNo responseStatus] + if {[lindex $status 0] != "DBOSD"} continue + set nor $hist($setNo,$i,offset) + for {set j 1} {$j <= $nor} {incr j} { + if {![string compare [z39$i.$setNo recordType $j] USmarc]} { + set score [z39$i.$setNo getMarc $j field 999 * r] + if {[scan $score %d score] != 1} { + set score 10 + } + } else { + set score 10 + } + if {$score > 0} { + lappend scoreArray [list $score $i $j] + } + } + } + if {![info exists scoreArray]} { + html "

    Search produced no result


    \n" + } else { + html "\n" + } + for {set i 1} {$i <= $not} {incr i} { + if {$zstatus($i) != 2} continue + set status [z39$i.$setNo responseStatus] + if {[lindex $status 0] == "NSD"} { + z39$i.$setNo nextResultSetPosition 0 + set code [lindex $status 1] + set msg [lindex $status 2] + set addinfo [lindex $status 3] + html {
    } [lindex $targets($hist($setNo,$i,host)) 0] + html "
    Error: $msg: $addinfo (code $code)
    \n" + } + } + html "\n
    " +} + +proc display-result-set-m-server {setNo} { + global hist + global useIcons + global zstatus + global targets + global env + global sessionId + + set not $hist($setNo,0,host) + html "
    \n" + for {set i 1} {$i <= $not} {incr i} { + if {$zstatus($i) != 2} continue + set status [z39$i.$setNo responseStatus] + if {[lindex $status 0] == "NSD"} { + html "

    " [lindex $targets($hist($setNo,$i,host)) 0] ": " + z39$i.$setNo nextResultSetPosition 0 + set code [lindex $status 1] + set msg [lindex $status 2] + set addinfo [lindex $status 3] + html "Error

    \n
    NSD$code: $msg: $addinfo" + } else { + html {
    } + html "

    " [lindex $targets($hist($setNo,$i,host)) 0] ": " + set r [z39$i.$setNo resultCount] + html "$r hits

    \n
    \n" + + if {$hist($setNo,$i,offset) > $hist($setNo,maxPresent)} { + set nor $hist($setNo,maxPresent) + } else { + set nor $hist($setNo,$i,offset) + } + display-rec 1 $nor display-$hist($setNo,format) $setNo $i + } + html "\n" + } + html "
    \n" +} + +proc display-result-set-m {setNo} { + global hist + global useIcons + global zstatus + global targets + + egw_log debug "sort=$hist($setNo,sort)" + switch $hist($setNo,sort) { + score { + display-result-set-m-score $setNo + } + default { + display-result-set-m-server $setNo + } + } +} + +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 "