- sorting criteria does no longer exclude entries with the soring criteria empty, but puts them always on the end of the list (changing the sorting no longer changes to total number of entries)

- this also fixes the bug that sorting after the org_name in an org_view, disables the org_view
This commit is contained in:
Ralf Becker 2006-09-25 10:18:05 +00:00
parent 1a4145905c
commit 3321dd1d48

View File

@ -490,33 +490,29 @@ class uicontacts extends bocontacts
$query['col_filter'][$name] = $value; $query['col_filter'][$name] = $value;
} }
} }
// translate the select order to the realy used over all 3 columns // translate the select order to the really used over all 3 columns
$sort = $query['sort']; $sort = $query['sort'];
switch($query['order']) switch($query['order']) // "xxx!='' DESC" sorts contacts with empty order-criteria always at the end
{ { // we don't exclude them, as the total would otherwise depend on the order-criteria
case 'org_name': case 'org_name':
$order = "org_name $sort,n_family $sort,n_given $sort"; $order = "org_name!='' DESC,org_name $sort,n_family $sort,n_given $sort";
break; break;
default: default:
$query['order'] = 'n_family'; $query['order'] = 'n_family';
case 'n_family': case 'n_family':
$order = "n_family $sort,n_given $sort,org_name $sort"; $order = "n_family!='' DESC,n_family $sort,n_given $sort,org_name $sort";
break; break;
case 'n_given': case 'n_given':
$order = "n_given $sort,n_family $sort,org_name $sort"; $order = "n_given!='' DESC,n_given $sort,n_family $sort,org_name $sort";
break; break;
case 'n_fileas': case 'n_fileas':
$order = 'n_fileas '.$sort; $order = "n_fileas!='' DESC,n_fileas $sort";
break; break;
} }
if ($query['searchletter']) // only show contacts which ordercriteria starts with the given letter if ($query['searchletter']) // only show contacts if the order-criteria starts with the given letter
{ {
$query['col_filter'][] = $query['order'].' LIKE '.$GLOBALS['egw']->db->quote($query['searchletter'].'%'); $query['col_filter'][] = $query['order'].' LIKE '.$GLOBALS['egw']->db->quote($query['searchletter'].'%');
} }
else // dont show contacts with empty order criteria
{
$query['col_filter'][$query['order']] = "!''";
}
$rows = parent::search($query['search'],$id_only ? array('id','org_name','n_family','n_given','n_fileas') : false, $rows = parent::search($query['search'],$id_only ? array('id','org_name','n_family','n_given','n_fileas') : false,
$order,'','%',false,'OR',array((int)$query['start'],(int) $query['num_rows']),$query['col_filter']); $order,'','%',false,'OR',array((int)$query['start'],(int) $query['num_rows']),$query['col_filter']);
@ -565,6 +561,7 @@ class uicontacts extends bocontacts
$row['line2'] = $row['org_name']; $row['line2'] = $row['org_name'];
break; break;
case 'n_fileas': case 'n_fileas':
if (!$row['n_fileas']) $row['n_fileas'] = $this->fileas($row);
list($row['line1'],$row['line2']) = explode(': ',$row['n_fileas']); list($row['line1'],$row['line2']) = explode(': ',$row['n_fileas']);
break; break;
} }