11 $fields = array_keys($t->fields(
false,
true));
14 $query =&
$app->getQuery();
19 $this->fields = array();
21 if ( isset($t->_atts[
'__global__']) ) $globalProps = $t->_atts[
'__global__'];
22 else $globalProps = array();
24 $fieldDef =& $t->getField($field);
25 if ( isset($globalProps[
'sortable']) and !$globalProps[
'sortable'] and !@$fieldDef[
'sortable']){
27 }
else if ( isset($fieldDef[
'sortable']) and !@$fieldDef[
'sortable'] ){
36 $query =&
$app->getQuery();
37 if ( !isset($query[
'-'.
$prefix.
'sort']) ){
40 $sort = $query[
'-'.$prefix.
'sort'];
43 $sort = array_map(
'trim',explode(
',', $sort));
46 foreach ( $sort as $col ){
47 if ( !trim($col) )
continue;
48 $col = explode(
' ',$col);
50 if ( count($col) <= 1 ){
53 $sort2[$col[0]] = $col[1];
57 $this->current_sort=&$sort2;
58 $this->fields = array_diff($this->fields, array_keys($this->current_sort));
63 $id = rand(10,100000);
66 if ( @
$app->prefs[
'default_collapse_sort_control'] ){
67 $out =
'<a href="#" onclick="document.getElementById(\'Dataface_SortControl-'.$id.
'\').style.display=\
'\'; this.style.display=\
'none\'; return false">Sort Results</a>';
68 $style =
'display:none';
72 $out .=
'<div style="'.$style.
'" id="Dataface_SortControl-'.$id.
'" class="Dataface_SortControl"><fieldset><legend>Sorted on:</legend><ul class="Dataface_SortControl_current_sort-list">
74 foreach ($this->current_sort as
$fieldname=>$dir){
75 $fieldDef = $this->table->getField(
$fieldname);
78 <a class="Dataface_SortControl-reverse-'.$dir.
'" href="'.
$app->url(
'-'.$p.
'sort='.urlencode($this->
reverseSortOn(
$fieldname))).
'" title="Sort the results in reverse order on this column"><img src="'.DATAFACE_URL.
'/images/'.($dir==
'asc' ?
'arrowUp.gif' :
'arrowDown.gif').
'"/>'.$fieldDef[
'widget'][
'label'].
'</a>
79 <a href="'.
$app->url(
'-'.$p.
'sort='.urlencode($this->
removeParameter(
$fieldname))).
'" title="Remove this field from the sort parameters"><img src="'.DATAFACE_URL.
'/images/delete.gif"/></a>
84 $out .=
'<select onchange="window.location=this.options[this.selectedIndex].value">
85 <option value="">Add Columns</th>';
87 $fieldDef = $this->table->getField($fieldname);
88 $out .=
'<option value="'.$app->url(
'-'.$p.
'sort='.urlencode($this->
addParameter($fieldname))).
'">'.$fieldDef[
'widget'][
'label'].
'</option>';
90 $out .=
'</select><div style="clear:both"></div></fieldset></div>';
98 $params[
$fieldname] = ( $curr ==
'asc' ?
'desc' :
'asc');
119 return implode(
',',
$out);