Browse Source

Merge branch '7.x' of https://github.com/Islandora/islandora into 7.x

pull/231/head
Kris Bulman 12 years ago
parent
commit
4ce3a51444
  1. 36
      includes/solution_packs.inc
  2. 2
      includes/utilities.inc
  3. 2
      islandora.module

36
includes/solution_packs.inc

@ -435,17 +435,26 @@ function islandora_check_object_status(NewFedoraObject $object_definition) {
/** /**
* A form construct to create a viewer selection table. * A form construct to create a viewer selection table.
* *
* The list of selectable viewers is limited by the $mimetype and the $model
* parameters. When neither are given all defined viewers are listed. If only
* $mimetype is given only viewers that support that mimetype will be listed,
* the same goes for the $model parameter. If both are given, than any viewer
* that supports either the give $mimetype or $model will be listed.
*
* @param string $variable_id * @param string $variable_id
* The ID of the Drupal variable to save the viewer settings in * The ID of the Drupal variable to save the viewer settings in
* @param string $mimetype * @param string $mimetype
* The table will be populated with viewers supporting this mimetype * The table will be populated with viewers supporting this mimetype
* @param string $model
* The table will be populated with viewers supporting this content model
*
* @return * @return
* A form api array which defines a themed table to select a viewer. * A form api array which defines a themed table to select a viewer.
*/ */
function islandora_viewers_form($variable_id = NULL, $mimetype = NULL) { function islandora_viewers_form($variable_id = NULL, $mimetype = NULL, $model = NULL) {
$form = array(); $form = array();
// get viewers // get viewers
$viewers = islandora_get_viewers($mimetype); $viewers = islandora_get_viewers($mimetype, $model);
if (!empty($viewers)) { if (!empty($viewers)) {
// add option for no viewer // add option for no viewer
$no_viewer = array(); $no_viewer = array();
@ -524,19 +533,32 @@ function islandora_viewers_form($variable_id = NULL, $mimetype = NULL) {
/** /**
* Returns all defined viewers. * Returns all defined viewers.
* *
* The list of selectable viewers is limited by the $mimetype and the
* $content_model parameters. When neither are given all defined viewers are
* listed. If only $mimetype is given only viewers that support that mimetype
* will be listed, the same goes for the $content_model parameter. If both are
* given, than any viewer that supports either the give $mimetype or $model will
* be listed.
*
* @param string $mimetype * @param string $mimetype
* specify a mimetype to return only viewers that support this certain * Specify a mimetype to return only viewers that support this certain
* mimetype. * mimetype.
* @return * @param string $content_model
* array of viewer definitions, or FALSE if none are found. * Specify a content model to return only viewers that support the content
* model.
*
* @return array
* Viewer definitions, or FALSE if none are found.
*/ */
function islandora_get_viewers($mimetype = NULL) { function islandora_get_viewers($mimetype = NULL, $content_model = NULL) {
$viewers = array(); $viewers = array();
// get all viewers // get all viewers
$defined_viewers = module_invoke_all('islandora_viewer_info'); $defined_viewers = module_invoke_all('islandora_viewer_info');
// filter viewers by mimetype // filter viewers by mimetype
foreach ($defined_viewers as $key => $value) { foreach ($defined_viewers as $key => $value) {
if (in_array($mimetype, $value['mimetype']) OR $mimetype == NULL) { $value['mimetype'] = isset($value['mimetype']) ? $value['mimetype'] : array();
$value['model'] = isset($value['model']) ? $value['model'] : array();
if (in_array($mimetype, $value['mimetype']) OR in_array($content_model, $value['model'])) {
$viewers[$key] = $value; $viewers[$key] = $value;
} }
} }

2
includes/utilities.inc

@ -382,7 +382,7 @@ function islandora_get_datastreams_requirements_from_content_model(FedoraObject
function islandora_prepare_new_object($namespace = NULL, $label = NULL, $datastreams = array(), $content_models = array(), $relationships = array()) { function islandora_prepare_new_object($namespace = NULL, $label = NULL, $datastreams = array(), $content_models = array(), $relationships = array()) {
global $user; global $user;
$tuque = islandora_get_tuque_connection(); $tuque = islandora_get_tuque_connection();
$object = $tuque->repository->constructObject($namespace); $object = isset($namespace) ? $tuque->repository->constructObject($namespace) : new IslandoraNewFedoraObject(NULL, $tuque->repository);
$object->owner = isset($user->name) ? $user->name : $object->owner; $object->owner = isset($user->name) ? $user->name : $object->owner;
$object->label = isset($label) ? $label : $object->label; $object->label = isset($label) ? $label : $object->label;
foreach ($content_models as $content_model) { foreach ($content_models as $content_model) {

2
islandora.module

@ -514,7 +514,7 @@ function islandora_object_load($object_id) {
$tuque = islandora_get_tuque_connection(); $tuque = islandora_get_tuque_connection();
if ($tuque) { if ($tuque) {
try { try {
$object = $tuque->repository->getObject($object_id); $object = $tuque->repository->getObject(urldecode($object_id));
drupal_alter('islandora_object', $object); drupal_alter('islandora_object', $object);
return $object; return $object;
} catch (Exception $e) { } catch (Exception $e) {

Loading…
Cancel
Save