diff --git a/includes/admin.form.inc b/includes/admin.form.inc
index a1f22652..d34bd5d5 100644
--- a/includes/admin.form.inc
+++ b/includes/admin.form.inc
@@ -19,139 +19,111 @@
function islandora_repository_admin(array $form, array &$form_state) {
module_load_include('inc', 'islandora', 'includes/utilities');
drupal_add_css(drupal_get_path('module', 'islandora') . '/css/islandora.admin.css');
+ $url = islandora_system_settings_form_default_value('islandora_base_url', 'http://localhost:8080/fedora', $form_state);
+ $restrict_namespaces = islandora_system_settings_form_default_value('islandora_namespace_restriction_enforced', FALSE, $form_state);
+ $confirmation_message = islandora_admin_settings_form_repository_access_message($url);
+ $form = array(
+ 'islandora_tabs' => array(
+ '#type' => 'vertical_tabs',
+ 'islandora_general' => array(
+ '#type' => 'fieldset',
+ '#title' => t('General Configuarion'),
+ 'wrapper' => array(
+ '#prefix' => '
',
+ '#suffix' => '
',
+ '#type' => 'markup',
+ 'islandora_base_url' => array(
+ '#type' => 'textfield',
+ '#title' => t('Fedora base URL'),
+ '#default_value' => variable_get('islandora_base_url', 'http://localhost:8080/fedora'),
+ '#description' => t('The URL to use for REST connections
!confirmation_message', array(
+ '!confirmation_message' => $confirmation_message)),
+ '#required' => TRUE,
+ '#ajax' => array(
+ 'callback' => 'islandora_update_url_div',
+ 'wrapper' => 'islandora-url',
+ 'effect' => 'fade',
+ 'event' => 'blur',
+ 'progress' => array('type' => 'throbber'),
+ ),
+ ),
+ ),
+ 'islandora_repository_pid' => array(
+ '#type' => 'textfield',
+ '#title' => t('Root Collection PID'),
+ '#default_value' => variable_get('islandora_repository_pid', 'islandora:root'),
+ '#description' => t('The PID of the Root Collection Object'),
+ '#required' => TRUE,
+ ),
+ ),
+ 'islandora_namespace' => array(
+ '#type' => 'fieldset',
+ '#title' => t('Namespaces'),
+ 'islandora_namespace_restriction_enforced' => array(
+ '#type' => 'checkbox',
+ '#title' => t('Enforce namespace restrictions'),
+ '#description' => t("Allow administrator to restrict user's access to the PID namepaces listed below"),
+ '#default_value' => $restrict_namespaces,
+ ),
+ 'islandora_pids_allowed' => array(
+ '#type' => 'textfield',
+ '#title' => t('PID namespaces allowed in this Drupal install'),
+ '#description' => t('A list of PID namespaces, separated by spaces, that users are permitted to access from this Drupal installation.
This could be more than a simple namespace, e.g. demo:mydemos.
The namespace islandora: is reserved, and is always allowed.'),
+ '#default_value' => variable_get('islandora_pids_allowed', 'default: demo: changeme: ilives: islandora-book: books: newspapers: '),
+ '#states' => array(
+ 'invisible' => array(
+ ':input[name="islandora_namespace_restriction_enforced"]' => array('checked' => FALSE),
+ ),
+ ),
+ ),
+ ),
+ ),
+ );
+ return system_settings_form($form);
+}
- $form = array();
- if (isset($form_state['values']['islandora_base_url'])) {
- $url = $form_state['values']['islandora_base_url'];
- }
- else {
- $url = variable_get('islandora_base_url', 'http://localhost:8080/fedora');
- }
-
+/**
+ * Gets a message which describes if the repository is accessible.
+ *
+ * Also describes if the user is considered an authenticated user by the
+ * repository.
+ *
+ * @param string $url
+ * The url to the Fedora Repository.
+ *
+ * @return string
+ * A message describing the accessibility of the repository at the given url.
+ */
+function islandora_admin_settings_form_repository_access_message($url) {
+ $info = $dc = FALSE;
$connection = islandora_get_tuque_connection(NULL, $url);
- if (!$connection) {
- return;
- }
-
- try {
- $info = $connection->api->a->describeRepository();
- }
- catch (RepositoryException $e) {
- $info = FALSE;
- }
-
- if ($info) {
+ if ($connection) {
try {
+ $info = $connection->api->a->describeRepository();
+ // If we are able to successfully call API-M::getDatastream, assume we are
+ // an authenticated user, as API-M is usally locked down.
$dc = $connection->api->m->getDatastream('fedora-system:ContentModel-3.0', 'DC');
}
catch (RepositoryException $e) {
- $dc = FALSE;
+ // Ignore, we only testing to see what is accessible.
}
}
-
- if ($info) {
- if ($dc) {
- $confirmation_message = theme_image(array('path' => 'misc/watchdog-ok.png', 'attributes' => array()));
- $confirmation_message .= t('Successfully connected to Fedora Server (Version !version).', array(
- '!version' => $info['repositoryVersion']));
- }
- else {
- $confirmation_message = theme_image(array('path' => 'misc/watchdog-warning.png', 'attributes' => array()));
- $confirmation_message .= t('Unable to authenticate when connecting to to Fedora Server (Version !version). Please configure the !filter.',
- array('!version' => $info['repositoryVersion'], '!filter' => 'Drupal Filter'));
- }
+ if ($info && $dc) {
+ $confirmation_message = theme_image(array('path' => 'misc/watchdog-ok.png', 'attributes' => array()));
+ $confirmation_message .= t('Successfully connected to Fedora Server (Version !version).', array(
+ '!version' => $info['repositoryVersion']));
+ }
+ elseif ($info) {
+ $confirmation_message = theme_image(array('path' => 'misc/watchdog-warning.png', 'attributes' => array()));
+ $confirmation_message .= t('Unable to authenticate when connecting to to Fedora Server (Version !version). Please configure the !filter.', array(
+ '!version' => $info['repositoryVersion'], '!filter' => 'Drupal Filter'));
}
else {
$confirmation_message = theme_image(array('path' => 'misc/watchdog-error.png', 'attributes' => array()));
$confirmation_message .= t('Unable to connect to Fedora server at !islandora_url', array(
'!islandora_url' => $url));
}
-
- $form['islandora_tabs'] = array(
- '#type' => 'vertical_tabs',
- );
-
- $form['islandora_tabs']['islandora_general'] = array(
- '#type' => 'fieldset',
- '#title' => t('General Configuarion'),
- );
-
- // Ajax wrapper for url checking.
- $form['islandora_tabs']['islandora_general']['wrapper'] = array(
- '#prefix' => '',
- '#suffix' => '
',
- '#type' => 'markup',
- );
-
- $form['islandora_tabs']['islandora_general']['wrapper']['islandora_base_url'] = array(
- '#type' => 'textfield',
- '#title' => t('Fedora base URL'),
- '#default_value' => variable_get('islandora_base_url', 'http://localhost:8080/fedora'),
- '#description' => t('The URL to use for REST connections
!confirmation_message', array(
- '!confirmation_message' => $confirmation_message,
- )),
- '#required' => TRUE,
- '#ajax' => array(
- 'callback' => 'islandora_update_url_div',
- 'wrapper' => 'islandora-url',
- 'effect' => 'fade',
- 'event' => 'blur',
- 'progress' => array('type' => 'throbber'),
- ),
- );
-
- $form['islandora_tabs']['islandora_general']['islandora_repository_pid'] = array(
- '#type' => 'textfield',
- '#title' => t('Root Collection PID'),
- '#default_value' => variable_get('islandora_repository_pid', 'islandora:root'),
- '#description' => t('The PID of the Root Collection Object'),
- '#required' => TRUE,
- );
-
- $form['islandora_tabs']['islandora_namespace'] = array(
- '#type' => 'fieldset',
- '#title' => t('Namespaces'),
- );
-
- $form['islandora_tabs']['islandora_namespace']['wrapper'] = array(
- '#type' => 'markup',
- '#prefix' => '',
- '#suffix' => '
',
- );
-
- $form['islandora_tabs']['islandora_namespace']['wrapper']['islandora_namespace_restriction_enforced'] = array(
- '#weight' => -1,
- '#type' => 'checkbox',
- '#title' => t('Enforce namespace restrictions'),
- '#description' => t("Allow administrator to restrict user's access to the PID namepaces listed below"),
- '#default_value' => variable_get('islandora_namespace_restriction_enforced', FALSE),
- '#ajax' => array(
- 'callback' => 'islandora_update_namespace_div',
- 'wrapper' => 'islandora-namespace',
- 'effect' => 'fade',
- 'event' => 'change',
- 'progress' => array('type' => 'throbber'),
- ),
- );
-
- if (isset($form_state['values']['islandora_namespace_restriction_enforced'])) {
- $namespaces = $form_state['values']['islandora_namespace_restriction_enforced'];
- }
- else {
- $namespaces = variable_get('islandora_namespace_restriction_enforced', FALSE);
- }
-
- if ($namespaces) {
- $form['islandora_tabs']['islandora_namespace']['wrapper']['islandora_pids_allowed'] = array(
- '#type' => 'textfield',
- '#title' => t('PID namespaces allowed in this Drupal install'),
- '#default_value' => variable_get('islandora_pids_allowed', 'default: demo: changeme: ilives: islandora-book: books: newspapers: '),
- '#description' => t('A list of PID namespaces, separated by spaces, that users are permitted to access from this Drupal installation.
This could be more than a simple namespace, e.g. demo:mydemos.
The namespace islandora: is reserved, and is always allowed.'),
- '#weight' => 0,
- );
- }
-
- return system_settings_form($form);
+ return $confirmation_message;
}
/**
@@ -168,18 +140,3 @@ function islandora_repository_admin(array $form, array &$form_state) {
function islandora_update_url_div(array $form, array $form_state) {
return $form['islandora_tabs']['islandora_general']['wrapper'];
}
-
-/**
- * Get the element to render for the AJAX event that triggered this callback.
- *
- * @param array $form
- * The Drupal form definition.
- * @param array $form_state
- * The Drupal form state.
- *
- * @return array
- * The form element to render.
- */
-function islandora_update_namespace_div(array $form, array $form_state) {
- return $form['islandora_tabs']['islandora_namespace']['wrapper'];
-}