diff --git a/islandora_basic_collection/admin/islandora_basic_collection.admin.inc b/islandora_basic_collection/admin/islandora_basic_collection.admin.inc index 8311f3e8..1536de3b 100644 --- a/islandora_basic_collection/admin/islandora_basic_collection.admin.inc +++ b/islandora_basic_collection/admin/islandora_basic_collection.admin.inc @@ -10,6 +10,13 @@ function islandora_basic_collection_admin() { on a view tab you may have multiple modules configured to provide content for the default tab.'), '#weight' => -10 ); + $form['islandora_basic_collection_page_size'] = array( + '#type' => 'textfield', + '#title' => t('The default number of objects to show for a collection'), + '#default_value' => variable_get('islandora_basic_collection_page_size', '10'), + '#description' => t('The default number of object to show in a collection view.'), + '#weight' => -10 + ); return system_settings_form($form); } diff --git a/islandora_basic_collection/islandora_basic_collection.module b/islandora_basic_collection/islandora_basic_collection.module index d0fecb9d..8b0a2dd3 100644 --- a/islandora_basic_collection/islandora_basic_collection.module +++ b/islandora_basic_collection/islandora_basic_collection.module @@ -224,7 +224,7 @@ function islandora_basic_collection_islandora_view_object($object, $user) { } /** - * + * * @global type $base_url * @param array $variables * an array of variables that will be passed to the theme function @@ -242,12 +242,13 @@ function islandora_basic_collection_preprocess_islandora_basic_collection(&$vari } catch (Exception $e) { drupal_set_message(t('Error retrieving object %s %t', array('%s' => $islandora_object->id, '%t' => $e->getMessage())), 'error'); } - $page_number = (empty($_GET['page'])) ? '1' : $_GET['page']; - $page_size = (empty($_GET['pagesize'])) ? variable_get('islandora_collection_pagesize',5) : $_GET['pagesize']; - $results = islandora_basic_collection_get_objects($islandora_object,$page_number,$page_size); - pager_default_initialize(count($results), $page_size); - $variables['islandora_associated_objects'] = $results; - $pager = theme('pager', array('quantity' => count($results))); + $page_number = (empty($_GET['page'])) ? 0 : $_GET['page']; + $page_size = (empty($_GET['pagesize'])) ? variable_get('islandora_basic_collection_page_size', '10') : $_GET['pagesize']; + $results = islandora_basic_collection_get_objects($islandora_object, $page_number, $page_size); + $total_count = count($results); + pager_default_initialize($total_count, $page_size); + + $pager = theme('pager', array('quantity' => $total_count)); $variables['pager'] = $pager; $variables['islandora_dublin_core'] = $dc_object; $variables['islandora_object_label'] = $islandora_object->label; @@ -266,9 +267,11 @@ function islandora_basic_collection_preprocess_islandora_basic_collection(&$vari } $associated_objects_array = array(); - //for($i=$page_size * ($page_number -1),$i < $page_size * ($page) - foreach ($variables['islandora_associated_objects'] as $key => $value) { - $pid = $variables['islandora_associated_objects'][$key]['object']['value']; + $start = $page_size * ($page_number); + $end = min($start + $page_size, $total_count); + + for ($i = $start; $i < $end; $i++) { + $pid = $results[$i]['object']['value']; $fc_object = islandora_basic_collection_get_object($pid); if (!isset($fc_object)) { continue; //null object so don't show in collection view; @@ -283,7 +286,7 @@ function islandora_basic_collection_preprocess_islandora_basic_collection(&$vari } $object_url = 'islandora/object/' . $pid; $thumbnail_img = ''; - $title = $variables['islandora_associated_objects'][$key]['title']['value']; + $title = $results[$i]['title']['value']; $associated_objects_array[$pid]['pid'] = $pid; $associated_objects_array[$pid]['path'] = $object_url; $associated_objects_array[$pid]['title'] = $title;