public function Display(WebPage $oPage, DataTableSettings $oSettings, $bActionsMenu, $sSelectMode, $bViewLink, $aExtraParams) { $this->oDefaultSettings = $oSettings; // Identified tables can have their own specific settings $oCustomSettings = DataTableSettings::GetTableSettings($this->aClassAliases, $this->sTableId); if ($oCustomSettings != null) { // Custom settings overload the default ones $this->bUseCustomSettings = true; if ($this->oDefaultSettings->iDefaultPageSize == 0) { $oCustomSettings->iDefaultPageSize = 0; } } else { $oCustomSettings = $oSettings; } if ($oCustomSettings->iDefaultPageSize > 0) { $this->oSet->SetLimit($oCustomSettings->iDefaultPageSize); } $this->oSet->SetOrderBy($oCustomSettings->GetSortOrder()); // Load only the requested columns $aColumnsToLoad = array(); foreach ($oCustomSettings->aColumns as $sAlias => $aColumnsInfo) { foreach ($aColumnsInfo as $sAttCode => $aData) { if ($sAttCode != '_key_') { if ($aData['checked']) { $aColumnsToLoad[$sAlias][] = $sAttCode; } else { // See if this column is a must to load $sClass = $this->aClassAliases[$sAlias]; $oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode); if ($oAttDef->alwaysLoadInTables()) { $aColumnsToLoad[$sAlias][] = $sAttCode; } } } } } $this->oSet->OptimizeColumnLoad($aColumnsToLoad); $bToolkitMenu = true; if (isset($aExtraParams['toolkit_menu'])) { $bToolkitMenu = (bool) $aExtraParams['toolkit_menu']; } if (UserRights::IsPortalUser()) { // Portal users have a limited access to data, for now they can only see what's configured for them $bToolkitMenu = false; } return $this->GetAsHTML($oPage, $oCustomSettings->iDefaultPageSize, $oCustomSettings->iDefaultPageSize, 0, $oCustomSettings->aColumns, $bActionsMenu, $bToolkitMenu, $sSelectMode, $bViewLink, $aExtraParams); }
$bSaveAsDefaults = utils::ReadParam('defaults', 'true') == 'true'; $aClassAliases = utils::ReadParam('class_aliases', array(), false, 'raw_data'); $aColumns = utils::ReadParam('columns', array(), false, 'raw_data'); foreach ($aColumns as $sAlias => $aList) { foreach ($aList as $sAttCode => $aData) { $aColumns[$sAlias][$sAttCode]['checked'] = $aData['checked'] == 'true'; $aColumns[$sAlias][$sAttCode]['disabled'] = $aData['disabled'] == 'true'; $aColumns[$sAlias][$sAttCode]['sort'] = $aData['sort']; } } $oSettings = new DataTableSettings($aClassAliases, $sTableId); $oSettings->iDefaultPageSize = $iPageSize; $oSettings->aColumns = $aColumns; if ($bSaveAsDefaults) { if ($sTableId != null) { $oCurrSettings = DataTableSettings::GetTableSettings($aClassAliases, $sTableId, true); if ($oCurrSettings) { $oCurrSettings->ResetToDefault(false); // Reset this table to the defaults } } $bRet = $oSettings->SaveAsDefault(); } else { $bRet = $oSettings->Save(); } $oPage->add($bRet ? 'Ok' : 'KO'); break; case 'datatable_reset_settings': $oPage->SetContentType('text/plain'); $sTableId = utils::ReadParam('table_id', null, false, 'raw_data'); $aClassAliases = utils::ReadParam('class_aliases', array(), false, 'raw_data');