N°931 TagSet admin updates :

* when modifying tag, code field is read only if tag is used by at least one object
* "tag usage" tab : show only parent class
This commit is contained in:
Pierre Goiffon
2018-10-02 15:59:04 +02:00
parent e9a77c798e
commit 9f926fccd8

View File

@@ -278,6 +278,19 @@ abstract class TagSetFieldData extends cmdbAbstractObject
return false; return false;
} }
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
if ($sAttCode == 'code')
{
if ((!$this->IsNew()) && ($this->IsCodeUsed($this->Get('code'))))
{
return OPT_ATT_READONLY;
}
}
return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
}
/** /**
* Display Tag Usage * Display Tag Usage
* *
@@ -299,34 +312,29 @@ abstract class TagSetFieldData extends cmdbAbstractObject
$sClass = $this->Get('obj_class'); $sClass = $this->Get('obj_class');
$sAttCode = $this->Get('obj_attcode'); $sAttCode = $this->Get('obj_attcode');
$sTagCode = $this->Get('code'); $sTagCode = $this->Get('code');
$oFilter = DBSearch::FromOQL("SELECT $sClass WHERE $sAttCode MATCHES '$sTagCode'"); $oFilter = DBSearch::FromOQL("SELECT $sClass WHERE $sAttCode MATCHES '$sTagCode'");
$oSet = new DBObjectSet($oFilter); $oSet = new DBObjectSet($oFilter);
$iCount = $oSet->Count(); $iCount = $oSet->Count();
$oPage->SetCurrentTab(Dict::Format('Core:TagSetFieldData:WhereIsThisTagTab', $iCount)); $oPage->SetCurrentTab(Dict::Format('Core:TagSetFieldData:WhereIsThisTagTab', $iCount));
if ($iCount === 0) if ($iCount === 0)
{ {
$sNoEntries = Dict::S('Core:TagSetFieldData:NoEntryFound'); $sNoEntries = Dict::S('Core:TagSetFieldData:NoEntryFound');
$oPage->add("<p>$sNoEntries</p>"); $oPage->add("<p>$sNoEntries</p>");
}
else
{
$aClassLabels = array();
foreach(MetaModel::EnumChildClasses($sClass, ENUM_CHILD_CLASSES_ALL) as $sCurrentClass)
{
$aClassLabels[$sCurrentClass] = MetaModel::GetName($sCurrentClass);
}
foreach($aClassLabels as $sClass => $sClassLabel) return;
{ }
$oFilter = DBSearch::FromOQL("SELECT $sClass WHERE $sAttCode MATCHES '$sTagCode'");
$oSet = new DBObjectSet($oFilter); $oFilter = DBSearch::FromOQL("SELECT $sClass WHERE $sAttCode MATCHES '$sTagCode'");
if ($oSet->CountExceeds(0)) $oSet = new DBObjectSet($oFilter);
{ if ($oSet->CountExceeds(0))
$oPage->add("<h2>$sClassLabel</h2>"); {
$oResultBlock = new DisplayBlock($oFilter, 'list', false); $sClassLabel = MetaModel::GetName($sClass);
$oResultBlock->Display($oPage, 1); $oPage->add("<h2>$sClassLabel</h2>");
} $oResultBlock = new DisplayBlock($oFilter, 'list', false);
} $oResultBlock->Display($oPage, 1);
} }
} }
} }