summaryrefslogtreecommitdiff
path: root/includes/pager.inc
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2006-01-14 09:40:22 +0000
committerDries Buytaert <dries@buytaert.net>2006-01-14 09:40:22 +0000
commit1a866d14f4dce4ed08888330252ec61c70fcdbab (patch)
tree57bc3cd0d4f5851111f04711bcaa3fb02213fa9a /includes/pager.inc
parent776e6501cdf301c498e584bdd7db12e6a659a8e0 (diff)
downloadbrdo-1a866d14f4dce4ed08888330252ec61c70fcdbab.tar.gz
brdo-1a866d14f4dce4ed08888330252ec61c70fcdbab.tar.bz2
- Patch #44498 by m3vrck: improved HTML generated code for pagers.
Diffstat (limited to 'includes/pager.inc')
-rw-r--r--includes/pager.inc104
1 files changed, 51 insertions, 53 deletions
diff --git a/includes/pager.inc b/includes/pager.inc
index 58891986e..c5f10ffd3 100644
--- a/includes/pager.inc
+++ b/includes/pager.inc
@@ -95,24 +95,24 @@ function pager_query($query, $limit = 10, $element = 0, $count_query = NULL) {
* The number of query results to display per page.
* @param $element
* An optional integer to distinguish between multiple pagers on one page.
- * @param $attributes
+ * @param $parameters
* An associative array of query string parameters to append to the pager links.
* @return
* An HTML string that generates the query pager.
*
* @ingroup themeable
*/
-function theme_pager($tags = array(), $limit = 10, $element = 0, $attributes = array()) {
+function theme_pager($tags = array(), $limit = 10, $element = 0, $parameters = array()) {
global $pager_total;
$output = '';
if ($pager_total[$element] > 1) {
- $output .= '<div id="pager" class="container-inline">';
- $output .= theme('pager_first', ($tags[0] ? $tags[0] : t('first page')), $limit, $element, $attributes);
- $output .= theme('pager_previous', ($tags[1] ? $tags[1] : t('previous page')), $limit, $element, 1, $attributes);
- $output .= theme('pager_list', $limit, $element, ($tags[2] ? $tags[2] : 9 ), '', $attributes);
- $output .= theme('pager_next', ($tags[3] ? $tags[3] : t('next page')), $limit, $element, 1, $attributes);
- $output .= theme('pager_last', ($tags[4] ? $tags[4] : t('last page')), $limit, $element, $attributes);
+ $output .= '<div id="pager">';
+ $output .= theme('pager_first', ($tags[0] ? $tags[0] : t('&#171; first')), $limit, $element, $parameters);
+ $output .= theme('pager_previous', ($tags[1] ? $tags[1] : t('&#8249; previous')), $limit, $element, 1, $parameters);
+ $output .= theme('pager_list', $limit, $element, ($tags[2] ? $tags[2] : 9 ), '', $parameters);
+ $output .= theme('pager_next', ($tags[3] ? $tags[3] : t('next &#8250;')), $limit, $element, 1, $parameters);
+ $output .= theme('pager_last', ($tags[4] ? $tags[4] : t('last &#187;')), $limit, $element, $parameters);
$output .= '</div>';
return $output;
@@ -135,25 +135,22 @@ function theme_pager($tags = array(), $limit = 10, $element = 0, $attributes = a
* The number of query results to display per page.
* @param $element
* An optional integer to distinguish between multiple pagers on one page.
- * @param $attributes
+ * @param $parameters
* An associative array of query string parameters to append to the pager links.
* @return
* An HTML string that generates this piece of the query pager.
*
* @ingroup themeable
*/
-function theme_pager_first($text, $limit, $element = 0, $attributes = array()) {
+function theme_pager_first($text, $limit, $element = 0, $parameters = array()) {
global $pager_page_array;
- $output = '<div class="pager-first">';
+ $output = '';
// If we are anywhere but the first page
if ($pager_page_array[$element] > 0) {
- $output .= theme('pager_link', $text, pager_load_array(0, $element, $pager_page_array), $element, $attributes);
+ $output = theme('pager_link', $text, pager_load_array(0, $element, $pager_page_array), $element, $parameters, array('class' => 'pager-first'));
}
- else {
- $output .= ' ';
- }
- $output .= '</div>';
+
return $output;
}
@@ -168,29 +165,30 @@ function theme_pager_first($text, $limit, $element = 0, $attributes = array()) {
* An optional integer to distinguish between multiple pagers on one page.
* @param $interval
* The number of pages to move backward when the link is clicked.
- * @param $attributes
+ * @param $parameters
* An associative array of query string parameters to append to the pager links.
* @return
* An HTML string that generates this piece of the query pager.
*
* @ingroup themeable
*/
-function theme_pager_previous($text, $limit, $element = 0, $interval = 1, $attributes = array()) {
+function theme_pager_previous($text, $limit, $element = 0, $interval = 1, $parameters = array()) {
global $pager_page_array;
- $output = '<div class="pager-previous">';
+ $output = '';
+
// If we are anywhere but the first page
if ($pager_page_array[$element] > 0) {
$page_new = pager_load_array($pager_page_array[$element] - $interval, $element, $pager_page_array);
// If the previous page is the first page, mark the link as such.
if ($page_new[$element] == 0) {
- $output .= theme('pager_first', $text, $limit, $element, $attributes);
+ $output = theme('pager_first', $text, $limit, $element, $parameters);
}
// The previous page is not the first page.
else {
- $output .= theme('pager_link', $text, $page_new, $element, $attributes);
+ $output = theme('pager_link', $text, $page_new, $element, $parameters, array('class' => 'pager-previous'));
}
}
- $output .= '</div>';
+
return $output;
}
@@ -205,32 +203,30 @@ function theme_pager_previous($text, $limit, $element = 0, $interval = 1, $attri
* An optional integer to distinguish between multiple pagers on one page.
* @param $interval
* The number of pages to move forward when the link is clicked.
- * @param $attributes
+ * @param $parameters
* An associative array of query string parameters to append to the pager links.
* @return
* An HTML string that generates this piece of the query pager.
*
* @ingroup themeable
*/
-function theme_pager_next($text, $limit, $element = 0, $interval = 1, $attributes = array()) {
+function theme_pager_next($text, $limit, $element = 0, $interval = 1, $parameters = array()) {
global $pager_page_array, $pager_total;
- $output = '<div class="pager-next">';
+ $output = '';
+
// If we are anywhere but the last page
if ($pager_page_array[$element] < ($pager_total[$element] - 1)) {
$page_new = pager_load_array($pager_page_array[$element] + $interval, $element, $pager_page_array);
// If the next page is the last page, mark the link as such.
if ($page_new[$element] == ($pager_total[$element] - 1)) {
- $output .= theme('pager_last', $text, $limit, $element, $attributes);
+ $output = theme('pager_last', $text, $limit, $element, $parameters);
}
// The next page is not the last page.
else {
- $output .= theme('pager_link', $text, $page_new, $element, $attributes);
+ $output = theme('pager_link', $text, $page_new, $element, $parameters, array('class' => 'pager-next'));
}
}
- else {
- $output .= ' ';
- }
- $output .= '</div>';
+
return $output;
}
@@ -243,25 +239,22 @@ function theme_pager_next($text, $limit, $element = 0, $interval = 1, $attribute
* The number of query results to display per page.
* @param $element
* An optional integer to distinguish between multiple pagers on one page.
- * @param $attributes
+ * @param $parameters
* An associative array of query string parameters to append to the pager links.
* @return
* An HTML string that generates this piece of the query pager.
*
* @ingroup themeable
*/
-function theme_pager_last($text, $limit, $element = 0, $attributes = array()) {
+function theme_pager_last($text, $limit, $element = 0, $parameters = array()) {
global $pager_page_array, $pager_total;
+ $output = '';
- $output = '<div class="pager-last">';
// If we are anywhere but the last page
if ($pager_page_array[$element] < ($pager_total[$element] - 1)) {
- $output .= theme('pager_link', $text, pager_load_array($pager_total[$element] - 1, $element, $pager_page_array), $element, $attributes);
- }
- else {
- $output .= ' ';
+ $output = theme('pager_link', $text, pager_load_array($pager_total[$element] - 1, $element, $pager_page_array), $element, $parameters, array('class' => 'pager-last'));
}
- $output .= '</div>';
+
return $output;
}
@@ -276,17 +269,17 @@ function theme_pager_last($text, $limit, $element = 0, $attributes = array()) {
* The number of pages in the list.
* @param $text
* A string of text to display before the page list.
- * @param $attributes
+ * @param $parameters
* An associative array of query string parameters to append to the pager links.
* @return
* An HTML string that generates this piece of the query pager.
*
* @ingroup themeable
*/
-function theme_pager_list($limit, $element = 0, $quantity = 5, $text = '', $attributes = array()) {
+function theme_pager_list($limit, $element = 0, $quantity = 5, $text = '', $parameters = array()) {
global $pager_page_array, $pager_total;
- $output = '<div class="pager-list">';
+ $output = '<span class="pager-list">';
// Calculate various markers within this pager piece:
// Middle is used to "center" pages around the current page.
$pager_middle = ceil($quantity / 2);
@@ -318,27 +311,27 @@ function theme_pager_list($limit, $element = 0, $quantity = 5, $text = '', $attr
if ($i != $pager_max) {
$output .= $text;
if ($i > 1) {
- $output .= '<div class="pager-list-dots-left">... </div>';
+ $output .= '<span class="pager-ellipses">&#8230;</span>';
}
// Now generate the actual pager piece.
for (; $i <= $pager_last && $i <= $pager_max; $i++) {
if ($i < $pager_current) {
- $output .= theme('pager_previous', $i, $limit, $element, ($pager_current - $i), $attributes) ." ";
+ $output .= theme('pager_previous', $i, $limit, $element, ($pager_current - $i), $parameters);
}
if ($i == $pager_current) {
- $output .= '<strong>'. $i .'</strong> ';
+ $output .= '<strong class="pager-current">'. $i .'</strong>';
}
if ($i > $pager_current) {
- $output .= theme('pager_next', $i, $limit, $element, ($i - $pager_current), $attributes) ." ";
+ $output .= theme('pager_next', $i, $limit, $element, ($i - $pager_current), $parameters);
}
}
if ($i < $pager_max) {
- $output .= '<div class="pager-list-dots-right">...</div>';
+ $output .= '<span class="pager-ellipses">&#8230;</span>';
}
}
- $output .= '</div>';
+ $output .= '</span>';
return $output;
}
@@ -350,23 +343,28 @@ function theme_pager_list($limit, $element = 0, $quantity = 5, $text = '', $attr
* The first result to display on the linked page.
* @param $element
* An optional integer to distinguish between multiple pagers on one page.
- * @param $attributes
+ * @param $parameters
* An associative array of query string parameters to append to the pager link.
+ * @param $attributes
+ * An associative array of HTML attributes to apply to a pager anchor tag.
* @return
* An HTML string that generates the link.
*/
-function theme_pager_link($text, $page_new, $element, $attributes = array()) {
+function theme_pager_link($text, $page_new, $element, $parameters = array(), $attributes = array()) {
$page = isset($_GET['page']) ? $_GET['page'] : '';
if ($new_page = implode(',', pager_load_array($page_new[$element], $element, explode(',', $page)))) {
- $attributes['page'] = $new_page;
+ $parameters['page'] = $new_page;
}
$query = array();
- foreach ($attributes as $key => $value) {
+ foreach ($parameters as $key => $value) {
$query[] = $key .'='. $value;
}
- return l($text, $_GET['q'], array(), count($query) ? implode('&', $query) : NULL);
+ // Set each pager link title with correct page number (clean out HTML entities, title doesn't like those)
+ $attributes['title'] = is_numeric($text) ? 'goto page ' . $text : 'goto ' . str_replace(array('&#171; ', '&#8249; ', ' &#8250;', ' &#187;'), '', $text) . ' page';
+
+ return l($text, $_GET['q'], $attributes, count($query) ? implode('&', $query) : NULL, NULL, FALSE, TRUE);
}
/**