<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>John Miedema &#187; OpenBook WordPress Plugin</title>
	<atom:link href="http://johnmiedema.ca/category/projects/openbook/feed/" rel="self" type="application/rss+xml" />
	<link>http://johnmiedema.ca</link>
	<description>books, libraries, technology</description>
	<lastBuildDate>Wed, 28 Jul 2010 02:21:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>OpenBook 3 Video: Sneak Peek at the New Options</title>
		<link>http://johnmiedema.ca/2010/06/30/openbook-3-video-sneak-peek-at-the-new-options/</link>
		<comments>http://johnmiedema.ca/2010/06/30/openbook-3-video-sneak-peek-at-the-new-options/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 01:58:33 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[OpenBook WordPress Plugin]]></category>
		<category><![CDATA[planetcode4lib]]></category>

		<guid isPermaLink="false">http://johnmiedema.ca/?p=4968</guid>
		<description><![CDATA[OpenBook 3 will be the final version of OpenBook. I have always planned to make a video about how to use OpenBook, so I will be making a good one after the release of version 3. As a trial run, I made a short video that provides a sneak peek at the new features I have been working on. I think you will be pleased. OpenBook 3 makes it very easy to insert instances of OpenBook using a new button and form on the Visual Editor. This version also speeds ...]]></description>
			<content:encoded><![CDATA[<p>OpenBook 3 will be the final version of OpenBook. I have always planned to make a video about how to use OpenBook, so I will be making a good one after the release of version 3. As a trial run, I made a short video that provides a sneak peek at the new features I have been working on. I think you will be pleased. OpenBook 3 makes it very easy to insert instances of OpenBook using a new button and form on the Visual Editor. This version also speeds up load time using Open Library&#8217;s new Book API and by introducing an HTML alternative to shortcodes. <a href="http://www.youtube.com/watch?v=8PzDsI1LJ5Y">How do you like it?</a>.</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/8PzDsI1LJ5Y&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/8PzDsI1LJ5Y&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>I am using the free <a href="http://camstudio.org/">CamStudio</a> to capture the screen events, plus the Windows Live Movie Maker that came with my Windows 7. Both tools are basic but get the job done. If you have other free tools to recommend, I&#8217;d be glad to hear about them.</p>
]]></content:encoded>
			<wfw:commentRss>http://johnmiedema.ca/2010/06/30/openbook-3-video-sneak-peek-at-the-new-options/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<series:name><![CDATA[Building OpenBook 3.0]]></series:name>
	</item>
		<item>
		<title>OpenBook 3: New WordPress Button to Insert OpenBook Code with No Fuss</title>
		<link>http://johnmiedema.ca/2010/06/15/openbook-3-new-wordpress-button-to-insert-openbook-code-with-no-fuss/</link>
		<comments>http://johnmiedema.ca/2010/06/15/openbook-3-new-wordpress-button-to-insert-openbook-code-with-no-fuss/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 02:13:29 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[OpenBook WordPress Plugin]]></category>
		<category><![CDATA[planetcode4lib]]></category>

		<guid isPermaLink="false">http://johnmiedema.ca/?p=4898</guid>
		<description><![CDATA[If you have several instances of OpenBook 2 on your WordPress site, you will notice occasional load lags, maybe a few seconds. Currently, when a user visits your website, OpenBook makes a live call to Open Library for the book data before displaying it as HTML. Version 3 of OpenBook promises a major performance upgrade in two ways. One, use of Open Library&#8217;s new Books API. Two, a local cache of OpenBook instances. 
Open Library is busy upgrading their Books API, so I spent some time looking at the local ...]]></description>
			<content:encoded><![CDATA[<p>If you have several instances of OpenBook 2 on your WordPress site, you will notice occasional load lags, maybe a few seconds. Currently, when a user visits your website, OpenBook makes a live call to Open Library for the book data before displaying it as HTML. Version 3 of OpenBook promises a major performance upgrade in two ways. One, use of Open Library&#8217;s new Books API. Two, a local cache of OpenBook instances. </p>
<p>Open Library is busy upgrading their Books API, so I spent some time looking at the local cache design. At first, I thought I would find a way to store the book&#8217;s text data in your MySQL database, and images on your server&#8217;s disk. Now I have a much better idea. I already had plans to add a button to your WordPress post editor for insertion of OpenBook shortcodes. Clicking the button will open a form that will let you fill in the ISBN or other book number, and any other OpenBook options, e.g., version number. No need to remember the options anymore! I can use this same process to simply call Open Library, get the HTML and add it directly to your post. In this way, the call the Open Library only happens once, when you write the post. The HTML gets stored in your post, not in your database. The cover image will still be a live link to Open Library but when users visit your page they will not have to wait for the API calls. Nice, I think.</p>
<p>For you techie WordPress users who may want to do something similar, here&#8217;s a tip. WordPress describes how to link your plugin to their TinyMCE visual editor, but I preferred an article by Gary Cao for its easy explanation and working example. Download his sample plugin and work from there.</p>
<p>Cao, Gary. <a href="http://www.wphardcore.com/2010/how-to-make-shortcodes-user-friendly/">Make Shortcodes User-Friendly</a>. wphardcore.<br />
Miedema, John. <a href="/2010/04/25/openbook-3-the-final-version-requirements/">OpenBook 3, the Final Version: Requirements</a>.<br />
WordPress. <a href="http://codex.wordpress.org/TinyMCE_Custom_Buttons">TinyMCE Custom Buttons</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://johnmiedema.ca/2010/06/15/openbook-3-new-wordpress-button-to-insert-openbook-code-with-no-fuss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Building OpenBook 3.0]]></series:name>
	</item>
		<item>
		<title>OpenBook 3 Update: Faster APIs, Enhanced Book Number Handling</title>
		<link>http://johnmiedema.ca/2010/06/06/openbook-3-update-faster-apis-implemented-better-book-number-handling/</link>
		<comments>http://johnmiedema.ca/2010/06/06/openbook-3-update-faster-apis-implemented-better-book-number-handling/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 19:59:27 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[OpenBook WordPress Plugin]]></category>
		<category><![CDATA[planetcode4lib]]></category>

		<guid isPermaLink="false">http://johnmiedema.ca/?p=4867</guid>
		<description><![CDATA[While I&#8217;ve been blogging loudly about critical theory and grand narratives, I&#8217;ve also been pecking quietly at my OpenBook 3 upgrade.
Faster APIs Implemented. You&#8217;re going to like this. I implemented Open Library&#8217;s Books API. This is a higher level API that combines book data from different sources into one call. OpenBook calls could triple in speed as result of this enhancement. 
Some Display Elements Missing in New API. This API seems to be missing a few display elements, e.g., series, edition, and genre. It is also missing some elements that ...]]></description>
			<content:encoded><![CDATA[<p>While I&#8217;ve been blogging loudly about critical theory and grand narratives, I&#8217;ve also been pecking quietly at my OpenBook 3 upgrade.</p>
<p><strong>Faster APIs Implemented.</strong> You&#8217;re going to like this. I implemented <a href="http://openlibrary.org/dev/docs/api/books">Open Library&#8217;s Books API</a>. This is a higher level API that combines book data from different sources into one call. OpenBook calls could triple in speed as result of this enhancement. </p>
<p><strong>Some Display Elements Missing in New API.</strong> This API seems to be missing a few display elements, e.g., series, edition, and genre. It is also missing some elements that appear to be in transition, e.g., first sentence, notes, URI lists. I don&#8217;t think these display elements were getting much use so unless someone squawks, I&#8217;m not going to worry about it. I will updated the wiki when I&#8217;m done development.</p>
<p><strong>Legacy Book Number Handling.</strong> OpenBook 3 will continue to support booknumbers in the legacy format, i.e., enter an ISBN (10 or 13 digit) or a legacy Open Library book key, e.g., &#8220;b/OL9361241M&#8221;. OpenBook will also support Open Library&#8217;s new book key format, &#8220;books/OL9361241M&#8221;.</p>
<p><strong>New Book Number Handling.</strong> The new API accepts multiple book number types, including ISBN (10 or 13 digit), OCLC, and LCCN. Examples: ISBN:0451526538, OCLC:#########, LCCN:#########. OpenBook will support all these book number types. </p>
<p>Next step: Local cache of Open Library data. I have a new simpler plan for this that I will discuss soon. </p>
]]></content:encoded>
			<wfw:commentRss>http://johnmiedema.ca/2010/06/06/openbook-3-update-faster-apis-implemented-better-book-number-handling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Building OpenBook 3.0]]></series:name>
	</item>
		<item>
		<title>OpenBook 3, the Final Version: Requirements</title>
		<link>http://johnmiedema.ca/2010/04/25/openbook-3-the-final-version-requirements/</link>
		<comments>http://johnmiedema.ca/2010/04/25/openbook-3-the-final-version-requirements/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 16:12:24 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[OpenBook WordPress Plugin]]></category>
		<category><![CDATA[planetcode4lib]]></category>

		<guid isPermaLink="false">http://johnmiedema.ca/?p=4753</guid>
		<description><![CDATA[Software is never finished, merely abandoned. 
The OpenBook plugin provides an easy way to insert book covers, titles and other bibliographic data into WordPress content. First released over two years ago, it has been downloaded over 4000 times, and the subject of journal articles and library presentations. Currently at version two, I feel there a few significant improvements and features that need to be completed to bring the software to full maturity, so I am undertaking version three. Once I am satisfied it is running smoothly for everyone, I will ...]]></description>
			<content:encoded><![CDATA[<p>Software is never finished, merely abandoned. </p>
<p>The OpenBook plugin provides an easy way to insert book covers, titles and other bibliographic data into WordPress content. First released over two years ago, it has been downloaded over 4000 times, and the subject of journal articles and library presentations. Currently at version two, I feel there a few significant improvements and features that need to be completed to bring the software to full maturity, so I am undertaking version three. Once I am satisfied it is running smoothly for everyone, I will consider OpenBook finished.  </p>
<p>Here is my current list of requirements.</p>
<p><strong>1. Option to store book cover files and data locally.</strong> OpenBook currently uses live APIs to retrieve covers and data. The advantage is that data is always current and does not have to be maintained locally on your box. The disadvantage is that it can cause page load delays. I will add the option to store the data locally.</p>
<p><strong>2. Performance upgrade: Improved use of Open Library APIs.</strong> The good folks at Open Library released improved APIs that will speed up the performance of OpenBook. I will incorporate these into OpenBook.</p>
<p><strong>3. Use a WordPress button to insert instance of OpenBook.</strong> Users will click a button in the post/page editing panel, enter an ISBN or OpenBook key, and choose OpenBook options, then the information will be inserted into the respective post/page. Less typing an no need remember the options.</p>
<p><strong>4. &#8220;Currently Reading&#8221; widget.</strong> I have had several requests for a widget in which readers can display the book they are currently reading. You can do this now by entering a shortcode in a text widget but I can make this easier with a dedicated widget.</p>
<p><strong>5. Default templates.</strong> Pure XHTML <strike>1.1</strike>, for real this time; I will remove the Bookfinder link from the default template as part of this change. I will also add a new &#8216;Add to LibraryThing&#8217; link as an option. Also considering new links to Wikipedia book and/or author entries.</p>
<p><strong>6. Setting changes.</strong> Option to suppress the short error messages so nothing appears where there is an error. Ability to choose the bullet character that appears between links to external resources. Option to delete all settings stored in the database when the plugin is deactivated.</p>
<p>How&#8217;s that? If you&#8217;re interested in seeing additional features, now&#8217;s your chance to ask. Comment here, or better, join the <a href="http://groups.google.com/group/openbook4wordpress">Google group for OpenBook</a>. Also see the the <a href="http://code.google.com/p/openbook4wordpress/">project hosting site</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://johnmiedema.ca/2010/04/25/openbook-3-the-final-version-requirements/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<series:name><![CDATA[Building OpenBook 3.0]]></series:name>
	</item>
		<item>
		<title>Join the OpenBook Discussion List</title>
		<link>http://johnmiedema.ca/2009/09/14/join-the-openbook-discussion-list/</link>
		<comments>http://johnmiedema.ca/2009/09/14/join-the-openbook-discussion-list/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 00:58:30 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[OpenBook WordPress Plugin]]></category>
		<category><![CDATA[planetcode4lib]]></category>

		<guid isPermaLink="false">http://johnmiedema.ca/?p=3752</guid>
		<description><![CDATA[OpenBook has a new discussion list and you are invited to join. The list will be used to provide all future announcements about OpenBook releases. It can be used by members to ask questions, share template snippets, and discuss future development of OpenBook. I look forward to talking with you there. 
]]></description>
			<content:encoded><![CDATA[<p>OpenBook has a new discussion list and you are invited to <a href="http://groups.google.com/group/openbook4wordpress">join</a>. The list will be used to provide all future announcements about OpenBook releases. It can be used by members to ask questions, share template snippets, and discuss future development of OpenBook. I look forward to talking with you there. </p>
]]></content:encoded>
			<wfw:commentRss>http://johnmiedema.ca/2009/09/14/join-the-openbook-discussion-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenBook for Libraries</title>
		<link>http://johnmiedema.ca/2009/09/07/openbook-for-libraries/</link>
		<comments>http://johnmiedema.ca/2009/09/07/openbook-for-libraries/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 18:39:13 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[OpenBook WordPress Plugin]]></category>
		<category><![CDATA[planetcode4lib]]></category>

		<guid isPermaLink="false">http://johnmiedema.ca/?p=3701</guid>
		<description><![CDATA[Librarians use OpenBook to promote books on their library websites or related blogs. With the release of OpenBook 2, you can customize it so that instances of OpenBook link to your library records.
OpenURL Resolver. Many libraries have an OpenURL resolver that websites can use to link to the library&#8217;s digital resources, including its catalogue records. The resolver works the way the library has designed it. It may take the patron directly to the catalogue record for the book, or it may provide useful links for finding the book in your ...]]></description>
			<content:encoded><![CDATA[<p>Librarians use OpenBook to promote books on their library websites or related blogs. With the release of OpenBook 2, you can customize it so that instances of OpenBook link to your library records.</p>
<p><strong>OpenURL Resolver.</strong> Many libraries have an OpenURL resolver that websites can use to link to the library&#8217;s digital resources, including its catalogue records. The resolver works the way the library has designed it. It may take the patron directly to the catalogue record for the book, or it may provide useful links for finding the book in your library. In the OpenBook Settings panel, you can configure an OpenURL resolver for a library. You can obtain the resolver URL from the library&#8217;s system administrator or from the WorldCat registry.</p>
<p><strong>Text Phrase for the Link</strong>. If you have configured an OpenURL resolver, you can add [OB_LINK_FINDINLIBRARY] to an OpenBook template. Once added, OpenBook will display a link to the OpenURL resolver, using this phrase for the text link. E.g., &#8220;Find in the London Public Library&#8221;.</p>
<p><strong>Image Source for the Link.</strong> If you have configured an OpenURL resolver, you can add [OB_IMAGE_FINDINLIBRARY] to an OpenBook template. Once added, OpenBook will display a link to the OpenURL resolver, using this image source for the link. E.g., your library&#8217;s logo image.</p>
<p><strong>WorldCat Link</strong>. The default template for OpenBook displays a link to WorldCat for a book&#8217;s ISBN. If an ISBN is not available, OpenBook uses the title and author to try identify the work. The WorldCat link helps users find a book in a library.</p>
<p>If your library does not have an OpenURL resolver, see this <a href="http://code.google.com/p/openbook4wordpress/wiki/simpleopenurlresolver">article</a> on creating one in six lines of code. More information about OpenBook can be found <a href="http://code.google.com/p/openbook4wordpress/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://johnmiedema.ca/2009/09/07/openbook-for-libraries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenBook 2: Design Your Own Display Using Templates</title>
		<link>http://johnmiedema.ca/2009/09/01/openbook-2-design-your-own-display-using-templates/</link>
		<comments>http://johnmiedema.ca/2009/09/01/openbook-2-design-your-own-display-using-templates/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 01:35:43 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[OpenBook WordPress Plugin]]></category>
		<category><![CDATA[planetcode4lib]]></category>

		<guid isPermaLink="false">http://johnmiedema.ca/?p=3674</guid>
		<description><![CDATA[OpenBook 2 gives you complete control over the book data display. Once you download and install OpenBook in WordPress, go to the Settings panel for OpenBook. Three templates are provided with default display values, as shown in the following figure.

Maybe it looks a little confusing at first, but the templates just contain three things:

HTML. Put whatever HTML you want in the template: style tags, images, etc. If you know CSS, you can put class tags here and control the styling through your WordPress stylesheet.
Text. Place whatever text you like in ...]]></description>
			<content:encoded><![CDATA[<p>OpenBook 2 gives you complete control over the book data display. Once you download and install OpenBook in WordPress, go to the Settings panel for OpenBook. Three templates are provided with default display values, as shown in the following figure.</p>
<p><a href="http://johnmiedema.ca/wordpress/wp-content/uploads/templates.png"><img src="http://johnmiedema.ca/wordpress/wp-content/uploads/templates-300x158.png" alt="templates" title="templates" width="300" height="158" class="alignnone size-medium wp-image-3675" /></a></p>
<p>Maybe it looks a little confusing at first, but the templates just contain three things:</p>
<ul>
<li><strong>HTML.</strong> Put whatever HTML you want in the template: style tags, images, etc. If you know CSS, you can put class tags here and control the styling through your WordPress stylesheet.</li>
<li><strong>Text.</strong> Place whatever text you like in the template.</li>
<li><strong>OpenBook Display Elements.</strong> These are the elements in square brackets, prefixed with OL_ or OB_. These elements make life easy for you by automatically inserting data from Open Library or formatted elements prepared by OpenBook.</li>
</ul>
<p>You can change and rearrange all the elements in any template. You can also create new items. For example, suppose your favourite book website is <a href="http://www.goodreads.com/">GoodReads</a>. The default template for OpenBook does not have a link to GoodReads, but you can easily make one.</p>
<p><strong>Step 1.</strong> Goodreads does not seem to have an API but it has a search URL that will do. Create the HTML for a search link. It requires a link URL plus text for the link. E.g.,
<pre>&lt;a href="http://www.goodreads.com/search/search?search_type=books&#038;search[query]=9780980200447">GoodReads&lt;/a>
</pre>
<p><strong>Step 2.</strong> The HTML for the search link currently contains a hard-coded ISBN: &#8220;9780980200447&#8243;. You will want to replace that data with an Open Library display element so that it automatically becomes the ISBN for any instance of OpenBook, without having to enter it every time. Your HTML from step 1 becomes:
<pre>&lt;a href="http://www.goodreads.com/search/search?search_type=books&#038;search[query]=[OL_ISBN]">GoodReads&lt;/a>
</pre>
<p><strong>Step 3.</strong> Insert the HTML anywhere you like in a template. At the time of this post, I put the link just after the LibraryThing link in my post. See the link in any of my book reviews, e.g., <a href="http://johnmiedema.ca/2009/08/09/the-man-who-forgot-how-to-read-by-howard-engel-book-review/">The Man Who Forgot How to Read</a>.</p>
<p>For more information on customizing your templates, please see the help file that came with your plugin, or see the new OpenBook <a href="http://code.google.com/p/openbook4wordpress/w/list">support wiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://johnmiedema.ca/2009/09/01/openbook-2-design-your-own-display-using-templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenBook 2 Released: Templates, OpenURL</title>
		<link>http://johnmiedema.ca/2009/08/11/openbook-2-released-templates-openurl/</link>
		<comments>http://johnmiedema.ca/2009/08/11/openbook-2-released-templates-openurl/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 03:25:18 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[OpenBook WordPress Plugin]]></category>
		<category><![CDATA[planetcode4lib]]></category>

		<guid isPermaLink="false">http://johnmiedema.ca/?p=3650</guid>
		<description><![CDATA[OpenBook 2 has been released to the WordPress server. You can download it now. Existing users will be notified to update by their WordPress plugin manager. The big new features are templates for complete control over content and styling of the display, and the ability to configure an OpenURL resolver for a library. I will be making several posts about this soon. In the meantime, you can find more information at the new OpenBook support wiki. Please report any issues at the support site, or email me at openbook@johnmiedema.ca. Thanks!
]]></description>
			<content:encoded><![CDATA[<p>OpenBook 2 has been released to the WordPress server. You can <a href="http://wordpress.org/extend/plugins/openbook-book-data/">download</a> it now. Existing users will be notified to update by their WordPress plugin manager. The big new features are templates for complete control over content and styling of the display, and the ability to configure an OpenURL resolver for a library. I will be making several posts about this soon. In the meantime, you can find more information at the new OpenBook <a href="http://code.google.com/p/openbook4wordpress/w/list">support wiki</a>. Please <a href="http://code.google.com/p/openbook4wordpress/issues/list">report any issues</a> at the support site, or email me at <a href="mailto:openbook@johnmiedema.ca">openbook@johnmiedema.ca</a>. Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://johnmiedema.ca/2009/08/11/openbook-2-released-templates-openurl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Building OpenBook 2.0]]></series:name>
	</item>
		<item>
		<title>An OpenURL Resolver for a Public Library in 6 Lines of Code</title>
		<link>http://johnmiedema.ca/2009/08/05/an-openurl-resolver-for-a-public-library-in-6-lines-of-code/</link>
		<comments>http://johnmiedema.ca/2009/08/05/an-openurl-resolver-for-a-public-library-in-6-lines-of-code/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 02:40:21 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[OpenBook WordPress Plugin]]></category>
		<category><![CDATA[planetcode4lib]]></category>

		<guid isPermaLink="false">http://johnmiedema.ca/?p=3610</guid>
		<description><![CDATA[Librarians use blogs and other social software tools to promote their collections. Where it is possible, librarians seek to link web pages to their catalogue records so that patrons can check availability and check out items. Unfortunately, the average library catalogue makes it difficult to achieve this kind of linking.
OpenURL is a technology for linking web users to library catalogue resources. It was first developed by Herbert van de Sompel and Patrick Hochstenbach as a method to provide links from citations to a library’s electronic journal articles. It has since ...]]></description>
			<content:encoded><![CDATA[<p>Librarians use blogs and other social software tools to promote their collections. Where it is possible, librarians seek to link web pages to their catalogue records so that patrons can check availability and check out items. Unfortunately, the average library catalogue makes it difficult to achieve this kind of linking.</p>
<p>OpenURL is a technology for linking web users to library catalogue resources. It was first developed by Herbert van de Sompel and Patrick Hochstenbach as a method to provide links from citations to a library’s electronic journal articles. It has since been generalized for other applications and published as the standard, ANSI/NISO Z39.88.</p>
<p>Many academic libraries have adopted OpenURL, but few public libraries are exploring its possibilities. Those few public libraries that have implemented OpenURL are using it for electronic articles, not books or other items. This lack of exploration is likely due to unfamiliarity with OpenURL or concerns that the technology is too complex and costly. While it is possible to purchase OpenURL products, and worthwhile to research open source options, this article shows how to &#8216;roll your own&#8217; simple OpenURL resolver for a public library at no cost. It is a good place to start.</p>
<p><strong>COinS, OpenURL Links, OpenURL Resolver</strong></p>
<p>Three things are required for implementing OpenURL: a ContextObject with metadata (COinS), an OpenURL link, and an OpenURL resolver. COinS is a standard for embedding bibliographic metadata in a hidden HTML span element. It is a bit of invisible HTML containing data such as ISBN, title, author, etc. An OpenURL link is a visible hyperlink containing the COinS and a pointer to an OpenURL resolver. The resolver is a server page with script that reads the COinS data and searches for the work in the library catalogue.</p>
<p>This article describes how to build the resolver, but you can build COinS by using the <a href="http://generator.ocoins.info/">OCLC online generator</a> or by following the rules laid out at <a href="http://ocoins.info/">http://ocoins.info/</a>. Instructions are also <a href="http://www.ocoins.info/latent.html">provided</a> for using COinS with OpenURL links. See the Resources section at the end of this article for more information.</p>
<p><strong>Building an OpenURL 1.0 Resolver</strong></p>
<p>The OpenURL resolver shown below required only 6 lines of PHP code. Resolving a request for ISBNs alone could be implemented in 5 lines of code, but I wanted an extra line to resolve requests by title and author when an ISBN was not available. Most resolvers are longer than 6 lines because they have more functionality. I just wanted to show that resolvers are not complicated things.</p>
<p>There are other nice examples of &#8216;homegrown&#8217; resolvers on the web, but the ones I found are for the older OpenURL version 0.1 (see Resources). The code in this article may be the first example of a simple resolver for OpenURL version 1.0 (if not, please leave a comment).</p>
<p>The target catalogue is at London Public Library (LPL) where I am a patron. There are thousands of different catalogue designs, but many follow this general pattern. Even where catalogues vary in design, the OpenURL resolver only has to be built once to fit its library&#8217;s particular pattern.</p>
<p><code>1.  ob_start();</code></p>
<p><code>2.  $qs = str_replace('rft.', 'rft_', $_SERVER['QUERY_STRING'] );</code></p>
<p><code>3.  parse_str($qs);</code></p>
<p><code>4.  if ($rft_isbn != '') $url = 'http://catalogue.londonpubliclibrary.ca/search/?searchtype=i&#038;searcharg=' . $rft_isbn . '&#038;searchscope=20&#038;SORT=D';</code></p>
<p><code>5.  else $url = 'http://catalogue.londonpubliclibrary.ca/search/X?SEARCH=t:(' . $rft_btitle . ')+and+a:(' . $rft_au . ')&#038;SORT=D';</code></p>
<p><code>6.  header("Location: $url");</code></p>
<p>Line 1. Some resolvers provide a list of options to the user, especially if a resource cannot be found. For this simple resolver, the user is transferred to a search page for the item. If the resource is not found, the user can modify the search page to look again. This line of code uses a PHP function to buffer the display until the search page is displayed. </p>
<p>Line 2. The resolver extracts the bibliographic data from the COinS elements in the query string of the OpenURL link. A simple replacement is performed to aid extraction. </p>
<p>Line 3. The PHP &#8216;parse_str&#8217; function is a tidy way of parsing the querystring into variables. The ISBN, title, and author are extracted as $rft_isbn, $rft_btitle and $rft_au. Additional data is available, including the OpenURL version. The code could be branched at this point to also handle the older version 0.1.</p>
<p>Lines 4-5. If an ISBN is available, a url is constructed for searching the London Public Library by ISBN, otherwise a url is constructed for a title-author search. Either URL has standard appendages, e.g., SORT=D for sorting results in descending order. This format was scooped from the address bar after performing a manual search at the library&#8217;s website.</p>
<p>Line 6. The user is transferred to the search page defined by the url.</p>
<p><strong>Using the Resolver with OpenBook WordPress Plugin</strong></p>
<p>Once a library has an OpenURL resolver, a librarian may still find it daunting to create COinS and OpenURL links. Many libraries use WordPress in their social software toolkit. If so, they can use version 2 of the <a href="http://wordpress.org/extend/plugins/openbook-book-data/">OpenBook WordPress plugin</a> to automate the generation of the OpenURL components. A librarian inserts an OpenBook &#8216;shortcode&#8217; with an ISBN or other book number in a WordPress post, page or widget. The plugin formats bibliographic data from Open Library into a custom text or image link. The plugin formats the link with COinS data and points it to a configured OpenURL resolver. </p>
<p>OpenBook version 2 will have a general release in late August 2009. It is currently (early August 2009) operating on this website (<a href="http://johnmiedema.ca/">johnmiedema.ca</a>), and is configured (for now) to point to the OpenURL resolver built in the previous section. The following is the display generated by an OpenBook shortcode. Notice the &#8216;Find in the London Public Library&#8217; link and the LPL image; both are OpenURL links that resolve to the library&#8217;s search results. </p>
<div style="float:left;padding-right:10px;padding-bottom:10px;"><a href='http://openlibrary.org/b/OL7441726M' ><img src='http://covers.openlibrary.org/b/olid/OL7441726M-M.jpg' alt='Conceit' title='View this title in Open Library' /></a></div><div style="font-size:18px;font-weight:bold;"><a href='http://openlibrary.org/b/OL7441726M' title='View this title in Open Library' >Conceit</a></div><div style="font-size:14px;"><a href='http://openlibrary.org/authors/OL1970524A' title='View this author in Open Library' >Mary Novik</a>; Doubleday Canada 2007</div><div style="font-size:10px;"><a href="http://worldcat.org/isbn/9780385662055" title="Find in a library using WorldCat">WorldCat</a>&#8226;<a href="http://librarything.com/isbn/9780385662055" title="Connect with other readers at LibraryThing">LibraryThing</a>&#8226;<a href="http://books.google.com/books?as_isbn=9780385662055" title="Search for this title in Google Books">Google Books</a>&#8226;<a href="http://www.bookfinder.com/search/?st=xl&ac=qr&isbn=9780385662055" title="Search for the best price">BookFinder</a></div><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info%3Asid%2Fjohnmiedema.ca%3AOpenBook&amp;rft.genre=book&amp;rft.btitle=Conceit&amp;rft.isbn=9780385662055&amp;rft.au=Mary+Novik&amp;rft.pub=Doubleday+Canada&amp;rft.date=August+28%2C+2007&amp;rft.tpages=416"></span><p>
<p>Here are links to other examples of OpenBook posts with shortcodes that use the London Public Library OpenURL resolver: <a href="/2008/10/30/safe-haven-by-larry-gaudet-book-review/">Safe Haven</a>, <a href="/2008/09/01/late-nights-on-air-by-elizabeth-hay-book-review/">Late Nights on Air</a>.</p>
<p>Of course, a library does not have to use WordPress or OpenBook to make these links. This manual link to <a href="http://johnmiedema.ca/openurlresolvers/londonpubliclibrary.php?url_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=The+Catcher+In+The+Rye&amp;rft.au=J.D.+Salinger&amp;rft.pub=Back+Bay+Books&amp;rft.date=January+30%2C+2001&amp;rft.tpages=288">Catcher in the Rye</a> has no ISBN and demonstrates resolution through the title-author search. Creating manual links in this way is possible, but some kind of auto-generation like the OpenBook method is more practical. </p>
<p><strong>Conclusion</strong></p>
<p>Six lines of code makes for a very simple OpenURL resolver, but even this simple resolver is a step ahead of basic HTML links that might otherwise be used. The resolver provides the additional functionality of a title-author search option when an ISBN is not available, and additional search options can be added. The resolver also provides a single point of access for easily managing changes to the search interface and for logging. It is hoped that this demonstration encourages people in public libraries to experiment with OpenURL technology.</p>
<p><strong>Resources</strong></p>
<p>Dahl, Mark (February 1, 2004). Building an OpenURL resolver in your own workshop; the simple nature of the OpenURL standard compelled me to take a whack at building an OpenURL resolver on my own. <em>Computers in Libraries</em>.  Article on building an OpenURL 0.1 resolver available through a library or free subscription. See <a href="http://www.accessmylibrary.com/coms2/summary_0286-20361946_ITM">http://www.accessmylibrary.com/coms2/summary_0286-20361946_ITM</a>.</p>
<p>Hellman, Eric (2009). OpenURL COinS: A Convention to Embed Bibliographic Metadata in HTML. <a href="http://ocoins.info/">http://ocoins.info/</a>.</p>
<p>Miedema, John (2009). OpenBook WordPress Plugin: Linking to Library Records with OpenURL. <em>Information Standards Quarterly</em>, 21(2), p. 13-16. You can download the PDF at <a href="http://johnmiedema.ca/downloads/openbookniso.pdf">http://johnmiedema.ca/downloads/openbookniso.pdf</a>.</p>
<p>OCLC (2008). COinS Generator. <a href="http://generator.ocoins.info/">http://generator.ocoins.info/</a>.</p>
<p>Pope Robbins, Laura (2006). Creating an OpenURL resolver. <em>OCLC Systems &#038; Services, 22</em>(2), pp. 115-121. Implementation of a OpenURL 0.1 resolver at Dowling College. <a href="http://www.emeraldinsight.com/Insight/ViewContentServlet?Filename=Published/EmeraldFullTextArticle/Articles/1640220208.html">http://www.emeraldinsight.com/Insight/ViewContentServlet?Filename=Published/EmeraldFullTextArticle/Articles/1640220208.html</a>.</p>
<p>Powell, Andy (June 22, 2001). OpenResolver: a Simple OpenURL Resolver. <em>Ariadne, 28</em>. <a href="http://www.ariadne.ac.uk/issue28/resolver/">http://www.ariadne.ac.uk/issue28/resolver/</a>.</p>
<p>Scott, Dan (2009). SFX target parser for Evergreen and some thoughts about searching identifiers. <em>Coffee|Code : Dan Scott</em>. <a href="http://coffeecode.net/archives/194-guid.html">http://coffeecode.net/archives/194-guid.html</a>.</p>
<p>Wikipedia (2009). OpenURL. <a href="http://en.wikipedia.org/wiki/OpenURL">http://en.wikipedia.org/wiki/OpenURL</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://johnmiedema.ca/2009/08/05/an-openurl-resolver-for-a-public-library-in-6-lines-of-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenBook 2.1: Post-Build Feature List</title>
		<link>http://johnmiedema.ca/2009/07/29/openbook-21-post-build-feature-list/</link>
		<comments>http://johnmiedema.ca/2009/07/29/openbook-21-post-build-feature-list/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 03:50:23 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[OpenBook WordPress Plugin]]></category>
		<category><![CDATA[planetcode4lib]]></category>

		<guid isPermaLink="false">http://johnmiedema.ca/?p=3600</guid>
		<description><![CDATA[Many thanks to the 15 beta-testers who put OpenBook through its paces. Particular thanks to Anand, Christian, Dave, Elizabeth, Jay, Mattijs, Milo, Tom, and Victoria. Corrections were made for activation problems and XHTML compliance. Enhancements include increased control over template elements, and a new image option for the OpenURL link. The plugin has been tested up WordPress 2.9 (!) and has future compatibility with upcoming PHP changes. Other suggestions have been earmarked for future releases.
OpenBook 2.1 is nearly ready for general release. Here is a post-build feature list, evaluating the ...]]></description>
			<content:encoded><![CDATA[<p>Many thanks to the 15 beta-testers who put OpenBook through its paces. Particular thanks to Anand, Christian, Dave, Elizabeth, Jay, Mattijs, Milo, Tom, and Victoria. Corrections were made for activation problems and XHTML compliance. Enhancements include increased control over template elements, and a new image option for the OpenURL link. The plugin has been tested up WordPress 2.9 (!) and has future compatibility with upcoming PHP changes. Other suggestions have been earmarked for future releases.</p>
<p>OpenBook 2.1 is nearly ready for general release. Here is a post-build feature list, evaluating the implementation of the <a href="/2009/02/21/upcoming-openbook-features/">planned features</a>.</p>
<p>Main features:</p>
<table border="1">
<tr>
<td>Feature</td>
<td>Implemented?</td>
<td>Comment</td>
</tr>
<tr>
<td colspan="3"><strong>Main features</strong></td>
</tr>
<tr>
<td>WordPress administrative panels for setting all options</td>
<td>Yes</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Styling moved to a separate stylesheet so people with CSS skills can modify the look</td>
<td>Yes</td>
<td>Styling can be managed through templates or the WordPress stylesheet</td>
</tr>
<tr>
<td>Select and order the display elements</td>
<td>Yes</td>
<td>User has complete control through templates</td>
</tr>
<tr>
<td>Use in widgets</td>
<td>Yes</td>
<td>Turned out to be a trivial change</td>
</tr>
<tr>
<td>OpenURL resolver to point to a library&#8217;s records</td>
<td>Yes</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>An indicator if the book is available to read on-line at Open Library</td>
<td>Yes</td>
<td>A &#8216;Read Online&#8217; link if applicable</td>
</tr>
<tr>
<td>Additional COinS data</td>
<td>Yes</td>
<td>Also used with OpenURL</td>
</tr>
<tr>
<td>Configure proxy settings for users behind firewalls</td>
<td>Yes</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3"><strong>Technical enhancements</strong></td>
</tr>
<tr>
<td>More efficient display when posting several instances of OpenBook, perhaps through a single batch call or a callback method</td>
<td>No</td>
<td>Still thinking about the design for this. A high priority for the next release.</td>
</tr>
<tr>
<td>XHTML compliance</td>
<td>Not 100%</td>
<td>The default templates use inline styling which is an XHTML no-no. Users can remove it if they like.</td>
</tr>
<tr>
<td>Better detection of requirements during plugin activation, including cURL</td>
<td>Yes</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Separate WordPress and PHP code to allow for easier reuse in other platforms</td>
<td>Yes</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Include the GNU GPL license in the distribution</td>
<td>Yes</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3"><strong>Features under consideration</strong></td>
</tr>
<tr>
<td>Three display “modes”: standard, small, and in-line</td>
<td>Yes</td>
<td>Three templates can be used in many different ways</td>
</tr>
<tr>
<td>Select books by other numbers, e.g., LC</td>
<td>No</td>
<td>Didn&#8217;t seem like a priority</td>
</tr>
<tr>
<td>WordPress toolbar button for easy insert of OpenBook shortcode</td>
<td>No</td>
<td>Next time</td>
</tr>
<tr>
<td>Separate author from other contributors. Ability to provide links for each.</td>
<td>Yes</td>
<td>No links for contributors</td>
</tr>
<tr>
<td>Link to LibraryThing for social data</td>
<td>Yes</td>
<td>A well thought out set of links</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://johnmiedema.ca/2009/07/29/openbook-21-post-build-feature-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Building OpenBook 2.0]]></series:name>
	</item>
	</channel>
</rss>
