Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0
Wiki Markup
{div:class=noprint|style=float:right}
{panel:title=On this page:}{toc}{panel}{div}

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.
Warning

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.

Panel
title
borderStylesolid

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:

Code Block
languagehtml/xml
 

h2. New and Changed Features

h3. 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.

{warning}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.{warning}

{panel:title=|borderStyle=solid}

h4. 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.
{panel}

h4. Updating GSearch and Solr

1. Locate and edit {color:#222222}{*}demoFoxmlToSolr.xslt{*}{color} {color:#222222}(usually located in {color}{color:#222222}*/usr/local/fedora/tomcat/*{color}{color:#222222}{*}webapps/fedoragsearch/WEB-INF/*{color}{color:#222222}{*}classes/config/index/gsearch\_*{color}{color:#222222}{*}solr/*{color}{color:#222222}){color}

{color:#222222}2. Add the following lines to index the RELS-EXT Datastream:{color}


{code:language=html/xml}<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>{code}



3.

...

Next,

...

add

...

the

...

following

...

lines

...

to

...

index

...

the

...

MODS

...

from

...

parent

...

books:

{:=
Code Block
language
html/xml
}<!-- 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 ***********************************************************-->{code}

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

{color:#222222}xmlns:rdf={color}
Note

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#"

{color:#222222}


xmlns:rdfs=

{color}"

"http://www.w3.org/2000/01/rdf-schema#"

{color:#222222}


xmlns:rel=

{color}

"info:fedora/fedora-system:def/relations-external#"

{color:#222222}


xmlns:mods=

{color}

"http://www.loc.gov/mods/v3"

{color:#222222}


xmlns:islandora-exts="xalan://

{color}{color:#222222}

ca.upei.roblib.

{color}{color:#222222}DataStreamForXSLT"{color} {color:#222222}

DataStreamForXSLT"
xmlns:fedora-model=

{color}

"info:fedora/fedora-system:def/model#"

{color:#222222}


xmlns:fedora=

{color}

"info:fedora/fedora-system:def/relations-external#"

{note}

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:

{:=
Code Block
language
html/xml
}<field name="OCR.OCR" type="text" indexed="true" stored="true" multiValued="true"/>{code}

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:

...

Jira Issues
columnstype,key,summary,priority
anonymoustrue
urlhttps://jira.duraspace.org/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=project+%3D+ISLANDORA+AND+fixVersion+%3D+10972+AND+component+%3D+%22Solr%2FSearch+6.x%22+AND+status+%3D+Closed+ORDER+BY+priority+DESC&tempMax=1000

...

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.

Note

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

...

...

...

...

2.0

...

...

...

...

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

...

...

1.0

...

Link

PHP Lib

6.x-12.2.0

Link

Tabs

6.x-12.2.0

...

Other Files

Component

Version

Documentation

Drupal Filter

6.x-12.

...

1.0

...

Improvements

Jira Issues
columnstype,key,summary,priority
anonymoustrue
urlhttps://jira.duraspace.org/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=project+%3D+Islandora+AND+issuetype+%3D+Improvement+AND+fixVersion+%3D+%226.x-12.2.0%22+ORDER+BY+priority+DESC%2C+summary+ASC%2C+key+DESC&tempMax=1000

...

Bug Fixes

Jira Issues
columnstype,key,summary,priority

...

anonymous

...

true
urlhttps://jira.duraspace.org/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=project+%3D+Islandora+AND+issuetype+%3D+Bug+AND+fixVersion+%3D+%226.x-12.2.0%22+ORDER+BY+priority+DESC%2C+summary+ASC%2C+key+DESC&tempMax=1000

...

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.