This documentation refers to an earlier version of Islandora. https://wiki.duraspace.org/display/ISLANDORA/Start is current.

Skip to end of metadata
Go to start of metadata
On this page:

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:

  • Improved Uploader: The new uploader allows you to add multiple ZIP or TIFF files to an upload queue and then ingest all the book pages in the upload queue. You can also append or insert pages in the same way after the initial pages have been uploaded and ingested.
  • OCR Searching and Highlighting Within the Book: A search box in the IA viewer allows you to search for terms within a book, and the terms will be highlighted in the viewer using hOCR.
  • Page-Level Metadata: You can associate a metadata form with the pageCModel, allowing you to create metadata for each page in a book.

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:

T Key Summary P
Loading...
Refresh

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:

  • It requires a patch to ImageCache External. A patched version can be found here . If you find the feature useful please upvote our ImageCache External patch here
  • Because ImageCache connects as an anonymous user, in order to see it in action the 'anonymous' role must have 'Access Fedora Collections' permission. Otherwise, it falls back to the default display. 

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

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

T Key Summary P
Loading...
Refresh

Bug Fixes

T Key Summary P
Loading...
Refresh

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.

3 Comments

  1. Typo correction inquiry:

    Shouldn't the word "not" in the following sentence be changed to "now"?

    "The default list view will not return snippets if a suitable field is selected."

    1. Yes, that was indeed a typo. Thanks!

  2. I think a link to islandora_oai module should be included on this page, as well as a link to the islandora oai doc http://help.islandora.ca/islandora-oai should be included in the downloads section.