430 likes | 549 Views
Creating a Customized HIP for Reference Staff. Phil Feilmeyer Hennepin County Library CODI 2005. Backdrop. HIP 3.06a, Windows 2003 Horizon 7.3.3 HCL is a single library with 26 branches Each branch has a HIP profile, but they are essentially identical
E N D
Creating a Customized HIP for Reference Staff Phil Feilmeyer Hennepin County Library CODI 2005
Backdrop • HIP 3.06a, Windows 2003 • Horizon 7.3.3 • HCL is a single library with 26 branches • Each branch has a HIP profile, but they are essentially identical • Decision-making aspects of customization are centralized • Experience with XSLT, SQL, Web design/graphics, Web Application development • Previous CODI presentations on customizing XSL stylesheets available at: http://www.hclib.org/extranet and http:www.hclib.org/extranet/MorePresentations.html
Backdrop • Migration from Dynix with extensively customized HIP to Horizon, September 2004 to August 2005
Backdrop • Evaluation of the client search interface • Catalog interface much different for staff and public • Team identified essential functionality for Reference Desk interface • Blurry line between Ref and Circ Desk tasks • Reduce introduction of bad data by untrained and/or creative staff • Perceived reduction in level of customer service
Horizon Migration • Evaluation of the client search interface • Catalog interface much different for staff and public • Team identified essential functionality for Reference Desk interface • Blurry line between Ref and Circ Desk tasks • Reduce introduction of bad data by untrained and/or creative staff • Perceived reduction in level of customer service
Searching/Display Item detail Update item status Special indexes Borrower records* View details Reset PIN Update address/phone Requests View title request list Change pickup location Place request* Cancel request* Shuffle queue Convert item-specific to any-copy *Login to My Account without barcode or PIN Reference Desk Tasks not covered in HIP
Separation of Staff and Public • Each branch has two HIP profiles, one for public and one for staff • Staff profile code same as public preceded by an underscore • Public: ap • Staff: _ap • Staff profiles don’t require a PIN • Profile codes used to differentiate between Staff and Public in the XSL stylesheets • Same XSL stylesheets used for both
$isStaffProfile In each of the root stylesheets <xsl:variable name="isStaffProfile"> <xsl:if test="starts-with(//profile, '_')">true</xsl:if> </xsl:variable> To implement a difference between Staff and Public <xsl:choose> <xsl:when test="$isStaffProfile = 'true'"> [code for staff catalog] </xsl:when> <xsl:otherwise> [code for public catalog] </xsl:otherwise> </xsl:choose>
Types of Customizations • All require customizing the XSL stylesheet to change source HTML based on $isStaffProfile • Adding data elements to the XML using the HIP Admin tool • Adding data elements NOT available through the Admin tool and XML • Link to custom web applications that interact directly with Horizon database
HIP Admin + XSL Customization <td> <xsl:value-of select="$status"/> <xsl:if test="$isStaffProfile = 'true'"> <br/> <xsl:value-of select="$status_set"/> </xsl:if> </td>
Data not available from the XML Borrower ID, but no barcode number in the XML
Data not available from the XML • Custom java function in the XSL Processor that pulls in content from a web page • written by Casey Durfee, Seattle Public Library • http://extranet.spl.org/rss-0.5.zip • Instructions: getURL.txt • Code: Utils.jar (in the optional folder) • Create a custom web application to deliver the desired information • Perl CGI and/or ColdFusion • Use SQL to pull data from Horizon database
Data not available from the XML getbbarcode.cfm <cfparam name="borrowerID" default=""> <cfquery datasource="Horizon_Staff" name="getbbarcode"> select bbarcode from borrower_search_cf_view where borrower## = #borrowerID# </cfquery> <cfoutput query="getbbarcode">#bbarcode#</cfoutput>
Data not available from the XML toolbar2.xsl <td> <xsl:value-of select="//security/name"/> <xsl:if test="$isStaffProfile = 'true'"> <xsl:variable name="url"> http://hzapps:8080/getbbarcode.cfm?borrowerID= <xsl:value-of select="//security/patronid"/> </xsl:variable> <br/> <xsl:value-of select="Utils:getURL($url)"/> </xsl:if> </td>
Data not available from the XML Taking this technique to extremes… getSummaryViewData?bibID=1099918&loc=rd numRequests=24+checkedIn=here+refRent= all~509~ref~0~bsx~0~onorder~0~+reqData= 491~491+onOrder=0+ldr06=a+ldr07=m+desc00=+desc01=+desc04=+fixed21= +fixed23= +URL= +niceTitle=Harry Potter and the half-blood prince
Data not available from the XML numRequests=24 checkedIn=here copies=all~509~ref~0~bsx~0~onorder~0 reqData=491~491 onOrder=0 ldr06=a ldr07=m desc00= desc01= desc04= fixed21= fixed23= URL= niceTitle=Harry Potter and the half-blood prince getSummaryViewData?bibID=1099918&loc=rd
Link to Custom Web Applications • Direct link via <a href=…> • Form submission via <form action=…>
Direct link via <a href=…> getrequests.cfm?bib=1088720
Direct link via <a href=…> getrequests.cfm <cfparam name="bib" default=""> <cfquery datasource="Horizon_Staff“ name="getHolds"> SELECT * FROM request WHERE bib## = #bib# and request_status not in (3,6) ORDER BY bib_queue_ord </cfquery>
Direct link via <a href=…> fullnonmarcbib.xsl <a> <xsl:choose> <xsl:when test="($requests > 0) and ($isStaffProfile = 'true')"> <xsl:attribute name="class"> <xsl:value-of select=“$css_small_bold_anchor"/> </xsl:attribute> <xsl:attribute name="href"> http://hzapps:8080/getrequests.cfm?bib= <xsl:value-of select="$bibkey"/> </xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="class"> <xsl:value-of select="$css_bold_black_font1"/> </xsl:attribute> </xsl:otherwise> </xsl:choose> Current Requests: <xsl:value-of select="$requests"/> </a>
Form submission via <form action=…> <form name=“ipac”> [code for regular HIP login form] </form> <form name=“NameToBarcodeLookup” action=“http://hzapps:8080/barcodeLookup.cfm”> [custom code for name keyword lookup form] </form>
Security • Separation of staff and public catalogs, helper services • public, universally available • staff, restricted to secure internal network • separate HIP servers • separate database users/permissions for custom applications
Security • Authentication • Staff Catalog cookie • must be from a staff workstation with an internal IP address • username/password • Javascript added to the five root XSL stylesheets to check for the cookie • Tests for cookie (“onLoad”) • Pass, on to the catalog • Fail, redirect to the public catalog
SQL Help • Use Horizon client in debug mode to see the SQL used for a task • Ctrl-Alt-Shift-D
SQL for Change Pickup Location 01-LCH.GUI: 01-LCH.GUI: Nov 6, 2005 06:39:58 01-LCH.GUI: Client version 7.3.200.14 01-LCH.GUI:'HZDEBUG = Comment, DbCommand 01-LCH.GUI:'HZPHASE = GENERAL 01-LCH.GUI: begin tran 01-LCH.GUI: select request#, item#, borrower#, request_date, request_status, hold_exp_date, comment, on_hold_date, expire_date, fill_date, fill_location, pickup_location, reactivate_date, copy_request, timestamp /* kludge */ from request where request# = 402463 for browse 01-LCH.GUI: update request set pickup_location = "ap" where (bib# = 494574) and (bib_queue_ord = 5) and tsequal(timestamp, 0x00010000a62a5e95) 01-LCH.GUI: select distinct table_name, keyCols = convert (varchar (255), null), dbServerColsBkt = convert (int, null) from synch_table where enabled = 1 order by table_name 01-LCH.GUI: commit tran
Creating a Customized HIP for Reference Staff Phil Feilmeyer, Hennepin County Library http://www.hclib.org/extranet pfeilmeyer@hclib.org http://www.hclib.org/catalog CODI, November 2005