FIxed the processing of hierarchical ZLists to keep the display order when plain fields and fieldsets are mixed at the same level.

SVN:trunk[1037]
This commit is contained in:
Denis Flaven
2011-01-03 12:56:07 +00:00
parent a8a77fdebb
commit 64f452caba

View File

@@ -303,13 +303,33 @@ abstract class cmdbAbstractObject extends CMDBObject
{
$oPage->add('<td style="vertical-align:top">');
//$aDetails[$sTab][$sColIndex] = array();
$sLabel = '';
$sPreviousLabel = '';
$aDetails[$sTab][$sColIndex] = array();
foreach($aFieldsets as $sFieldsetName => $aFields)
{
$aDetails[$sTab][$sColIndex] = array();
if (!empty($sFieldsetName))
if (!empty($sFieldsetName) && ($sFieldsetName[0] != '_'))
{
$oPage->add('<fieldset>');
$oPage->add('<legend>'.Dict::S($sFieldsetName).'</legend>');
$sLabel = $sFieldsetName;
}
else
{
$sLabel = '';
}
if ($sLabel != $sPreviousLabel)
{
if (!empty($sPreviousLabel))
{
$oPage->add('<fieldset>');
$oPage->add('<legend>'.Dict::S($sPreviousLabel).'</legend>');
}
$oPage->Details($aDetails[$sTab][$sColIndex]);
if (!empty($sPreviousLabel))
{
$oPage->add('</fieldset>');
}
$aDetails[$sTab][$sColIndex] = array();
$sPreviousLabel = $sLabel;
}
foreach($aFields as $sAttCode)
{
@@ -320,11 +340,16 @@ abstract class cmdbAbstractObject extends CMDBObject
$aDetails[$sTab][$sColIndex][] = $val;
}
}
$oPage->Details($aDetails[$sTab][$sColIndex]);
if (!empty($sFieldsetName))
{
$oPage->add('</fieldset>');
}
}
if (!empty($sPreviousLabel))
{
$oPage->add('<fieldset>');
$oPage->add('<legend>'.Dict::S($sFieldsetName).'</legend>');
}
$oPage->Details($aDetails[$sTab][$sColIndex]);
if (!empty($sPreviousLabel))
{
$oPage->add('</fieldset>');
}
$oPage->add('</td>');
}
@@ -1244,15 +1269,35 @@ EOF
$oPage->add('<table style="vertical-align:top"><tr>');
foreach($aCols as $sColIndex => $aFieldsets)
{
$sLabel = '';
$sPreviousLabel = '';
$aDetails[$sTab][$sColIndex] = array();
$oPage->add('<td style="vertical-align:top">');
//$aDetails[$sTab][$sColIndex] = array();
foreach($aFieldsets as $sFieldsetName => $aFields)
{
$aDetails[$sTab][$sColIndex] = array();
if (!empty($sFieldsetName))
if (!empty($sFieldsetName) && ($sFieldsetName[0]!='_'))
{
$oPage->add('<fieldset>');
$oPage->add('<legend>'.Dict::S($sFieldsetName).'</legend>');
$sLabel = $sFieldsetName;
}
else
{
$sLabel = '';
}
if ($sLabel != $sPreviousLabel)
{
if (!empty($sPreviousLabel))
{
$oPage->add('<fieldset>');
$oPage->add('<legend>'.Dict::S($sPreviousLabel).'</legend>');
}
$oPage->Details($aDetails[$sTab][$sColIndex]);
if (!empty($sPreviousLabel))
{
$oPage->add('</fieldset>');
}
$aDetails[$sTab][$sColIndex] = array();
$sPreviousLabel = $sLabel;
}
foreach($aFields as $sAttCode)
{
@@ -1308,11 +1353,16 @@ EOF
$aDetails[$sTab][$sColIndex][] = $aVal;
}
}
$oPage->Details($aDetails[$sTab][$sColIndex]);
if (!empty($sFieldsetName))
{
$oPage->add('</fieldset>');
}
}
if (!empty($sPreviousLabel))
{
$oPage->add('<fieldset>');
$oPage->add('<legend>'.Dict::S($sPreviousLabel).'</legend>');
}
$oPage->Details($aDetails[$sTab][$sColIndex]);
if (!empty($sPreviousLabel))
{
$oPage->add('</fieldset>');
}
$oPage->add('</td>');
}
@@ -1435,6 +1485,7 @@ EOF
//echo "<pre>ZList: ";
//print_r($aList);
//echo "</pre>\n";
$index = 0;
foreach($aList as $sKey => $value)
{
if (is_array($value))
@@ -1449,7 +1500,7 @@ EOF
//echo "<p>Found a tab: $sName ($sKey)</p>\n";
if(!isset($aDetails[$sName]))
{
$aDetails[$sName] = array('col1' => array('' => array()));
$aDetails[$sName] = array('col1' => array());
}
$aDetails = self::ProcessZlist($value, $aDetails, $sName, 'col1', '');
break;
@@ -1468,7 +1519,7 @@ EOF
//echo "<p>Found a column: $sName ($sKey)</p>\n";
if(!isset($aDetails[$sCurrentTab][$sName]))
{
$aDetails[$sCurrentTab][$sName] = array('' => array());
$aDetails[$sCurrentTab][$sName] = array();
}
$aDetails = self::ProcessZlist($value, $aDetails, $sCurrentTab, $sName, '');
break;
@@ -1478,8 +1529,16 @@ EOF
else
{
//echo "<p>Scalar value: $value, in [$sCurrentTab][$sCurrentCol][$sCurrentSet][]</p>\n";
$aDetails[$sCurrentTab][$sCurrentCol][$sCurrentSet][] = $value;
if (empty($sCurrentSet))
{
$aDetails[$sCurrentTab][$sCurrentCol]['_'.$index][] = $value;
}
else
{
$aDetails[$sCurrentTab][$sCurrentCol][$sCurrentSet][] = $value;
}
}
$index++;
}
return $aDetails;
}