diff --git a/islandora_basic_collection/islandora-basic-collection.tpl.php b/islandora_basic_collection/islandora-basic-collection.tpl.php new file mode 100644 index 00000000..16b252bb --- /dev/null +++ b/islandora_basic_collection/islandora-basic-collection.tpl.php @@ -0,0 +1,50 @@ +. + */ +?> +label); + foreach ($variables['islandora_dublin_core'] as $element) { + if (!empty($element)) { + foreach ($element as $key => $value) { + foreach ($value as $v) { + if (!empty($v)) { + print '' . ($key) . ': '; + print($v) . '
'; + } + } + } + } + } + print(''); + print('

Associated Objects

'); + foreach($variables['islandora_associated_objects'] as $associated_objects){ + global $base_url; + $link = l($associated_objects['title']['value'],$base_url.'/islandora/object/'.$associated_objects['object']['value']); + print ($link).'
'; + + } +?> + diff --git a/islandora_basic_collection/islandora_basic_collection.info b/islandora_basic_collection/islandora_basic_collection.info new file mode 100644 index 00000000..fb76c4f2 --- /dev/null +++ b/islandora_basic_collection/islandora_basic_collection.info @@ -0,0 +1,5 @@ +name = "Islandora Basic Collection" +description = "A default Islandora Repository module to handle simple collections" +dependencies[] = islandora +package = Islandora +core = 7.x diff --git a/islandora_basic_collection/islandora_basic_collection.module b/islandora_basic_collection/islandora_basic_collection.module new file mode 100644 index 00000000..e09765a8 --- /dev/null +++ b/islandora_basic_collection/islandora_basic_collection.module @@ -0,0 +1,134 @@ +. + */ + +/** + * 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_collection_theme($existing, $type, $theme, $path) { + return array( + 'islandora_basic_collection' => array( + 'template' => 'islandora-basic-collection', + 'pattern' => 'islandora_basic_collection__', //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), + ) + ); +} + +/** + * 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_collection_islandora_get_types() { + return array('info:fedora/islandora:collectionCModel'); +} + +/** + * this modules implentation of view_object hook will handle objects of type islandora:basicImageCModel and info:fedora/islandora:sp_basic_image + * as registered in its return types + * Other modules would handle objects of other types. + * @param Object $object + * a tuque fedora object + * @param object $user + * @param string $page_number + * @param string $page_size + * @return string + * themed html + */ +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 + } + $output = theme('islandora_basic_collection', array('islandora_object' => $object)); + return array('Basic Collection Output' => $output); +} + +/** + * + * @global type $base_url + * @param array $variables + * an array of variables that will be passed to the theme function + */ +function islandora_basic_collection_preprocess_islandora_basic_collection(&$variables) { + $islandora_object = $variables['islandora_object']; + module_load_include('inc', 'islandora', 'utils/islandora_dublin_core'); + try { + $dc = $islandora_object['DC']->content; + $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'); + } + $variables['islandora_associated_objects'] = islandora_basic_collection_get_objects($islandora_object); + $variables['islandora_dublin_core'] = $dc_object; + $variables['islandora_object_label'] = $islandora_object->label; + $variables['theme_hook_suggestions'][] = 'islandora_basic_collection__' . str_replace(':', '_', $islandora_object->id); + global $base_url; + if (isset($islandora_object['OBJ'])) { + $variables['islandora_image_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/OBJ/view'; + } + 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'])){ + $variables['islandora_medium_size_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/MEDIUM_SIZE/view'; + } + +} + +function islandora_basic_collection_get_objects($object){ + $query = 'select $object $title $content from <#ri> + where ($object $title + and $object $content + and ($object id . '> + or $object id . '>) + and $object ) + minus $content + order by $title'; + $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); + global $user; + try { + $restConnection = new RestConnection($user); + $queryObject = new RepositoryQuery($restConnection->connection); + $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""; + } + return $results; +} + diff --git a/islandora_basic_image/islandora_basic_image.info b/islandora_basic_image/islandora_basic_image.info index b85f14a3..48518184 100644 --- a/islandora_basic_image/islandora_basic_image.info +++ b/islandora_basic_image/islandora_basic_image.info @@ -1,4 +1,5 @@ name = "Islandora Basic Image" description = "A default Islandora Repository module to handle images" dependencies[] = islandora +package = Islandora core = 7.x diff --git a/islandora_basic_image/islandora_basic_image.module b/islandora_basic_image/islandora_basic_image.module index 3e673bb6..daffdd75 100644 --- a/islandora_basic_image/islandora_basic_image.module +++ b/islandora_basic_image/islandora_basic_image.module @@ -3,7 +3,7 @@ /* * @file islandora_basic_image.module * - * an Islandora module to handle basic image cmodels (with ISLANDORACM streams) + * an Islandora module to handle basic image cmodels * * * This file is part of Islandora. @@ -22,54 +22,6 @@ * along with the program. If not, see . */ - -/** - * called by theme function and populates a render array for a table view. - * See theme registry. This is also an example function. - * @param array $metadata - * @param array $render_array - * @return 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); - } - } - $render_array['metadata'] = array('#header' => $header, '#theme' => 'table', '#rows' => $rows, '#attributes' => $table_attributes); - - return $render_array; - - } */ - -/** - * returns a drupal render array as a html string - * This is an example function. We probably want to use a template - * @param array $variables - * @return string - */ -/* - function theme_islandora_basic_image_view_object($variables) { - $object = $variables['object']; - //$metadata = $object->metadata; - $render_array = array('title' => array( - '#type' => 'markup', - '#markup' => '

' . $object->label . '

', - )); - - islandora_basic_image_render_object($object, $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. @@ -104,7 +56,7 @@ function islandora_basic_image_islandora_get_types() { } /** - * this modules implentation of view_object will handle objects of type islandora:basicImageCModel and info:fedora/islandora:sp_basic_image + * this modules implentation of view_object hook will handle objects of type islandora:basicImageCModel and info:fedora/islandora:sp_basic_image * as registered in its return types * Other modules would handle objects of other types. * @param Object $object @@ -133,7 +85,7 @@ function islandora_basic_image_islandora_view_object($object, $user, $page_numbe * @param array $variables * an array of variables that will be passed to the theme function */ -function islandora_preprocess_islandora_basic_image(&$variables) { +function islandora_basic_image_preprocess_islandora_basic_image(&$variables) { $islandora_object = $variables['islandora_object']; module_load_include('inc', 'islandora', 'utils/islandora_dublin_core'); try { @@ -146,8 +98,15 @@ function islandora_preprocess_islandora_basic_image(&$variables) { $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'; + if (isset($islandora_object['OBJ'])) { + $variables['islandora_image_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/OBJ/view'; + } + 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'])){ + $variables['islandora_medium_size_url'] = $base_url . '/islandora/object/' . $islandora_object->id . '/datastream/MEDIUM_SIZE/view'; + } + }