Browse Source

Use renderable arrays instead of the array of strings we used to.

...  Arrays of strings are still supported... Just not encouraged.
pull/360/head
Adam Vessey 12 years ago
parent
commit
69216abc81
  1. 35
      includes/utilities.inc
  2. 21
      islandora.module

35
includes/utilities.inc

@ -865,3 +865,38 @@ function islandora_deprecated($release, $solution = NULL) {
} }
return $message; return $message;
} }
/**
* Transform recursively-merged array of strings to renderable arrays.
*
* Previously, functions/hooks like islandora_view_object would return an
* associative array with string values containing markup. These values were
* then imploded into one large piece of markup. Here, we transform this older
* structure which was generated into a renderable array, because renderable
* arrays are awesome!
*
* @param array $markup_array
* An associative array of which the values are either a string or an array
* of strings, which we transform to renderable markup elements (by
* reference).
*/
function islandora_array_of_markup_to_renderable_array(&$markup_array) {
foreach ($markup_array as &$value) {
if (!is_array($value)) {
$value = array(
'#markup' => $value,
);
}
else {
foreach ($value as &$inner) {
if (!is_array($inner)) {
$inner = array(
'#markup' => $inner,
);
}
}
unset($inner);
}
}
unset($value);
}

21
islandora.module

@ -624,6 +624,7 @@ function islandora_manage_overview_object(AbstractObject $object) {
$output = array(); $output = array();
foreach (islandora_build_hook_list(ISLANDORA_OVERVIEW_HOOK, $object->models) as $hook) { foreach (islandora_build_hook_list(ISLANDORA_OVERVIEW_HOOK, $object->models) as $hook) {
$temp = module_invoke_all($hook, $object); $temp = module_invoke_all($hook, $object);
islandora_array_of_markup_to_renderable_array($temp);
if (!empty($temp)) { if (!empty($temp)) {
$output = array_merge_recursive($output, $temp); $output = array_merge_recursive($output, $temp);
} }
@ -634,7 +635,7 @@ function islandora_manage_overview_object(AbstractObject $object) {
} }
arsort($output); arsort($output);
drupal_alter(ISLANDORA_OVERVIEW_HOOK, $object, $output); drupal_alter(ISLANDORA_OVERVIEW_HOOK, $object, $output);
return implode('', $output); return $output;
} }
/** /**
@ -649,7 +650,9 @@ function islandora_manage_overview_object(AbstractObject $object) {
*/ */
function islandora_default_islandora_manage_overview_object(AbstractObject $object) { function islandora_default_islandora_manage_overview_object(AbstractObject $object) {
$output = theme('islandora_default_overview', array('islandora_object' => $object)); $output = theme('islandora_default_overview', array('islandora_object' => $object));
return array('Default overview output' => $output); return array('Default overview output' => array(
'#markup' => $output,
));
} }
/** /**
@ -675,6 +678,7 @@ function islandora_edit_object(AbstractObject $object) {
$output = array(); $output = array();
foreach (islandora_build_hook_list(ISLANDORA_EDIT_HOOK, $object->models) as $hook) { foreach (islandora_build_hook_list(ISLANDORA_EDIT_HOOK, $object->models) as $hook) {
$temp = module_invoke_all($hook, $object); $temp = module_invoke_all($hook, $object);
islandora_array_of_markup_to_renderable_array($temp);
if (!empty($temp)) { if (!empty($temp)) {
$output = array_merge_recursive($output, $temp); $output = array_merge_recursive($output, $temp);
} }
@ -685,7 +689,7 @@ function islandora_edit_object(AbstractObject $object) {
} }
arsort($output); arsort($output);
drupal_alter(ISLANDORA_EDIT_HOOK, $object, $output); drupal_alter(ISLANDORA_EDIT_HOOK, $object, $output);
return implode('', $output); return $output;
} }
/** /**
@ -700,7 +704,9 @@ function islandora_edit_object(AbstractObject $object) {
*/ */
function islandora_default_islandora_edit_object(AbstractObject $object) { function islandora_default_islandora_edit_object(AbstractObject $object) {
$output = theme('islandora_default_edit', array('islandora_object' => $object)); $output = theme('islandora_default_edit', array('islandora_object' => $object));
return array('Default Edit output' => $output); return array('Default Edit output' => array(
'#markup' => $output,
));
} }
/** /**
@ -743,6 +749,7 @@ function islandora_view_object(AbstractObject $object) {
// @todo Remove page number and size from this hook, implementers of the // @todo Remove page number and size from this hook, implementers of the
// hook should use drupal page handling directly. // hook should use drupal page handling directly.
$temp = module_invoke_all($hook, $object, $page_number, $page_size); $temp = module_invoke_all($hook, $object, $page_number, $page_size);
islandora_array_of_markup_to_renderable_array($temp);
if (!empty($temp)) { if (!empty($temp)) {
$output = array_merge_recursive($output, $temp); $output = array_merge_recursive($output, $temp);
} }
@ -753,7 +760,7 @@ function islandora_view_object(AbstractObject $object) {
} }
arsort($output); arsort($output);
drupal_alter($hooks, $object, $output); drupal_alter($hooks, $object, $output);
return implode('', $output); return $output;
} }
@ -786,7 +793,9 @@ function islandora_drupal_title(AbstractObject $object) {
*/ */
function islandora_default_islandora_view_object($object) { function islandora_default_islandora_view_object($object) {
$output = theme('islandora_default', array('islandora_object' => $object)); $output = theme('islandora_default', array('islandora_object' => $object));
return array('Default output' => $output); return array('Default output' => array(
'#markup' => $output,
));
} }
/** /**

Loading…
Cancel
Save