diff --git a/CollectionClass.inc b/CollectionClass.inc index 553634a4..142fd765 100644 --- a/CollectionClass.inc +++ b/CollectionClass.inc @@ -26,12 +26,13 @@ class CollectionClass { * @param string $pid The pid of the collection to represent. * @return CollectionClass */ - function CollectionClass($pid = NULL) { - drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); + function __construct($pid = NULL) { if (!empty($pid)) { module_load_include('inc', 'fedora_repository', 'ObjectHelper'); $this->collectionObject = new ObjectHelper($pid); + $this->pid = $pid; } + } /* gets objects related to this object. must include offset and limit @@ -395,6 +396,78 @@ class CollectionClass { user_save($user, $personal_collection_pid); return TRUE; } + + function showFieldSets() { + + global $base_url; + + $tabset = array(); + + $tabset['my_tabset'] = array( + '#type' => 'tabset', + ); + + global $user; + $objectHelper = new ObjectHelper(); + $results = $this->getRelatedItems($this->pid, NULL); + + + + $html = $objectHelper->renderCollection($results, $this->pid ); + + + + $tabset['my_tabset']['second_tab'] = array( +// $collection_fieldset = array ( + '#type' => 'tabpage', + '#title' => t('Members'), + '#content' => $html + ); + $tabset['my_tabset']['first_tab'] = array( + // #type and #title are the minimum requirements. + '#type' => 'tabpage', + '#title' => t('View'), + // This will be the content of the tab. + '#content' => 'what what', + ); + $tabset['my_tabset']['third_tab'] = array( + '#type' => 'tabpage', + '#title' => t('Description'), + ); + $tabset['my_tabset']['third_tab']['tabset'] = array( + '#type' => 'tabset', + ); + + $tabset['my_tabset']['third_tab']['tabset']['view'] = array( + '#type' => 'tabpage', + '#title' => t('Darwin Core'), + '#content' => "METADATA", + ); + module_load_include('inc', 'fedora_repository', 'ObjectHelper'); +/* $obj = new ObjectHelper(); + if (fedora_repository_access(OBJECTHELPER :: $EDIT_FEDORA_METADATA, $this->pid, $user)) { + $editform = drupal_get_form('fedora_repository_edit_qdc_form', $this->pid, 'DARWIN_CORE'); + $tabset['my_tabset']['third_tab']['tabset']['edit'] = array( + '#type' => 'tabpage', + '#title' => t('Edit'), + '#content' => $editform, + ); + $tabset['my_tabset']['third_tab']['tabset']['source'] = array( + '#type' => 'tabpage', + '#title' => t('Vew Source'), + ); + $xmlsrc = $dwc->asXML(); + $tabset['my_tabset']['third_tab']['tabset']['source']['srctext'] = array( + '#name' => 'source', + '#type' => 'textarea', + '#value' => $xmlsrc, + '#id' => 'source', + '#height' => 50, + ); + } +*/ + return tabs_render($tabset); + } } diff --git a/ObjectHelper.inc b/ObjectHelper.inc index 9b24f088..6b6c9dec 100644 --- a/ObjectHelper.inc +++ b/ObjectHelper.inc @@ -666,56 +666,6 @@ class ObjectHelper { $isCollection = TRUE; } } - - //$label=$content; - $collectionName = $collection; - if (!$pageNumber) { - $pageNumber = 1; - } - - if (!isset($collectionName)) { - $collectionName = variable_get('fedora_repository_name', 'Collection'); - } - $xslContent = $this->getXslContent($pid, $path); - - //get collection list and display using xslt------------------------------------------- - - if (isset($content) && $content != FALSE) { - $input = new DomDocument(); - $input->loadXML(trim($content)); - $results = $input->getElementsByTagName('result'); - if ($results->length > 0) { - try { - $proc = new XsltProcessor(); - $proc->setParameter('', 'collectionPid', $collection_pid); - $proc->setParameter('', 'collectionTitle', $collectionName); - $proc->setParameter('', 'baseUrl', $base_url); - $proc->setParameter('', 'path', $base_url . '/' . $path); - $proc->setParameter('', 'hitPage', $pageNumber); - $proc->registerPHPFunctions(); - $xsl = new DomDocument(); - $xsl->loadXML($xslContent); - // php xsl does not seem to work with namespaces so removing it below - // I may have just been being stupid here - // $content = str_ireplace('xmlns="http://www.w3.org/2001/sw/DataAccess/rf1/result"', '', $content); - - $xsl = $proc->importStylesheet($xsl); - $newdom = $proc->transformToDoc($input); - - $objectList = $newdom->saveXML(); //is the xml transformed to html as defined in the xslt associated with the collection object - - if (!$objectList) { - throw new Exception("Invalid XML."); - } - } catch (Exception $e) { - drupal_set_message(t('!e', array('!e' => $e->getMessage())), 'error'); - return ''; - } - } - } else { - drupal_set_message(t("No Objects in this collection or bad query.")); - } - //-------------------------------------------------------------------------------- //show the collections datastreams if ($results->length > 0 || $isCollection == TRUE) { @@ -739,45 +689,10 @@ class ObjectHelper { else { $ingestObject = ' '; } - - - $datastreams .= $ingestObject; - - $objectListOut = ''; - if (isset($objectList)) { - $object_list_fieldset = array( - '#title' => t('Items in this collection'), - '#collapsible' => TRUE, - '#collapsed' => FALSE, - '#value' => (isset($objectList) ? $objectList : ''), //collection list - ); - $objectListOut = theme('fieldset', $object_list_fieldset); - } - } else { - //$collectionName=''; - $collection_fieldset = array( - '#title' => "", - '#collapsible' => TRUE, - '#collapsed' => FALSE, - '#value' => $datastreams, - ); - $objectListOut = ''; //no collection objects to show so don't show field set } - $output = ''; - switch (variable_get('fedora_object_display_title', ObjectHelper::$DISPLAY_ALWAYS)) { - case ObjectHelper :: $DISPLAY_NEVER: break; - case ObjectHelper :: $DISPLAY_NO_MODEL_OUTPUT: - if (trim($datastreams) == '') { - $output .= '' . $collectionName . '
'; - } - break; + $datastreams .= $ingestObject; - case ObjectHelper :: $DISPLAY_ALWAYS: - default: - $output .= '' . $collectionName . '
'; - break; - } $output .= $datastreams; @@ -808,20 +723,7 @@ class ObjectHelper { $output .= theme('fieldset', $fieldset); } - switch (variable_get('fedora_collection_display_list', ObjectHelper::$DISPLAY_ALWAYS)) { - case ObjectHelper :: $DISPLAY_NEVER: break; - case ObjectHelper :: $DISPLAY_NO_MODEL_OUTPUT: - if (trim($datastreams) == '') { - $output .= $objectListOut . '
'; - } - break; - - case ObjectHelper :: $DISPLAY_ALWAYS: - default: - $output .= $objectListOut . '
'; - break; - } - + return $output; } @@ -869,6 +771,85 @@ class ObjectHelper { return $parent_collections_HTML; } + function renderCollection($content, $pid, $dsId, $collection, $pageNumber = NULL) { + $path = drupal_get_path('module', 'fedora_repository'); + global $base_url; + $collection_pid = $pid; //we will be changing the pid later maybe + //module_load_include('php', ''Fedora_Repository'', 'ObjectHelper'); + $objectHelper = $this; + $parsedContent = NULL; + $contentModels = $objectHelper->get_content_models_list($pid); + $isCollection = FALSE; + //if this is a collection object store the $pid in the session as it will come in handy + //after a purge or ingest to return to the correct collection. + + $fedoraItem = NULL; + + + + $collectionName = $collection; + if (!$pageNumber) { + $pageNumber = 1; + } + + if (!isset($collectionName)) { + $collectionName = variable_get('fedora_repository_name', 'Collection'); + } + $xslContent = $this->getXslContent($pid, $path); + + //get collection list and display using xslt------------------------------------------- + + if (isset($content) && $content != FALSE) { + $input = new DomDocument(); + $input->loadXML(trim($content)); + $results = $input->getElementsByTagName('result'); + if ($results->length > 0) { + try { + $proc = new XsltProcessor(); + $proc->setParameter('', 'collectionPid', $collection_pid); + $proc->setParameter('', 'collectionTitle', $collectionName); + $proc->setParameter('', 'baseUrl', $base_url); + $proc->setParameter('', 'path', $base_url . '/' . $path); + $proc->setParameter('', 'hitPage', $pageNumber); + $proc->registerPHPFunctions(); + $xsl = new DomDocument(); + $xsl->loadXML($xslContent); + // php xsl does not seem to work with namespaces so removing it below + // I may have just been being stupid here + // $content = str_ireplace('xmlns="http://www.w3.org/2001/sw/DataAccess/rf1/result"', '', $content); + + $xsl = $proc->importStylesheet($xsl); + $newdom = $proc->transformToDoc($input); + + $objectList = $newdom->saveXML(); //is the xml transformed to html as defined in the xslt associated with the collection object + + if (!$objectList) { + throw new Exception("Invalid XML."); + } + } catch (Exception $e) { + drupal_set_message(t('!e', array('!e' => $e->getMessage())), 'error'); + return ''; + } + } + } else { + drupal_set_message(t("No Objects in this collection or bad query.")); + } + + + $object_list_fieldset = array( + '#title' => t('Items in this collection'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + '#value' => (isset($objectList) ? $objectList : ''),); + $objectListOut = theme('fieldset', $object_list_fieldset); + + + $output .= $objectListOut . '
'; + + return $output; + } + + /** * gets a list of datastreams and related function that we should use to show datastreams in their own fieldsets * from the content model associated with the object