Hacking Your Discovery Layer Fri May 2, 10-10:45am - Joillet Randy Oldham University of Guelph Ontario, Canada roldham@uoguelph.ca @roldham 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 Note Lots of Ex Libris products Hosted Locally: Voyager Primo Hosted Provincially: SFX Generally Speaking… Locally-hosted More access to files More potential for hacking Vendor-hosted Less access to files Less potential for hacking YOUR MILEAGE MAY VARY… Terms & Licenses 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… 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 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 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 1. 2. 3. 4. Vendor customisation documentation Access to customise or include files Users Knowledge of either: CSS HTML JAVASCRIPT 5. Firebug addon for Firefox 6. 1 bottle beer* 7. 1 bottle opener* Quick Note on Firebug Extension for Firefox Find div/class names: To hide To change 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 Change Facet Order COMPLEXITY LEVEL: LOW BACKEND ADMINISTRATION Facet Order Changed Facet Order: Before: After: WHY Change? Usability testing, Consortia, Analytics Facet Order How to modify FACET ORDER in PRIMO: Login to the Primo back office Click ONGOING CONFIGURATION WIZARDS Click VIEWS WIZARD Click on EDIT to the right of the view Click SAVE & CONTINUE, CONTINUE, CONTINUE 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 Add custom tabs COMPLEXITY LEVEL: LOW BACKEND ADMINISTRATION Tabs Add tabs (Blended, Primo, Primo Central) AFTER: Why change? Usability testing/staff feedback tabs All through back office Modify your view Go to the TABS section Select your search scopes for the tabs Save & deploy 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 Change versions tab colour COMPLEXITY LEVEL: LOW CSS OVERRIDE 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 Make the VERSIONS tab stand out more Colour change = CSS override 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: 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 Remove EXPAND MY RESULTS COMPLEXITY LEVEL: LOW JAVASCRIPT ADDITION Remove EXPAND… Remove the EXPAND BEYOND facet Why change? Usability testing/staff feedback 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 Customise MORE tab COMPLEXITY LEVEL: MEDIUM BACKEND & JS Add TUGdoc Tab TUGDoc Request Tab Consortial interlibrary article lending 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: tugdoc https://insite.lib.uoguelph.ca/primo/tugdoc/index.cfm?bib={{con trol/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/tugdoc OpenInNewWindow For the label of the tab: Code tables: Delivery: GetIT! Tab2 – changed name to TUGDoc Request 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 Tab The code is in Ex Libris Developers Network It’s a pretty simple one line javascript bit $(document).ready(function() { $('.EXLMoreTab').not('tr.EXLResult MediaTYPEjournal > td > div > div > ul > li').hide(); }); No modifications to EXL files! Vendor Support = Boolean Search Example COMPLEXITY LEVEL: MEDIUM JAVASCRIPT ADDITION Boolean Search Example Add a boolean search example AFTER: Why change? Staff request Boolean Search Example Relatively simple one line of JS $('<div class="TUGSearchFieldRibbonBoolean Example">e.g., king AND shakespeare NOT lear</div>').insertBefore(".EXLSearchFi eldRibbonAdvancedSearchLink"); 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 New Search Tab COMPLEXITY LEVEL: MEDIUM JAVASCRIPT ADDITION 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 Where is it? integration COMPLEXITY LEVEL: HIGH JAVASCRIPT ADDITION 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? 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 it? Some JAVASCRIPT! 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 it? Try the Guelph view Where is it? And one with a note… 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 Customised Help COMPLEXITY LEVEL: MEDIUM JAVASCRIPT ADDITION Help Doc Updates Customised discovery layer = customised help Updated screen caps Updated instructions /exlibris/primo/p4_1/ng/primo/home/syst em/thirdparty/jbossas/server/search/de ploy/primo_libraryapp.ear/primo_librarylibweb.war/static_htmls/ SEARCH TIPS: /help/search.html PRIMO INTEGRATION Search box Add a simple primo search box to Library website AODA…avoid iFRAMES New Books NEW NEW Books 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 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: roldham@uoguelph.ca @roldham