mroy
14 years ago
13 changed files with 1675 additions and 19 deletions
@ -0,0 +1,9 @@
|
||||
Islandora Fedora Repository Module |
||||
|
||||
For installation and customization instructions please see the documentation and the DuraSpace Wiki: |
||||
|
||||
https://wiki.duraspace.org/display/ISLANDORA/Islandora |
||||
|
||||
Specifically the Islandora Guide: |
||||
|
||||
https://wiki.duraspace.org/display/ISLANDORA/Islandora+Guide |
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<collection_policy xmlns="http://www.islandora.ca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="" xsi:schemaLocation="http://www.islandora.ca http://syn.lib.umanitoba.ca/collection_policy.xsd"> |
||||
<content_models> |
||||
<content_model name="Video" dsid="ISLANDORACM" namespace="islandora" pid="islandora:qtCModel"/> |
||||
</content_models> |
||||
<search_terms> |
||||
<term field="dc.title"> |
||||
dc.title</term> |
||||
<term field="dc.creator"> |
||||
dc.creator</term> |
||||
<term field="dc.description" default="true"> |
||||
dc.description</term> |
||||
<term field="dc.date"> |
||||
dc.date</term> |
||||
<term field="dc.identifier"> |
||||
dc.identifier</term> |
||||
<term field="dc.language"> |
||||
dc.language</term> |
||||
<term field="dc.publisher"> |
||||
dc.publisher</term> |
||||
<term field="dc.rights"> |
||||
dc.rights</term> |
||||
<term field="dc.subject"> |
||||
dc.subject</term> |
||||
<term field="dc.relation"> |
||||
dc.relation</term> |
||||
<term field="dcterms.temporal"> |
||||
dcterms.temporal</term> |
||||
<term field="dcterms.spatial"> |
||||
dcterms.spatial</term> |
||||
</search_terms> |
||||
<relationship> |
||||
isMemberOfCollection</relationship> |
||||
</collection_policy> |
||||
|
@ -0,0 +1,64 @@
|
||||
<xsl:stylesheet version="1.0" xmlns:s="http://www.w3.org/2001/sw/DataAccess/rf1/result" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
||||
<xsl:template match="/"> |
||||
<xsl:variable name="BASEURL"> |
||||
<xsl:value-of select="$baseUrl"/> |
||||
</xsl:variable> |
||||
<xsl:variable name="collTitle" select="/s:sparql/s:results/s:result/s:collTitle"/> |
||||
<xsl:variable name="collDesc" select="/s:sparql/s:results/s:result/s:collDesc"/> |
||||
|
||||
<center> |
||||
<font face="arial,helvetica"> |
||||
<h2> |
||||
<xsl:value-of select="$collTitle"/> |
||||
<br/> |
||||
<i> |
||||
<xsl:value-of select="$collDesc"/> |
||||
</i> |
||||
</h2> |
||||
</font> |
||||
</center> |
||||
<hr size="1"/> |
||||
<center> |
||||
<table border="0" cellpadding="5"> |
||||
<xsl:for-each select="/s:sparql/s:results/s:result"> |
||||
<xsl:variable name="pid" select="substring-after(s:member/@uri, '/')"/> |
||||
<tr> |
||||
<td> |
||||
<center> |
||||
<a> |
||||
<xsl:attribute name="href"> |
||||
<xsl:value-of select="$BASEURL"/> |
||||
<xsl:text>/fedora/repository/</xsl:text> |
||||
<xsl:value-of select="$pid"/> |
||||
</xsl:attribute> |
||||
<img height="120" width="160"> |
||||
<xsl:attribute name="src"> |
||||
<xsl:value-of select="$BASEURL"/> |
||||
<xsl:text>/fedora/repository/</xsl:text> |
||||
<xsl:value-of select="$pid"/> |
||||
<xsl:text>/THUMBNAIL</xsl:text> |
||||
</xsl:attribute> |
||||
</img> |
||||
</a> |
||||
</center> |
||||
</td> |
||||
<td> |
||||
<b> |
||||
<a> |
||||
<xsl:attribute name="href"> |
||||
<xsl:value-of select="$BASEURL"/> |
||||
<xsl:text>/fedora/repository/</xsl:text> |
||||
<xsl:value-of select="$pid"/>/-/<xsl:value-of select="s:memberTitle"/> |
||||
</xsl:attribute> |
||||
<xsl:value-of select="s:memberTitle"/> |
||||
</a> |
||||
</b> |
||||
<br/> |
||||
<xsl:value-of select="s:memberDesc"/> |
||||
</td> |
||||
</tr> |
||||
</xsl:for-each> |
||||
</table> |
||||
</center> |
||||
</xsl:template> |
||||
</xsl:stylesheet> |
@ -0,0 +1,218 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<content_model name="standard_qt"> |
||||
<mimetypes> |
||||
<type>video/quicktime</type> |
||||
</mimetypes> |
||||
<display_in_fieldset> |
||||
<datastream id="OBJ"> |
||||
<method> |
||||
<file>plugins/qt_viewer.inc</file> |
||||
<class_name>ShowQtStreamsInFieldSets</class_name> |
||||
<method_name>showQt</method_name> |
||||
</method> |
||||
</datastream> |
||||
<datastream id="QDC"> |
||||
<method> |
||||
<file>plugins/ShowStreamsInFieldSets.inc</file> |
||||
<class_name>ShowStreamsInFieldSets</class_name> |
||||
<method_name>showQdc</method_name> |
||||
</method> |
||||
</datastream> |
||||
</display_in_fieldset> |
||||
<!-- ingest rules element is required and must have a rule that applies to the mimetypes above or ingest will fail even if the rule has no methods--> |
||||
<ingest_rules> |
||||
<rule> |
||||
<applies_to> |
||||
video/quicktime |
||||
</applies_to> |
||||
<methods/> |
||||
</rule> |
||||
</ingest_rules> |
||||
<ingest_form dsid="QDC" page="2"> |
||||
<form_builder_method> |
||||
<file>plugins/QtFormBuilder.php</file> |
||||
<class_name>QtFormBuilder</class_name> |
||||
<method_name>buildQDCForm</method_name> |
||||
<form_handler>handleQDCForm</form_handler> |
||||
<!--need validation method as well--> |
||||
</form_builder_method> |
||||
<form_elements> |
||||
<element> |
||||
<label>Title/Caption/Video Name</label> |
||||
<name>dc:title</name> |
||||
<type>textfield</type> |
||||
<description>The name given to the Video</description> |
||||
<required>true</required> |
||||
</element> |
||||
<element> |
||||
<label>Creator/</label> |
||||
<name>dc:creator</name> |
||||
<type>textfield</type> |
||||
<description>An entity primarily responsible for making the content of the resource such as a person, organization or service.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Subject</label> |
||||
<name>dc:subject</name> |
||||
<type>select</type> |
||||
<description>An entity primarily responsible for making the content of the resource such as a person, organization or service.</description> |
||||
<required>false</required> |
||||
<authoritative_list> |
||||
|
||||
<item> |
||||
<field>home recording</field> |
||||
<value>home recording</value> |
||||
</item> |
||||
<item> |
||||
<field>meeting</field> |
||||
<value>meeting</value> |
||||
</item> |
||||
<item> |
||||
<field>presentation</field> |
||||
<value>presentation</value> |
||||
</item> |
||||
<item> |
||||
<field>sound</field> |
||||
<value>sound</value> |
||||
</item> |
||||
|
||||
</authoritative_list> |
||||
</element> |
||||
<element> |
||||
<label>Description of Video</label> |
||||
<name>dc:description</name> |
||||
<type>textarea</type> |
||||
<description>Examples include an abstract, table of contents, or free-text account of the content of the resource.</description> |
||||
<required>true</required> |
||||
</element> |
||||
<element> |
||||
<label>Publisher</label> |
||||
<name>dc:publisher</name> |
||||
<type>textfield</type> |
||||
<description>An entity, (including persons, organizations, or services), responsible for making the resource available.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Contributor</label> |
||||
<name>dc:contributor</name> |
||||
<type>textfield</type> |
||||
<description>An entity responsible for contributing to the content of the resource such as a person, organization or service.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Date</label> |
||||
<name>dc:date</name> |
||||
<type>textfield</type> |
||||
<description>Temporal scope of the content if known. Date format is YYYY-MM-DD (e.g. 1890,1910-10,or 2007-10-23)</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Resource Type</label> |
||||
<name>dc:type</name> |
||||
<type>select</type> |
||||
<description>Genre of the content of the resource. Examples include: home page, novel, poem, working paper, technical report, essay, dictionary.</description> |
||||
<required>false</required> |
||||
<authoritative_list> |
||||
<item> |
||||
<field>none</field> |
||||
<value>none</value> |
||||
</item> |
||||
<item> |
||||
<field>video</field> |
||||
<value>video</value> |
||||
</item> |
||||
|
||||
<item> |
||||
<field>event</field> |
||||
<value>event</value> |
||||
</item> |
||||
<item> |
||||
<field>image</field> |
||||
<value>image</value> |
||||
</item> |
||||
<item> |
||||
<field>interactive resource</field> |
||||
<value>interactive resource</value> |
||||
</item> |
||||
<item> |
||||
<field>model</field> |
||||
<value>model</value> |
||||
</item> |
||||
<item> |
||||
<field>party</field> |
||||
<value>party</value> |
||||
</item> |
||||
<item> |
||||
<field>physical object</field> |
||||
<value>physical object</value> |
||||
</item> |
||||
<item> |
||||
<field>place</field> |
||||
<value>place</value> |
||||
</item> |
||||
<item> |
||||
<field>service</field> |
||||
<value>service</value> |
||||
</item> |
||||
<item> |
||||
<field>software</field> |
||||
<value>software</value> |
||||
</item> |
||||
<item> |
||||
<field>sound</field> |
||||
<value>sound</value> |
||||
</item> |
||||
<item> |
||||
<field>text</field> |
||||
<value>text</value> |
||||
</item> |
||||
</authoritative_list> |
||||
</element> |
||||
<element> |
||||
<label>Source</label> |
||||
<name>dc:source</name> |
||||
<type>textfield</type> |
||||
<description>A reference to a resource from which the present resource is derived.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Identifier</label> |
||||
<name>dc:identifier</name> |
||||
<type>textfield</type> |
||||
<description>A unique reference to the resource; In this instance, the accession number or collection number.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Language</label> |
||||
<name>dc:language</name> |
||||
<type>select</type> |
||||
<description>The language of the intellectual content of the resource.</description> |
||||
<required>false</required> |
||||
<authoritative_list> |
||||
<item> |
||||
<field>eng</field> |
||||
<value>English</value> |
||||
</item> |
||||
<item> |
||||
<field>fre</field> |
||||
<value>French</value> |
||||
</item> |
||||
</authoritative_list> |
||||
</element> |
||||
<element> |
||||
<label>Relation</label> |
||||
<name>dc:relation</name> |
||||
<type>textfield</type> |
||||
<description>Reference to a related resource.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Rights Management</label> |
||||
<name>dc:rights</name> |
||||
<type>textarea</type> |
||||
<description>Information about intellectual property rights, copyright, and various property rights.</description> |
||||
<required>false</required> |
||||
</element> |
||||
</form_elements> |
||||
</ingest_form> |
||||
</content_model> |
@ -0,0 +1,218 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<content_model name="standard_qt"> |
||||
<mimetypes> |
||||
<type>video/quicktime</type> |
||||
</mimetypes> |
||||
<display_in_fieldset> |
||||
<datastream id="OBJ"> |
||||
<method> |
||||
<file>plugins/qt_viewer.inc</file> |
||||
<class_name>ShowQtStreamsInFieldSets</class_name> |
||||
<method_name>showQt</method_name> |
||||
</method> |
||||
</datastream> |
||||
<datastream id="QDC"> |
||||
<method> |
||||
<file>plugins/ShowStreamsInFieldSets.inc</file> |
||||
<class_name>ShowStreamsInFieldSets</class_name> |
||||
<method_name>showQdc</method_name> |
||||
</method> |
||||
</datastream> |
||||
</display_in_fieldset> |
||||
<!-- ingest rules element is required and must have a rule that applies to the mimetypes above or ingest will fail even if the rule has no methods--> |
||||
<ingest_rules> |
||||
<rule> |
||||
<applies_to> |
||||
video/quicktime |
||||
</applies_to> |
||||
<methods/> |
||||
</rule> |
||||
</ingest_rules> |
||||
<ingest_form dsid="QDC" page="2"> |
||||
<form_builder_method> |
||||
<file>plugins/QtFormBuilder.php</file> |
||||
<class_name>QtFormBuilder</class_name> |
||||
<method_name>buildQDCForm</method_name> |
||||
<form_handler>handleQDCForm</form_handler> |
||||
<!--need validation method as well--> |
||||
</form_builder_method> |
||||
<form_elements> |
||||
<element> |
||||
<label>Title/Caption/Video Name</label> |
||||
<name>dc:title</name> |
||||
<type>textfield</type> |
||||
<description>The name given to the Video</description> |
||||
<required>true</required> |
||||
</element> |
||||
<element> |
||||
<label>Creator/</label> |
||||
<name>dc:creator</name> |
||||
<type>textfield</type> |
||||
<description>An entity primarily responsible for making the content of the resource such as a person, organization or service.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Subject</label> |
||||
<name>dc:subject</name> |
||||
<type>select</type> |
||||
<description>An entity primarily responsible for making the content of the resource such as a person, organization or service.</description> |
||||
<required>false</required> |
||||
<authoritative_list> |
||||
|
||||
<item> |
||||
<field>home recording</field> |
||||
<value>home recording</value> |
||||
</item> |
||||
<item> |
||||
<field>meeting</field> |
||||
<value>meeting</value> |
||||
</item> |
||||
<item> |
||||
<field>presentation</field> |
||||
<value>presentation</value> |
||||
</item> |
||||
<item> |
||||
<field>sound</field> |
||||
<value>sound</value> |
||||
</item> |
||||
|
||||
</authoritative_list> |
||||
</element> |
||||
<element> |
||||
<label>Description of Video</label> |
||||
<name>dc:description</name> |
||||
<type>textarea</type> |
||||
<description>Examples include an abstract, table of contents, or free-text account of the content of the resource.</description> |
||||
<required>true</required> |
||||
</element> |
||||
<element> |
||||
<label>Publisher</label> |
||||
<name>dc:publisher</name> |
||||
<type>textfield</type> |
||||
<description>An entity, (including persons, organizations, or services), responsible for making the resource available.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Contributor</label> |
||||
<name>dc:contributor</name> |
||||
<type>textfield</type> |
||||
<description>An entity responsible for contributing to the content of the resource such as a person, organization or service.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Date</label> |
||||
<name>dc:date</name> |
||||
<type>textfield</type> |
||||
<description>Temporal scope of the content if known. Date format is YYYY-MM-DD (e.g. 1890,1910-10,or 2007-10-23)</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Resource Type</label> |
||||
<name>dc:type</name> |
||||
<type>select</type> |
||||
<description>Genre of the content of the resource. Examples include: home page, novel, poem, working paper, technical report, essay, dictionary.</description> |
||||
<required>false</required> |
||||
<authoritative_list> |
||||
<item> |
||||
<field>none</field> |
||||
<value>none</value> |
||||
</item> |
||||
<item> |
||||
<field>video</field> |
||||
<value>video</value> |
||||
</item> |
||||
|
||||
<item> |
||||
<field>event</field> |
||||
<value>event</value> |
||||
</item> |
||||
<item> |
||||
<field>image</field> |
||||
<value>image</value> |
||||
</item> |
||||
<item> |
||||
<field>interactive resource</field> |
||||
<value>interactive resource</value> |
||||
</item> |
||||
<item> |
||||
<field>model</field> |
||||
<value>model</value> |
||||
</item> |
||||
<item> |
||||
<field>party</field> |
||||
<value>party</value> |
||||
</item> |
||||
<item> |
||||
<field>physical object</field> |
||||
<value>physical object</value> |
||||
</item> |
||||
<item> |
||||
<field>place</field> |
||||
<value>place</value> |
||||
</item> |
||||
<item> |
||||
<field>service</field> |
||||
<value>service</value> |
||||
</item> |
||||
<item> |
||||
<field>software</field> |
||||
<value>software</value> |
||||
</item> |
||||
<item> |
||||
<field>sound</field> |
||||
<value>sound</value> |
||||
</item> |
||||
<item> |
||||
<field>text</field> |
||||
<value>text</value> |
||||
</item> |
||||
</authoritative_list> |
||||
</element> |
||||
<element> |
||||
<label>Source</label> |
||||
<name>dc:source</name> |
||||
<type>textfield</type> |
||||
<description>A reference to a resource from which the present resource is derived.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Identifier</label> |
||||
<name>dc:identifier</name> |
||||
<type>textfield</type> |
||||
<description>A unique reference to the resource; In this instance, the accession number or collection number.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Language</label> |
||||
<name>dc:language</name> |
||||
<type>select</type> |
||||
<description>The language of the intellectual content of the resource.</description> |
||||
<required>false</required> |
||||
<authoritative_list> |
||||
<item> |
||||
<field>eng</field> |
||||
<value>English</value> |
||||
</item> |
||||
<item> |
||||
<field>fre</field> |
||||
<value>French</value> |
||||
</item> |
||||
</authoritative_list> |
||||
</element> |
||||
<element> |
||||
<label>Relation</label> |
||||
<name>dc:relation</name> |
||||
<type>textfield</type> |
||||
<description>Reference to a related resource.</description> |
||||
<required>false</required> |
||||
</element> |
||||
<element> |
||||
<label>Rights Management</label> |
||||
<name>dc:rights</name> |
||||
<type>textarea</type> |
||||
<description>Information about intellectual property rights, copyright, and various property rights.</description> |
||||
<required>false</required> |
||||
</element> |
||||
</form_elements> |
||||
</ingest_form> |
||||
</content_model> |
@ -0,0 +1,137 @@
|
||||
|
||||
<content_model xmlns="http://www.islandora.ca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="standard_qt" xsi:schemaLocation="http://www.islandora.ca http://localhost/islandoracm.xsd"> |
||||
<mimetypes> |
||||
<type>video/quicktime</type> |
||||
<type>video/mp4</type> |
||||
|
||||
<type>audio/mp3</type> |
||||
<type>audio/x-aiff</type> |
||||
</mimetypes> |
||||
<ingest_rules> |
||||
<rule> |
||||
<applies_to>video/quicktime</applies_to> |
||||
<applies_to>video/mp4</applies_to> |
||||
|
||||
<applies_to>audio/mp3</applies_to> |
||||
<applies_to>audio/x-aiff</applies_to> |
||||
<ingest_methods> |
||||
<ingest_method file="plugins/Exiftool.inc" class="Exiftool" method="extractMetadata" dsid="OBJ_EXIFTOOL" modified_files_ext=""> |
||||
<parameters></parameters> |
||||
</ingest_method> |
||||
|
||||
<ingest_method class="Ffmpeg" dsid="FULL_SIZE" file="plugins/Ffmpeg.inc" method="extract_thumbnail" modified_files_ext="jpg"> |
||||
<parameters> |
||||
</parameters> |
||||
</ingest_method> |
||||
|
||||
<ingest_method class="Ffmpeg" dsid="TN" file="plugins/Ffmpeg.inc" method="extract_thumbnail" modified_files_ext="jpg"> |
||||
<parameters> |
||||
<parameter name="s">92x92</parameter> |
||||
</parameters> |
||||
</ingest_method> |
||||
</ingest_methods> |
||||
</rule> |
||||
</ingest_rules> |
||||
<datastreams> |
||||
<datastream dsid="OBJ"> |
||||
<display_method class="ShowQtStreamsInFieldSets" file="plugins/qt_viewer.inc" method="showQt" module=""></display_method> |
||||
</datastream> |
||||
<datastream dsid="PROXY"></datastream> |
||||
<datastream dsid="OBJ_EXIFTOOL"></datastream> |
||||
<datastream dsid="TN"></datastream> |
||||
<datastream dsid="FULL_SIZE"></datastream> |
||||
<datastream dsid="QDC"> |
||||
<display_method class="ShowStreamsInFieldSets" file="plugins/ShowStreamsInFieldSets.inc" method="showQdc" module=""></display_method> |
||||
</datastream> |
||||
</datastreams> |
||||
<ingest_form dsid="QDC" page="2"> |
||||
<form_builder_method class="QtFormBuilder" file="plugins/QtFormBuilder.php" handler="handleQDCForm" method="buildQDCForm" module=""></form_builder_method> |
||||
<form_elements> |
||||
<element label="Title/Caption/Media Name" name="dc:title" required="true" type="textfield"> |
||||
<description>The name given to the file</description> |
||||
</element> |
||||
<element label="Creator/" name="dc:creator" type="textfield"> |
||||
<description>An entity primarily responsible for making the |
||||
content of the resource such as a person, organization or |
||||
service.</description> |
||||
</element> |
||||
<element label="Subject" name="dc:subject" type="select"> |
||||
<description>An entity primarily responsible for making the |
||||
content of the resource such as a person, organization or |
||||
service.</description> |
||||
<authoritative_list> |
||||
<item>home recording</item> |
||||
<item>meeting</item> |
||||
<item>presentation</item> |
||||
<item>sound</item> |
||||
</authoritative_list> |
||||
</element> |
||||
<element label="Description of Media" name="dc:description" required="true" type="textarea"> |
||||
<description>Examples include an abstract, table of |
||||
contents, or free-text account of the content of the |
||||
resource.</description> |
||||
</element> |
||||
<element label="Publisher" name="dc:publisher" type="textfield"> |
||||
<description>An entity, (including persons, organizations, |
||||
or services), responsible for making the resource |
||||
available.</description> |
||||
</element> |
||||
<element label="Contributor" name="dc:contributor" type="textfield"> |
||||
<description>An entity responsible for contributing to the |
||||
content of the resource such as a person, organization or |
||||
service.</description> |
||||
</element> |
||||
<element label="Date" name="dc:date" type="textfield"> |
||||
<description>Temporal scope of the content if known. Date |
||||
format is YYYY-MM-DD (e.g. 1890,1910-10,or |
||||
2007-10-23)</description> |
||||
</element> |
||||
<element label="Resource Type" name="dc:type" type="select"> |
||||
<description>Genre of the content of the resource. Examples |
||||
include: home page, novel, poem, working paper, technical |
||||
report, essay, dictionary.</description> |
||||
<authoritative_list> |
||||
<item>none</item> |
||||
<item>video</item> |
||||
<item>event</item> |
||||
<item>image</item> |
||||
<item>interactive resource</item> |
||||
<item>model</item> |
||||
<item>party</item> |
||||
<item>physical object</item> |
||||
<item>place</item> |
||||
<item>service</item> |
||||
<item>software</item> |
||||
<item>sound</item> |
||||
<item>text</item> |
||||
</authoritative_list> |
||||
</element> |
||||
<element label="Source" name="dc:source" type="textfield"> |
||||
<description>A reference to a resource from which the |
||||
present resource is derived.</description> |
||||
</element> |
||||
<element label="Identifier" name="dc:identifier" type="textfield"> |
||||
<description>A unique reference to the resource; In this |
||||
instance, the accession number or collection |
||||
number.</description> |
||||
</element> |
||||
<element label="Language" name="dc:language" type="select"> |
||||
<description>The language of the intellectual content of |
||||
the resource.</description> |
||||
<authoritative_list> |
||||
<item field="eng">English</item> |
||||
<item field="fre">French</item> |
||||
</authoritative_list> |
||||
</element> |
||||
<element label="Relation" name="dc:relation" type="textfield"> |
||||
<description>Reference to a related resource.</description> |
||||
</element> |
||||
<element label="Rights Management" name="dc:rights" type="textarea"> |
||||
<description>Information about intellectual property |
||||
rights, copyright, and various property |
||||
rights.</description> |
||||
</element> |
||||
</form_elements> |
||||
</ingest_form> |
||||
</content_model> |
||||
|
@ -0,0 +1,163 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<foxml:digitalObject VERSION="1.1" PID="islandora:qtCModel" |
||||
xmlns:foxml="info:fedora/fedora-system:def/foxml#" |
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
xsi:schemaLocation="info:fedora/fedora-system:def/foxml# http://www.fedora.info/definitions/1/0/foxml1-1.xsd"> |
||||
<foxml:objectProperties> |
||||
<foxml:property NAME="info:fedora/fedora-system:def/model#state" VALUE="Active"/> |
||||
<foxml:property NAME="info:fedora/fedora-system:def/model#label" VALUE="Generic Content Model for Fedora Attach"/> |
||||
<foxml:property NAME="info:fedora/fedora-system:def/model#ownerId" VALUE="fedoraAdmin"/> |
||||
<foxml:property NAME="info:fedora/fedora-system:def/model#createdDate" VALUE="2010-01-26T21:29:20.416Z"/> |
||||
<foxml:property NAME="info:fedora/fedora-system:def/view#lastModifiedDate" VALUE="2010-03-11T21:01:44.921Z"/> |
||||
</foxml:objectProperties> |
||||
<foxml:datastream ID="DC" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true"> |
||||
<foxml:datastreamVersion ID="DC1.0" LABEL="Dublin Core Record for this object" CREATED="2010-01-26T21:29:20.416Z" MIMETYPE="text/xml" FORMAT_URI="http://www.openarchives.org/OAI/2.0/oai_dc/" SIZE="396"> |
||||
<foxml:xmlContent> |
||||
<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> |
||||
<dc:title>Quicktime Content Model</dc:title> |
||||
<dc:identifier>islandora:qtCModel</dc:identifier> |
||||
</oai_dc:dc> |
||||
</foxml:xmlContent> |
||||
</foxml:datastreamVersion> |
||||
</foxml:datastream> |
||||
<foxml:datastream ID="ISLANDORACM" CONTROL_GROUP="X" STATE="A" > |
||||
<foxml:datastreamVersion ID="ISLANDORACM.0" MIMETYPE="application/xml" LABEL="ISLANDORACM.0"> |
||||
<foxml:xmlContent> |
||||
<content_model xmlns="http://www.islandora.ca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="standard_qt" xsi:schemaLocation="http://www.islandora.ca http://localhost/islandoracm.xsd"> |
||||
<mimetypes> |
||||
<type>video/quicktime</type> |
||||
<type>video/mp4</type> |
||||
<type>audio/mp3</type> |
||||
<type>audio/x-aiff</type> |
||||
</mimetypes> |
||||
<ingest_rules> |
||||
<rule> |
||||
<applies_to>video/quicktime</applies_to> |
||||
<applies_to>video/mp4</applies_to> |
||||
|
||||
<applies_to>audio/mp3</applies_to> |
||||
<applies_to>audio/x-aiff</applies_to> |
||||
<ingest_methods> |
||||
<ingest_method file="plugins/Exiftool.inc" class="Exiftool" method="extractMetadata" dsid="OBJ_EXIFTOOL" modified_files_ext=""> |
||||
<parameters></parameters> |
||||
</ingest_method> |
||||
|
||||
<ingest_method class="Ffmpeg" dsid="FULL_SIZE" file="plugins/Ffmpeg.inc" method="extract_thumbnail" modified_files_ext="jpg"> |
||||
<parameters> |
||||
</parameters> |
||||
</ingest_method> |
||||
|
||||
<ingest_method class="Ffmpeg" dsid="TN" file="plugins/Ffmpeg.inc" method="extract_thumbnail" modified_files_ext="jpg"> |
||||
<parameters> |
||||
<parameter name="s">92x92</parameter> |
||||
</parameters> |
||||
</ingest_method> |
||||
</ingest_methods> |
||||
</rule> |
||||
</ingest_rules> |
||||
<datastreams> |
||||
<datastream dsid="OBJ"> |
||||
<display_method class="ShowQtStreamsInFieldSets" file="plugins/qt_viewer.inc" method="showQt" module=""></display_method> |
||||
</datastream> |
||||
<datastream dsid="PROXY"></datastream> |
||||
<datastream dsid="OBJ_EXIFTOOL"></datastream> |
||||
<datastream dsid="TN"></datastream> |
||||
<datastream dsid="FULL_SIZE"></datastream> |
||||
<datastream dsid="QDC"> |
||||
<display_method class="ShowStreamsInFieldSets" file="plugins/ShowStreamsInFieldSets.inc" method="showQdc" module=""></display_method> |
||||
</datastream> |
||||
</datastreams> |
||||
<ingest_form dsid="QDC" page="2"> |
||||
<form_builder_method class="QtFormBuilder" file="plugins/QtFormBuilder.php" handler="handleQDCForm" method="buildQDCForm" module=""></form_builder_method> |
||||
<form_elements> |
||||
<element label="Title/Caption/Media Name" name="dc:title" required="true" type="textfield"> |
||||
<description>The name given to the file</description> |
||||
</element> |
||||
<element label="Creator/" name="dc:creator" type="textfield"> |
||||
<description>An entity primarily responsible for making the |
||||
content of the resource such as a person, organization or |
||||
service.</description> |
||||
</element> |
||||
<element label="Subject" name="dc:subject" type="select"> |
||||
<description>An entity primarily responsible for making the |
||||
content of the resource such as a person, organization or |
||||
service.</description> |
||||
<authoritative_list> |
||||
<item>home recording</item> |
||||
<item>meeting</item> |
||||
<item>presentation</item> |
||||
<item>sound</item> |
||||
</authoritative_list> |
||||
</element> |
||||
<element label="Description of Media" name="dc:description" required="true" type="textarea"> |
||||
<description>Examples include an abstract, table of |
||||
contents, or free-text account of the content of the |
||||
resource.</description> |
||||
</element> |
||||
<element label="Publisher" name="dc:publisher" type="textfield"> |
||||
<description>An entity, (including persons, organizations, |
||||
or services), responsible for making the resource |
||||
available.</description> |
||||
</element> |
||||
<element label="Contributor" name="dc:contributor" type="textfield"> |
||||
<description>An entity responsible for contributing to the |
||||
content of the resource such as a person, organization or |
||||
service.</description> |
||||
</element> |
||||
<element label="Date" name="dc:date" type="textfield"> |
||||
<description>Temporal scope of the content if known. Date |
||||
format is YYYY-MM-DD (e.g. 1890,1910-10,or |
||||
2007-10-23)</description> |
||||
</element> |
||||
<element label="Resource Type" name="dc:type" type="select"> |
||||
<description>Genre of the content of the resource. Examples |
||||
include: home page, novel, poem, working paper, technical |
||||
report, essay, dictionary.</description> |
||||
<authoritative_list> |
||||
<item>none</item> |
||||
<item>video</item> |
||||
<item>event</item> |
||||
<item>image</item> |
||||
<item>interactive resource</item> |
||||
<item>model</item> |
||||
<item>party</item> |
||||
<item>physical object</item> |
||||
<item>place</item> |
||||
<item>service</item> |
||||
<item>software</item> |
||||
<item>sound</item> |
||||
<item>text</item> |
||||
</authoritative_list> |
||||
</element> |
||||
<element label="Source" name="dc:source" type="textfield"> |
||||
<description>A reference to a resource from which the |
||||
present resource is derived.</description> |
||||
</element> |
||||
<element label="Identifier" name="dc:identifier" type="textfield"> |
||||
<description>A unique reference to the resource; In this |
||||
instance, the accession number or collection |
||||
number.</description> |
||||
</element> |
||||
<element label="Language" name="dc:language" type="select"> |
||||
<description>The language of the intellectual content of |
||||
the resource.</description> |
||||
<authoritative_list> |
||||
<item field="eng">English</item> |
||||
<item field="fre">French</item> |
||||
</authoritative_list> |
||||
</element> |
||||
<element label="Relation" name="dc:relation" type="textfield"> |
||||
<description>Reference to a related resource.</description> |
||||
</element> |
||||
<element label="Rights Management" name="dc:rights" type="textarea"> |
||||
<description>Information about intellectual property |
||||
rights, copyright, and various property |
||||
rights.</description> |
||||
</element> |
||||
</form_elements> |
||||
</ingest_form> |
||||
</content_model> |
||||
</foxml:xmlContent> |
||||
</foxml:datastreamVersion> |
||||
</foxml:datastream> |
||||
</foxml:digitalObject> |
@ -0,0 +1,362 @@
|
||||
/* |
||||
|
||||
File: AC_QuickTime.js |
||||
|
||||
Abstract: This file contains functions to generate OBJECT and EMBED tags for QuickTime content. |
||||
|
||||
Version: <1.2> |
||||
|
||||
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple |
||||
Computer, Inc. ("Apple") in consideration of your agreement to the |
||||
following terms, and your use, installation, modification or |
||||
redistribution of this Apple software constitutes acceptance of these |
||||
terms. If you do not agree with these terms, please do not use, |
||||
install, modify or redistribute this Apple software. |
||||
|
||||
In consideration of your agreement to abide by the following terms, and |
||||
subject to these terms, Apple grants you a personal, non-exclusive |
||||
license, under Apple's copyrights in this original Apple software (the |
||||
"Apple Software"), to use, reproduce, modify and redistribute the Apple |
||||
Software, with or without modifications, in source and/or binary forms; |
||||
provided that if you redistribute the Apple Software in its entirety and |
||||
without modifications, you must retain this notice and the following |
||||
text and disclaimers in all such redistributions of the Apple Software.
|
||||
Neither the name, trademarks, service marks or logos of Apple Computer, |
||||
Inc. may be used to endorse or promote products derived from the Apple |
||||
Software without specific prior written permission from Apple. Except |
||||
as expressly stated in this notice, no other rights or licenses, express |
||||
or implied, are granted by Apple herein, including but not limited to |
||||
any patent rights that may be infringed by your derivative works or by |
||||
other works in which the Apple Software may be incorporated. |
||||
|
||||
The Apple Software is provided by Apple on an "AS IS" basis. APPLE |
||||
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION |
||||
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS |
||||
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND |
||||
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. |
||||
|
||||
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL |
||||
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
||||
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, |
||||
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED |
||||
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), |
||||
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE |
||||
POSSIBILITY OF SUCH DAMAGE. |
||||
|
||||
Copyright © 2006-2007 Apple Computer, Inc., All Rights Reserved |
||||
|
||||
*/ |
||||
|
||||
/* |
||||
* This file contains functions to generate OBJECT and EMBED tags for QuickTime content.
|
||||
*/ |
||||
|
||||
/************** LOCALIZABLE GLOBAL VARIABLES ****************/ |
||||
|
||||
var gArgCountErr = 'The "%%" function requires an even number of arguments.' |
||||
+ '\nArguments should be in the form "atttributeName", "attributeValue", ...'; |
||||
|
||||
/******************** END LOCALIZABLE **********************/ |
||||
|
||||
var gTagAttrs = null; |
||||
var gQTGeneratorVersion = 1.2; |
||||
var gQTBehaviorID = "qt_event_source"; |
||||
var gQTEventsEnabled = false; |
||||
|
||||
function AC_QuickTimeVersion() { return gQTGeneratorVersion; } |
||||
|
||||
function _QTComplain(callingFcnName, errMsg) |
||||
{ |
||||
errMsg = errMsg.replace("%%", callingFcnName); |
||||
alert(errMsg); |
||||
} |
||||
|
||||
function _QTIsMSIE() |
||||
{ |
||||
var ua = navigator.userAgent.toLowerCase(); |
||||
var msie = /msie/.test(ua) && !/opera/.test(ua); |
||||
|
||||
return msie; |
||||
} |
||||
|
||||
|
||||
function _QTGenerateBehavior() |
||||
{ |
||||
return objTag = '<!--[if IE]>' |
||||
+ '<object id="' + gQTBehaviorID + '" classid="clsid:CB927D12-4FF7-4a9e-A169-56E4B8A75598"></object>' |
||||
+ '<![endif]-->'; |
||||
} |
||||
|
||||
function _QTPageHasBehaviorObject(callingFcnName, args) |
||||
{ |
||||
var haveBehavior = false; |
||||
var objects = document.getElementsByTagName('object'); |
||||
|
||||
for ( var ndx = 0, obj; obj = objects[ndx]; ndx++ ) |
||||
{ |
||||
if ( obj.getAttribute('classid') == "clsid:CB927D12-4FF7-4a9e-A169-56E4B8A75598" ) |
||||
{ |
||||
if ( obj.getAttribute('id') == gQTBehaviorID ) |
||||
haveBehavior = false; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
return haveBehavior; |
||||
} |
||||
|
||||
|
||||
function _QTShouldInsertBehavior() |
||||
{ |
||||
var shouldDo = false; |
||||
|
||||
if ( gQTEventsEnabled && _QTIsMSIE() && !_QTPageHasBehaviorObject() ) |
||||
shouldDo = true; |
||||
|
||||
return shouldDo; |
||||
} |
||||
|
||||
|
||||
function _QTAddAttribute(prefix, slotName, tagName) |
||||
{ |
||||
var value; |
||||
|
||||
value = gTagAttrs[prefix + slotName]; |
||||
if ( null == value ) |
||||
value = gTagAttrs[slotName]; |
||||
|
||||
if ( null != value ) |
||||
{ |
||||
if ( 0 == slotName.indexOf(prefix) && (null == tagName) ) |
||||
tagName = slotName.substring(prefix.length);
|
||||
if ( null == tagName )
|
||||
tagName = slotName; |
||||
return ' ' + tagName + '="' + value + '"'; |
||||
} |
||||
else |
||||
return ""; |
||||
} |
||||
|
||||
function _QTAddObjectAttr(slotName, tagName) |
||||
{ |
||||
// don't bother if it is only for the embed tag
|
||||
if ( 0 == slotName.indexOf("emb#") ) |
||||
return ""; |
||||
|
||||
if ( 0 == slotName.indexOf("obj#") && (null == tagName) ) |
||||
tagName = slotName.substring(4);
|
||||
|
||||
return _QTAddAttribute("obj#", slotName, tagName); |
||||
} |
||||
|
||||
function _QTAddEmbedAttr(slotName, tagName) |
||||
{ |
||||
// don't bother if it is only for the object tag
|
||||
if ( 0 == slotName.indexOf("obj#") ) |
||||
return ""; |
||||
|
||||
if ( 0 == slotName.indexOf("emb#") && (null == tagName) ) |
||||
tagName = slotName.substring(4);
|
||||
|
||||
return _QTAddAttribute("emb#", slotName, tagName); |
||||
} |
||||
|
||||
|
||||
function _QTAddObjectParam(slotName, generateXHTML) |
||||
{ |
||||
var paramValue; |
||||
var paramStr = ""; |
||||
var endTagChar = (generateXHTML) ? ' />' : '>'; |
||||
|
||||
if ( -1 == slotName.indexOf("emb#") ) |
||||
{ |
||||
// look for the OBJECT-only param first. if there is none, look for a generic one
|
||||
paramValue = gTagAttrs["obj#" + slotName]; |
||||
if ( null == paramValue ) |
||||
paramValue = gTagAttrs[slotName]; |
||||
|
||||
if ( 0 == slotName.indexOf("obj#") ) |
||||
slotName = slotName.substring(4);
|
||||
|
||||
if ( null != paramValue ) |
||||
paramStr = '<param name="' + slotName + '" value="' + paramValue + '"' + endTagChar; |
||||
} |
||||
|
||||
return paramStr; |
||||
} |
||||
|
||||
function _QTDeleteTagAttrs() |
||||
{ |
||||
for ( var ndx = 0; ndx < arguments.length; ndx++ ) |
||||
{ |
||||
var attrName = arguments[ndx]; |
||||
delete gTagAttrs[attrName]; |
||||
delete gTagAttrs["emb#" + attrName]; |
||||
delete gTagAttrs["obj#" + attrName]; |
||||
} |
||||
} |
||||
|
||||
|
||||
// generate an embed and object tag, return as a string
|
||||
function _QTGenerate(callingFcnName, generateXHTML, args) |
||||
{ |
||||
// is the number of optional arguments even?
|
||||
if ( args.length < 4 || (0 != (args.length % 2)) ) |
||||
{ |
||||
_QTComplain(callingFcnName, gArgCountErr); |
||||
return ""; |
||||
} |
||||
|
||||
// allocate an array, fill in the required attributes with fixed place params and defaults
|
||||
gTagAttrs = new Object(); |
||||
gTagAttrs["src"] = args[0]; |
||||
gTagAttrs["width"] = args[1]; |
||||
gTagAttrs["height"] = args[2]; |
||||
gTagAttrs["classid"] = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"; |
||||
//Impportant note: It is recommended that you use this exact classid in order to ensure a seamless experience for all viewers
|
||||
gTagAttrs["pluginspage"] = "http://www.apple.com/quicktime/download/"; |
||||
|
||||
// set up codebase attribute with specified or default version before parsing args so
|
||||
// anything passed in will override
|
||||
var activexVers = args[3] |
||||
if ( (null == activexVers) || ("" == activexVers) ) |
||||
activexVers = "7,3,0,0"; |
||||
gTagAttrs["codebase"] = "http://www.apple.com/qtactivex/qtplugin.cab#version=" + activexVers; |
||||
|
||||
var attrName, |
||||
attrValue; |
||||
|
||||
// add all of the optional attributes to the array
|
||||
for ( var ndx = 4; ndx < args.length; ndx += 2) |
||||
{ |
||||
attrName = args[ndx].toLowerCase(); |
||||
attrValue = args[ndx + 1]; |
||||
|
||||
gTagAttrs[attrName] = attrValue; |
||||
|
||||
if ( ("postdomevents" == attrName) && (attrValue.toLowerCase() != "false") ) |
||||
{ |
||||
gQTEventsEnabled = true; |
||||
if ( _QTIsMSIE() ) |
||||
gTagAttrs["obj#style"] = "behavior:url(#" + gQTBehaviorID + ")"; |
||||
} |
||||
} |
||||
|
||||
// init both tags with the required and "special" attributes
|
||||
var objTag = '<object ' |
||||
+ _QTAddObjectAttr("classid") |
||||
+ _QTAddObjectAttr("width") |
||||
+ _QTAddObjectAttr("height") |
||||
+ _QTAddObjectAttr("codebase") |
||||
+ _QTAddObjectAttr("name") |
||||
+ _QTAddObjectAttr("id") |
||||
+ _QTAddObjectAttr("tabindex") |
||||
+ _QTAddObjectAttr("hspace") |
||||
+ _QTAddObjectAttr("vspace") |
||||
+ _QTAddObjectAttr("border") |
||||
+ _QTAddObjectAttr("align") |
||||
+ _QTAddObjectAttr("class") |
||||
+ _QTAddObjectAttr("title") |
||||
+ _QTAddObjectAttr("accesskey") |
||||
+ _QTAddObjectAttr("noexternaldata") |
||||
+ _QTAddObjectAttr("obj#style") |
||||
+ '>' |
||||
+ _QTAddObjectParam("src", generateXHTML); |
||||
var embedTag = '<embed ' |
||||
+ _QTAddEmbedAttr("src") |
||||
+ _QTAddEmbedAttr("width") |
||||
+ _QTAddEmbedAttr("height") |
||||
+ _QTAddEmbedAttr("pluginspage") |
||||
+ _QTAddEmbedAttr("name") |
||||
+ _QTAddEmbedAttr("id") |
||||
+ _QTAddEmbedAttr("align") |
||||
+ _QTAddEmbedAttr("tabindex"); |
||||
|
||||
// delete the attributes/params we have already added
|
||||
_QTDeleteTagAttrs("src","width","height","pluginspage","classid","codebase","name","tabindex", |
||||
"hspace","vspace","border","align","noexternaldata","class","title","accesskey","id","style"); |
||||
|
||||
// and finally, add all of the remaining attributes to the embed and object
|
||||
for ( var attrName in gTagAttrs ) |
||||
{ |
||||
attrValue = gTagAttrs[attrName]; |
||||
if ( null != attrValue ) |
||||
{ |
||||
embedTag += _QTAddEmbedAttr(attrName); |
||||
objTag += _QTAddObjectParam(attrName, generateXHTML); |
||||
} |
||||
}
|
||||
|
||||
// end both tags, we're done
|
||||
return objTag + embedTag + '></em' + 'bed></ob' + 'ject' + '>'; |
||||
} |
||||
|
||||
|
||||
// return the object/embed as a string
|
||||
function QT_GenerateOBJECTText() |
||||
{ |
||||
var txt = _QTGenerate("QT_GenerateOBJECTText", false, arguments); |
||||
if ( _QTShouldInsertBehavior() ) |
||||
txt = _QTGenerateBehavior() + txt; |
||||
return txt; |
||||
} |
||||
|
||||
function QT_GenerateOBJECTText_XHTML() |
||||
{ |
||||
var txt = _QTGenerate("QT_GenerateOBJECTText_XHTML", true, arguments); |
||||
if ( _QTShouldInsertBehavior() ) |
||||
txt = _QTGenerateBehavior() + txt; |
||||
return txt; |
||||
} |
||||
|
||||
function QT_WriteOBJECT() |
||||
{ |
||||
var txt = _QTGenerate("QT_WriteOBJECT", false, arguments); |
||||
if ( _QTShouldInsertBehavior() ) |
||||
document.writeln(_QTGenerateBehavior()); |
||||
document.writeln(txt); |
||||
} |
||||
|
||||
function QT_WriteOBJECT_XHTML() |
||||
{ |
||||
var txt = _QTGenerate("QT_WriteOBJECT_XHTML", true, arguments); |
||||
if ( _QTShouldInsertBehavior() ) |
||||
document.writeln(_QTGenerateBehavior()); |
||||
document.writeln(txt); |
||||
} |
||||
|
||||
function QT_GenerateBehaviorOBJECT() |
||||
{ |
||||
return _QTGenerateBehavior(); |
||||
} |
||||
|
||||
function QT_ReplaceElementContents() |
||||
{ |
||||
var element = arguments[0]; |
||||
var args = []; |
||||
|
||||
// copy all other arguments we want to pass through to the fcn
|
||||
for ( var ndx = 1; ndx < arguments.length; ndx++ ) |
||||
args.push(arguments[ndx]); |
||||
|
||||
var txt = _QTGenerate("QT_ReplaceElementContents", false, args); |
||||
if ( txt.length > 0 ) |
||||
element.innerHTML = txt; |
||||
} |
||||
|
||||
|
||||
function QT_ReplaceElementContents_XHTML() |
||||
{ |
||||
var element = arguments[0]; |
||||
var args = []; |
||||
|
||||
// copy all other arguments we want to pass through to the fcn
|
||||
for ( var ndx = 1; ndx < arguments.length; ndx++ ) |
||||
args.push(arguments[ndx]); |
||||
|
||||
var txt = _QTGenerate("QT_ReplaceElementContents_XHTML", true, args); |
||||
if ( txt.length > 0 ) |
||||
element.innerHTML = txt; |
||||
} |
||||
|
@ -0,0 +1,24 @@
|
||||
<?php |
||||
// $Id$ |
||||
|
||||
/* |
||||
* |
||||
* |
||||
* This Class implements the methods defined in the STANDARD_IMAGE content model |
||||
*/ |
||||
|
||||
class Exiftool { |
||||
function Exiftool() { |
||||
} |
||||
|
||||
function extractMetadata($parameterArray, $dsid, $file, $file_ext) { |
||||
$system = getenv('System'); |
||||
$file_suffix = '_'. $dsid . '.xml'; |
||||
$returnValue=TRUE; |
||||
$output=array(); |
||||
exec('exiftool -X ' . escapeshellarg($file) . '', $output); |
||||
file_put_contents($file.$file_suffix, implode("\n", $output)); |
||||
$_SESSION['fedora_ingest_files']["$dsid"] = $file . $file_suffix; |
||||
return TRUE; |
||||
} |
||||
} |
@ -0,0 +1,35 @@
|
||||
<?php |
||||
// $Id$ |
||||
|
||||
/* |
||||
* |
||||
* |
||||
* This Class implements the methods defined in the STANDARD_QT content model |
||||
*/ |
||||
|
||||
class Ffmpeg { |
||||
function Ffmpeg() { |
||||
} |
||||
|
||||
function extract_thumbnail($parameterArray, $dsid, $file, $file_ext) { |
||||
$defaults = array('ss' => '00:00:10', 's' => null); |
||||
$params = array_merge($defaults, $parameterArray); |
||||
$system = getenv('System'); |
||||
$file_suffix = '_'. $dsid . '.' . $file_ext; |
||||
$returnValue=TRUE; |
||||
$output=array(); |
||||
$size = ''; |
||||
|
||||
if($params['s'] != null) { |
||||
$size = ' -s ' . escapeshellarg($params['s']); |
||||
} |
||||
exec('ffmpeg -i ' . escapeshellarg($file) . ' -r 1 -ss ' . escapeshellarg($params['ss']) . ' ' . $size . ' -t 1 ' . escapeshellarg($file . $file_suffix)); |
||||
|
||||
if (!file_exists($file . $file_suffix)) { |
||||
return false; |
||||
} |
||||
|
||||
$_SESSION['fedora_ingest_files']["$dsid"] = $file . $file_suffix; |
||||
return TRUE; |
||||
} |
||||
} |
@ -0,0 +1,102 @@
|
||||
<?php |
||||
module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder'); |
||||
/* |
||||
* |
||||
* |
||||
* |
||||
* implements methods from content model ingest form xml |
||||
* builds a dc metadata form |
||||
*/ |
||||
class QtFormBuilder extends FormBuilder{ |
||||
function QtFormBuilder(){ |
||||
module_load_include('php', 'Fedora_Repository', 'plugins/FormBuilder'); |
||||
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); |
||||
|
||||
} |
||||
|
||||
/* |
||||
* method overrides method in FormBuilder. We changed the dsid from OBJ to OBJ and added the TN datastream |
||||
*/ |
||||
function createFedoraDataStreams($form_values,&$dom, &$rootElement){ |
||||
module_load_include('inc', 'fedora_repository', 'MimeClass'); |
||||
global $base_url; |
||||
$mimetype = new MimeClass(); |
||||
$server=null; |
||||
$file=$form_values['ingest-file-location']; |
||||
$dformat = $mimetype->getType($file); |
||||
//$fileUrl = 'http://'.$_SERVER['HTTP_HOST'].$file; |
||||
$fileUrl = $base_url.'/'.drupal_urlencode($file); |
||||
$beginIndex = strrpos($fileUrl,'/'); |
||||
$dtitle = substr($fileUrl,$beginIndex+1); |
||||
$dtitle = substr($dtitle, 0, strpos($dtitle, ".")); |
||||
$ds1 = $dom->createElement("foxml:datastream"); |
||||
$ds1->setAttribute("ID","OBJ"); |
||||
$ds1->setAttribute("STATE","A"); |
||||
$ds1->setAttribute("CONTROL_GROUP","M"); |
||||
$ds1v= $dom->createElement("foxml:datastreamVersion"); |
||||
$ds1v->setAttribute("ID","OBJ.0"); |
||||
$ds1v->setAttribute("MIMETYPE","$dformat"); |
||||
$ds1v->setAttribute("LABEL","$dtitle"); |
||||
$ds1content = $dom->createElement('foxml:contentLocation'); |
||||
$ds1content->setAttribute("REF","$fileUrl"); |
||||
$ds1content->setAttribute("TYPE","URL"); |
||||
$ds1->appendChild($ds1v); |
||||
$ds1v->appendChild($ds1content); |
||||
$rootElement->appendChild($ds1); |
||||
|
||||
if(empty($_SESSION['fedora_ingest_files']) || !isset($_SESSION['fedora_ingest_files']['TN'])) { |
||||
$createdFile = drupal_get_path('module', 'Fedora_Repository').'/images/qtThumb.jpg'; |
||||
$fileUrl = $base_url.'/'.drupal_urlencode($createdFile);//'http://'.$_SERVER['HTTP_HOST'].'/'.$createdFile; |
||||
$ds1 = $dom->createElement("foxml:datastream"); |
||||
$ds1->setAttribute("ID","TN"); |
||||
$ds1->setAttribute("STATE","A"); |
||||
$ds1->setAttribute("CONTROL_GROUP","M"); |
||||
$ds1v= $dom->createElement("foxml:datastreamVersion"); |
||||
$ds1v->setAttribute("ID","TN.0"); |
||||
$ds1v->setAttribute("MIMETYPE","image/jpeg"); |
||||
$ds1v->setAttribute("LABEL","Thumbnail"); |
||||
$ds1content = $dom->createElement('foxml:contentLocation'); |
||||
$ds1content->setAttribute("REF","$fileUrl"); |
||||
$ds1content->setAttribute("TYPE","URL"); |
||||
$ds1->appendChild($ds1v); |
||||
$ds1v->appendChild($ds1content); |
||||
$rootElement->appendChild($ds1); |
||||
} |
||||
|
||||
if (!empty($_SESSION['fedora_ingest_files'])) { |
||||
|
||||
|
||||
|
||||
foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) { |
||||
$createdFile = strstr($createdFile, $file); |
||||
$dformat = $mimetype->getType($createdFile); |
||||
$fileUrl = $base_url . '/'. drupal_urlencode($createdFile); |
||||
$beginIndex = strrpos($fileUrl, '/'); |
||||
$dtitle = substr($fileUrl, $beginIndex + 1); |
||||
$dtitle = urldecode($dtitle); |
||||
$dtitle = $dtitle; |
||||
$ds1 = $dom->createElement("foxml:datastream"); |
||||
$ds1->setAttribute("ID", "$dsid"); |
||||
$ds1->setAttribute("STATE", "A"); |
||||
$ds1->setAttribute("CONTROL_GROUP", "M"); |
||||
$ds1v= $dom->createElement("foxml:datastreamVersion"); |
||||
$ds1v->setAttribute("ID", "$dsid.0"); |
||||
$ds1v->setAttribute("MIMETYPE", "$dformat"); |
||||
$ds1v->setAttribute("LABEL", "$dtitle"); |
||||
$ds1content = $dom->createElement('foxml:contentLocation'); |
||||
$ds1content->setAttribute("REF", "$fileUrl"); |
||||
$ds1content->setAttribute("TYPE", "URL"); |
||||
$ds1->appendChild($ds1v); |
||||
$ds1v->appendChild($ds1content); |
||||
$rootElement->appendChild($ds1); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
} |
||||
?> |
@ -0,0 +1,138 @@
|
||||
<?php |
||||
// $Id$ |
||||
|
||||
class ShowQtStreamsInFieldSets { |
||||
private $pid =NULL; |
||||
|
||||
function ShowQtStreamsInFieldSets($pid) { |
||||
$this->pid = $pid; |
||||
} |
||||
|
||||
function fedoraObject() { |
||||
return new fedora_item($this->pid); |
||||
} |
||||
|
||||
function technicalMetadata($defaults = array(), $dsid = 'OBJ_EXIFTOOL') { |
||||
$data = $defaults; |
||||
|
||||
try { |
||||
$src = ObjectHelper::getStream($this->pid, $dsid); |
||||
|
||||
$doc = new SimpleXMLElement($src); |
||||
$doc->registerXPathNamespace('File', 'http://ns.exiftool.ca/File/1.0/'); |
||||
$doc->registerXPathNamespace('Composite', 'http://ns.exiftool.ca/Composite/1.0/'); |
||||
$mime = reset($doc->xpath('//File:MIMEType')); |
||||
$data['mime'] = $mime; |
||||
if(strpos($mime, 'audio/') !== false) { |
||||
$data['width'] = 300; |
||||
$data['height'] = 0; |
||||
} else { |
||||
$size = reset($doc->xpath('//Composite:ImageSize/text()')); |
||||
list($width, $height) = explode('x', $size); |
||||
$data['width'] = $width; |
||||
$data['height'] = $height; |
||||
} |
||||
|
||||
$data['doc'] = $src; |
||||
} catch(Exception $e) { |
||||
$data = $defaults; |
||||
} |
||||
|
||||
return $data; |
||||
} |
||||
|
||||
function getPosterFrameDatastreamInfo($dsid = 'FULL_SIZE') { |
||||
$p = ObjectHelper::getDatastreamInfo($this->pid, $dsid); |
||||
if(empty($p) || $p == ' ' || $p === false) { |
||||
return false; |
||||
} |
||||
return $p; |
||||
} |
||||
|
||||
function getMediaDatastreamInfo($dsid = 'OBJ', $alt = array('')) { |
||||
$p = ObjectHelper::getDatastreamInfo($this->pid, $dsid); |
||||
if(empty($p) || $p == ' ' || $p === false) { |
||||
if(!empty($alt)) { |
||||
$ds = array_shift($alt); |
||||
return $this->getMediaDatastreamInfo($ds, $alt); |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
return $p; |
||||
} |
||||
|
||||
function enableDownload() { |
||||
return false; |
||||
} |
||||
|
||||
function showQt() { |
||||
module_load_include('inc', 'fedora_repository', 'plugins/tagging_form'); |
||||
module_load_include('inc', 'fedora_repository', 'plugins/ShowStreamsInFieldSets'); |
||||
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); |
||||
|
||||
$info = $this->technicalMetadata(array('width' => 640, 'height' => 480)); |
||||
$width = $info['width']; |
||||
$height = $info['height']; |
||||
|
||||
$pframe = $this->getPosterFrameDatastreamInfo(); |
||||
$media = $this->getMediaDatastreamInfo('PROXY', array('OBJ')); |
||||
if($media === false ) { |
||||
return ''; |
||||
} |
||||
global $base_url; |
||||
$path = drupal_get_path('module', 'Fedora_Repository'); |
||||
$fullPath=base_path().$path; |
||||
$content= ''; |
||||
$pathTojs = drupal_get_path('module', 'Fedora_Repository').'/js/AC_Quicktime.js'; |
||||
drupal_add_js($pathTojs); |
||||
|
||||
$divid = 'player'.md5($this->pid).'MOV'; |
||||
$content .= '<div class="player" id="' . $divid .'">'; |
||||
if($pframe !== false) { |
||||
$content .= '<div class="poster" style="cursor: pointer; position: relative; width: ' . $width .'px; min-height: ' . ($height) . 'px;">'; |
||||
$content .= '<img src="' . base_path().'fedora/repository/'.$this->pid.'/'. $pframe->ID . '/poster.jpg' . '" />'; |
||||
$content .= '<div class="play" style="font-size: 128px; color: white; position: absolute; top: 50%; left: 50%; margin-top: -0.085em; margin-left: -0.33em; opacity: 0.9; ">▶</div>'; |
||||
$content .= '</div>'; |
||||
} |
||||
$content .= '</div>'; |
||||
if($this->enableDownload()) { |
||||
$url = base_path().'fedora/repository/'.$this->pid.'/OBJ/MOV.mov'; |
||||
$content .= '<a class="download" href="' . $url . '">Download Media File</a>'; |
||||
} |
||||
$src = base_path().'fedora/repository/'.$this->pid.'/' . $media->ID. '/MOV.mov'; |
||||
$qtparams = ''; |
||||
$qtparams .= "'autostart', '" . ($pframe !== false ? 'true' : 'false') . "', "; |
||||
$init = <<<EOD |
||||
$(function() { |
||||
src = "$src"; |
||||
if(src.substring(0,4) != 'http') { |
||||
src = 'http://' + location.host + src; |
||||
} |
||||
str = QT_GenerateOBJECTText_XHTML(src, "$width", ($height+15), '', |
||||
$qtparams |
||||
'postdomevents', 'true', |
||||
'EnableJavaScript', 'true', |
||||
'bgcolor', 'black', |
||||
'controller', 'true', |
||||
'SCALE', 'aspect', |
||||
'LOOP', 'false' |
||||
); |
||||
if($('.poster', '#$divid').length ==0) { |
||||
$('#$divid').append(str); |
||||
} else { |
||||
$('#$divid .poster').one('click', function() { $(this).hide(); $('#$divid').append(str); }); |
||||
} |
||||
}); |
||||
EOD; |
||||
|
||||
drupal_add_js($init, 'inline', 'footer'); |
||||
|
||||
$collection_fieldset = array( |
||||
'#title' => t('Quicktime'), |
||||
'#collapsible' => TRUE, |
||||
'#collapsed' => FALSE, |
||||
'#value' => $content); |
||||
return theme('fieldset',$collection_fieldset); |
||||
} |
||||
} |
Loading…
Reference in new issue