diff --git a/application/user.preferences.class.inc.php b/application/user.preferences.class.inc.php index 78c21c963..994fa8800 100644 --- a/application/user.preferences.class.inc.php +++ b/application/user.preferences.class.inc.php @@ -103,7 +103,7 @@ class appUserPreferences extends DBObject } else { - unset($aPrefs[$sCode]); + unset($aPrefs[$sCodeOrPattern]); self::$oUserPrefs->Set('preferences', $aPrefs); } // Save only if needed diff --git a/js/datatable.js b/js/datatable.js index f677e267d..4d1565a5d 100644 --- a/js/datatable.js +++ b/js/datatable.js @@ -117,7 +117,28 @@ $(function() oParams.defaults = bSaveAsDefaults; oParams.class_aliases = this.options.oClassAliases; oParams.columns = this.options.oColumns; - + var iSortCol = 0; + var sSortOrder = ''; + for(var i in this.options.oColumns) + { + if (this.options.oColumns[i].checked) + { + if (this.options.oColumns[i].sort != 'none') + { + sSortOrder = this.options.oColumns[i].sort; + } + else + { + iSortCol++; + } + } + } + if ((this.options.sSelectMode != '') && (this.options.sSelectMode != 'none')) + { + iSortCol++; + } + oParams.sort_col = iSortCol; + oParams.sort_order = sSortOrder; var me = this; $.post(this.options.sRenderUrl, oParams, function(data) { // Do nothing... diff --git a/pages/ajax.render.php b/pages/ajax.render.php index 60e101593..6142ddb34 100644 --- a/pages/ajax.render.php +++ b/pages/ajax.render.php @@ -82,6 +82,11 @@ try $iEnd = utils::ReadParam('end',1); $iSortCol = utils::ReadParam('sort_col','null'); $sSelectMode = utils::ReadParam('select_mode', ''); + if (!empty($sSelectMode) && ($sSelectMode != 'none')) + { + // The first column is used for the selection (radio / checkbox) and is not sortable + $iSortCol--; + } $bDisplayKey = utils::ReadParam('display_key', 'true') == 'true'; $aColumns = utils::ReadParam('columns', array(), false, 'raw_data'); $aClassAliases = utils::ReadParam('class_aliases', array()); @@ -105,11 +110,18 @@ try { if ($iSortCol == $iSortIndex) { - $aNameSpec = MetaModel::GetNameSpec($oFilter->GetClass()); - if ($aNameSpec[0] == '%1$s') + if (!MetaModel::HasChildrenClasses($oFilter->GetClass())) { - // The name is made of a single column, let's sort according to the sort algorithm for this column - $aOrderBy[$aNameSpec[1][0]] = (utils::ReadParam('sort_order', 'asc') == 'asc'); + $aNameSpec = MetaModel::GetNameSpec($oFilter->GetClass()); + if ($aNameSpec[0] == '%1$s') + { + // The name is made of a single column, let's sort according to the sort algorithm for this column + $aOrderBy[$aNameSpec[1][0]] = (utils::ReadParam('sort_order', 'asc') == 'asc'); + } + else + { + $aOrderBy['friendlyname'] = (utils::ReadParam('sort_order', 'asc') == 'asc'); + } } else {