Browse Source

Updated the admin screen more.

pull/122/merge
jonathangreen 13 years ago
parent
commit
63300908af
  1. 58
      admin/islandora.admin.inc
  2. 6
      islandora.module
  3. 4
      islandora_basic_collection/includes/ChildCollection.inc
  4. 8
      islandora_basic_collection/includes/CollectionManagement.inc
  5. 4
      islandora_basic_collection/includes/CollectionManagerTable.inc

58
admin/islandora.admin.inc

@ -74,11 +74,6 @@ function islandora_repository_admin($form, &$form_state) {
), ),
); );
$form['islandora_tabs']['islandora_namespace'] = array(
'#type' => 'fieldset',
'#title' => t('Namespaces'),
);
$form['islandora_tabs']['islandora_general']['islandora_repository_pid'] = array( $form['islandora_tabs']['islandora_general']['islandora_repository_pid'] = array(
'#type' => 'textfield', '#type' => 'textfield',
'#title' => t('Root Collection PID'), '#title' => t('Root Collection PID'),
@ -87,21 +82,48 @@ function islandora_repository_admin($form, &$form_state) {
'#required' => TRUE, '#required' => TRUE,
); );
$form['islandora_tabs']['islandora_namespace']['islandora_namespace_restriction_enforced'] = array( $form['islandora_tabs']['islandora_namespace'] = array(
'#type' => 'fieldset',
'#title' => t('Namespaces'),
);
$form['islandora_tabs']['islandora_namespace']['wrapper'] = array(
'#type' => 'markup',
'#prefix' => '<div id="islandora-namespace">',
'#suffix' => '</div>',
);
$form['islandora_tabs']['islandora_namespace']['wrapper']['islandora_namespace_restriction_enforced'] = array(
'#weight' => -1, '#weight' => -1,
'#type' => 'checkbox', '#type' => 'checkbox',
'#title' => t('Enforce namespace restrictions'), '#title' => t('Enforce namespace restrictions'),
'#description' => t('Allow administrator to restrict user\'s access to the PID namepaces listed below'), '#description' => t('Allow administrator to restrict user\'s access to the PID namepaces listed below'),
'#default_value' => variable_get('islandora_namespace_restriction_enforced', FALSE), '#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'),
),
); );
$form['islandora_tabs']['islandora_namespace']['islandora_pids_allowed'] = array( if(isset($form_state['values']['islandora_namespace_restriction_enforced'])) {
'#type' => 'textfield', $namespaces = $form_state['values']['islandora_namespace_restriction_enforced'];
'#title' => t('PID namespaces allowed in this Drupal install'), }
'#default_value' => variable_get('islandora_pids_allowed', 'default: demo: changeme: ilives: islandora-book: books: newspapers: '), else {
'#description' => t('A space separated list of PID namespaces that users are permitted to access from this Drupal installation. <br /> This could be more than a simple namespace ie demo:mydemos. <br> islandora: is reserved and is always allowed.'), $namespaces = variable_get('islandora_namespace_restriction_enforced', FALSE);
'#weight' => 0, }
);
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 space separated list of PID namespaces that users are permitted to access from this Drupal installation. <br /> This could be more than a simple namespace ie demo:mydemos. <br> islandora: is reserved and is always allowed.'),
'#weight' => 0,
);
}
return system_settings_form($form); return system_settings_form($form);
} }
@ -115,3 +137,13 @@ function islandora_update_url_div($form, $form_state) {
return $form['islandora_tabs']['islandora_general']['wrapper']; return $form['islandora_tabs']['islandora_general']['wrapper'];
} }
/**
* Checks url validity and refreshes requestHandler dropdown list
*/
function islandora_update_namespace_div($form, $form_state) {
unset($form_state['submit_handlers']);
$form_state['rebuild'] = TRUE;
return $form['islandora_tabs']['islandora_namespace']['wrapper'];
}

6
islandora.module

@ -56,7 +56,7 @@ function islandora_menu() {
'file' => 'admin/islandora.admin.inc', 'file' => 'admin/islandora.admin.inc',
'access arguments' => array('administer site configuration'), 'access arguments' => array('administer site configuration'),
'type' => MENU_NORMAL_ITEM, 'type' => MENU_NORMAL_ITEM,
'weight' => 0, 'weight' => -1,
); );
$items['islandora/ingest/%'] = array( $items['islandora/ingest/%'] = array(
@ -238,14 +238,14 @@ function islandora_node_access($op, $pid = NULL, $as_user = NULL) {
$pid = variable_get('fedora_repository_pid', 'islandora:root'); $pid = variable_get('fedora_repository_pid', 'islandora:root');
} }
$isRestricted = variable_get('fedora_namespace_restriction_enforced', TRUE); $isRestricted = variable_get('islandora_namespace_restriction_enforced', FALSE);
$namespace_access = NULL; $namespace_access = NULL;
if (!$isRestricted) { if (!$isRestricted) {
$namespace_access = TRUE; $namespace_access = TRUE;
} }
else { else {
$pid_namespace = substr($pid, 0, strpos($pid, ':') + 1); //Get the namespace (with colon) $pid_namespace = substr($pid, 0, strpos($pid, ':') + 1); //Get the namespace (with colon)
$allowed_namespaces = explode(" ", variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: islandora-book: books: newspapers: ')); $allowed_namespaces = explode(" ", variable_get('islandora_pids_allowed', 'default: demo: changeme: islandora: ilives: islandora-book: books: newspapers: '));
$namespace_access = in_array($pid_namespace, $allowed_namespaces); $namespace_access = in_array($pid_namespace, $allowed_namespaces);
} }

4
islandora_basic_collection/includes/ChildCollection.inc

@ -18,9 +18,9 @@ function islandora_create_child_collection_form($form, &$form_state, $this_colle
$rest_connection = new RestConnection(); $rest_connection = new RestConnection();
$restricted = FALSE; $restricted = FALSE;
if (variable_get('fedora_namespace_restriction_enforced', TRUE)) { if (variable_get('islandora_namespace_restriction_enforced', FALSE)) {
$restricted = TRUE; $restricted = TRUE;
$allowed_string = variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora:'); $allowed_string = variable_get('islandora_pids_allowed', 'default: demo: changeme: islandora:');
$namespaces = explode(':', $allowed_string); $namespaces = explode(':', $allowed_string);
foreach ($namespaces as $namespace) { foreach ($namespaces as $namespace) {
if ($namespace) { if ($namespace) {

8
islandora_basic_collection/includes/CollectionManagement.inc

@ -136,14 +136,14 @@ function get_related_items_as_array($collection_pid, $relationship = array('isMe
function fedora_repository_access($permission, $pid) { function fedora_repository_access($permission, $pid) {
global $user; global $user;
$name_space_access = FALSE; $name_space_access = FALSE;
$is_restricted = variable_get('islandora_namespace_restriction_enforced', TRUE); $is_restricted = variable_get('islandora_namespace_restriction_enforced', FALSE);
if (!$is_restricted) { if (!$is_restricted) {
$name_space_access = TRUE; $name_space_access = TRUE;
} }
if ($pid == NULL) { if ($pid == NULL) {
$pid = variable_get('islandora_repository_pid', 'islandora:root'); $pid = variable_get('islandora_repository_pid', 'islandora:root');
} }
$name_space_allowed = explode(" ", variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: islandora-book: books: newspapers: ')); $name_space_allowed = explode(" ", variable_get('islandora_pids_allowed', 'default: demo: changeme: islandora: ilives: islandora-book: books: newspapers: '));
$pos = NULL; $pos = NULL;
foreach ($name_space_allowed as $name_space) { foreach ($name_space_allowed as $name_space) {
$pos = stripos($pid, $name_space); $pos = stripos($pid, $name_space);
@ -208,8 +208,8 @@ function get_content_models_as_option_array() {
$rest_connection = new RestConnection(); $rest_connection = new RestConnection();
require_once 'sites/all/libraries/tuque/RepositoryQuery.php'; require_once 'sites/all/libraries/tuque/RepositoryQuery.php';
$restricted = variable_get('fedora_namespace_restriction_enforced', TRUE); $restricted = variable_get('islandora_namespace_restriction_enforced', FALSE);
$allowed_string = variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora:'); $allowed_string = variable_get('islandora_pids_allowed', 'default: demo: changeme: islandora:');
$namespaces = explode(':', $allowed_string); $namespaces = explode(':', $allowed_string);
foreach ($namespaces as $namespace) { foreach ($namespaces as $namespace) {
if ($namespace) { if ($namespace) {

4
islandora_basic_collection/includes/CollectionManagerTable.inc

@ -90,8 +90,8 @@ function get_collections_as_option_array() {
module_load_include('inc', 'islandora', 'RestConnection'); module_load_include('inc', 'islandora', 'RestConnection');
require_once 'sites/all/libraries/tuque/RepositoryQuery.php'; require_once 'sites/all/libraries/tuque/RepositoryQuery.php';
$restricted = variable_get('fedora_namespace_restriction_enforced', TRUE); $restricted = variable_get('islandora_namespace_restriction_enforced', FALSE);
$allowed_string = variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora:'); $allowed_string = variable_get('islandora_pids_allowed', 'default: demo: changeme: islandora:');
$namespaces = explode(':', $allowed_string); $namespaces = explode(':', $allowed_string);
$rest_connection = new RestConnection(); $rest_connection = new RestConnection();

Loading…
Cancel
Save