From 01c7eba4b192ee5b775329de330a9203d2e39996 Mon Sep 17 00:00:00 2001 From: Paul Pound Date: Tue, 22 May 2012 19:57:31 -0300 Subject: [PATCH] added some comments and cleaned up code based on coders feedback --- islandora-object.tpl.php | 2 +- islandora.module | 54 ++++++------ .../islandora_basic_image.module | 82 ++++++++++--------- utils/datastream.inc | 17 ++-- 4 files changed, 82 insertions(+), 73 deletions(-) diff --git a/islandora-object.tpl.php b/islandora-object.tpl.php index 44340afa..a89a755d 100644 --- a/islandora-object.tpl.php +++ b/islandora-object.tpl.php @@ -1,7 +1,7 @@ 'admin/islandora.solutionpacks.inc', 'type' => MENU_NORMAL_ITEM, ); - + $items['islandoracm.xsd'] = array( 'title' => 'Islandora Content Model XML Schema Definition', 'page callback' => 'islandora_display_schema', @@ -78,16 +78,16 @@ function islandora_menu() { 'type' => MENU_CALLBACK, 'access arguments' => array(FEDORA_VIEW), ); - + $items['islandora/ingest/%'] = array( - 'title' => t('Ingest object'), + 'title' => 'Ingest object', 'page callback' => 'islandora_ingest_callback', 'page arguments' => array(2), 'file' => 'includes/ingest-menu.inc', 'type' => MENU_CALLBACK, 'access arguments' => array(FEDORA_INGEST), ); - + $items['islandora/object/%'] = array( 'title' => 'Repository', 'page callback' => 'islandora_view_object', @@ -102,7 +102,7 @@ function islandora_menu() { 'type' => MENU_NORMAL_ITEM, 'access arguments' => array(FEDORA_ADD_DS) ); - + $items['islandora/object/%/view'] = array( 'title' => 'Repository', 'page callback' => 'islandora_view_object', @@ -110,7 +110,7 @@ function islandora_menu() { 'type' => MENU_NORMAL_ITEM, 'access arguments' => array(FEDORA_VIEW), ); - + $items['islandora/object/%/edit'] = array( 'title' => 'Repository', 'page callback' => 'islandora_edit_object', @@ -118,14 +118,14 @@ function islandora_menu() { 'type' => MENU_NORMAL_ITEM, 'access arguments' => array(FEDORA_MODIFY_STATE), ); - + $items['islandora/object/%/delete'] = array( 'title' => 'Purge object', 'page callback' => 'islandora_purge_object', 'type' => MENU_CALLBACK, 'access arguments' => array(FEDORA_PURGE), ); - + $items['islandora/object/%/datastream/%'] = array( 'title' => 'View datastream', 'page callback' => 'islandora_datastream_as_attachment', @@ -134,7 +134,7 @@ function islandora_menu() { 'file' => 'utils/datastream.inc', 'access arguments' => array(FEDORA_VIEW), ); - + $items['islandora/object/%/datastream/%/view'] = array( 'title' => 'View datastream', 'page callback' => 'islandora_datastream_as_attachment', @@ -143,7 +143,7 @@ function islandora_menu() { 'file' => 'utils/datastream.inc', 'access arguments' => array(FEDORA_VIEW), ); - + $items['islandora/object/%/datastream/%/download'] = array( 'title' => 'Download datastream', 'page callback' => 'islandora_datastream_as_attachment', @@ -152,7 +152,7 @@ function islandora_menu() { 'file' => 'utils/datastream.inc', 'access arguments' => array(FEDORA_VIEW), ); - + $items['islandora/object/%/datastream/%/edit'] = array( 'title' => 'Edit datastream', 'page callback' => 'islandora_edit_stream', @@ -160,7 +160,7 @@ function islandora_menu() { 'type' => MENU_CALLBACK, 'access arguments' => array(FEDORA_METADATA_EDIT), ); - + $items['islandora/object/%/datastream/%/delete'] = array( 'title' => 'Purge data stream', 'page callback' => 'islandora_purge_stream', @@ -277,15 +277,15 @@ function islandora_view_object($object_id) { } drupal_alter('islandora_view_object', $fedora_object); //modify object if required before it is passed along $arr = module_invoke_all('islandora_view_object', $fedora_object, $user, $page_number, $page_size); //allow submodules to decide how to handle content base on object type - if (empty($arr) ) { + if (empty($arr)) { //TODO: make sure we iterate over the array as they will be more then one cmodel per object - drupal_set_message(t('there was an error loading the view for islandora object %s',array('%s' => $object_id)),'error'); + drupal_set_message(t('there was an error loading the view for islandora object %s', array('%s' => $object_id)), 'error'); return ""; } //module_invoke_all(islandora_display($arr)), $output = ""; - foreach($arr as $key => $value){ - $output .= $key .'
'.$value; //if we have multiple modules handle one cmodel we need to iterate over multiple + 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; //just an example as we could have more then one array element @@ -297,14 +297,14 @@ function islandora_view_object($object_id) { * @param string $object_id * @return string */ -function islandora_islandora_view_object($object){ - $supported_models = islandora_get_types(); +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); + return array('Default Output' => $output); } } @@ -318,7 +318,7 @@ function islandora_theme() { 'template' => 'islandora-object', 'variables' => array('islandora_object' => NULL), ), - ); + ); } /** @@ -374,20 +374,20 @@ function islandora_add_datastream($object_id) { module_invoke_all('islandora_add_datastream', $object); //allow submodules to handle add datastream based on object type } -function islandora_preprocess_islandora_default(&$variables){ +function islandora_preprocess_islandora_default(&$variables) { $islandora_object = $variables['islandora_object']; - module_load_include('inc','islandora','utils/islandora_dublin_core'); - try{ + module_load_include('inc', 'islandora', 'utils/islandora_dublin_core'); + try { $dc = $islandora_object['DC']->content; //$dc_xml = simplexml_load_string($dc); $dc_object = Dublin_Core::import_from_xml_string($dc); - }catch(Exception $e){ - drupal_set_message(t('Error retrieving object %s %t', array('%s' => $islandora_object->id,'%t'=>$e->getMessage())),'error'); + } catch (Exception $e) { + drupal_set_message(t('Error retrieving object %s %t', array('%s' => $islandora_object->id, '%t' => $e->getMessage())), 'error'); } $variables['islandora_dublin_core'] = $dc_object; $variables['islandora_object_label'] = $islandora_object->label; global $base_url; - if(isset($islandora_object['TN'])){ - $variables['islandora_thumbnail_url'] = $base_url.'/islandora/object/'.$islandora_object->id.'/datastream/TN/view'; + if (isset($islandora_object['TN'])) { + $variables['islandora_thumbnail_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/TN/view'; } } \ No newline at end of file diff --git a/islandora_basic_image/islandora_basic_image.module b/islandora_basic_image/islandora_basic_image.module index 92fe533a..3e673bb6 100644 --- a/islandora_basic_image/islandora_basic_image.module +++ b/islandora_basic_image/islandora_basic_image.module @@ -31,24 +31,24 @@ * @return array */ /* -function islandora_basic_image_render_object($metadata, &$render_array) { + function islandora_basic_image_render_object($metadata, &$render_array) { $header = array(t('Label'), t('Value')); $table_attributes = array('class' => array('islandora_metadata')); $rows = array(); foreach ($metadata as $key => $value) { - if (isset($value) && is_array($value)) { - $item_list = array('#items' => $value, '#theme' => 'item_list'); - $rows[] = array($key, array('data' => $item_list)); - } - else { - $rows[] = array($key, $value); - } + if (isset($value) && is_array($value)) { + $item_list = array('#items' => $value, '#theme' => 'item_list'); + $rows[] = array($key, array('data' => $item_list)); + } + else { + $rows[] = array($key, $value); + } } $render_array['metadata'] = array('#header' => $header, '#theme' => 'table', '#rows' => $rows, '#attributes' => $table_attributes); - - return $render_array; - -}*/ + + return $render_array; + + } */ /** * returns a drupal render array as a html string @@ -57,25 +57,27 @@ function islandora_basic_image_render_object($metadata, &$render_array) { * @return string */ /* -function theme_islandora_basic_image_view_object($variables) { + function theme_islandora_basic_image_view_object($variables) { $object = $variables['object']; //$metadata = $object->metadata; $render_array = array('title' => array( - '#type' => 'markup', - '#markup' => '

' . $object->label . '

', - )); - + '#type' => 'markup', + '#markup' => '

' . $object->label . '

', + )); + islandora_basic_image_render_object($object, $render_array); - - return drupal_render($render_array); -}*/ + return drupal_render($render_array); + } */ /** * Theme registry function + * We supply a pattern so we can overide templates at the theme level if needed. + * we can append a pid to a template and the new template file will be called (the pids + * colon should be replaced with a dash) * @return array */ -function islandora_basic_image_theme() { +function islandora_basic_image_theme($existing, $type, $theme, $path) { return array( 'islandora_basic_image_objects' => array( 'template' => 'islandora-basic-image-view-objects', @@ -83,6 +85,9 @@ function islandora_basic_image_theme() { ), 'islandora_basic_image' => array( 'template' => 'islandora-basic-image', + 'pattern' => 'islandora_basic_image__', //we can add pids to the end of this pattern in our preprocess function + // and templates will be able to have have a pid appended to the template name to overide a template on a per object basis + //an example template would be named islandora-basic-image--islandora-27.tpl.phps 'variables' => array('islandora_object' => NULL), ) ); @@ -92,13 +97,12 @@ function islandora_basic_image_theme() { * tells the main module what types of objects we support. This is used to determine whether or not * this module should attempt to respond. * @return array + * 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'); } - - /** * this modules implentation of view_object will handle objects of type islandora:basicImageCModel and info:fedora/islandora:sp_basic_image * as registered in its return types @@ -116,30 +120,34 @@ function islandora_basic_image_islandora_view_object($object, $user, $page_numbe $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 + return NULL; //we don't handle any of this objects cmodels } $output = theme('islandora_basic_image', array('islandora_object' => $object)); - - return array('Basic Image Output' =>$output); + + return array('Basic Image Output' => $output); } -function islandora_preprocess_islandora_basic_image(&$variables){ +/** + * + * @global type $base_url + * @param array $variables + * an array of variables that will be passed to the theme function + */ +function islandora_preprocess_islandora_basic_image(&$variables) { $islandora_object = $variables['islandora_object']; - module_load_include('inc','islandora','utils/islandora_dublin_core'); - try{ + module_load_include('inc', 'islandora', 'utils/islandora_dublin_core'); + try { $dc = $islandora_object['DC']->content; - //$dc_xml = simplexml_load_string($dc); $dc_object = Dublin_Core::import_from_xml_string($dc); - }catch(Exception $e){ - drupal_set_message(t('Error retrieving object %s %t', array('%s' => $islandora_object->id,'%t'=>$e->getMessage())),'error'); + } catch (Exception $e) { + drupal_set_message(t('Error retrieving object %s %t', array('%s' => $islandora_object->id, '%t' => $e->getMessage())), 'error'); } $variables['islandora_dublin_core'] = $dc_object; $variables['islandora_object_label'] = $islandora_object->label; + $variables['theme_hook_suggestions'][] = 'islandora_basic_image__' . str_replace(':', '_', $islandora_object->id); global $base_url; - $variables['islandora_image_url'] = $base_url.'/islandora/object/'.$islandora_object->id.'/datastream/OBJ/view'; - $variables['islandora_thumbnail_url'] = $base_url.'/islandora/object/'.$islandora_object->id.'/datastream/TN/view'; - $variables['islandora_medium_size_url'] = $base_url . '/islandora/object/'.$islandora_object->id.'/datastream/MEDIUM/view'; + $variables['islandora_image_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/OBJ/view'; + $variables['islandora_thumbnail_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/TN/view'; + $variables['islandora_medium_size_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/MEDIUM/view'; } - -?> diff --git a/utils/datastream.inc b/utils/datastream.inc index ba0c4f5c..2f271e60 100644 --- a/utils/datastream.inc +++ b/utils/datastream.inc @@ -1,4 +1,5 @@ $object_id, '%d' => $dsid)), 'error'); return""; } - header('Content-type: '.$fedora_object[$dsid]->mimetype); - header('Content-length: '.$fedora_object[$dsid]->size); + header('Content-type: ' . $fedora_object[$dsid]->mimetype); + header('Content-length: ' . $fedora_object[$dsid]->size); header("Cache-control: private"); $method = arg(5); - if($method =='download'){ - header("Content-Disposition: attachment; filename=\"".$fedora_object[$dsid]->label); + if (isset($method) && $method == 'download') { + header("Content-Disposition: attachment; filename=\"" . $fedora_object[$dsid]->label); } - print ($fedora_object[$dsid]->content); + print($fedora_object[$dsid]->content); exit(); } -?> +