EDS Integration
EDS Integration historical background
Our EDS search box (aka the GALILEO search box widget) is based on my reverse engineering EBSCO's Search Box Builder: http://support.ebscohost.com/eit/sbb.php
I just studied all the parameters that their search box builder used and picked out the ones that we needed.
And because we wanted to share our GALILEO search box widget more widely, I decided to make the form action attribute be an express link (which means that /cgi/login
is the script that processes the search box parameters).
/cgi/login
Key EDS code in https://gitlab.galileo.usg.edu/brad/galileo_portal/-/blob/master/cgi-bin/login#L539
- This bit of code is the preliminary reaction to someone entering a galileo EDS search.
- Remember that as an express link, the EDS search needs to work similarly to a simple
link
situation:- For a remote user it sets a cookie and sends the user to the welcome screen for password entry
- After password entry, login then picks up that cookie and redirects to that link.
- So for EDS, we set an
eds
cookie and after password entry, we pick it back up again, so:
my $eds; # this will hold all of the parameters passed--not just the 'search_galileo_query' part
if( my $bquery = $cgi->param( 'search_galileo_query' ) ) { # i.e., is this the initial encounter with an EDS search submission?
$eds = $cgi->query_string;
}
else {
$eds = $cgi->param( 'eds' )||$cgi->cookie( 'eds' )||''; # i.e., are we now picking back up an 'eds' cookie after password entry?
}
untaint query => $eds;
https://gitlab.galileo.usg.edu/brad/galileo_portal/-/blob/master/cgi-bin/login#L622
- This is the code where we start processing the cgi parameters that got stored in
$eds
either from the initial encounter or from the cookie.
https://gitlab.galileo.usg.edu/brad/galileo_portal/-/blob/master/cgi-bin/login#L3088
- This is the workhorse subroutine that pulls together the final EBSCO EDS URL (fashioned like the EBSCO Search Box Builder) to redirect the user to.
GALILEO Search Box Widget
So at the same time I was implementing the EDS search box for the GALILEO portal, I was also designing the javascript drop-in code for the GALILEO Search Box Widget. In the end, I decided to use exactly the same drop-in code in the GALILEO portal as we advertised to institutions to use on their websites. That way, we'd know immediately if the Search Box Widget had any sort of problems. Whether or not we do that in GALILEO Search, I don't have an opinion.