diff --git a/ObjectHelper.inc b/ObjectHelper.inc index 50dda484..afc78f3f 100644 --- a/ObjectHelper.inc +++ b/ObjectHelper.inc @@ -498,8 +498,9 @@ class ObjectHelper { $allow= fedora_fesl_check_roles($object_pid,'write'); } if ($allow) { - $purgeObject = '' . t('Purge Object') . '' . t('Purge Object') . ''; + //$purgeObject = '' . t('Purge Object') . '' . t('Purge Object') . ''; + $purgeObject = drupal_get_form('fedora_repository_purge_object_form', $object_pid, check_plain(substr(request_uri(), strlen(base_path())))); } } else { $purgeObject = ' '; @@ -731,7 +732,7 @@ class ObjectHelper { // $ingestObject = ' $collectionName, '!collection_pid' => $collection_pid)) . '" href="' . base_path() . 'fedora/ingestObject/' . $collection_pid . '/' . $collectionName . '">' . t('Add a New Object') . '' . t('Add to this Collection') . ''; + '/images/ingest.png" alt="' . t('Add a New Object') . '" class="icon">' . t(' Add to this Collection'); } } } diff --git a/fedora_repository.module b/fedora_repository.module index c881e854..5de1abc0 100644 --- a/fedora_repository.module +++ b/fedora_repository.module @@ -62,6 +62,7 @@ function fedora_repository_purge_object($pid = NULL, $name = NULL) { '%name' => $name, '%pid' => $pid) ); + $output .= drupal_get_form('fedora_repository_purge_object_form', $pid); return $output; } @@ -233,20 +234,41 @@ function fedora_repository_ingest_form(&$form_state, $collection_pid, $collectio return $ingestForm->createIngestForm($collection_pid, $collection_label, $form_state); } -function fedora_repository_purge_object_form(&$form_state, $pid, $collectionPid = NULL) { +function fedora_repository_purge_object_form(&$form_state, $pid, $referrer) { + global $base_url; + // $form['#redirect'] = "fedora/repository/$collectionPid/"; $form['pid'] = array( '#type' => 'hidden', '#value' => "$pid" ); + if (!strstr( drupal_get_destination(), urlencode('fedora/repository'))) { + $form['referrer'] = array( + '#type' => 'hidden', + '#value' => $referrer, + ); + } + if(!isset($form_state['storage']['confirm'])) { + // do your normal $form definition here - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Purge') - ); - if ($collectionPid == NULL) { - $collectionPid = $_SESSION['fedora_collection']; + + $form['submit'] = array( + '#type' => 'image_button', + '#src' => drupal_get_path('module', 'fedora_repository').'/images/purge_big.png', + '#value' => t('Purge'), + '#suffix' => 'Purge this object', + ); + if ($collectionPid == NULL) { + $collectionPid = $_SESSION['fedora_collection']; + } + //$form['#redirect'] = $referrer; + + return $form; + } + else { + // ALSO do $form definition here. Your final submit handler (after user clicks Yes, I Confirm) will only see $form_state info defined here. Form you create here passed as param1 to confirm_form + + return confirm_form($form, 'Confirm Purge Object', $referrer, 'Are you sure you want to delete this object? This action cannot be undone.', 'Delete', 'Cancel'); //Had better luck leaving off last param 'name' } - // $form['#redirect'] = "fedora/repository/$collectionPid/"; return $form; } @@ -384,31 +406,40 @@ function fedora_repository_purge_object_form_submit($form, &$form_state) { module_load_include('inc', 'fedora_repository', 'ConnectionHelper'); //$client = getSoapClient(variable_get('fedora_soap_manage_url', 'http://localhost:8080/fedora/services/management?wsdl')); $pid = $form_state['values']['pid']; - - $params = array( - "pid" => $pid, - "logMessage" => "Purged", - "force" => "" - ); - try { - $soapHelper = new ConnectionHelper(); - $client = $soapHelper->getSoapClient(variable_get('fedora_soap_manage_url', 'http://localhost:8080/fedora/services/management?wsdl')); - $object = $client->__soapCall('purgeObject', array( - $params - ) + if (!isset($form_state['storage']['confirm'])) { + $form_state['storage']['confirm'] = TRUE; // this will cause the form to be rebuilt, entering the confirm part of the form + $form_state['rebuild'] = TRUE; // along with this + } + else { + // this is where you do your processing after they have pressed the confirm button + $params = array( + "pid" => $pid, + "logMessage" => "Purged", + "force" => "" ); - } catch (exception $e) { - if (preg_match('/org\.fcrepo\.server\.security\.xacml\.pep\.AuthzDeniedException/',$e->getMessage())) { - drupal_set_message(t('Error: Insufficient permissions to purge object.'), 'error'); - } else { - drupal_set_message(t($e->getMessage()), 'error'); + try { + $soapHelper = new ConnectionHelper(); + $client = $soapHelper->getSoapClient(variable_get('fedora_soap_manage_url', 'http://localhost:8080/fedora/services/management?wsdl')); + $object = $client->__soapCall('purgeObject', array($params)); + unset($form_state['storage']['confirm']); + } catch (exception $e) { + if (preg_match('/org\.fcrepo\.server\.security\.xacml\.pep\.AuthzDeniedException/', $e->getMessage())) { + drupal_set_message(t('Error: Insufficient permissions to purge object.'), 'error'); + } else { + drupal_set_message(t($e->getMessage()), 'error'); + } + return; + } + if (empty($collectionPid)) { + $collectionPid = $_SESSION['fedora_collection']; + } + if (!empty($form_state['values']['referrer'])) { + $form_state['redirect'] = $form_state['values']['referrer']; + } + else { + $form_state['redirect'] = "fedora/repository/$collectionPid/"; } - return; - } - if (empty($collectionPid)) { - $collectionPid = $_SESSION['fedora_collection']; } - $form_state['redirect'] = "fedora/repository/$collectionPid/"; } function fedora_repository_purge_stream_form(&$form_state, $pid, $dsId) { diff --git a/plugins/pidfield/pidfield.module b/plugins/pidfield/pidfield.module index 53e176a2..d9c475fc 100644 --- a/plugins/pidfield/pidfield.module +++ b/plugins/pidfield/pidfield.module @@ -281,7 +281,7 @@ function theme_pidfield_formatter_default($element) { $item = new Fedora_Item($pid); return fedora_repository_get_items($pid); - //return $item->objectProfile->objLabel; + } return null; }