Browse Source

Merge branch '7.x' of github.com:Islandora/islandora into 7.x

pull/122/merge
Paul Pound 13 years ago
parent
commit
40a7f806fe
  1. 0
      islandora_basic_collection/includes/change_content_models.inc
  2. 22
      islandora_basic_collection/includes/child_collection.inc
  3. 170
      islandora_basic_collection/includes/collection_management.inc
  4. 2
      islandora_basic_collection/includes/collection_manager_table.inc
  5. 2
      islandora_basic_collection/includes/delete_collection.inc
  6. 16
      islandora_basic_collection/includes/manage_policies.inc
  7. 2
      islandora_basic_collection/includes/move_collection.inc
  8. 16
      islandora_basic_collection/islandora_basic_collection.module
  9. 34
      islandora_basic_image/islandora-basic-image.tpl.php

0
islandora_basic_collection/includes/ChangeContentModels.inc → islandora_basic_collection/includes/change_content_models.inc

22
islandora_basic_collection/includes/ChildCollection.inc → islandora_basic_collection/includes/child_collection.inc

@ -15,8 +15,28 @@
*/ */
function islandora_create_child_collection_form($form, &$form_state, $this_collection_pid) { function islandora_create_child_collection_form($form, &$form_state, $this_collection_pid) {
module_load_include('inc', 'islandora', 'RestConnection'); module_load_include('inc', 'islandora', 'RestConnection');
module_load_include('inc', 'islandora_basic_collection', 'includes/CollectionPolicy');
$rest_connection = new RestConnection(); $rest_connection = new RestConnection();
$collection_object = new FedoraObject($this_collection_pid, $rest_connection->repository);
$policy_datastream = $collection_object->getDatastream(variable_get('Islandora_Collection_Policy_DSID', 'COLLECTION_POLICY'));
$collection_policy = new CollectionPolicy($policy_datastream->content);
$current_content_models = $collection_policy->getContentModels();
$collection_content_model_exists = FALSE;
foreach ($current_content_models as $current_content_model) {
if ($current_content_model['pid'] == 'islandora:collectionCModel') {
$collection_content_model_exists = TRUE;
}
}
if (!$collection_content_model_exists) {
$form['not_collection'] = array(
'#type' => 'item',
'#title' => t("This object can't contain child collections. To fix this add the islandora:collectionCModel to this object's collection policy"),
);
return $form;
}
$restricted = FALSE; $restricted = FALSE;
if (variable_get('fedora_namespace_restriction_enforced', TRUE)) { if (variable_get('fedora_namespace_restriction_enforced', TRUE)) {
$restricted = TRUE; $restricted = TRUE;

170
islandora_basic_collection/includes/CollectionManagement.inc → islandora_basic_collection/includes/collection_management.inc

@ -25,7 +25,7 @@ where (\$object <info:fedora/fedora-system:def/relations-external#isMemberOf> <i
$model_pids = $rest_connection->repository->ri->itqlQuery($query, 'unlimited', '0'); $model_pids = $rest_connection->repository->ri->itqlQuery($query, 'unlimited', '0');
$represented_models = array(); $represented_models = array();
foreach ($model_pids as $model_pid) { foreach ($model_pids as $model_pid) {
if ($model_pid['model']['value'] && $model_pid['model']['value'] != 'fedora-system:FedoraObject-3.0') { if ($model_pid['model']['value'] && $model_pid['model']['value'] != 'fedora-system:FedoraObject-3.0') {
$fedora_object = new FedoraObject($model_pid['model']['value'], $rest_connection->repository); $fedora_object = new FedoraObject($model_pid['model']['value'], $rest_connection->repository);
$content_model_title = $fedora_object->label; $content_model_title = $fedora_object->label;
@ -67,7 +67,6 @@ function islandora_collections_get_collection_from_pid($pid) {
return $object_pids; return $object_pids;
} }
/** /**
* Returns an array of pids that match the query contained in the collection * Returns an array of pids that match the query contained in the collection
* object's QUERY datastream or in the suppled $query parameter. * object's QUERY datastream or in the suppled $query parameter.
@ -79,9 +78,9 @@ function get_related_items_as_array($collection_pid, $relationship = array('isMe
module_load_include('inc', 'islandora', 'RestConnection'); module_load_include('inc', 'islandora', 'RestConnection');
$rest_connection = new RestConnection(); $rest_connection = new RestConnection();
require_once 'sites/all/libraries/tuque/RepositoryQuery.php'; require_once 'sites/all/libraries/tuque/RepositoryQuery.php';
global $user; global $user;
// Not sure if this is necessary given that we should never be able to delete objects in a namespace that we don't have access to. // Not sure if this is necessary given that we should never be able to delete objects in a namespace that we don't have access to.
// if (!fedora_repository_access('view fedora repository', $collection_pid['object']['value'])) { // if (!fedora_repository_access('view fedora repository', $collection_pid['object']['value'])) {
// 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');
@ -118,85 +117,84 @@ function get_related_items_as_array($collection_pid, $relationship = array('isMe
$query_string .= ') $query_string .= ')
minus $content <mulgara:is> <info:fedora/fedora-system:FedoraObject-3.0> minus $content <mulgara:is> <info:fedora/fedora-system:FedoraObject-3.0>
order by ' . $orderby; order by ' . $orderby;
$results = $rest_connection->repository->ri->itqlQuery($query_string, $limit, $offset); $results = $rest_connection->repository->ri->itqlQuery($query_string, $limit, $offset);
return $results; return $results;
} }
/**
/** * determines whether we can see the object or not
* determines whether we can see the object or not * checks PID namespace permissions, and user permissions
* checks PID namespace permissions, and user permissions * @global type $user
* @global type $user * @param type $op
* @param type $op * @param type $pid
* @param type $pid * @return type
* @return type */
*/ 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', TRUE); if (!$is_restricted) {
if (!$is_restricted) { $name_space_access = TRUE;
}
if ($pid == NULL) {
$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: '));
$pos = NULL;
foreach ($name_space_allowed as $name_space) {
$pos = stripos($pid, $name_space);
if ($pos === 0) {
$name_space_access = TRUE; $name_space_access = TRUE;
} }
if ($pid == NULL) { }
$pid = variable_get('islandora_repository_pid', 'islandora:root'); if ($name_space_access) {
} $user_access = user_access($permission);
$name_space_allowed = explode(" ", variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: islandora-book: books: newspapers: ')); if ($user_access == NULL) {
$pos = NULL;
foreach ($name_space_allowed as $name_space) {
$pos = stripos($pid, $name_space);
if ($pos === 0) {
$name_space_access = TRUE;
}
}
if ($name_space_access) {
$user_access = user_access($permission);
if ($user_access == NULL) {
return FALSE;
}
return $user_access;
}
else {
return FALSE; return FALSE;
} }
return $user_access;
} }
else {
return FALSE;
}
}
/** /**
* gets the name of the content models for the specified object * gets the name of the content models for the specified object
* this now returns an array of pids as in Fedora 3 we can have more then one Cmodel for an object * this now returns an array of pids as in Fedora 3 we can have more then one Cmodel for an object
* @param type $pid * @param type $pid
* @param type $include_fedora_system_content_models * @param type $include_fedora_system_content_models
* @return array * @return array
*/ */
function get_content_models_list($pid, $include_fedora_system_content_models = FALSE) { function get_content_models_list($pid, $include_fedora_system_content_models = FALSE) {
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';
$rest_connection = new RestConnection(); $rest_connection = new RestConnection();
$pids = array(); $pids = array();
$query = 'select $object from <#ri> $query = 'select $object from <#ri>
where <info:fedora/' . $pid . '> <fedora-model:hasModel> $object where <info:fedora/' . $pid . '> <fedora-model:hasModel> $object
and $object <fedora-model:state> <info:fedora/fedora-system:def/model#Active>'; and $object <fedora-model:state> <info:fedora/fedora-system:def/model#Active>';
$content_models = $rest_connection->repository->ri->itqlQuery($query, 'unlimited', '0'); $content_models = $rest_connection->repository->ri->itqlQuery($query, 'unlimited', '0');
if (empty($content_models)) {
return $pids;
}
$cmodels = array(); if (empty($content_models)) {
foreach ($content_models as $content_model) { return $pids;
if (strpos($content_model['object']['uri'], 'fedora-system:FedoraObject-3.0') != FALSE && $include_fedora_system_content_models == FALSE) { }
continue;
}
$cmodels[] = substr(strstr($content_model['object']['uri'], '/'), 1);
}
return $cmodels; $cmodels = array();
foreach ($content_models as $content_model) {
if (strpos($content_model['object']['uri'], 'fedora-system:FedoraObject-3.0') != FALSE && $include_fedora_system_content_models == FALSE) {
continue;
}
$cmodels[] = substr(strstr($content_model['object']['uri'], '/'), 1);
} }
/** return $cmodels;
}
/**
* Function: get_content_models_as_option_array * Function: get_content_models_as_option_array
* *
* Description: Returns an associative array of all available content models in Fedora instance * Description: Returns an associative array of all available content models in Fedora instance
@ -206,36 +204,36 @@ function get_related_items_as_array($collection_pid, $relationship = array('isMe
function get_content_models_as_option_array() { function get_content_models_as_option_array() {
module_load_include('inc', 'islandora', 'RestConnection'); module_load_include('inc', 'islandora', 'RestConnection');
$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('fedora_namespace_restriction_enforced', TRUE);
$allowed_string = variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora:'); $allowed_string = variable_get('fedora_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) {
$allowed[] = trim($namespace); $allowed[] = trim($namespace);
}
} }
$query = 'select $object $title from <#ri> }
$query = 'select $object $title from <#ri>
where ($object <fedora-model:label> $title where ($object <fedora-model:label> $title
and ($object <fedora-model:hasModel> <info:fedora/fedora-system:ContentModel-3.0> and ($object <fedora-model:hasModel> <info:fedora/fedora-system:ContentModel-3.0>
or $object <fedora-rels-ext:isMemberOfCollection> <info:fedora/islandora:ContentModelsCollection>) or $object <fedora-rels-ext:isMemberOfCollection> <info:fedora/islandora:ContentModelsCollection>)
and $object <fedora-model:state> <info:fedora/fedora-system:def/model#Active>) and $object <fedora-model:state> <info:fedora/fedora-system:def/model#Active>)
order by $title'; order by $title';
$list = $rest_connection->repository->ri->itqlQuery($query, 'unlimited', '0'); $list = $rest_connection->repository->ri->itqlQuery($query, 'unlimited', '0');
$options = array(); $options = array();
foreach ($list as $item) { //removes blanks foreach ($list as $item) { //removes blanks
if ($item) { if ($item) {
$item_namespace = explode(':', $item['object']['value']); $item_namespace = explode(':', $item['object']['value']);
if (!$restricted || in_array($item_namespace[0], $allowed)) { if (!$restricted || in_array($item_namespace[0], $allowed)) {
if (!preg_match('/fedora-system/', $item['object']['value'])) { if (!preg_match('/fedora-system/', $item['object']['value'])) {
$options[$item['object']['value']] = $item['title']['value'] . ' ~ ' . $item['object']['value']; $options[$item['object']['value']] = $item['title']['value'] . ' ~ ' . $item['object']['value'];
}
}
} }
}
} }
}
return $options; return $options;
} }

2
islandora_basic_collection/includes/CollectionManagerTable.inc → islandora_basic_collection/includes/collection_manager_table.inc

@ -2,7 +2,7 @@
/** /**
* @file * @file
* CollectionManagerTable.inc * collection_manager_table.inc
*/ */
/** /**

2
islandora_basic_collection/includes/DeleteCollection.inc → islandora_basic_collection/includes/delete_collection.inc

@ -13,7 +13,7 @@
* @return string * @return string
*/ */
function islandora_collection_deletion_form($form, &$form_state, $pid) { function islandora_collection_deletion_form($form, &$form_state, $pid) {
module_load_include('inc', 'islandora_basic_collection', 'CollectionManagerTable'); module_load_include('inc', 'islandora_basic_collection', 'collection_manager_table');
$potential_collections = get_collections_as_option_array(); $potential_collections = get_collections_as_option_array();
$table = islandora_collection_table($pid); $table = islandora_collection_table($pid);
$deletion_message = ($table) ? "Delete Members of this Collection" : "Delete Collection"; $deletion_message = ($table) ? "Delete Members of this Collection" : "Delete Collection";

16
islandora_basic_collection/includes/ManagePolicies.inc → islandora_basic_collection/includes/manage_policies.inc

@ -40,6 +40,7 @@ function islandora_manage_policies_form($form, &$form_state, $collection_pid) {
$collection_policy = new CollectionPolicy($collection_policy_string->content); $collection_policy = new CollectionPolicy($collection_policy_string->content);
$supported_collection_models = $collection_policy->getContentModels(); $supported_collection_models = $collection_policy->getContentModels();
} }
$collection_namespace = substr($collection_pid, 0, strpos($collection_pid, ":")); $collection_namespace = substr($collection_pid, 0, strpos($collection_pid, ":"));
$represented_content_models = get_represented_content_models($collection_pid); $represented_content_models = get_represented_content_models($collection_pid);
@ -58,11 +59,16 @@ function islandora_manage_policies_form($form, &$form_state, $collection_pid) {
$new_options = array_diff_key($new_content_models, $current_models_in_policy); $new_options = array_diff_key($new_content_models, $current_models_in_policy);
} }
$s = '';
if (count($current_models_in_policy) > 1) {
$s = 's';
}
$form['manage_collection_policy']['titlebox'] = array( $form['manage_collection_policy']['titlebox'] = array(
'#type' => 'item', '#type' => 'item',
'#title' => t("Manage collection policy for @collection_pid", array('@collection_pid' => $collection_pid)), '#title' => t("Manage collection policy for @collection_pid", array('@collection_pid' => $collection_pid)),
); );
$form ['manage_collection_policy']['add']['content_model_to_add'] = array( $form ['manage_collection_policy']['add']['content_model_to_add'] = array(
'#title' => "Choose content model", '#title' => "Choose content model",
'#type' => 'select', '#type' => 'select',
@ -111,7 +117,7 @@ function islandora_manage_policies_form($form, &$form_state, $collection_pid) {
$form['manage_collection_policy']['remove']['submit'] = array( $form['manage_collection_policy']['remove']['submit'] = array(
'#type' => 'submit', '#type' => 'submit',
'#value' => t('Remove content model from collection policy'), '#value' => t('Remove content model@s from collection policy', array('@s' => $s)),
'#id' => 'remove_cm' '#id' => 'remove_cm'
); );
} }
@ -119,7 +125,7 @@ function islandora_manage_policies_form($form, &$form_state, $collection_pid) {
} }
function islandora_manage_policies_form_validate($form, &$form_state) { function islandora_manage_policies_form_validate($form, &$form_state) {
} }
/** /**
@ -196,7 +202,7 @@ function islandora_manage_policies_form_submit($form, &$form_state) {
} }
} }
if ($found !== FALSE && $models->length > 1) { if ($found !== FALSE && $models->length > 0) {
$content_models_element->item(0)->removeChild($found); $content_models_element->item(0)->removeChild($found);
$ret = TRUE; $ret = TRUE;
} }

2
islandora_basic_collection/includes/MoveCollection.inc → islandora_basic_collection/includes/move_collection.inc

@ -14,7 +14,7 @@
* @return string * @return string
*/ */
function islandora_collection_migrate_form($form, &$form_state, $pid) { function islandora_collection_migrate_form($form, &$form_state, $pid) {
module_load_include('inc', 'islandora_basic_collection', 'CollectionManagerTable'); module_load_include('inc', 'islandora_basic_collection', 'collection_manager_table');
$potential_collections = get_collections_as_option_array(); $potential_collections = get_collections_as_option_array();
$table = islandora_collection_table($pid); $table = islandora_collection_table($pid);
if (!$table) { if (!$table) {

16
islandora_basic_collection/islandora_basic_collection.module

@ -92,13 +92,13 @@ function islandora_basic_collection_menu_local_tasks_alter(&$data, $router_item,
*/ */
function islandora_basic_collection_manage_object($object_id) { function islandora_basic_collection_manage_object($object_id) {
module_load_include('inc', 'islandora_basic_collection', 'includes/CollectionManagement'); module_load_include('inc', 'islandora_basic_collection', 'includes/collection_management');
module_load_include('inc', 'islandora_basic_collection', 'includes/CollectionManagerTable'); module_load_include('inc', 'islandora_basic_collection', 'includes/collection_manager_table');
module_load_include('inc', 'islandora_basic_collection', 'includes/DeleteCollection'); module_load_include('inc', 'islandora_basic_collection', 'includes/delete_collection');
module_load_include('inc', 'islandora_basic_collection', 'includes/MoveCollection'); module_load_include('inc', 'islandora_basic_collection', 'includes/move_collection');
module_load_include('inc', 'islandora_basic_collection', 'includes/ChildCollection'); module_load_include('inc', 'islandora_basic_collection', 'includes/child_collection');
module_load_include('inc', 'islandora_basic_collection', 'includes/ManagePolicies'); module_load_include('inc', 'islandora_basic_collection', 'includes/manage_policies');
module_load_include('inc', 'islandora_basic_collection', 'includes/ChangeContentModels'); module_load_include('inc', 'islandora_basic_collection', 'includes/change_content_models');
$form = array(); $form = array();
@ -216,7 +216,7 @@ function islandora_basic_collection_theme($existing, $type, $theme, $path) {
'islandora_basic_collection_management_form_table' => array( 'islandora_basic_collection_management_form_table' => array(
'file' => 'theme/islandora_basic_collection.theme.inc', 'file' => 'theme/islandora_basic_collection.theme.inc',
'arguments' => array('element' => NULL), 'arguments' => array('element' => NULL),
'file' => 'includes/CollectionManagerTable.inc', 'file' => 'includes/collection_manager_table.inc',
), ),
); );
} }

34
islandora_basic_image/islandora-basic-image.tpl.php

@ -21,28 +21,34 @@
* along with the program. If not, see <http ://www.gnu.org/licenses/>. * along with the program. If not, see <http ://www.gnu.org/licenses/>.
*/ */
?> ?>
<?php drupal_set_title("$islandora_object_label"); ?> <?php if($islandora_object_label): ?>
<?php drupal_set_title("$islandora_object_label"); ?>
<?php endif; ?>
<div class="islandora-basic-image-object islandora"> <div class="islandora-basic-image-object islandora">
<div class="islandora-basic-image-content clearfix"> <div class="islandora-basic-image-content clearfix">
<?php if(isset($islandora_full_url)): ?> <?php if(isset($islandora_full_url)): ?>
<?php print l($islandora_medium_img, $islandora_full_url, array('html' => TRUE)); ?> <?php print l($islandora_medium_img, $islandora_full_url, array('html' => TRUE)); ?>
<?php else: ?> <?php elseif(isset($islandora_medium_img)): ?>
<?php print $islandora_medium_img; ?> <?php print $islandora_medium_img; ?>
<?php else: ?>
<?php endif; ?> <?php endif; ?>
</div> </div>
<div class="islandora-basic-image-sidebar"> <div class="islandora-basic-image-sidebar">
<h1 class="title"><?php print $islandora_object_label; ?></h1> <?php if($dc_array['dc:description']['value']): ?>
<h3><?php print $dc_array['dc:description']['label']; ?></h3> <h3><?php print $dc_array['dc:description']['label']; ?></h3>
<p><?php print $dc_array['dc:description']['value']; ?></p> <p><?php print $dc_array['dc:description']['value']; ?></p>
<div> <?php endif; ?>
<h3>In Collections</h3> <?php if($parent_collections): ?>
<ul> <div>
<?php foreach($parent_collections as $key => $value): ?> <h3>In Collections</h3>
<li><?php print $value['label_link'] ?></li> <ul>
<?php endforeach; ?> <?php foreach($parent_collections as $key => $value): ?>
</ul> <li><?php print $value['label_link'] ?></li>
</div> <?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
</div> </div>
<fieldset class="collapsible collapsed islandora-basic-image-metadata"> <fieldset class="collapsible collapsed islandora-basic-image-metadata">

Loading…
Cancel
Save