From 38833546e3e945b0ad8b0f78e25974054a1c8bfb Mon Sep 17 00:00:00 2001 From: Alan Stanley Date: Wed, 12 Jan 2011 12:11:54 -0400 Subject: [PATCH] added path to admin page for admin users only on page denied error. --- fedora_repository.module | 70 +++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/fedora_repository.module b/fedora_repository.module index 9f7a2ae2..d4134410 100644 --- a/fedora_repository.module +++ b/fedora_repository.module @@ -105,7 +105,6 @@ function fedora_repository_ingest_object($collection_pid=NULL, $collection_label drupal_set_message(t("This collection PID $collection_pid is not valid"), 'error'); return ' '; } - } if ($collection_pid == NULL) { @@ -145,7 +144,7 @@ function fedora_repository_ingest_form_submit($form, &$form_state) { $form_state['values']['content_model_pid'] = $contentModelPid; $form_state['values']['relationship'] = $relationship; - $err = (!$cm->execFormHandler($form_state['values'],$form_state)); + $err = (!$cm->execFormHandler($form_state['values'], $form_state)); $_SESSION['fedora_ingest_files'] = ''; //empty this variable @@ -241,19 +240,19 @@ function fedora_repository_purge_object_form(&$form_state, $pid, $referrer) { '#type' => 'hidden', '#value' => "$pid" ); - if (!strstr( drupal_get_destination(), urlencode('fedora/repository'))) { + if (!strstr(drupal_get_destination(), urlencode('fedora/repository'))) { $form['referrer'] = array( '#type' => 'hidden', '#value' => $referrer, ); } - if(!isset($form_state['storage']['confirm'])) { + if (!isset($form_state['storage']['confirm'])) { // do your normal $form definition here $form['submit'] = array( '#type' => 'image_button', - '#src' => drupal_get_path('module', 'fedora_repository').'/images/purge_big.png', + '#src' => drupal_get_path('module', 'fedora_repository') . '/images/purge_big.png', '#value' => t('Purge'), '#suffix' => 'Purge this object', ); @@ -261,10 +260,9 @@ function fedora_repository_purge_object_form(&$form_state, $pid, $referrer) { $collectionPid = $_SESSION['fedora_collection']; } //$form['#redirect'] = $referrer; - + return $form; - } - else { + } 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' @@ -409,8 +407,7 @@ function fedora_repository_purge_object_form_submit($form, &$form_state) { 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 { + } else { // this is where you do your processing after they have pressed the confirm button $params = array( "pid" => $pid, @@ -435,8 +432,7 @@ function fedora_repository_purge_object_form_submit($form, &$form_state) { } if (!empty($form_state['values']['referrer'])) { $form_state['redirect'] = $form_state['values']['referrer']; - } - else { + } else { $form_state['redirect'] = "fedora/repository/$collectionPid/"; } } @@ -757,17 +753,23 @@ function fedora_repository_get_items($pid = NULL, $dsId = NULL, $collection = NU module_load_include('inc', 'fedora_repository', 'api/fedora_utils'); global $user; - if ($pid &!validPid($pid)) { + if ($pid & !validPid($pid)) { drupal_set_message(t("Invalid PID!"), 'error'); return ' '; } - if ($dsId &!validDsid($dsId)) { + if ($dsId & !validDsid($dsId)) { drupal_set_message(t("Invalid dsID!"), 'error'); return ' '; } if (!fedora_repository_access(OBJECTHELPER::$OBJECT_HELPER_VIEW_FEDORA, $pid, $user)) { - drupal_set_message(t("You do not have access to Fedora objects within the attempted namespace or access to Fedora denied!"), 'error'); + //drupal_set_message(t("You do not have access to Fedora objects within the attempted namespace or access to Fedora denied"), 'error'); + + if (user_access('access administration pages')) { + drupal_set_message(t("PIDs may be added to allowed namespaces, or all namespace restrictions removed !here", array('!here' => l('here', 'admin/settings/fedora_repository'))), 'warning'); + } + drupal_access_denied(); + exit; return ' '; } @@ -841,11 +843,16 @@ function repository_page($pid = NULL, $dsId = NULL, $collection = NULL, $pageNum } function repository_service($pid = NULL, $servicePid = NULL, $serviceMethod = NULL) { - module_load_include('inc','fedora_repository', 'api/fedora_item'); - module_load_include('inc','fedora_repository', 'ObjectHelper'); + module_load_include('inc', 'fedora_repository', 'api/fedora_item'); + module_load_include('inc', 'fedora_repository', 'ObjectHelper'); global $user; + if (!fedora_repository_access(OBJECTHELPER::$OBJECT_HELPER_VIEW_FEDORA, $pid, $user)) { - drupal_set_message(t("You do not have access to Fedora objects within the attempted namespace or access to Fedora denied!"), 'error'); + //drupal_set_message(t("You do not have access to Fedora objects within the attempted namespace or access to Fedora denied"), 'error'); + drupal_access_denied(); + if (user_access('access administration pages')) { + drupal_set_message(t("PIDs may be added to allowed namespaces, or all namespace restrictions removed !here", array('!here' => l('here', 'admin/settings/fedora_repository'))), 'error'); + } return ' '; } if ($pid == NULL) { @@ -858,15 +865,13 @@ function repository_service($pid = NULL, $servicePid = NULL, $serviceMethod = NU return ' '; } - - $item = new Fedora_Item($pid); - if ($item !== false) - { - echo $item->get_dissemination($servicePid,$serviceMethod); + + $item = new Fedora_Item($pid); + if ($item !== false) { + echo $item->get_dissemination($servicePid, $serviceMethod); } exit(); - } //Search Stuff ******************************************************************** @@ -961,7 +966,7 @@ function fedora_repository_search($op = 'search', $keys = NULL) { */ function fedora_repository_search_page($resultData) { $path = drupal_get_path('module', 'fedora_repository'); - $isRestricted = variable_get('fedora_namespace_restriction_enforced',TRUE); + $isRestricted = variable_get('fedora_namespace_restriction_enforced', TRUE); $proc = NULL; if (!$resultData[0][0]['data']) { return ''; //no results @@ -987,13 +992,12 @@ function fedora_repository_search_page($resultData) { $proc->setParameter('', 'allowedPidNameSpaces', variable_get('fedora_pids_allowed', 'default: demo: changeme: Islandora: ilives: ')); $proc->registerPHPFunctions(); $xsl = new DomDocument(); - if($isRestricted){ + if ($isRestricted) { $xsl->load($path . '/xsl/results.xsl'); - } - else{ + } else { $xsl->load($path . '/xsl/unfilteredresults.xsl'); } - + $input = new DomDocument(); $didLoadOk = $input->loadXML(utf8_encode($resultData[0][0]['data'])); @@ -1280,7 +1284,7 @@ function fedora_repository_demo_objects_form() { } } else { $form['install_demos']['smileynote'] = array( - '#value' => '

If you install the '.l('fedora demo objects', 'https://wiki.duraspace.org/display/FCR30/Demonstration+Objects').' Islandora can display them as a collection.

' + '#value' => '

If you install the ' . l('fedora demo objects', 'https://wiki.duraspace.org/display/FCR30/Demonstration+Objects') . ' Islandora can display them as a collection.

' ); } @@ -1295,11 +1299,11 @@ function fedora_repository_demo_objects_form() { '#prefix' => '

Demo collections already installed in this repository:

', ); - + if (!empty($existing_demos)) { foreach ($existing_demos as $pid => $demo_object) { - - $form['existing_demos'][$demo_object->pid] = array ( + + $form['existing_demos'][$demo_object->pid] = array( '#prefix' => '
  • ', '#value' => l($demo_object->pid, $demo_object->url()), '#suffix' => '
  • ',