diff --git a/includes/datastream.inc b/includes/datastream.inc index 55edacbb..598050ff 100644 --- a/includes/datastream.inc +++ b/includes/datastream.inc @@ -42,7 +42,7 @@ function islandora_datastream_as_attachment($object_id, $dsid) { } -function islandora_get_datastream_parents($islandora_object) { +function islandora_datastream_get_parents($islandora_object) { $parent_collections = array(); $repository = $islandora_object->repository; $collections1 = $islandora_object->relationships->get(FEDORA_RELS_EXT_URI, 'isMemberOfCollection'); diff --git a/includes/object_properties.inc b/includes/object_properties.inc index 97dd20a4..3da73a05 100644 --- a/includes/object_properties.inc +++ b/includes/object_properties.inc @@ -53,6 +53,11 @@ function islandora_edit_properties_form_submit($form, &$form_state) { } } +function islandora_edit_properties_form_delete($form, &$form_state) { + $islandora_object = $form_state['values']['pid']; + drupal_goto("islandora/object/$islandora_object/delete"); +} + /** * * @param array $form @@ -99,6 +104,11 @@ function islandora_edit_properties_form($form, &$form_state, $object_id) { '#type' => 'submit', '#value' => 'Update Properties', ); + $form['delete'] = array( + '#type' => 'submit', + '#value' => t('Delete'), + '#submit' => array('islandora_edit_properties_form_delete'), + ); return $form; } diff --git a/islandora.module b/islandora.module index 81df4139..50cb36ba 100644 --- a/islandora.module +++ b/islandora.module @@ -58,31 +58,6 @@ function islandora_menu() { 'type' => MENU_NORMAL_ITEM, 'weight' => 0, ); - /* may not need this - $items['admin/islandora/solution_packs'] = array( - 'title' => 'Solution Packs', - 'description' => 'Install content models and collections required by installed solution packs.', - 'page callback' => 'islandora_solution_packs_page', - 'access arguments' => array(FEDORA_ADD_DS), - 'file' => 'admin/islandora.solutionpacks.inc', - 'type' => MENU_NORMAL_ITEM, - ); */ - - $items['islandoracm.xsd'] = array( - 'title' => 'Islandora Content Model XML Schema Definition', - 'page callback' => 'islandora_display_schema', - 'page arguments' => array('islandoracm.xsd'), - 'type' => MENU_CALLBACK, - 'access arguments' => array(FEDORA_VIEW), - ); - - $items['collection_policy.xsd'] = array( - 'title' => 'Islandora Content Model XML Schema Definition', - 'page callback' => 'islandora_display_schema', - 'page arguments' => array('collection_policy.xsd'), - 'type' => MENU_CALLBACK, - 'access arguments' => array(FEDORA_VIEW), - ); $items['islandora/ingest/%'] = array( 'title' => 'Ingest object', @@ -154,9 +129,9 @@ function islandora_menu() { ); $items['islandora/object/%/delete'] = array( - 'title' => 'Purge object', - 'page callback' => 'islandora_purge_object', - 'page arguments' => array(2), + 'title' => 'Delete object', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('islandora_purge_object', 2), 'type' => MENU_CALLBACK, 'access arguments' => array(FEDORA_PURGE), ); @@ -294,7 +269,10 @@ function islandora_node_access($op, $pid = NULL, $as_user = NULL) { * ID of the object * @return type */ -function islandora_purge_object($object_id) { +function islandora_purge_object_submit($form, &$form_state) { + $object_id = $form_state['values']['pid']; + $collection = $form_state['values']['col']; + module_load_include('inc', 'islandora', 'RestConnection'); global $user; if (!isset($object_id)) { @@ -331,7 +309,38 @@ function islandora_purge_object($object_id) { } } module_invoke_all('islandora_post_purge_object', $object_id, $content_models); //notify modules post deletion - drupal_goto('islandora'); + drupal_goto($collection); +} + +function islandora_purge_object($form, &$form_state, $pid) { + + module_load_include('inc', 'islandora', 'RestConnection'); + module_load_include('inc', 'islandora', 'includes/datastream'); + + $connection = new RestConnection(); + $object = $connection->repository->getObject($pid); + $parent = islandora_datastream_get_parents($object); + $key = array_keys($parent); + + if(count($key) > 0) { + $redirect = "islandora/object/$key[0]"; + } + else { + $redirect = "islandora"; + } + + + // Always provide entity id in the same form key as in the entity edit form. + $form['pid'] = array('#type' => 'value', '#value' => $pid); + $form['col'] = array('#type' => 'value', '#value' => $redirect); + + return confirm_form($form, + t('Are you sure you want to delete %title?', array('%title' => $object->label)), + "islandora/object/$pid", + t('This action cannot be undone.'), + t('Delete'), + t('Cancel') + ); } /** @@ -600,7 +609,7 @@ function islandora_preprocess_islandora_default(&$variables) { module_load_include('inc', 'islandora', 'includes/utilities'); module_load_include('inc', 'islandora', 'includes/datastream'); - $variables['parent_collections'] = islandora_get_datastream_parents($islandora_object); + $variables['parent_collections'] = islandora_datastream_get_parents($islandora_object); $datastreams = array(); foreach ($islandora_object as $ds) { diff --git a/islandora_basic_image/islandora-basic-image.tpl.php b/islandora_basic_image/islandora-basic-image.tpl.php index 44228a7c..73c79ae2 100644 --- a/islandora_basic_image/islandora-basic-image.tpl.php +++ b/islandora_basic_image/islandora-basic-image.tpl.php @@ -21,11 +21,11 @@ * along with the program. If not, see . */ ?> - +
- + TRUE)); ?>

diff --git a/islandora_basic_image/islandora_basic_image.module b/islandora_basic_image/islandora_basic_image.module index a980c44c..890767c9 100644 --- a/islandora_basic_image/islandora_basic_image.module +++ b/islandora_basic_image/islandora_basic_image.module @@ -234,10 +234,11 @@ function islandora_basic_image_preprocess_islandora_basic_image(&$variables) { $variables['dc_array'] = $dc_object->as_formatted_array(); $variables['islandora_object_label'] = $islandora_object->label; $variables['theme_hook_suggestions'][] = 'islandora_basic_image__' . str_replace(':', '_', $islandora_object->id); - $variables['parent_collections'] = islandora_get_datastream_parents($islandora_object); + $variables['parent_collections'] = islandora_datastream_get_parents($islandora_object); global $base_url; if (isset($islandora_object['OBJ'])) { $full_size_url = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/OBJ/view'; + $variables['islandora_full_url'] = $full_size_url; $variables['islandora_full_img'] = ''; } if (isset($islandora_object['TN'])) {