Hacking your discovery layer
1 / 52

Hacking Your Discovery Layer - PowerPoint PPT Presentation

  • Uploaded on

Hacking Your Discovery Layer. Fri May 2, 10-10:45am - Joillet Randy Oldham University of Guelph Ontario, Canada [email protected] @ roldham. All About TUG. TUG: TriUniversity Group Consortia University of Waterloo (Waterloo, Ontario, Canada) – 22,400

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' Hacking Your Discovery Layer' - trella

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Hacking your discovery layer

Hacking Your Discovery Layer

Fri May 2, 10-10:45am - Joillet

Randy Oldham

University of Guelph

Ontario, Canada

[email protected]


All about tug
All About TUG

  • TUG:TriUniversity Group Consortia

    • University of Waterloo (Waterloo, Ontario, Canada) – 22,400

    • Wilfrid Laurier University (Waterloo, Ontario, Canada) – 14,800

    • University of Guelph (Guelph, Ontario, Canada) – 22,000


  • Lots of Ex Libris products

  • Hosted Locally:

    • Voyager

    • Primo

  • Hosted Provincially:

    • SFX

Generally speaking
Generally Speaking…

  • Locally-hosted

    • More access to files

    • More potential for hacking

  • Vendor-hosted

    • Less access to files

    • Less potential for hacking


    • Terms & Licenses

Full disclosure
Full Disclosure

  • This is Matt.

  • Matt is a developer at UG

  • This is Randy.

  • He’s the web guy at UG

  • Also Primo guy at UG

  • Then we had a team of folks from the consortia… Alison, Charles, Dillon, Matt

  • And EX LIBRIS support…

First steps
First Steps…

  • Determine your access to files:

    • Is there backend administration?

    • Can you modify/include CSS?

      • Simple colour changes & hide content

    • Can you modify/include HTML files?

      • Customise headers and footers

      • Include new JS files

    • Can you modify/include Javascript files?

      • More advanced customisations

      • Programmatically changing things

    • Can you modify core files?

      • Carte Blanche!

General customisation notes
General customisation notes

  • We had a general approach to customisations:

    • Avoid customisations to core files when possible

    • Keep it simple…as close to stock as possible

    • Backup…backup…backup

    • Document all changes

    • Share 

Determine what to customise
Determine What to Customise

  • Just because you CAN doesn’t mean you SHOULD

  • Remember: Each hack has to be maintained through upgrades

  • Driven by usability testing:

    • What would help users?

    • What would increase their success?

    • What would stop them from asking for help?

Tools you ll need
Tools You’ll Need

  • Vendor customisation documentation

  • Access to customise or include files

  • Users

  • Knowledge of either:

    • CSS

    • HTML


  • Firebug addon for Firefox

  • 1 bottle beer*

  • 1 bottle opener*

Quick note on firebug
Quick Note on Firebug

  • Extension for Firefox

  • Find div/class names:

    • To hide

    • To change

Method one
Method One

  • RTFM

  • Read The Functional Manual

  • Vendors provide limited customisation

  • This is your best bet

  • Vendors support these customisations through upgrades

  • Reduces your upgrade time

Complexity level low backend administration

Change Facet Order

Complexity level: LOWbackend administration

Facet order
Facet Order

  • Changed Facet Order:

  • WHY Change?

    • Usability testing, Consortia, Analytics



Facet order1
Facet Order

  • How to modify FACET ORDER in PRIMO:

    • Login to the Primo back office


    • Click VIEWS WIZARD

    • Click on EDIT to the right of the view


    • Select BRIEF DISPLAY from dropdown

    • Click EDIT TILE to the right of REFINE MY RESULTS

    • Change the order & enable/disable facets here

    • Click Save & Continue, continue, DEPLOY

Complexity level low backend administration1

Add custom tabs

Complexity level: Lowbackend administration


  • Add tabs (Blended, Primo, Primo Central)

  • AFTER:

  • Why change?

    • Usability testing/staff feedback


  • All through back office

  • Modify your view

  • Go to the TABS section

  • Select your search scopes for the tabs

  • Save & deploy

Method 2
Method 2:

  • CSS Override

  • You must have access to edit CSS files

  • Create your own CSS file and include it

  • Use Firebug

  • Determine div/class name

    • Visibility:hidden; to HIDE things

    • Change colours

    • Re-position things

    • Replace some images

Complexity level low css override

Change versions tab colour

Complexity level: LowCSS override

Versions tab colour
Versions Tab Colour

  • Versions tab too pale:

  • If there are multiple copies of the same item, the records are de-duped and all records are displayed behind a VERSIONS tab

  • Usability testing/comments - users consistently missed this tab… too pale

The goal
The Goal

  • Make the VERSIONS tab stand out more

  • Colour change = CSS override

Versions tab colour1
Versions Tab Colour

  • Instructions are on Ex Libris Developers Network

  • Essentially, we do the following:

    • create a new triangle bit

    • change the text colour

    • change the background colour

    • All done with CSS

Method 3
Method 3:

  • Inject JS

  • You must have access to an HTML file loaded on each page (footer/header)

  • Create a js file and include it in this

  • Possibilities are nearly endless

  • Be prepared to troubleshoot post upgrades

Complexity level low javascript addition


Complexity level: LowJavaScript Addition

Remove expand
Remove EXPAND…

  • Remove the EXPAND BEYOND facet

  • Why change?

    • Usability testing/staff feedback

Remove expand1
Remove EXPAND…

  • It’s a pretty simple one line javascript bit

    $(document).ready(function() { $('.EXLFacetContainer h3').filter(function(index) { return $(this).text().trim() === "Expand My Results"; }).parent().hide();


  • No modifications to EXL files!

  • EXLibris Support =

  • Survives upgrades!***

  • Code in Ex Libris Developers Network

Complexity level medium backend js

Customise MORE tab

Complexity level: Mediumbackend & JS

Add tugdoc tab
Add TUGdoc Tab

  • TUGDoc Request Tab

  • Consortial interlibrary article lending

Tugdoc tab
TUGdoc Tab

  • We co-opted the “GetIT! Link 2”… MORE tab

  • Mapping tables: Delivery: GetIT! Link 2:  changed the “link field in PNX” to tugdoc for everything except Remote Search Resource

  • Mapping tables: delivery: templates – mapped tugdoc to the URL template:

  • tugdochttps://insite.lib.uoguelph.ca/primo/tugdoc/index.cfm?bib={{control/sourcerecordid}}&view=GUELPH               link to TUGDoc request

  •  to open the tab in new window: Mapping tables: Delivery - URLs Attributes

  • https://insite.lib.uoguelph.ca/primo/tugdocOpenInNewWindow

  • For the label of the tab: Code tables: Delivery: GetIT! Tab2 – changed name to TUGDoc Request

Tugdoc tab1
TUGdoc tab

  • TUGdoc tab shows up on every item

  • We only want folks to use TUGdoc for ARTICLES…not other resource types

  • So we programmatically HIDE the tab for NON-JOURNAL resources using JAVASCRIPT

Tugdoc tab2
TUGdoc Tab

  • The code is in Ex Libris Developers Network

  • It’s a pretty simple one line javascript bit

    $(document).ready(function() { $('.EXLMoreTab').not('tr.EXLResultMediaTYPEjournal> td > div > div > ul> li').hide();


  • No modifications to EXL files!

  • Vendor Support =

  • Survives upgrades!***

Complexity level medium javascript addition

Boolean Search Example

Complexity level: MediumJavaScript Addition

Boolean search example
Boolean Search Example

  • Add a boolean search example

  • AFTER:

  • Why change?

    • Staff request

Boolean search example1
Boolean Search Example

  • Relatively simple one line of JS

  • $('<div class="TUGSearchFieldRibbonBooleanExample">e.g., king AND shakespeare NOT lear</div>').insertBefore(".EXLSearchFieldRibbonAdvancedSearchLink");

  • We find div on the screen and then insert a div just before it. We give our div a class so that we can style it. We specify the content of the div

Complexity level medium javascript addition1

New Search Tab

Complexity level: MediumJavaScript Addition

New search link
New Search Link

  • New Search Link Added

  • Why Change?

    • Staff request

    • Takes users back to search startpage

    • Requires JSP file modifications

    • Contact me for more information

Complexity level high javascript addition

Where is it? integration

Complexity level: HIGHJavaScript Addition

Where is it feature
Where is it feature

  • Patrons/staff said… cool… I have a call number… but where is the thing!?

  • Guelph/Waterloo/Laurier were different

    • Guelph had a CF web app which supported URL var and form input

    • Waterloo had a different CF web app which supported form input

    • Laurier had static floor maps

Where is it
Where is it?

  • Primo has the call number…

  • Our consortia has apps (or static maps) that can take call numbers and show building locations for materials…

  • How doth we marry these things!?

Where is it1
Where is it?


    • Read in item type

    • Read in location, and call number

    • Do something based on some logic

    • EG:If you find BOOK, then:

      • If UG/UW: create link which submits call number to CF apps via URL

      • If WLU: create static link to floor map of proper call number range

    • EG 2: If you find ANNEX, then always:

      • Display NOTE text instead of LINK.

Where is it2
Where is it?

  • Try the Guelph view

Where is it3
Where is it?

  • And one with a note…

Method 4
Method 4:

  • Edit HTML

  • You must have access to HTML files

  • Add logos, customise headers/footers

  • These are least likely to survive upgrades

  • Be prepared to troubleshoot post upgrades

Complexity level medium javascript addition2

Customised Help

Complexity level: MEDIUMJavaScript Addition

Help doc updates
Help Doc Updates

  • Customised discovery layer = customised help

  • Updated screen caps

  • Updated instructions

  • /exlibris/primo/p4_1/ng/primo/home/system/thirdparty/jbossas/server/search/deploy/primo_library-app.ear/primo_library-libweb.war/static_htmls/

  • SEARCH TIPS: /help/search.html

Search box
Search box

  • Add a simple primo search box to Library website

  • AODA…avoid iFRAMES

New new books

New books cont
New Books cont..

  • RSS feed integrated

  • Pulls covers in from Google Books

  • Can limit to LC classification range

  • Can limit to library

What about you
What about you?

  • What are some customisations you folks have done?

  • What would you like to see?

  • Will you share on Ex Libris Developers Network?

Thank you

  • Thanks for listening!

  • If anything piqued your interest and you’d like some more info, feel free to drop me an email:

  • [email protected]

  • @roldham