Actually, thinking about this more, I just came up with a way too clever method to get my availability checking component (which is actually Umlaut) to deal with client-side-required APIs. Involving a (re-useable) hidden div that makes the js API calls, gets the responses back, and then sends those responses _back_ to my server code using an AJAX call, which the server can then incorporate into it's server-generated HTML. I already have a nice architecture for AJAX updating of 'background' services--which was originally meant for background services generated on the server side, but with the client doing it and then sending the response back to the server via AJAX, it _could_ work. And still be nice and clean and abstract. And I could use it both for Google and for other client-request-required APIs like Scopus's "cited by" service.
It would be interesting to implement, actually, kind of fun. I still worry that this added complexity is just another place for bugs, (cross-domain AJAX calls using the <script> tag, like these AJAX APIs use, are kind of a hack to begin with). But since chances of getting Google to change seem slim to me, might be worth investigating. Hmm. Jonathan Godmar Back wrote:
On Mon, Mar 17, 2008 at 10:41 AM, Jonathan Rochkind <[EMAIL PROTECTED]> wrote:Well, the SFX architecture has a feature called "display logic" that let's you on the server side determine how the menu will display based on what services are available. This is more obviously relevant to "digitized text availability" from Google Books than just cover images. You might want to suppress ILL links if there is digitized text (in fact, you probably wouldn't in that particular case, but that gives you the idea of what things you might want to do. At least my library wouldn't, maybe others with especially small ILL budgets might). Or just give a pre-ILL warning message ("are you sure the Google text isn't sufficient?), that might be more realistic. Anyway, you obviously couldn't do this using the existing SFX display logic feature if the Google Books info is only client side. Now, "impossible?" In the world of software development, few things are actually impossible. You could try to duplicate that feature using only client-side Javascript hiding and showing various DIVs. The SFX HTML currently isn't that clean, it woudl be hard. But you have the capability to customize the SFX HTML however you want to. (And your customizations will likely break with a future SFX release). So nothings impossible, but I wouldn't want to go down that road.Your particular requirement (hide the ILL link if Google has text) is easily implemented using the gbs classes: simply wrap the ILL link in a <span class="gbs-if-noview">...</span> and you're done. SFX will likely preserve such <span> tags across releases since it doesn't know what style you're applying. If I were you, I'd probably look for a server-side solution first, too, but let's discuss the architectural differences a bit more. You mentioned modularity and maintainability - I'd say that a client-side solution can be kept modular and maintainable as well - in particular if you minimize the actual JavaScript code you embed in your output page. In addition, client-side has significant advantages in both latency and scalability, in particular when mashing in data from a provider with a distributed architecture that has a degree of redundancy, and therefore availability, that is as high Google's. - Godmar
-- Jonathan Rochkind Digital Services Software Engineer The Sheridan Libraries Johns Hopkins University 410.516.8886 rochkind (at) jhu.edu
