Changes for the ZAP Module. $Date: 2002/11/12 16:02:49 $

--- 1.3 2002/11/12

Added setting 'charset' and 'lang' to set character set anguage 
respectively. 

--- 1.2 2002/05/17 Third official release

Bug fix: endless loop for big code sections in def/override.

Bug fix: For servertotal when resultCount==0.

Bug fix: For servertotal, ZAP variables weren't set.

ZAP provides more informative implemenation{Name,Version}.

Bug fix: problems with callZap in format rules (XML, MARC conversions).

--- 1.1 2001/10/26 Second official release

Fixed bug that could cause ZAP! to crash when doing present requests
sub pages using callZap.

Added facility to make per-target CCL config files. File cclfields.zap
is read as before (to verify syntax etc). If file cclfields.<target>.zap
exists it will be used instead to perform CCL to RPN for the target.
Character slash (/) in target name should be replaced by underscore.
For example, file cclfields.bagel_gils.zap read for target bagel/gils.

Added setting servertotal which when set to 1, defers record
event rules (records begin, record .., record end) to allow
all server-hits to be executed together before any records
are displayed.

Fixed problem with env(REMOTE_USER) setting - ZAP! now unsets
the variable when no remote-user is given.

ZAP! logs the elapsed time when receiving a response (init, search,
etc) from the target.

Added expire variable which sets Expire to current date + number of
seconds (Apache only).

New setting: schema that sets Z39.50 schema for retrieval (piggyback
disabled when present).

Variable content-type may be used to specify hmm.. Content-type. Set
it in %%def / %%override.

Function callZap returns the value of Tcl variable "result" in child.

ZAP! handles Danmarc/Danmarc2 records better.

String tags are 8-bit based in %format sections so that, say, Latin-1
characters may be used.

Fixed character conversion Tcl command setz.

Fixed HTML output for newer Tcl versions 8.1-8.3 where the internal
structure is UTF-8. The html, callZap and urlenc commands now
converts to the default external system encoding - normally iso8859-1.

Added call to Tcl_Init so that Tcl packages are available.

Bug fix: ODR mess when calling CallZap in Scan Response rules.

Added feature: alltargets holds encoded target=t1&target=t2, etc.
to ease the creation of hyper-links within per-target list
sections, such as %%record.

Added feature: variables cookie(name) is cookie value for "name".
Cookies can be read in any section, but must be modified in
%%override section.

Added feature: variable map(field,target) maps field for specific
target.

--- 1.0 2000/09/14 First official release

Updated CGI version of ZAP to use cookies.

ZAP uses one cookie for the session rather than one cookie per target.

Added authOpen(target) to specify open-style authentication for
specific target.

Added userId(target), groupId(target) and password(target) settings
to specify User-ID, group-ID and password for specific target.

Fixes for multi-target operations with cookies.

Added support for Tcl code in %%def and %%override sections.

Added Tcl command setz that works like Tcl's set but also sets
ZAP local variable.

Added Tcl command virtual which provides HTTP sub requests (Apache only).

Added setting piggyback. When 1 piggyback (search response with records)
is used; when 0 no search requests for records. Default is 1.

ZAP log prints microseconds as well.

Apache configuration setting ZapLog can be set to none indicating that
no log should be produced.

ZAP no longer caches targets with identical ID's but different host names
(rawname).

Fixed bug regarding callZap / Tcl.

Using GNU autoconf and RPM spec file.

Added es-user-id setting.

Added support for the ILL-Request using Z39.50 Order. The following
variables are read so far:

 ill,protocol-version-num
 ill,transaction-id,initial-requester-id,person-or-institution-symbol,person
 ill,transaction-id,initial-requester-id,person-or-institution-symbol,institution
 ill,transaction-id,initial-requester-id,name-of-person-or-institution,name-of-person
 ill,transaction-id,initial-requester-id,name-of-person-or-institution,name-of-institution
 ill,transaction-id,transaction-group-qualifier
 ill,transaction-id,transaction-qualifier
 ill,transaction-id,sub-transaction-qualifier
 ill,requester-id,person-or-institution-symbol,person
 ill,requester-id,person-or-institution-symbol,institution
 ill,requester-id,name-of-person-or-institution,name-of-person
 ill,requester-id,name-of-person-or-institution,name-of-institution
 ill,responder-id,person-or-institution-symbol,person
 ill,responder-id,person-or-institution-symbol,institution
 ill,responder-id,name-of-person-or-institution,name-of-person
 ill,responder-id,name-of-person-or-institution,name-of-institution
 ill,transaction-type
 ill,ill-service-type
 ill,requester-optional-messages,can-send-RECEIVED
 ill,requester-optional-messages,can-send-RETURNED
 ill,requester-optional-messages,requester-SHIPPED
 ill,requester-optional-messages,requester-CHECKED-IN
 ill,place-on-hold
 ill,item-id,item-type
 ill,item-id,call-number
 ill,item-id,author
 ill,item-id,title
 ill,item-id,sub-title
 ill,item-id,sponsoring-body
 ill,item-id,place-of-publication
 ill,item-id,publisher
 ill,item-id,series-title-number
 ill,item-id,volume-issue
 ill,item-id,edition
 ill,item-id,publication-date
 ill,item-id,publication-date-of-component
 ill,item-id,author-of-article
 ill,item-id,title-or-article
 ill,item-id,pagination
 ill,item-id,ISBN
 ill,item-id,ISSN
 ill,item-id,additional-no-letters
 ill,item-id,verification-reference-source
 ill,copyright-complicance
 ill,retry-flag
 ill,forward-flag
 ill,requester-note
 ill,forward-note

Multiple database may be specified for a target - separate database names
with plus, as in target=z3950.com/base1+base2

Added support for embedded CCL queries. A variable named
cclterm1,2.. is treated as a CCL query. The available access
points (ti, au, isbn, etc) and their mapping to RPN is defined
in the file cclfields.zap.

Added support for internal XML to GRS-1 conversion and MARC to GRS-1
conversion. Patterns as used in format-sections may now be used for MARC
records and XML records as well.

Relative path allowed for recursive ZAP calls using the $<..>-notation
and CallZap (if Tcl is enabled).

For RPN queries ZAP treats multiple terms with same name as a list
that is OR'ed. ZAP used to only consider the first. 

For RPN queries ZAP treats variable op (no digit after op) as flags
for operators op1, op2, .. opN. Currently left and right are
observed. If value is left the left-most operator is treated when
terms are empty. If value is right the right-most operator is
treated. The default and old treatment of operators was "left".

Implemented non-blocking i/o. Targets that doesn't respond
within a timeout are considered unavailable. Variable timeout
specifies number of seconds (default is 10).

Added support for variable "rawterm.." in queries that works as "term.."
except that the term is considered "raw" and include attributes, etc.

New action "init" which sends initializeRequest only. To be used
for "login" pages.

Implemented authentication support. Variable authOpen specifies
*open* style idAuthentication. Variable authGroupId, authUserId and
authPassword specifies *idPass* authentication.

Implemented proxy support. Variable proxy (if existing and non-empty)
specifies default proxy server. Also proxy(target) specifies proxy for
specific host.

Changed name of ZAP Handler to zap-script (used to be z39.50-search).

Added APDULog to specify name of APDU log file. If not specified
no log is generated.

Added support for language specific operators for the definition of
$query. opdisplay(and)/opdisplay(or)/opdisplay(not) may be
set the names of those operators in a non-english language.

Fix: Queries only including one or more spaces now treated as
non-existent terms.

Added DSO support for ZAP. Tested DSO with Apache 1.3.6. Note, DSO
didn't work for ZAP with Apache version 1.3.4.

Added support for many more record syntaxes - including XML, /HTML, etc.

Fixed handling of multipleNonSurrogateDiagnostics for search/present-
response.

--- 0.9 1998/10/20 Third internal release

Added ES Item Order. Invoked when "action" is "es" and
"es-package-type" is "itemorder".  Currently only
es-itemorder-contact-{name,phone,email} and es-itemorder-item (result
set pos.) is used for the Item Order request.

Added initial Extended Services support - enabled when variable
"action" is "es". Variables "es-function", "es-package-name" and
es-package-type specifies ES request parameters. The following
sections are defined for the status for the ES response: "es-response
done", "es-response accepted", "es-response failure", and "es-response
unknown". Each diagnostic message returned in ES response triggers
section "es-diagnostic". Whole list of diagnostics surrounded by
sections "es-diagnostics-begin" and "es-diagnostics-end".

Added sub page call support. A sub page call makes it possible for a
template to invoked another search template recursively. Use
$<template.zap?var1=val1&var2=val2&...> to invoke it.

Added scan support. Action type "scan". The initial starting term for
scan is given by variables "term1" and "field1", i.e the first "line"
of the query. Other variables that affect scan are "scannumber"
(default 10), "scanposition" (preferred position in response, default
5). If term1 is empty section "scan-empty" is invoked before a scan
request is sent.  If query is ok, section "scan-ok" is invoked. When
response is received "firstterm" and "lastterm" hold the first- and
last term in scan response. These terms may be used to create links
that refer to previous terms - and next terms. Each term in response
triggers section "scan-term-normal" if it's a normal term (i.e. not a
diagnostic term); or if it's a diagnostic term it triggers section
"scan-term-error" in which case the usual varibles "errorcode",
"errorstring", and "addinfo" are set. The list of scan terms returned
are surrouded by sections "scan-begin" and "scan-end".

Added support for different major actions using the "action" variable.
Default value is "search". New action types are defined when
implemented.

Added Type-1 query support (CCL). Variable "querytype" specifies query
type; possible values are "rpn" (default if not specified) or
"ccl". Only term1, term2, etc. are treated as part of query when
querytype is "ccl".

Added support for navigation among search result pages.

Fixed bug regarding %%include.

Renamed variables holding terms in query to term1, term2, ...  termN.

Checked that ZAP works with Apache 1.3.3.

--- 0.8 1998/08/19 Second internal release

Reworked code and added support for Apache 1.3.1.

Changed ZAP so that the script itself *is* the template, not the
setting template=.. The new, preferred way, to trigger ZAP is:
   http:myscript.zap/target=...
instead of
   http:/search/template=myscript&target=....

Added access to ISO2709 records using the Tcl command (getMarc).

--- 0.1 1998/03/19 First internal release

First version that works with Apache 1.2.5.
