Islandora 12.2.0 was released on Thursday, June 21, 2012. 

New and Changed Features

Book Solution Pack

The Book Solution Pack has undergone a major update. It now includes both the Islandora Image Viewer and the Internet Archive Book Viewer, and you can choose which viewer you'd like to use simply by switching between the two available content models. Other major improvements include:

In order to use the new Book Solution Pack you must update any legacy book objects in your repository using the Migrate Books module. You must also update your GSearch XSLT and Solr schema in order to use the new search features.

How to Use the Migrate Books Module

The Migrate Books module has been packaged with this release. You can only use this module as the Admin user (user 1). Once it has been installed and enabled a menu link will appear in your Navigation menu: Add new Islandora RDF relationships to existing books. Clicking this link will rewrite the RDF relationships for all existing books in your repository to include the necessary relationships for the new Book Solution Pack.

Note: This process is destructive (i.e. it will overwrite existing RDF Datastreams), so any customizations will be lost. In most cases there will not be any customizations, however. This process can be potentially time consuming, especially for large book collections.

Updating GSearch and Solr

1. Locate and edit  demoFoxmlToSolr.xslt (usually located in  /usr/local/fedora/tomcat/ webapps/fedoragsearch/WEB-INF/ classes/config/index/gsearch_ solr/ )

2. Add the following lines to index the RELS-EXT Datastream:

<xsl:for-each select="foxml:datastream[@ID='RELS-EXT']/foxml:datastreamVersion[last()]/foxml:xmlContent//rdf:Description/*">
  <field>
    <xsl:attribute name="name">
      <xsl:value-of select="concat('rels.', local-name())"/>
    </xsl:attribute>
    <xsl:choose>
      <xsl:when test="@rdf:resource"><!-- Deal with URIs/resources -->
        <xsl:value-of select="@rdf:resource"/>
      </xsl:when>
      <xsl:otherwise><!-- otherwise, assume it's a literal -->
        <xsl:value-of select="text()"/>
      </xsl:otherwise>
    </xsl:choose>
  </field>
</xsl:for-each>

3. Next, add the following lines to index the MODS from parent books:

<!-- get the mods of the parent book if this object is a pageCmodel object-->

    <xsl:variable name="thisCurrentCModel">
        <xsl:value-of select="foxml:datastream[@ID='RELS-EXT']/foxml:datastreamVersion[last()]/foxml:xmlContent//rdf:Description/fedora-model:hasModel/@rdf:resource"/>
    </xsl:variable>
    <xsl:if test="$thisCurrentCModel = 'info:fedora/islandora:pageCModel'">
        <!-- get the parent pid-->
        <xsl:variable name="Book_Pid">
            <xsl:value-of select="foxml:datastream[@ID='RELS-EXT']/foxml:datastreamVersion[last()]/foxml:xmlContent//rdf:Description/rel:isMemberOf/@rdf:resource"/>
        </xsl:variable>
        <field>
            <xsl:attribute name="name">PARENT_pid</xsl:attribute>
            <xsl:value-of select="substring($Book_Pid,13)"/>
        </field>
        <xsl:variable name="PARENT_MODS"
            select="islandora-exts:getXMLDatastreamASNodeList(substring($Book_Pid,13), $REPOSITORYNAME, 'MODS', $FEDORASOAP, $FEDORAUSER, $FEDORAPASS, $TRUSTSTOREPATH, $TRUSTSTOREPASS)"/>

        <!--<xsl:variable name="PARENT_MODS" select="document(concat($PROT, '://', $LOCALFEDORAUSERNAME, ':', $LOCALFEDORAPASSWORD, '@',
            $HOST, ':', $PORT, '/fedora/objects/', substring($Book_Pid,13), '/datastreams/', 'MODS', '/content'))"/>-->
        <xsl:for-each select="$PARENT_MODS//mods:title">
            <field>
                <xsl:attribute name="name">
                    <xsl:value-of select="concat('PARENT_', local-name())"/>
                </xsl:attribute>
                <xsl:value-of select="normalize-space(text())"/>
            </field>
        </xsl:for-each>
        <xsl:for-each select="$PARENT_MODS//mods:originInfo/mods:dateIssued">
            <field>
                <xsl:attribute name="name">
                    <xsl:value-of select="concat('PARENT_', local-name())"/>
                </xsl:attribute>
                <xsl:value-of select="normalize-space(text())"/>
            </field>
        </xsl:for-each>
        <xsl:for-each select="$PARENT_MODS//mods:genre">
            <field>
                <xsl:attribute name="name">
                    <xsl:value-of select="concat('PARENT_', local-name())"/>
                </xsl:attribute>
                <xsl:value-of select="normalize-space(text())"/>
            </field>
        </xsl:for-each>
        <xsl:for-each select="$PARENT_MODS//mods:subject/mods:name/mods:namePart/*">
            <xsl:if test="text() [normalize-space(.) ]">
                <!--don't bother with empty space-->
                <field>
                    <xsl:attribute name="name">
                        <xsl:value-of select="concat('PARENT_', 'subject')"/>
                    </xsl:attribute>
                    <xsl:value-of select="normalize-space(text())"/>
                </field>
            </xsl:if>
        </xsl:for-each>
        <xsl:for-each select="$PARENT_MODS//mods:topic">
            <xsl:if test="text() [normalize-space(.) ]">
                <!--don't bother with empty space-->
                <field>
                    <xsl:attribute name="name">
                        <xsl:value-of select="concat('PARENT_', 'topic')"/>
                    </xsl:attribute>
                    <xsl:value-of select="normalize-space(text())"/>
                </field>
            </xsl:if>
        </xsl:for-each>

        <xsl:for-each select="$PARENT_MODS//mods:geographic">
            <xsl:if test="text() [normalize-space(.) ]">
                <!--don't bother with empty space-->
                <field>
                    <xsl:attribute name="name">
                        <xsl:value-of select="concat('PARENT_', 'geographic')"/>
                    </xsl:attribute>
                    <xsl:value-of select="normalize-space(text())"/>
                </field>
            </xsl:if>
        </xsl:for-each>
        <xsl:for-each select="$PARENT_MODS//mods:subject/mods:name/mods:namePart/*">
            <xsl:if test="text() [normalize-space(.) ]">
                <!--don't bother with empty space-->
                <field>
                    <xsl:attribute name="name">
                        <xsl:value-of select="concat('PARENT_', 'subject')"/>
                    </xsl:attribute>
                    <xsl:value-of select="normalize-space(text())"/>
                </field>
            </xsl:if>

        </xsl:for-each>
        <xsl:for-each select="$PARENT_MODS//mods:part/mods:detail/*">
            <xsl:variable name="TYPE">
                <xsl:value-of select="../@type"/>
            </xsl:variable>
            <field>
                <xsl:attribute name="name">
                    <xsl:value-of select="concat('PARENT_', $TYPE)"/>
                </xsl:attribute>
                <xsl:value-of select="."/>
            </field>
        </xsl:for-each>
        </xsl:if>
        <!--************************END PAGE PARENT MODS ***********************************************************-->

The following namespace declarations should be present at the top of the XSLT. If not, you will need to add them:

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rel="info:fedora/fedora-system:def/relations-external#"
xmlns:mods="http://www.loc.gov/mods/v3"
xmlns:islandora-exts="xalan:// ca.upei.roblib. DataStreamForXSLT"
xmlns:fedora-model="info:fedora/fedora-system:def/model#"
xmlns:fedora="info:fedora/fedora-system:def/relations-external#"

4. Locate and edit schema.xml (usually located in /usr/local/fedora/gsearch_solr/solr/conf/)

5. Verify that OCR is being both indexed and stored. The line should look something like this:

<field name="OCR.OCR" type="text" indexed="true" stored="true" multiValued="true"/>

6. Restart GSearch (or just restart Fedora) and reindex by going to *http://your.site:8080/fedoragsearch/rest/\* (http://your.site:8080/fedoragsearch/rest/*)

a. Click updateIndex

b. Click updateIndex fromFoxmlFiles

You should now be able to search within books.

Solr

Solr has seen many improvements in this release, including a reorganized configuration page, the introduction of date faceting, and a host of under-the-hood updates. The following JIRA tickets provide more detail on all the Solr updates in this release:

OAI Dissemination

The Islandora OAI module provides access to the OAI-PMH 2.0 protocol. You can read more about the OAI-PMH 2.0 standard here. The OAI path in Islandora is set to /oai2. From here, you can build OAI requests based on the OAI-PMH 2.0 standards.

Tabs Configuration

The 'Object Details' tab is now configurable through the 'Tabs Configuration' settings under 'Islandora Configuration'. This tab can be configured one of three ways:

  1. Hide the Tab
  2. XSLT: Apply an XSL transform to a particular metadata Datastream. 
  3. Table: Display metadata in a table. Can be configured to display DC, MODS, or any other available DSID.

ImageCache External

Islandora now supportsImageCache External to display thumbnails as an experimental feature.  This option can be enabled in the Islandora Configuration page under 'Advanced configuration options'. There are a couple things to note:

Downloads

Most modules have been updated for this release, but any that have not been updated will retain their version from the last release. They have been provided in this list, but if you already have latest version installed you need not replace it. Please follow the Drupal.org guidelines for updating modules if you are updating from a previous version of Islandora.

Be sure to follow the Drupal.org guidelines mentioned above when updating your modules. In particular, you need to completely remove and replace existing module directories, and run update.php after updating.

Modules

Component

Version

Documentation

Islandora Repository

6.x-12.2.0

Link

Batch Ingest

6.x-12.1.0

Link

Collection Manager

6.x-12.2.0

Link

Harvester

6.x-12.1.0

Link

Solr

6.x-12.2.0

Link

Audio Solution Pack

6.x-12.1.0

Link

Books Solution Pack

6.x-12.2.0

Link

Basic Image Solution Pack

6.x-12.2.0

Link

Large Image Solution Pack

6.x-12.2.0

Link

PDF Solution Pack

6.x-12.1.0

Link

Video Solution Pack

6.x-12.1.0

Link

XML Forms

6.x-12.2.0

Link

Dependencies

Component

Version

Documentation

Book Reader

6.x-12.2.0

 

Content Model Forms

6.x-12.2.0

Link

Objective Forms

6.x-12.1.0

Link

PHP Lib

6.x-12.2.0

Link

Tabs

6.x-12.2.0

Link

Other Files

Component

Version

Documentation

Drupal Filter

6.x-12.1.0

Link

Islandora Image Viewer

6.x-12.2.0

Link

Improvements

Bug Fixes

Contacts

Google Developers Group: For support, feedback, and bug reports.

Google Users Group: For user-related issues and information.

License

Islandora operates under a GNU license.