Browse Source

DS edit link

pull/120/merge
Mitchell MacKenzie 12 years ago
parent
commit
85f7c5dc07
  1. 52
      includes/datastream.inc
  2. 4
      includes/ingest-menu.inc
  3. 4
      islandora.module

52
includes/datastream.inc

@ -385,3 +385,55 @@ function islandora_datastream_get_url($ds, $type = 'download') {
return "islandora/object/{$ds->parent->id}/datastream/{$ds->id}/$type"; 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) { elseif ($registry_count == 1) {
// One registry implementation, go there // One registry implementation, go there
drupal_goto($ingest_registry[0]['url'] . "/$collection_pid"); drupal_goto($ingest_registry[0]['url']);
} }
else { else {
// Multiple ingest routes registered // Multiple ingest routes registered
@ -37,7 +37,7 @@ function islandora_ingest_registry_render($ingest_registry) {
'#markup' => '', '#markup' => '',
); );
foreach ($ingest_registry AS $ingest_route) { 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; return $output;
} }

4
islandora.module

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

Loading…
Cancel
Save