diff --git a/islandora.module b/islandora.module
index 49783c30..9d418d29 100644
--- a/islandora.module
+++ b/islandora.module
@@ -29,6 +29,8 @@ define('FEDORA_ADD_DS', 'add fedora datastreams');
define('FEDORA_INGEST', 'ingest fedora objects');
define('FEDORA_PURGE', 'delete fedora objects and datastreams');
define('FEDORA_MODIFY_STATE', 'modify fedora state');
+define('ISLANDORA_VIEW_HOOK', 'islandora_view_object');
+define('ISLANDORA_EDIT_HOOK', 'islandora_edit_object');
/**
* Implementation of hook_menu.
@@ -224,6 +226,8 @@ function islandora_purge_object($object_id) {
/**
* returns an array listing object types provided by sub modules
+ * The array should contain the cmodels it listens for and the hooks it answers to
+ * example array ('islandora:collectionCModel' => array ('islandora_edit_object' => TRUE, 'islandora_view_object' => TRUE);
* @return array
*/
function islandora_get_types() {
@@ -253,19 +257,26 @@ function islandora_edit_object($object_id) {
foreach ($arr as $key => $value) {
$output .= $key . '
' . $value; //if we have multiple modules handle one cmodel we need to iterate over multiple
}
- //we could do another module invoke all here to build the edit tab with a default implemented in this module?
- return $output;
+ return $output;
}
-
/**
+ * checks to see if any other modules implement this functionality and if there are none
* builds a default page for the edit tab
+ *
* @param object $fedora_object
* A tuque Fedora Object
*/
-function islandora_islandora_edit_object($fedora_object){
+function islandora_islandora_edit_object($fedora_object) {
+ $supported_models = islandora_get_types();
+ $output = "";
+ foreach ($fedora_object->models as $model) {
+ if ($supported_models[$model][ISLANDORA_EDIT_HOOK] == TRUE) {//another module is handling the view
+ return;
+ }
+ }
$output = theme('islandora_default_edit', array('islandora_object' => $fedora_object));
- return array ('Default Edit output' => $output);
+ return array('Default Edit output' => $output);
}
/**
@@ -337,13 +348,14 @@ function islandora_view_object($object_id) {
*/
function islandora_islandora_view_object($object) {
$supported_models = islandora_get_types();
- $object_models = $object->models;
- $combined_list = array_intersect($supported_models, $object->models);
$output = "";
- if (empty($combined_list)) {
- $output = theme('islandora_default', array('islandora_object' => $object));
- return array('Default Output' => $output);
+ foreach ($object->models as $model) {
+ if ($supported_models[$model][ISLANDORA_VIEW_HOOK] == TRUE) {//another module is handling the view
+ return;
+ }
}
+ $output = theme('islandora_default', array('islandora_object' => $object));
+ return array('Default Output' => $output);
}
/**
@@ -434,7 +446,6 @@ function islandora_preprocess_islandora_default(&$variables) {
}
}
-function islandora_preprocess_islandora_default_edit(&$variables){
+function islandora_preprocess_islandora_default_edit(&$variables) {
//$islandora_object = $variables['islandora_object'];
-
}
\ No newline at end of file
diff --git a/islandora_basic_collection/islandora_basic_collection.module b/islandora_basic_collection/islandora_basic_collection.module
index e09765a8..0ff65172 100644
--- a/islandora_basic_collection/islandora_basic_collection.module
+++ b/islandora_basic_collection/islandora_basic_collection.module
@@ -48,7 +48,11 @@ function islandora_basic_collection_theme($existing, $type, $theme, $path) {
* array of content model pids that this module supports
*/
function islandora_basic_collection_islandora_get_types() {
- return array('info:fedora/islandora:collectionCModel');
+ $types = array();
+ $types['info:fedora/islandora:collectionCModel'][ISLANDORA_VIEW_HOOK] = TRUE;
+ $types['info:fedora/islandora:collectionCModel'][ISLANDORA_EDIT_HOOK] = FALSE;
+ return $types;
+
}
/**
@@ -66,12 +70,14 @@ function islandora_basic_collection_islandora_get_types() {
function islandora_basic_collection_islandora_view_object($object, $user, $page_number, $page_size) {
//global $user;
$cmodel_list = islandora_basic_collection_islandora_get_types();
- $combined_list = array_intersect($cmodel_list, $object->models);
- if (empty($combined_list)) {
- return NULL; //we don't handle any of this objects cmodels
+ $models = $object->models;
+ foreach ($object->models as $model) {
+ if ($cmodel_list[$model][ISLANDORA_VIEW_HOOK] == TRUE) {
+ $output = theme('islandora_basic_collection', array('islandora_object' => $object));
+ return array('Basic Collection Output' => $output);
+ }
}
- $output = theme('islandora_basic_collection', array('islandora_object' => $object));
- return array('Basic Collection Output' => $output);
+ return NULL;
}
/**
@@ -100,13 +106,12 @@ function islandora_basic_collection_preprocess_islandora_basic_collection(&$vari
if (isset($islandora_object['TN'])) {
$variables['islandora_thumbnail_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/TN/view';
}
- if (isset($islandora_object['MEDIUM_SIZE'])){
+ if (isset($islandora_object['MEDIUM_SIZE'])) {
$variables['islandora_medium_size_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/MEDIUM_SIZE/view';
}
-
}
-function islandora_basic_collection_get_objects($object){
+function islandora_basic_collection_get_objects($object) {
$query = 'select $object $title $content from <#ri>
where ($object $title
and $object $content
@@ -118,13 +123,13 @@ function islandora_basic_collection_get_objects($object){
$page_number = (empty($_GET['page'])) ? '1' : $_GET['page'];
$page_size = (empty($_GET['pagesize'])) ? '10' : $_GET['pagesize'];
module_load_include('inc', 'islandora', 'RestConnection');
- $query_array = array('query' => $query, 'type' => 'itql','pid' => $object->id, 'page_size'=>$page_size, 'page_number' => $page_number);
- drupal_alter('islandora_basic_collection_query',$query_array);
+ $query_array = array('query' => $query, 'type' => 'itql', 'pid' => $object->id, 'page_size' => $page_size, 'page_number' => $page_number);
+ drupal_alter('islandora_basic_collection_query', $query_array);
global $user;
try {
$restConnection = new RestConnection($user);
$queryObject = new RepositoryQuery($restConnection->connection);
- $results = $queryObject->query($query_array['query'],$query_array['type']);
+ $results = $queryObject->query($query_array['query'], $query_array['type']);
} catch (Exception $e) {
drupal_set_message(t('Islandora Error getting related objects for %s', array('%s' => $object->id)), 'error');
return"";
diff --git a/islandora_basic_image/css/islandora_basic_image.admin.css b/islandora_basic_image/css/islandora_basic_image.admin.css
index a7f79c7c..e2ad3040 100644
--- a/islandora_basic_image/css/islandora_basic_image.admin.css
+++ b/islandora_basic_image/css/islandora_basic_image.admin.css
@@ -1,12 +1,8 @@
/*
Document : islandora_basic_collection.admin.css
Created on : May 23, 2012, 11:23:06 AM
- Author : ppound
Description:
Purpose of the stylesheet follows.
*/
-root {
- display: block;
-}
diff --git a/islandora_basic_image/islandora_basic_image.module b/islandora_basic_image/islandora_basic_image.module
index daffdd75..de8a619a 100644
--- a/islandora_basic_image/islandora_basic_image.module
+++ b/islandora_basic_image/islandora_basic_image.module
@@ -52,7 +52,10 @@ function islandora_basic_image_theme($existing, $type, $theme, $path) {
* array of content model pids that this module supports
*/
function islandora_basic_image_islandora_get_types() {
- return array('info:fedora/islandora:imgageCModel', 'info:fedora/islandora:sp_basic_image');
+ $types = array();
+ $types['info:fedora/islandora:sp_basic_image'][ISLANDORA_VIEW_HOOK] = TRUE;
+ $types['info:fedora/islandora:sp_basic_image'][ISLANDORA_EDIT_HOOK] = TRUE;
+ return $types;
}
/**
@@ -70,13 +73,14 @@ function islandora_basic_image_islandora_get_types() {
function islandora_basic_image_islandora_view_object($object, $user, $page_number, $page_size) {
//global $user;
$cmodel_list = islandora_basic_image_islandora_get_types();
- $combined_list = array_intersect($cmodel_list, $object->models);
- if (empty($combined_list)) {
- return NULL; //we don't handle any of this objects cmodels
+ $models = $object->models;
+ foreach ($object->models as $model) {
+ if ($cmodel_list[$model][ISLANDORA_VIEW_HOOK] == TRUE) {
+ $output = theme('islandora_basic_image', array('islandora_object' => $object));
+ return array('Basic Image Output' => $output);
+ }
}
- $output = theme('islandora_basic_image', array('islandora_object' => $object));
-
- return array('Basic Image Output' => $output);
+ return NULL;
}
/**
@@ -104,9 +108,8 @@ function islandora_basic_image_preprocess_islandora_basic_image(&$variables) {
if (isset($islandora_object['TN'])) {
$variables['islandora_thumbnail_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/TN/view';
}
- if (isset($islandora_object['MEDIUM_SIZE'])){
+ if (isset($islandora_object['MEDIUM_SIZE'])) {
$variables['islandora_medium_size_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/MEDIUM_SIZE/view';
}
-
}