From 3dba442153dd4055bc51166bb67358100ae7308d Mon Sep 17 00:00:00 2001 From: tokul Date: Wed, 5 May 2004 11:27:56 +0000 Subject: [PATCH] adding address book sorting options. changed some parts of patch written by Brian Loniewski --- ChangeLog | 2 + functions/addressbook.php | 83 +++++++++++++++++++++++++++++++++------ src/addressbook.php | 30 ++++++-------- 3 files changed, 83 insertions(+), 32 deletions(-) diff --git a/ChangeLog b/ChangeLog index fed91a8a6..f5b749a0e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -50,6 +50,8 @@ Version 1.5.1 -- CVS - Fixed date display bug for messages of today. Show short format in case of long format. (only occures in the timeframe around 0:00 AM till timezone). + - Added address book sorting options. Ascending/descending sorting code + written by Bryan Loniewski Version 1.5.0 -------------------- diff --git a/functions/addressbook.php b/functions/addressbook.php index 705742df6..9bce2351b 100644 --- a/functions/addressbook.php +++ b/functions/addressbook.php @@ -1,5 +1,4 @@ $b['backend']) { return 1; @@ -559,30 +578,68 @@ function alistcmp($a,$b) { return -1; } } - return (strtolower($a[$abook_sort]) > strtolower($b[$abook_sort])) ? 1 : -1; + + if( (($abook_sort_order+2) % 2) == 1) { + return (strtolower($a[$abook_sort]) < strtolower($b[$abook_sort])) ? 1 : -1; + } else { + return (strtolower($a[$abook_sort]) > strtolower($b[$abook_sort])) ? 1 : -1; + } } /** - * Address book sorting order + * Address book sorting options * - * returns name of field that should be used for sorting. - * @return string name of address book field + * returns address book sorting order + * @return integer book sorting options order */ function get_abook_sort() { global $data_dir, $username; /* get sorting order */ - if(sqgetGlobalVar('abook_sort', $abook_sort,SQ_GET)) { - sqgetGlobalVar('abook_sort', $abook_sort,SQ_GET); - setPref($data_dir, $username, 'abook_sort', $abook_sort); + if(sqgetGlobalVar('abook_sort_order', $temp, SQ_GET)) { + $abook_sort_order = (int) $temp; + + if ($abook_sort_order < 0 or $abook_sort_order > 8) + $abook_sort_order=8; + + setPref($data_dir, $username, 'abook_sort_order', $abook_sort_order); } else { - $abook_sort = getPref($data_dir, $username, 'abook_sort', 'name'); + /* get previous sorting options. default to unsorted */ + $abook_sort_order = getPref($data_dir, $username, 'abook_sort_order', 8); } - if ($abook_sort != "nickname" && $abook_sort != "email" && $abook_sort != "label") - $abook_sort = "name"; + return $abook_sort_order; +} - return $abook_sort; +/** + * This function shows the address book sort button. + * + * @param integer $abook_sort_order current sort value + * @param string $alt_tag alt tag value (string visible to text only browsers) + * @param integer $Down sort value when list is sorted ascending + * @param integer $Up sort value when list is sorted descending + * @return string html code with sorting images and urls + */ +function show_abook_sort_button($abook_sort_order, $alt_tag, $Down, $Up ) { + global $form_url; + + /* Figure out which image we want to use. */ + if ($abook_sort_order != $Up && $abook_sort_order != $Down) { + $img = 'sort_none.png'; + $which = $Up; + } elseif ($abook_sort_order == $Up) { + $img = 'up_pointer.png'; + $which = $Down; + } else { + $img = 'down_pointer.png'; + $which = 8; + } + + /* Now that we have everything figured out, show the actual button. */ + return ' ' . $alt_tag . ''; } /* diff --git a/src/addressbook.php b/src/addressbook.php index 262eb2d1a..a3eab1615 100644 --- a/src/addressbook.php +++ b/src/addressbook.php @@ -43,6 +43,9 @@ sqgetGlobalVar('oldnick', $oldnick, SQ_POST); sqgetGlobalVar('backend', $backend, SQ_POST); sqgetGlobalVar('doedit', $doedit, SQ_POST); +/* Get sorting order */ +$abook_sort_order = get_abook_sort(); + /** * Make an input field * @param string $label @@ -377,28 +380,17 @@ if ($showaddrlist) { html_tag( 'tr', "\n" . html_tag( 'th', ' ', 'left', '', 'width="1%"' ) . "\n" . html_tag( 'th', _("Nickname") . - " ". - "\"sort", 'left', '', 'width="1%"' ) . "\n" . + show_abook_sort_button($abook_sort_order, _("sort by nickname"), 0, 1) + , 'left', '', 'width="1%"' ) . "\n" . html_tag( 'th', _("Name") . - " " . - "", 'left', '', 'width="1%"' ) . "\n" . + show_abook_sort_button($abook_sort_order, _("sort by name"), 2, 3) + , 'left', '', 'width="1%"' ) . "\n" . html_tag( 'th', _("E-mail") . - " " . - "", 'left', '', 'width="1%"' ) . "\n" . + show_abook_sort_button($abook_sort_order, _("sort by email"), 4, 5) + , 'left', '', 'width="1%"' ) . "\n" . html_tag( 'th', _("Info") . - " " . - "", 'left', '', 'width="1%"' ) . "\n", + show_abook_sort_button($abook_sort_order, _("sort by info"), 6, 7) + , 'left', '', 'width="1%"' ) . "\n", '', $color[9] ) . "\n"; }