improving the “setfocus” JavaScript

HIP3 contains some JavaScript that sets the focus to the search box everytime a page is loaded – this means you can start typing text straight in to the box.
However, if you’ve already done a search, then it can be frustrating for the user to have the page suddenly jump to the top (especially if they are using the back button to return to a list of search results). In fact, it make more sense for the JavaScript to only set the focus on the initial search screens.
Here’s a quick hack that disables the JavaScript “setfocus” function for search result and full bib pages:
Open up searchresponse.xsl file and find the <body> tag (it’s around line 230)
A few lines down you’ll find the onload attribute code – this tells the web browser to execute the startTimer and setfocus JavaScript functions as soon as the page has loaded:

<xsl:attribute name="onload">startTimer();setfocus();</xsl:attribute>

Replace that entire line of code with the following:

<!-- disable the setfocus for search result pages -->
<xsl:if test="not(boolean(/searchresponse/yoursearch))">
<xsl:attribute name="onload">startTimer();setfocus();</xsl:attribute>
</xsl:if>
<xsl:if test="(boolean(/searchresponse/yoursearch))">
<xsl:attribute name="onload">startTimer();</xsl:attribute>
</xsl:if>
<!-- end of changes -->

Save the searchresponse.xsl file and check your HIP to see if the change works!
The usual notes apply:

  1. this worked fine for our UK HIP 3.04
  2. back up your original searchresponse.xsl file before you make any changes!
  3. if you’ve got one, try it on your test HIP server first

Remind users to Log Out

Just a quick addition to the toolbar2.xsl file to remind a logged in user to log out:

Open up toolbar2.xsl and search for the following comment:

<!-- Logout option -->

A couple of lines below that, insert the code shown in blue after the <td> tag:

<xsl:if test="$patron_empowerment_disable = $false">
<td>
<span style="color: red; border-bottom: dashed black 1px; font-size: x-small;
font-weight: bold;">Don't forget to logout when you have finished!</span>
<xsl:variable name="list"> . . . .

some notes:

  1. this worked for me with the UK HIP 3.04 release
  2. back up your original toolbar2.xsl file before you make any changes!
  3. if you’ve got one, try it on your test HIP server first!

HIP Floor Maps JavaScript

HIP Floor Maps JavaScript
I’ve put together a much simpler version of the floor plan code that we use on our HIP. This version uses JavaScript and only requires a single HIP XSL file to be edited (items.xsl).
The full changes are shown in this copy of items.xsl taken from a fresh installation of HIP 3.04 (UK releases):

I’ve put together a much simpler version of the floor plan code that we use on our HIP. This version uses JavaScript and only requires a single HIP XSL file (items.xsl) to be edited.
The full changes are shown in this copy of the file taken from a fresh installation of HIP 3.04 (UK releases):

The added sections of JavaScript are shown in red (and green for the two commented-out debug lines that might be useful for testing).
The JavaScript “checkMaps” function has 3 examples – here they are along with an example of what they would match:

  1. showMap( ‘plan1.gif’, ‘Loan Collection Floor 3’ );

     
  2. showMap( ‘plan2.gif’, ‘Music Library’, ‘Score and Parts’ );

     
  3. showMap( ‘plan3.gif’, ‘Audiovisual Collection Floor 5[^|]+Available’ );

You’ll need to copy and paste the red JavaScript sections into your existing items.xsl file – don’t replace your entire file with mine because I’ve edited out large sections of the Dynix code to make it easier to read!!!
Don’t forget to:

  1. back up your existing “items.xsl” file first in case it all goes wrong
  2. try the script on a test HIP server first

As shown, the code will be expecting to display floor plan images stored in a sub-directory called “maps” in your “hipres.war” folder:

…however, you can easily tweak the code to get the images from another server.
The JavaScript uses regular expressions (regexs) to do the matching – if you are familiar with these then you can easily do matches that take into account call/class numbers, availability, etc to display even more specific floor plans.
If you need help building a certain regex, then I’ll try and help out. Otherwise, most Perl and Unix people are familiar with building regexs.
If you have any suggestions, comments, questions, corrections, improvements, etc then please feel free to contact me (email@daveyp.com).