diff --git a/includes/datastream.inc b/includes/datastream.inc index ece5a45a..8fff2e5a 100644 --- a/includes/datastream.inc +++ b/includes/datastream.inc @@ -294,13 +294,9 @@ function islandora_datastream_get_url(AbstractDatastream $datastream, $type = 'd * The datastream to edit. */ function islandora_edit_datastream(AbstractDatastream $datastream) { - $edit_registry = module_invoke_all('islandora_edit_datastream_registry', $datastream->parent, $datastream); - $context = array( - 'datastream_parent' => $datastream->parent, - 'datastream' => $datastream, - 'original_edit_registry' => $edit_registry, - ); - drupal_alter(ISLANDORA_EDIT_DATASTREAM_MODIFY_REGISTRY_HOOK, $edit_registry, $context); + module_load_include('inc', 'islandora', 'includes/utilities'); + + $edit_registry = islandora_build_datastream_edit_registry($datastream->parent, $datastream); $edit_count = count($edit_registry); switch ($edit_count) { case 0: diff --git a/includes/utilities.inc b/includes/utilities.inc index 8e071def..fa9b7594 100644 --- a/includes/utilities.inc +++ b/includes/utilities.inc @@ -946,3 +946,25 @@ function islandora_deployed_on_windows() { } return FALSE; } + +/** + * Build the edit registry for a given datastream. + * + * @param AbstractObject $object + * The object being edited. + * @param AbstractDatastream $datastream + * The datastream being edited. + * + * @return array + * The built edit registry array. + */ +function islandora_build_datastream_edit_registry($object, $datastream) { + $edit_registry = module_invoke_all('islandora_edit_datastream_registry', $object, $datastream); + $context = array( + 'object' => $object, + 'datastream' => $datastream, + 'original_edit_registry' => $edit_registry, + ); + drupal_alter(ISLANDORA_EDIT_DATASTREAM_MODIFY_REGISTRY_HOOK, $edit_registry, $context); + return $edit_registry; +} diff --git a/islandora.api.php b/islandora.api.php index a23d31be..31f1c055 100644 --- a/islandora.api.php +++ b/islandora.api.php @@ -870,7 +870,7 @@ function hook_islandora_edit_datastream_modify_registry_alter(&$edit_registry, $ // Add custom form to replace the removed form builder edit_form. $edit_registry['somemodule_custom_form'] = array( 'name' => t('Somemodule Custom Form'), - 'url' => "islandora/custom_form/{$context['datastream_parent']->id}/{$context['datastream']->id}", + 'url' => "islandora/custom_form/{$context['object']->id}/{$context['datastream']->id}", 'weight' => 1, ); } diff --git a/theme/theme.inc b/theme/theme.inc index 1ddad1db..cd08ee12 100644 --- a/theme/theme.inc +++ b/theme/theme.inc @@ -533,8 +533,9 @@ function theme_islandora_datastream_revert_link(array $vars) { */ function theme_islandora_datastream_edit_link(array $vars) { $datastream = $vars['datastream']; + module_load_include('inc', 'islandora', 'includes/utilities'); - $edit_registry = module_invoke_all('islandora_edit_datastream_registry', $datastream->parent, $datastream); + $edit_registry = islandora_build_datastream_edit_registry($datastream->parent, $datastream); $can_edit = count($edit_registry) > 0 && islandora_datastream_access(ISLANDORA_METADATA_EDIT, $datastream);