? custom_pagers_wrap.patch Index: custom_pagers.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/custom_pagers/custom_pagers.admin.inc,v retrieving revision 1.1.2.2 diff -u -p -r1.1.2.2 custom_pagers.admin.inc --- custom_pagers.admin.inc 24 Dec 2008 00:58:21 -0000 1.1.2.2 +++ custom_pagers.admin.inc 23 Apr 2009 20:35:06 -0000 @@ -187,6 +187,19 @@ function custom_pagers_form(&$form_state '#default_value' => $pid ? $pager->reverse_list : NULL ); + $form['node_list']['wrap'] = array( + '#type' => 'select', + '#title' => t('Wrap list'), + '#options' => array( + '' => 'None', + 'first' => t("First"), + 'last' => t("Last"), + 'both' => t("Both"), + ), + '#description' => t("Wrapping results will cause the first/last items in the list to jump to the start/end."), + '#default_value' => $pid ? $pager->wrap : NULL + ); + $form['buttons']['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), Index: custom_pagers.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/custom_pagers/custom_pagers.install,v retrieving revision 1.3.2.3 diff -u -p -r1.3.2.3 custom_pagers.install --- custom_pagers.install 31 Mar 2009 15:56:43 -0000 1.3.2.3 +++ custom_pagers.install 23 Apr 2009 20:35:06 -0000 @@ -77,6 +77,13 @@ function custom_pagers_schema() { 'size' => 'tiny', 'description' => t("A boolean flag indicating that this {custom_pager} should be displayed in reverse order.") ), + 'wrap' => array( + 'type' => 'varchar', + 'length' => 16, + 'not null' => TRUE, + 'default' => '', + 'description' => t("How to wrap the results of this {custom_pager}.") + ), ), 'primary key' => array('pid'), ); Index: custom_pagers.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/custom_pagers/custom_pagers.module,v retrieving revision 1.6.2.6 diff -u -p -r1.6.2.6 custom_pagers.module --- custom_pagers.module 31 Mar 2009 15:54:10 -0000 1.6.2.6 +++ custom_pagers.module 23 Apr 2009 20:35:06 -0000 @@ -288,6 +288,14 @@ function custom_pagers_preprocess_custom $pager = $vars['pager']; $nav = $vars['nav_array']; + if (empty($nav['prev']) && ($pager->wrap == 'first' || $pager->wrap == 'both')) { + $nav['prev'] = end($vars['nav_array']['full_list']); + } + + if (empty($nav['next']) && ($pager->wrap == 'last' || $pager->wrap == 'both')) { + $nav['next'] = reset($vars['nav_array']['full_list']); + } + $vars['previous'] = !empty($nav['prev']) ? l('‹ ' . t('previous'), 'node/'. $nav['prev']) : ''; $vars['key'] = t('@count of @count_total', array('@count' => ($nav['current_index'] + 1), '@count_total' => count($nav['full_list']))); $vars['next'] = !empty($nav['next']) ? l(t('next') . ' ›', 'node/'. $nav['next']) : '';