Here's a status update on how I am using the LibCal Hours API to display
hours on my library's homepage. For MPOW, the API gave me a URL for JSON
as:
https://api3.libcal.com/api_hours_grid.php?iid=567&format=json&weeks=1
The problem I had was that the LibCal v2 documentation didn't say how to
obtain JSONP rather than JSON in order to avoid the CORS problem. I
resigned myself to writing my own custom PHP script to turn the LibCal JSON
into JSONP, but Emily King pointed me in the right direction and a
programmer at SpringShare advised me that all I had to do was to add the
string "&callback=?" at the end of the URL to generate JSONP directly.
E.G.,
https://api3.libcal.com/api_hours_grid.php?iid=567&format=json&weeks=1&callback=
?
After playing around with several other APIs to gain experience working
with JSON, I have come to realize this is a common practice (adding the
callback attribute) and that it is often undocumented. I guess you are just
supposed to know.
Here's a codepen displaying the current week's hours. If the "currently_open"
attribute for a given day is set to "true" -- i.e., is it today and are we
currently open -- a CSS class is added to highlight that day in the list.
http://codepen.io/tomkeays/pen/MYewYN?editors=001
Our situation is that we have extended hours from 9 pm - 2 am from Sunday -
Thursday, when patrons have to use their ID cards as keycards to swipe and
gain entrance to the building. LibCal let me set this up quite easily. In
the pen, if you change the offset from 0 to 1 (from current week to next
week), you can see what that looks like.
Tom
On Mon, Dec 15, 2014 at 4:11 PM, Tom Keays <[log in to unmask]> wrote:
> I've been playing with the hours options in LibCal. I especially like
> being able to pull out today's hours so easily. LibCal gives you options to
> do this using HTML (iframe), JavaScript, JSON, or RSS.
>
> HTML and JavaScript both format the output in a table, which is probably
> desirable if you have multiple locations, but maybe less good if you have
> one location only. That made me want to look into rolling my own solution
> using the JSON option.
>
> The problem is that to avoid XSS vulnerabilities, you can't use plain
> JSON, but must instead use JSONP, which is NOT an option being offered by
> LibCal (if anybody knows otherwise, I'd appreciate the information).
>
> So, my solution was to write a meatball PHP script that wraps the JSON in
> a JSONP callback. I wish I didn't have to do the extra server hop, but it
> works. Here's my demo.
>
> http://codepen.io/tomkeays/pen/EaKrgg/?editors=101
>
> Now, I wish there was a JSON option to display a week's worth of hours for
> a given location instead of just the one day's worth.
>
>
> On Tue, Nov 18, 2014 at 4:17 PM, Heidi Steiner Burkhardt <
> [log in to unmask]> wrote:
>>
>> Hi Mary,
>>
>> You mentioned LibCal and I do not think anyone else has addressed this
>> yet...you can use the Hours module for one location with the free version
>> <http://www.springshare.com/free.html>. The one location piece is the
>> only
>> limitation...so it should work for you if you just need it for one
>> library's hours. It is what we use on our website
>> <http://academics.norwich.edu/library/about/hours/>. You can set the
>> hours
>> for the whole year (using templates and exceptions) and then do not have
>> to
>> worry about it. There are a few different widget/API options
>> <http://help.springshare.com/usinghourslc/widgetapi>.
>>
>> All best,
>> Heidi
>>
>> --
>> Heidi Steiner Burkhardt
>> Head of Digital Services
>> Kreitzberg Library, Norwich University
>> 158 Harmon Dr. Northfield, Vermont
>> 802.485.2171
>>
>>
>>
>>
>> On Tue, Nov 18, 2014 at 9:18 AM, Mary E. Hanlin <[log in to unmask]>
>> wrote:
>>
>> > Hi All,
>> >
>> > I know this has been covered a bit here, but I have a rather exigent
>> > conundrum, and I'm hoping to figure out the best/easiest solution.
>> > Yesterday, the script to hour library hours (on our front page) which
>> pulls
>> > from Google calendar stopped working ("Error at line undefined in
>> > undefined[!]" - the exclamation point is mine; it seemed like it needed
>> > one.)
>> >
>> > Basically, the code came from a site that walked one through how to call
>> > daily hours (javascript) using Google's V2 API, but the V2 is fully
>> > deprecated (as I abruptly discovered), and I need to figure out another
>> > solution. (I haven't been able to find similar documentation for V3's
>> API.)
>> >
>> > Some constraints: 1. Our IT will not support php. We are an .NET shop
>> > with IIS servers. 2. We may not have the dough to pay for something
>> like
>> > LibCal which seems to me the easiest solution. 3. I'm semi-new to this
>> > "Internets/webmaster" thing, and really only know front-end coding, so a
>> > solution involving something like .NET, Python, etc. would have to have,
>> > "How to make a peanut butter sandwich," kind of documentation.
>> >
>> > Right now, I've just manually coded our hours, which is fine until
>> > Saturday when our hours change, and I'm not here (hopefully). I will be
>> > super grateful for insight or knowledge.
>> >
>> > Mary.
>> >
>> > Mary Hanlin
>> > Electronic Resources and Web Librarian
>> > J. Sargeant Reynolds Community College
>> > Phone:804.523.5323
>> > Email: [log in to unmask]
>> >
>>
>
|