mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-21 00:02:17 +02:00
N°1386 - Advanced Search: Navigation in list - Browse this list - fix display
This commit is contained in:
@@ -572,21 +572,32 @@ class DataTableUIBlockFactory extends AbstractUIBlockFactory
|
||||
|
||||
$aExtraParams['table_id'] = $sTableId;
|
||||
$aExtraParams['list_id'] = $sListId;
|
||||
$oFilter = $oSet->GetFilter();
|
||||
|
||||
$sBasketAliasClass = $oFilter->GetFirstJoinedClassAlias();
|
||||
if ($sBasketAliasClass === 'Link') {
|
||||
$sLinkToBasket = $sBasketAliasClass.'/'.$sTargetAttr;
|
||||
$sBasketAliasClass = 'Remote';
|
||||
} else {
|
||||
$sLinkToBasket = $sBasketAliasClass;
|
||||
}
|
||||
|
||||
$oDataTable->SetOptions($aOptions);
|
||||
$oDataTable->SetAjaxUrl(utils::GetAbsoluteUrlAppRoot()."pages/ajax.render.php");
|
||||
$oDataTable->SetAjaxData([
|
||||
"operation" => 'search',
|
||||
"filter" => $oSet->GetFilter()->serialize(),
|
||||
"filter" => $oFilter->serialize(),
|
||||
"columns" => $oCustomSettings->aColumns,
|
||||
"extra_params" => $aExtraParams,
|
||||
"class_aliases" => $aClassAliases,
|
||||
"select_mode" => $sSelectMode,
|
||||
"basket" => $sLinkToBasket,
|
||||
]);
|
||||
$oDataTable->SetDisplayColumns($aColumnDefinition);
|
||||
$oDataTable->SetResultColumns($oCustomSettings->aColumns);
|
||||
$oDataTable->SetFilter($oSet->GetFilter()->ToOQL(true));
|
||||
$oDataTable->SetInitDisplayData(AjaxRenderController::GetDataForTable($oSet, $aClassAliases, $aColumnsToLoad, $sIdName, $aExtraParams, 1, true));
|
||||
$oFilter->SetSelectedClasses([$sBasketAliasClass]);
|
||||
$oDataTable->SetFilter($oFilter->ToOQL(true));
|
||||
$oDataTable->SetInitDisplayData(AjaxRenderController::GetDataForTable($oSet, $aClassAliases, $aColumnsToLoad, $sIdName, $aExtraParams, 1, $sLinkToBasket));
|
||||
|
||||
// row actions
|
||||
if (isset($aExtraParams['row_actions'])) {
|
||||
|
||||
@@ -52,19 +52,22 @@ class PageContentFactory
|
||||
* @see cmdbAbstractObject::ENUM_DISPLAY_MODE_XXX
|
||||
*
|
||||
* @param string $sMode Mode the object is being displayed (view, edit, create, ...), default is view.
|
||||
* @param string $sBasketFilter filter to find list of objects in basket
|
||||
* @param array $aBasketList list of id of objects in basket
|
||||
* @param string $sBackUrl url to go back to list of ojects in basket
|
||||
*
|
||||
* @param \DBObject $oObject
|
||||
*
|
||||
* @return \Combodo\iTop\Application\UI\Base\Layout\PageContent\PageContentWithSideContent
|
||||
* @throws \CoreException
|
||||
*/
|
||||
public static function MakeForObjectDetails(DBObject $oObject, string $sMode = cmdbAbstractObject::DEFAULT_DISPLAY_MODE, $sFilter = null, $aList = [], $sBackUrl = null)
|
||||
public static function MakeForObjectDetails(DBObject $oObject, string $sMode = cmdbAbstractObject::DEFAULT_DISPLAY_MODE, $sBasketFilter = null, $aBasketList = [], $sBackUrl = null)
|
||||
{
|
||||
$oLayout = new PageContentWithSideContent();
|
||||
|
||||
|
||||
if ($sFilter != null) {
|
||||
$oNavigationBlock = NavigationUIBlockFactory::MakeStandard($oObject, $sFilter, $aList, $sBackUrl);
|
||||
if ($sBasketFilter != null) {
|
||||
$oNavigationBlock = NavigationUIBlockFactory::MakeStandard($oObject, $sBasketFilter, $aBasketList, $sBackUrl);
|
||||
if ($oNavigationBlock != null) {
|
||||
$oLayout->AddSubBlock($oNavigationBlock);
|
||||
}
|
||||
|
||||
@@ -120,8 +120,12 @@ class BlockIndirectLinkSetViewTable extends AbstractBlockLinkSetViewTable
|
||||
$sAttributeLinkedSetIndirectAttCode = $oAttributeLinkedSetIndirectDefinition->GetCode();
|
||||
$sAttributeLinkedSetIndirectLinkedClass = $oAttributeLinkedSetIndirectDefinition->GetTargetClass();
|
||||
|
||||
\IssueLog::Error('AttributeLinkedSetIndirectAttCode:'.$sAttributeLinkedSetIndirectAttCode);
|
||||
\IssueLog::Error('AttributeLinkedSetIndirectLinkedClass:'.$sAttributeLinkedSetIndirectLinkedClass);
|
||||
|
||||
$aAttCodesToDisplay = MetaModel::GetAttributeLinkedSetIndirectDatatableAttCodesToDisplay($this->sObjectClass, $this->sAttCode, $sAttributeLinkedSetIndirectLinkedClass, $sAttributeLinkedSetIndirectAttCode);
|
||||
/** @noinspection PhpUnnecessaryLocalVariableInspection *//** @noinspection OneTimeUseVariablesInspection */
|
||||
/** @noinspection PhpUnnecessaryLocalVariableInspection */
|
||||
/** @noinspection OneTimeUseVariablesInspection */
|
||||
$sAttCodesToDisplay = implode(',', $aAttCodesToDisplay);
|
||||
|
||||
return $sAttCodesToDisplay;
|
||||
|
||||
@@ -62,7 +62,7 @@ class AjaxRenderController
|
||||
* @throws \MySQLException
|
||||
* @throws \MySQLHasGoneAwayException
|
||||
*/
|
||||
public static function GetDataForTable(DBObjectSet $oSet, array $aClassAliases, array $aColumnsLoad, string $sIdName = "", array $aExtraParams = [], int $iDrawNumber = 1, bool $bInBasket = false)
|
||||
public static function GetDataForTable(DBObjectSet $oSet, array $aClassAliases, array $aColumnsLoad, string $sIdName = "", array $aExtraParams = [], int $iDrawNumber = 1, string $sLinkToBasket = "")
|
||||
{
|
||||
if (isset($aExtraParams['show_obsolete_data'])) {
|
||||
$bShowObsoleteData = $aExtraParams['show_obsolete_data'];
|
||||
@@ -80,7 +80,7 @@ class AjaxRenderController
|
||||
if (isset($aObject[$sAlias]) && !is_null($aObject[$sAlias])) {
|
||||
$aObj[$sAlias."/_key_"] = $aObject[$sAlias]->GetKey();
|
||||
$aObj[$sAlias."/_key_/raw"] = $aObject[$sAlias]->GetKey();
|
||||
$aObj[$sAlias."/hyperlink"] = $aObject[$sAlias]->GetHyperlink(null, true, null, false, $bInBasket);
|
||||
$aObj[$sAlias."/hyperlink"] = $aObject[$sAlias]->GetHyperlink(null, true, null, false, ($sLinkToBasket === $sAlias));
|
||||
$aObj[$sAlias."/friendlyname"] = $aObject[$sAlias]->Get('friendlyname');
|
||||
|
||||
// N°5943 Protection against $aColumnsLoad having less class aliases than $aClassAliases, this is in case the method's consumer isn't passing data correctly
|
||||
@@ -95,14 +95,13 @@ class AjaxRenderController
|
||||
}
|
||||
|
||||
foreach ($aColumnsLoad[$sAlias] as $sAttCode) {
|
||||
$aObj[$sAlias."/".$sAttCode] = $aObject[$sAlias]->GetAsHTML($sAttCode);
|
||||
$aObj[$sAlias."/".$sAttCode] = $aObject[$sAlias]->GetAsHTML($sAttCode, true, ($sLinkToBasket === $sAlias."/".$sAttCode));
|
||||
|
||||
$bExcludeRawValue = false;
|
||||
// Only retrieve raw (stored) value for simple fields
|
||||
foreach (cmdbAbstractObject::GetAttDefClassesToExcludeFromMarkupMetadataRawValue() as $sAttDefClassToExclude)
|
||||
{
|
||||
foreach (cmdbAbstractObject::GetAttDefClassesToExcludeFromMarkupMetadataRawValue() as $sAttDefClassToExclude) {
|
||||
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
|
||||
if (is_a($oAttDef, $sAttDefClassToExclude, true))
|
||||
{
|
||||
if (is_a($oAttDef, $sAttDefClassToExclude, true)) {
|
||||
$bExcludeRawValue = true;
|
||||
break;
|
||||
}
|
||||
@@ -490,7 +489,9 @@ class AjaxRenderController
|
||||
$oSet = new DBObjectSet($oFilter, $aOrderBy, $aQueryParams, null, $iEnd - $iStart, $iStart);
|
||||
$oSet->OptimizeColumnLoad($aColumnsLoad);
|
||||
|
||||
return self::GetDataForTable($oSet, $aClassAliases, $aColumnsLoad, $sIdName, $aExtraParams, $iDrawNumber, true);
|
||||
$sLinkToBasket = utils::ReadParam('basket', '', false, 'string');
|
||||
|
||||
return self::GetDataForTable($oSet, $aClassAliases, $aColumnsLoad, $sIdName, $aExtraParams, $iDrawNumber, $sLinkToBasket);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user