Matthew Reidsma

Work Notes

Updates from the GVSU Libraries’ Web Team.
Archive // Subscribe: EmailRSS

Getting to My Account in EDS over FOLIO

There is only one thing that annoys me more than blog posts that begin, “Sorry it’s been so long since I’ve posted,” and that is years-long ILS and discovery migrations that lack basic features once you’ve signed all the contracts and overworked yourself and your colleagues and annoyed all of your users. Today, we have both.

Last January we went live with EDS and EBSCO’s eResources tools, migrating off of our long association with Ex Libris/ProQuest’s Summon. It was a challenge, as all migrations are. This summer we went live with FOLIO, leaving behind III’s archaic Sierra. FOLIO is a project spearheaded by EBSCO, so the choice of having EDS be the public front end for FOLIO, the new ILS, was partly because of the challenges in getting companies that compete with each other to work together. (See: “I have a ProQuest search tool that can’t find EBSCO titles” or “I have an EBSCO search tool that can’t find ProQuest titles.”) Well, it turns out that EDS wasn’t really designed to be the front end for an ILS, even though they bolted on some basic request and checkout functionality. It lacked one basic feature so obvious, we never thought to even ask about it: the ability to link directly to your library account.

For years, users would receive emails from the ILS when their materials were almost due, complete with a handy link that would take them directly to their account page to renew items. Every ILS has this feature, except for EDS over FOLIO, apparently. You cannot link directly into the account page in EDS, because the page relies on a session variable in the URL (what is this, 1998?) and a JavaScript trigger to send a user to the account page. And because EBSCO is developing a new user interface for EDS that doesn’t have all these architectural issues with holding on to legacy technologies (like session variables) they aren’t putting a lot of work into the existing interface. (The new interface doesn’t yet work with FOLIO. Sigh.)

So, the suggestion was that we give users instructions on how to get to EDS, and then give them instructions on how to log in to their account. If you know me, you know how I feel about giving users instructions to do something that should be super obvious, so I politely declined. Besides, if you are on campus, you can get to EDS without logging in, and then to log in you click “Sign in.” If you are off-campus, you get to EDS by logging in, so you’re already there! Plus, the locations and labels for the sign in links and account links change depending on your device and viewport size, so the idea of writing instructions for all of that made me feel grouchy. Also, I don’t want to read a guide for clicking a link so I doubt too many other people are up for that. Instead, I tried to come up with my own work around. First, I tried passing a custom key value pair to EDS in the URL, like “renewal=true.” Unfortunately for me, EDS strips out any key value pair it doesn’t recognize (this is a good thing, just surprising that they took the time to do this but not allow you to link to the account page or pre-limit a search by material type.)

So, I decided I would write a short script that looked for a specific search, one that both had zero results and that wouldn’t be a possible search. The script would see a specific search term and then grab the session variable from the URL and trigger the link that opens the My Account page. I added a little message and some styles to let users know that the account page was being loaded, because EDS is already slower than downloading a cracked version of Doom on my 1200 baud modem in 1991. Basically, if EDS at GVSU loads a search for “renewmybooksplease” - it will send the user directly to the my account screen.

Animation showing the script redirecting to the My Account page

Here’s the code:

// First, get the URL
const url = new URL(window.location.href);

// Is the renewal search term present? If yes, do this stuff
if(getElementById('SearchTerm1').value === 'renewmybooksplease') { 

    // Make an overlay so it's obvious something is going to happen

    jQuery('body').append('<div id="overlay"><div id="text">Loading Your Library Account...</div></div>');
    jQuery('body').append('<style>#text{position: absolute; top: 50%; left: 50%; font-size: 50px; color: white; transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); }#overlay {display: block; position: fixed; width: 100%; height: 100%; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0,0,0,0.5); z-index: 200; cursor: pointer; }</style>');

    // Now get the session variable and build the account URL

    var hostServer = url.hostname;
    var sessionVariable = url.searchParams.get('sid');
    var vidVariable = url.searchParams.get('vid');

    // Now reload the page on the my loans screen

    var renewalURL = 'https://' + hostServer + '/eds/toolbar/gotofolderaction?theContentItemType=EbookCheckout&sid=' + sessionVariable;
    window.location.href = renewalURL;

} else {
    console.log('No renewal flag');

This is not ideal, but it works. One of the challenges to moving to EDS is that I had spent almost 10 years making Summon work better by writing customization for it. Stock Summon has a lot of problems that we had ironed out, but now we’re starting over. So, if you’re an EDS user, buckle up for some more modifications to make EDS work better.