. */ /** * called by theme function and populates a render array for a table view. * @param array $metadata * @param array $render_array * @return array */ function fedora_repository_show_metadata($metadata, &$render_array) { $header = array(t('Label'), t('Value')); $table_attributes = array('class' => array('cmr_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 * @param array $variables * @return string */ function theme_fedora_repository_view_object($variables) { $object = $variables['object']; $metadata = $object->metadata; $render_array = array('title' => array( '#type' => 'markup', '#markup' => '

' . $object->label . '

', )); fedora_repository_show_metadata($metadata, $render_array); fedora_repository_list_datastreams($object, $render_array); return drupal_render($render_array); } /** * * @global object $user * @param ActiveMongo $object * @param string $render_array * @return type */ function fedora_repository_list_datastreams($object, &$render_array) { module_load_include('inc', 'CmrAPIDrupal', 'cmr'); global $user; $api = new CmrAPIDrupal($user); $datastreams = $object->datastreams; if (!isset($datastreams)) { return $render_array; } foreach ($datastreams as $datastream) { foreach ($datastream as $key => $value) { if ($key == 'cmr:data') { $d = new CmrDatastream(); $d->find($value); if (isset($d)) { // $id = $d->getID()->id; $render_array[(string)$d->getID()] = array('type' => 'markup', '#markup' => ''); } } if($key = 'cmr:metaData'){ $d = new CmrDatastream(); $d->find($value); if(isset($d)){ //@TODO: do something here } } } } } /** * Theme registry function * @return array */ function fedora_repository_theme() { return array( 'fedora_repository_view_objects' => array( 'template' => 'fedora-repository-view-objects', 'variables' => array('objects' => NULL), ), 'fedora_repository_view_object' => array( 'varibles' => array('object'), ) ); } /** * tells the main module what types of objects we support. * @return array */ function fedora_repository_get_types() { return array('islandora:pdfCModel'); } /** * this modules implentation of view_object will handle objects of type islandora:pdfCmodel as registered in its return types * Other modules would handle objects * of other types. * @param FedoraObject $object * @param object $user * @param string $page_number * @param string $page_size * @return string * themed html */ function fedora_repository_view_object($object, $user, $page_number, $page_size) { //global $user; if ($object->type != 'islandora:pdfCModel' && $object->type != 'cmr:basicObject') { return NULL; } $output = theme('fedora_repository_view_object', array('object' => $object)); $api = new CmrAPIDrupal($user); try { $results = $api->listObjectsByRelationship($object, 'cmr:isPartOf', $user, array('offset' => $page_number, 'limit' => $page_size)); } catch (CmrRelationshipException $e) { drupal_set_message(t('error executing list objects query, %s', array('%s' => $e))); } pager_default_initialize($results['count'], $page_size); $pager = theme('pager', array('quantity' => $results['count'])); $output .= $pager; if ($results['count'] > 0) { $output .= theme('fedora_repository_view_objects', $results); } $output .= $pager; return $output; } ?>