Browse Source

Merge branch 'master' of github.com:Islandora/islandora

pull/105/head
Alexander O'Neill 14 years ago
parent
commit
c192996eda
  1. 3
      ObjectHelper.inc
  2. 11
      fedora_repository.module
  3. 1
      form_elements/js/filechooser.js
  4. 42
      plugins/Exiftool.inc
  5. 69
      plugins/ModsFormBuilder.inc
  6. 2
      workflow_client/islandora_workflow_client.module
  7. 48
      workflow_client/plugins/mods_extend.inc

3
ObjectHelper.inc

@ -992,7 +992,8 @@ class ObjectHelper {
where (<info:fedora/' . $pid . '> <dc:title> $title
and $parentObject <fedora-model:hasModel> $content
and (<info:fedora/' . $pid . '> <fedora-rels-ext:isMemberOfCollection> $parentObject
or <info:fedora/' . $pid . '> <fedora-rels-ext:isMemberOf> $parentObject)
or <info:fedora/' . $pid . '> <fedora-rels-ext:isMemberOf> $parentObject
or <info:fedora/' . $pid . '> <fedora-rels-ext:isPartOf> $parentObject)
and $parentObject <fedora-model:state> <info:fedora/fedora-system:def/model#Active>)
minus $content <mulgara:is> <info:fedora/fedora-system:FedoraObject-3.0>
order by $title';

11
fedora_repository.module

@ -91,6 +91,7 @@ function fedora_repository_collection_view($pid = NULL, $collection = NULL, $pag
function fedora_repository_ingest_object($collection_pid=NULL, $collection_label = NULL, $content_model = NULL) {
module_load_include('inc', 'fedora_repository', 'api/fedora_utils');
module_load_include('inc', 'fedora_repository', 'ObjectHelper');
if (!user_access('ingest new fedora objects')) {
drupal_set_message(t('You do not have permission to ingest.'), 'error');
return '';
@ -112,6 +113,11 @@ function fedora_repository_ingest_object($collection_pid=NULL, $collection_label
}
$output = drupal_get_form('fedora_repository_ingest_form', $collection_pid, $collection_label, $content_model);
$breadcrumbs = array();
$objectHelper = new ObjectHelper();
$objectHelper->getBreadcrumbs($collection_pid, $breadcrumbs);
drupal_set_breadcrumb(array_reverse($breadcrumbs));
return $output;
}
@ -586,6 +592,11 @@ function fedora_repository_edit_qdc_form(&$form_state, $pid, $dsId = NULL) {
$client = $soapHelper->getSoapClient(variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl'));
// Check if there is a custom edit metadata function defined in the content model.
$breadcrumbs = array();
$objectHelper = new ObjectHelper();
$objectHelper->getBreadcrumbs($pid, $breadcrumbs);
drupal_set_breadcrumb(array_reverse($breadcrumbs));
$output = '';
if (($cm = ContentModel::loadFromObject($pid)) !== FALSE) {

1
form_elements/js/filechooser.js

@ -63,7 +63,6 @@ $(document).ready(function () {
mouseWheel: true,
circular: false,
speed: 750,
easing: "bounceout",
visible: visibleFiles,
scroll: visibleFiles,
initial: selectedIndex

42
plugins/Exiftool.inc

@ -8,7 +8,15 @@
*/
class Exiftool {
function Exiftool() {
private $pid = NULL;
private $item = NULL;
function __construct($pid) {
//drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$this->pid = $pid;
module_load_include('inc', 'fedora_repository', 'api/fedora_item');
$this->item = new Fedora_Item($this->pid);
}
function extractMetadata($parameterArray, $dsid, $file, $file_ext) {
@ -21,4 +29,36 @@ class Exiftool {
$_SESSION['fedora_ingest_files']["$dsid"] = $file . $file_suffix;
return TRUE;
}
function displayMetadata() {
$output='';
$exifDom = DOMDocument::loadXML($this->item->get_datastream_dissemination('EXIF'));
if ($exifDom != NULL) {
$description = $exifDom->getElementsByTagNameNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#','Description');
if ($description->length > 0) {
$description=$description->item(0);
$output .= '<div class="fedora_technical_metadata"><ul>';
for ($i=0;$i<$description->childNodes->length;$i++){
$name=$description->childNodes->item($i)->nodeName;
$value=$description->childNodes->item($i)->nodeValue;
if ($name != '#text' && !preg_match('/^System\:.*$/',$name) && trim($value) != '') {
list($type,$name) = preg_split('/\:/',$name);
$name = trim(preg_replace('/(?<!^)([A-Z][a-z]|(?<=[a-z])[A-Z])/'," $1", $name));
$output .= '<li><b>'.$name. '</b>: '. $value .' </li>';
}
}
$output.='</ul></div>';
$fieldset = array(
'#title' => t("!text", array('!text' => 'Technical Metadata')),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#value' => $output
);
$output = theme('fieldset', $fieldset);
}
}
return $output;
}
}

69
plugins/ModsFormBuilder.inc

@ -5,9 +5,9 @@
module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder');
class ModsFormBuilder extends FormBuilder {
static $MODS_NS = 'http://www.loc.gov/mods/v3';
private $cm;
private $item;
private $pid;
protected $cm;
protected $item;
protected $pid;
function __construct($pid=null)
{
@ -43,7 +43,7 @@ class ModsFormBuilder extends FormBuilder {
'#type' => 'fieldset',
'#title' => t('Edit metadata'),
);
if ($this->cm !== FALSE && $this->item != NULL) {
$form['pid'] = array('#type'=>'hidden','#value'=>$this->pid);
@ -85,9 +85,12 @@ class ModsFormBuilder extends FormBuilder {
$includeEl=FALSE;
break;
case '#edit_metadata_xpath':
$nodeList = $xpath->evaluate($val);
// echo $val. ' '.$nodeList->length.' '. $nodeList. '<br/>';
// echo $val. ' '.$nodeList->length.' ';
// echo $nodeList->item(0)->nodeValue.' ';
// echo '<br/>';
if (is_string($nodeList))
{
@ -101,7 +104,15 @@ class ModsFormBuilder extends FormBuilder {
}
} else if ($nodeList->length > 0)
{
$el['#default_value'] = $nodeList->item(0)->nodeValue;
if ($el['#type'] == 'list') {
$values=array();
for ($i=0;$i<$nodeList->length;$i++) {
$values[]=$nodeList->item($i)->nodeValue;
}
$el['#default_value']=join('; ',$values);
} else {
$el['#default_value'] = $nodeList->item(0)->nodeValue;
}
}
break;
}
@ -389,19 +400,19 @@ class ModsFormBuilder extends FormBuilder {
$titles=preg_split('/\s+\;\s+/',trim($form_values['mods_alternative_titles']));
foreach ($titles as $t) {
$titleinfo = $dom->createElement('mods:titleInfo');
$titleinfo->setAttribute('alternative') ;
$titleinfo->setAttribute('type','alternative') ;
$title = $dom->createElement('mods:title',$t);
$titleInfo->appendChild($title);
$mods->appendChild($title);
$titleinfo->appendChild($title);
$mods->appendChild($titleinfo);
}
}
if (isset($form_values['mods_alternative_title']) && trim($form_values['mods_alternative_title']) != '') {
$titleinfo = $dom->createElement('mods:titleInfo');
$titleinfo->setAttribute('alternative') ;
$titleinfo->setAttribute('type','alternative') ;
$title = $dom->createElement('mods:title',trim($form_values['mods_alternative_title']));
$titleInfo->appendChild($title);
$mods->appendChild($title);
$titleinfo->appendChild($title);
$mods->appendChild($titleinfo);
}
if (isset($form_values['mods_description']) && trim($form_values['mods_description']) != '') {
@ -462,7 +473,8 @@ class ModsFormBuilder extends FormBuilder {
$originInfo->appendChild($edition);
$addOriginInfo = TRUE;
}
if (isset($form_values['mods_pubinfo_date']) && trim($form_values['mods_pubinfo_date']) != '' &&
isset($form_values['mods_pubinfo_dateType']) && trim($form_values['mods_pubinfo_dateType']) != '') {
if (in_array($form_values['mods_pubinfo_dateType'], array('issued', 'created', 'copyright', 'captured'))) {
@ -475,18 +487,45 @@ class ModsFormBuilder extends FormBuilder {
}
$originInfo->appendChild($date);
$addOriginInfo = TRUE;
} else {
if (isset($form_values['mods_createdDate'])) {
$date = $dom->createElement('mods:createdDate',htmlspecialchars(trim($form_values['mods_createdDate'])));
$originInfo->appendChild($date);
$addOriginInfo = TRUE;
}
if (isset($form_values['mods_issuedDate'])) {
$date = $dom->createElement('mods:issuedDate',htmlspecialchars(trim($form_values['mods_issuedDate'])));
$originInfo->appendChild($date);
$addOriginInfo = TRUE;
}
if (isset($form_values['mods_copyrightDate'])) {
$date = $dom->createElement('mods:copyrightDate',htmlspecialchars(trim($form_values['mods_copyrightDate'])));
$originInfo->appendChild($date);
$addOriginInfo = TRUE;
}
if (isset($form_values['mods_capturedDate'])) {
$date = $dom->createElement('mods:capturedDate',htmlspecialchars(trim($form_values['mods_capturedDate'])));
$originInfo->appendChild($date);
$addOriginInfo = TRUE;
}
}
if (isset($form_values['mods_pubinfo_journalFreq']) && trim($form_values['mods_pubinfo_journalFreq']) != '') {
$frequency = $dom->createElement('mods:frequency', htmlspecialchars(trim($form_values['mods_pubinfo_journalFreq'])));
$originInfo->appendChild($frequency);
$issuance= $dom->createElement('mods:issuance', 'journal');
$originInfo->appendChild($issuance);
$addOriginInfo = TRUE;
}
else {
elseif (isset($form_values['mods_pubinfo_journalFreq'])) {
$issuance= $dom->createElement('mods:issuance', 'monographic');
$originInfo->appendChild($issuance);
}
$originInfo->appendChild($issuance);
if ($addOriginInfo) {
$mods->appendChild($originInfo);

2
workflow_client/islandora_workflow_client.module

@ -269,7 +269,7 @@ function islandora_workflow_client_cron()
$queue='/queue/fedora.apim.update';
$con->subscribe($queue);
$messagesToSend=array();
for ($i=0;$i<500;$i++) {
for ($i=0;$i<100;$i++) {
$msg = $con->readFrame();
if ($msg != null) {

48
workflow_client/plugins/mods_extend.inc

@ -65,35 +65,39 @@ class mods_extend extends Process {
break;
}
}
$collections= $relsExtDom->getElementsByTagName('isMemberOfCollection');
for ($i=0; $i < $collections->length; $i++) {
$collection = $collections->item($i);
list(, $ident) = explode('/', $collection->getAttribute('rdf:resource'));
$relationships = array('isMemberOfCollection','isMemberOf','isPartOf');
foreach ($relationships as $relationship)
{
$collections= $relsExtDom->getElementsByTagName($relationship);
for ($i=0; $i < $collections->length; $i++) {
$collection = $collections->item($i);
list(, $ident) = explode('/', $collection->getAttribute('rdf:resource'));
$collection = new fedora_item($ident);
$dc = new SimpleXMLElement($collection->get_datastream_dissemination('DC'), NULL, FALSE, 'http://purl.org/dc/elements/1.1/');
$collection = new fedora_item($ident);
$dc = new SimpleXMLElement($collection->get_datastream_dissemination('DC'), NULL, FALSE, 'http://purl.org/dc/elements/1.1/');
$relatedItem = $modsDom->createElement('mods:relatedItem');
$relatedItem->setAttribute('type', 'host');
$titleInfo = $modsDom->createElement('mods:titleInfo');
$title = $modsDom->createElement('mods:title', $dc->title);
$titleInfo->appendChild($title);
$relatedItem->appendChild($titleInfo);
$relatedItem = $modsDom->createElement('mods:relatedItem');
$relatedItem->setAttribute('type', 'host');
$titleInfo = $modsDom->createElement('mods:titleInfo');
$title = $modsDom->createElement('mods:title', $dc->title);
$titleInfo->appendChild($title);
$relatedItem->appendChild($titleInfo);
$identifier = $modsDom->createElement('mods:identifier', $ident);
$identifier->setAttribute('type', 'pid');
$relatedItem->appendChild($identifier);
$identifier = $modsDom->createElement('mods:identifier', $ident);
$identifier->setAttribute('type', 'pid');
$relatedItem->appendChild($identifier);
$ident = preg_replace('/^.*\:/', '10719/', $ident);
$ident = preg_replace('/^.*\:/', '10719/', $ident);
$identifier = $modsDom->createElement('mods:identifier', $ident);
$identifier->setAttribute('type', 'hdl');
$relatedItem->appendChild($identifier);
$identifier = $modsDom->createElement('mods:identifier', $ident);
$identifier->setAttribute('type', 'hdl');
$relatedItem->appendChild($identifier);
$modsRoot->appendChild($relatedItem);
$modsRoot->appendChild($relatedItem);
}
}
$identifier = $modsDom->createElement('mods:identifier', $pid);
$identifier->setAttribute('type', 'pid');
$modsRoot->appendChild($identifier);

Loading…
Cancel
Save