Browse Source

Merge branch '7.x' of github.com:Islandora/islandora into 7.x

pull/120/merge
Paul Pound 13 years ago
parent
commit
fe43733d5f
  1. 52
      includes/datastream.inc
  2. 4
      includes/ingest-menu.inc
  3. 4
      islandora.module

52
includes/datastream.inc

@ -426,4 +426,56 @@ function islandora_datastream_get_url($ds, $type = 'download') {
else {
return "islandora/object/{$ds->parent->id}/datastream/{$ds->id}/$type";
}
}
function islandora_datastream_edit_get_link($object, $ds_id) {
$edit_registry = module_invoke_all('islandora_edit_datastream_registry', $object, $ds_id);
if (count($edit_registry) > 0 && user_access(FEDORA_METADATA_EDIT)) {
return l(t('edit'), 'islandora/object/' . $object->id . '/datastream/' . $ds_id . '/edit');
}
else {
return '';
}
}
function islandora_edit_datastream($object_id, $ds_id) {
global $user;
try {
module_load_include('inc', 'islandora', 'RestConnection');
$restConnection = new RestConnection($user);
$object = new FedoraObject($object_id, $restConnection->repository);
$edit_registry = module_invoke_all('islandora_edit_datastream_registry', $object, $ds_id);
$edit_count = count($edit_registry);
if ($edit_count == 0) {
// No edit implementations.
drupal_set_message(t('There are no edit methods specified for this datastream.'));
drupal_goto('islandora/object/' . $object->id . '/manage/datastreams');
}
elseif ($edit_count == 1) {
// One registry implementation, go there
drupal_goto($edit_registry[0]['url']);
}
else {
// Multiple edit routes registered
return islandora_edit_datastream_registry_render($edit_registry);
}
} catch (Exception $e) {
drupal_set_message(t('Error getting Islandora edit method for %s ', array('%s' => $object_id)), 'error');
return;
}
}
//@TODO: theme / preprocess
function islandora_edit_datastream_registry_render($edit_registry) {
$output = array(
'#type' => 'markup',
'#markup' => '',
);
foreach ($edit_registry AS $edit_route) {
$output['#markup'] .= l($edit_route['name'], $edit_route['url']) . '<br/>';
}
return $output;
}

4
includes/ingest-menu.inc

@ -22,7 +22,7 @@ function islandora_ingest_callback($collection_pid) {
}
elseif ($registry_count == 1) {
// One registry implementation, go there
drupal_goto($ingest_registry[0]['url'] . "/$collection_pid");
drupal_goto($ingest_registry[0]['url']);
}
else {
// Multiple ingest routes registered
@ -37,7 +37,7 @@ function islandora_ingest_registry_render($ingest_registry) {
'#markup' => '',
);
foreach ($ingest_registry AS $ingest_route) {
$output['#markup'] .= l($ingest_route['name'], $ingest_route['url']. "/$collection_pid") . '<br/>';
$output['#markup'] .= l($ingest_route['name'], $ingest_route['url']) . '<br/>';
}
return $output;
}

4
islandora.module

@ -210,6 +210,7 @@ function islandora_menu() {
'page callback' => 'islandora_edit_datastream',
'page arguments' => array(2, 4),
'type' => MENU_CALLBACK,
'file' => 'includes/datastream.inc',
'access arguments' => array(FEDORA_METADATA_EDIT),
);
@ -672,7 +673,7 @@ function islandora_preprocess_islandora_default_edit(&$variables) {
array('data' => t('Type')),
array('data' => t('Mime type')),
array('data' => t('Size')),
array('data' => t('Operations'), 'colspan' => '2'),
array('data' => t('Operations'), 'colspan' => '3'),
//array('data' => t('Delete')),
);
$table_attributes = array('class' => array('manage-datastreams'));
@ -685,6 +686,7 @@ function islandora_preprocess_islandora_default_edit(&$variables) {
array('class' => 'datastream-mime', 'data' => $ds->mimeType),
array('class' => 'datastream-size', 'data' => islandora_datastream_get_human_readable_size($ds)),
array('class' => 'datastream-download', 'data' => l(t('download'), islandora_datastream_get_url($ds, 'download'))),
array('class' => 'datstream-edit', 'data' => islandora_datastream_edit_get_link($islandora_object, $ds->id)),
array('class' => 'datastream-delete', 'data' => l(t('delete'), $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/' . $ds->id . '/delete')),
);
}

Loading…
Cancel
Save