mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
N°4048 Fix default sorting on lists when using custom list settings without sort order
This commit is contained in:
@@ -225,10 +225,12 @@ class AjaxRenderController
|
||||
$iDrawNumber = utils::ReadParam('draw', 1);
|
||||
|
||||
$aSort = utils::ReadParam('order', [], false, 'array');
|
||||
$bForceSort = false;
|
||||
if (count($aSort) > 0) {
|
||||
$iSortCol = $aSort[0]["column"];
|
||||
$sSortOrder = $aSort[0]["dir"];
|
||||
} else {
|
||||
} else{
|
||||
$bForceSort = true;
|
||||
$iSortCol = 0;
|
||||
$sSortOrder = "asc";
|
||||
}
|
||||
@@ -251,6 +253,15 @@ class AjaxRenderController
|
||||
if (!isset($aColumns[$sAlias])) {
|
||||
continue;
|
||||
}
|
||||
// It's better to use default class order than asc first column when none specified by the request
|
||||
if($bForceSort && count(MetaModel::GetOrderByDefault($sClassName)) > 0){
|
||||
$iSortCol = -1;
|
||||
|
||||
$aDefaultOrder = MetaModel::GetOrderByDefault($sClassName);
|
||||
foreach ($aDefaultOrder as $sAttCode => $bOrder) {
|
||||
$aOrderBy[$sAlias.'.'.$sAttCode] = $bOrder;
|
||||
}
|
||||
}
|
||||
foreach ($aColumns[$sAlias] as $sAttCode => $aData) {
|
||||
if ($aData['checked'] == 'true') {
|
||||
$aColumns[$sAlias][$sAttCode]['checked'] = true;
|
||||
|
||||
@@ -288,6 +288,8 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory
|
||||
if (count($oCustomSettings->aColumns) == 0)
|
||||
{
|
||||
$oCustomSettings->aColumns = $oDefaultSettings->aColumns;
|
||||
}
|
||||
if(count($oCustomSettings->GetSortOrder()) == 0){
|
||||
$oCustomSettings->aSortOrder = $oDefaultSettings->aSortOrder;
|
||||
}
|
||||
|
||||
@@ -295,8 +297,12 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory
|
||||
$aColumnsToLoad = array();
|
||||
foreach ($oCustomSettings->aColumns as $sAlias => $aColumnsInfo) {
|
||||
foreach ($aColumnsInfo as $sAttCode => $aData) {
|
||||
$bForceLoad = false;
|
||||
if ($aData['sort'] != 'none' || isset($oCustomSettings->aSortOrder[$sAttCode])) {
|
||||
$bForceLoad = true;
|
||||
}
|
||||
if ($sAttCode != '_key_') {
|
||||
if ($aData['checked']) {
|
||||
if ($aData['checked'] || $bForceLoad) {
|
||||
$aColumnsToLoad[$sAlias][] = $sAttCode;
|
||||
} else {
|
||||
// See if this column is a must to load
|
||||
@@ -321,11 +327,11 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory
|
||||
foreach ($oCustomSettings->aColumns[$sClassAlias] as $sAttCode => $aData) {
|
||||
$sCode = ($aData['code'] == '_key_') ? 'friendlyname' : $aData['code'];
|
||||
if ($aData['sort'] != 'none') {
|
||||
$aSortOrder[$sAlias.$sCode] = ($aData['sort'] == 'asc'); // true for ascending, false for descending
|
||||
$aSortOrder[$sAlias.'.'.$sCode] = ($aData['sort'] == 'asc'); // true for ascending, false for descending
|
||||
$aSortDatable=[$iIndexColumn,$aData['sort']];
|
||||
}
|
||||
elseif (isset($oCustomSettings->aSortOrder[$sAttCode])){
|
||||
$aSortOrder[$sAlias.$sCode] = $oCustomSettings->aSortOrder[$sAttCode]; // true for ascending, false for descending
|
||||
$aSortOrder[$sAlias.'.'.$sCode] = $oCustomSettings->aSortOrder[$sAttCode]; // true for ascending, false for descending
|
||||
}
|
||||
|
||||
if ($aData['checked']) {
|
||||
|
||||
Reference in New Issue
Block a user