MyAccount - ILL Section for Tomcat WebVoyage
Tags: myaccount
, ill
, advanced
, tomcat
, opac
, perl
, php
Last Updated: Mar 24, 2010 16:21
- Description
The MyAccount patron page includes charged and requested items for customers using Voyager ILL. This project creates a unified table for ILLs on the MyAccount page derived from VoyagerILL's CLIO database, Ariel's Document Delivery, and RapidILL's web service. This method is quite complex and requires high-level access to all servers involved. The patron authentication portion is non-standard and not recommended for all sites, especially the larger. The WebVoyage Enhancer Code Contribution by Ere Maijala may be a good alternative for the patron identification portion.
- Author: Ken Herold
- Additional author(s):
- Institution: Hamilton College
- Year: 2010
- License: BSD style
- Short description: Use, modification and distribution of the code are permitted provided the copyright notice, list of conditions and disclaimer appear in all related material.
- Link to terms: [Detailed license terms]
- Skill required for using this code:
Advanced
State
Stable, planned for production deployment Summer 2010.
Programming language
Perl, PHP, XSLT
Software requirements
VoyagerILL or equivalent data source; Ariel document delivery and RapidILL optional
Screen captures
My Account page (top) illustrating dedicated ILL Requests section, with buttons for 90-day report of Voyager ILL transactions (ILL HISTORY - ASK TO RENEW) and pre-authenticated link to Ariel Document Delivery folder (MANAGE MY DOCUMENT DELIVERY).

My Account page (bottom) illustrating dedicated ILL Requests section, including delivered photocopies, delivered photocopies with live link to available PDF (Get PDF), charged books, and live links to available articles from Rapidill.org (Rapid PDF).
Method
This personalization is based on XML available at the MyAccount page (cl_myAccount.xsl). With Voyager 7 Tomcat, that is the string comprised of the title, firstname, middlename and lastname from the patron table, which appears as page:preText[1] in the page XML. I add the following line in the header of the stylesheet:
<xsl:variable name="patFN" select="page:page//page:element[@nameId='page.header.logout.link']/page:preText[1]"/>
One method to supply the key values necessary to match this patron data is to run a nightly extract (similar to sites using ezproxy) of selected patron data in xml form. The xsl page can then access this data in a lookup fashion comparing the variable patFN. See: patlookup.pl in the Download file list for our script.
The next step is to write new templates (see ill_templates.xsl) and preface them with the following line:
<xsl:key name="patrons" match="patron" use="@patName" />
<xsl:template name="displayILLData"> ...
Then, one can loop through the lookup xml file for the matching key, in this case the patron_id, and save it as a variable:
<xsl:for-each select="document('/m1/voyager/xxxdb/.../userfile.xml')">
<xsl:variable name="patronID"><xsl:value-of select="key('patrons', $patFN)/@patID" /></xsl:variable> ...
The remainder of the method consists of Perl and PHP scripts using these patron or request key values to perform SQL searches and return XML results for display. One calls the new templates at the appropriate locations in cl_myAccount.xsl and suppresses or customizes the rest of that page accordingly.
Access to the Voyager ILL database is crucial. I schedule an hourly task which copies the BorrowingRequests table along with a copy of the Voyager patron table to a separate MS Access database called cliodata_copy, made into its own Data Source. I then weed entries to the most recent rolling 90 days. Since ILL borrows are polled directly from the Clio database, we suppress their appearance in the Charged Items section through an xsl test.
The ILL History page has an SMTP mail widget for sending citation data directly to an ILL email account to request renewals. We use our local server, but sites will have to determine their best practice for this feature. Similarly, the Ariel integration with document delivery and the auto-login link creation depends upon local practice and configuration of patron accounts in Ariel.
Download File List
Page attachments management can be reached from the top-right menu - 'attachments' after page save.
1. patlookup.pl NIGHTLY EXTRACT OF PATRON DATA IN XML FORM
2. ill_templates.xsl TWO EXAMPLES. ONE, CREATES LINK TO ILL HISTORY. TWO, CREATES TABLE OF ILL ITEMS.
3. clio2tomcat.php RECEIVES PATRON_ID AND OUTPUTS CITATION LIST FROM VOYAGER ILL AS "ILL HISTORY"
4. arielDocList.pl MODIFIED DISTRIBUTION FROM THE ARIEL COMMUNITY
5. arielDoc.pl MODIFIED DISTRIBUTION FROM THE ARIEL COMMUNITY
6. arielDocs.php RECEIVES UNIQUE EMAIL ADDRESS AND READS ARIEL DOCUMENT DELIVERY FOLDER CONTROL FILES FOR MATCHING PDFs
7. ill2Tomcat.php RECEIVES UNIQUE EMAIL ADDRESS AND REPORTS XML OF CLIO CITATIONS TO WEB VOYAGE TOMCAT PAGE
8. ill2Ariel.php RECEIVES ILL REQUEST ID AND REPORTS XML OF CLIO CITATIONS TO ARIEL DOCUMENT DELIVERY PAGE
9. rapid.pl WEB SERVICE AT RAPIDILL.ORG; SENDS REQUEST_ID AND RECEIVES CITATION DATA
Working example
See screenshots
Using the following Ex Libris open interfaces
Changes
Release notes
I want to thank RapidILL.org for agreeing to modify its web services to include citation data at our request.
Installation instructions
See Method section above.
TO DO list
Once ExLibris exposes a unique patron identifier, e.g. patron_id, via XML then the need for the patron look-up file and process is unnecessary.
Books with a discharged status and articles with a delivered status may be filtered out of the results page, as desired.
The PDF link labels may be changed and locations moved to another column.
We are exploring an overall date sort by most recent first, but this will require a major code rewrite.
Error conditions should result in blank displays versus broken pages, but this can always be improved.
Known issues
All code examples should be secured by the installing sites, especially files open to the internet. Displays are subject to the vagaries of accurate and ungarbled barcode numbers.
Comments
Text...

