From 9f926fccd8f41d48eb63674fc1d5a93dbc09d204 Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Tue, 2 Oct 2018 15:59:04 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B0931=20TagSet=20admin=20updates=20:=20*?= =?UTF-8?q?=20when=20modifying=20tag,=20code=20field=20is=20read=20only=20?= =?UTF-8?q?if=20tag=20is=20used=20by=20at=20least=20one=20object=20*=20"ta?= =?UTF-8?q?g=20usage"=20tab=20:=20show=20only=20parent=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/tagsetfield.class.inc.php | 46 ++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/core/tagsetfield.class.inc.php b/core/tagsetfield.class.inc.php index a82a6e3950..aa156edaed 100644 --- a/core/tagsetfield.class.inc.php +++ b/core/tagsetfield.class.inc.php @@ -278,6 +278,19 @@ abstract class TagSetFieldData extends cmdbAbstractObject 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 * @@ -299,34 +312,29 @@ abstract class TagSetFieldData extends cmdbAbstractObject $sClass = $this->Get('obj_class'); $sAttCode = $this->Get('obj_attcode'); $sTagCode = $this->Get('code'); + + $oFilter = DBSearch::FromOQL("SELECT $sClass WHERE $sAttCode MATCHES '$sTagCode'"); $oSet = new DBObjectSet($oFilter); $iCount = $oSet->Count(); $oPage->SetCurrentTab(Dict::Format('Core:TagSetFieldData:WhereIsThisTagTab', $iCount)); + if ($iCount === 0) { $sNoEntries = Dict::S('Core:TagSetFieldData:NoEntryFound'); $oPage->add("

$sNoEntries

"); - } - else - { - $aClassLabels = array(); - foreach(MetaModel::EnumChildClasses($sClass, ENUM_CHILD_CLASSES_ALL) as $sCurrentClass) - { - $aClassLabels[$sCurrentClass] = MetaModel::GetName($sCurrentClass); - } - foreach($aClassLabels as $sClass => $sClassLabel) - { - $oFilter = DBSearch::FromOQL("SELECT $sClass WHERE $sAttCode MATCHES '$sTagCode'"); - $oSet = new DBObjectSet($oFilter); - if ($oSet->CountExceeds(0)) - { - $oPage->add("

$sClassLabel

"); - $oResultBlock = new DisplayBlock($oFilter, 'list', false); - $oResultBlock->Display($oPage, 1); - } - } + return; + } + + $oFilter = DBSearch::FromOQL("SELECT $sClass WHERE $sAttCode MATCHES '$sTagCode'"); + $oSet = new DBObjectSet($oFilter); + if ($oSet->CountExceeds(0)) + { + $sClassLabel = MetaModel::GetName($sClass); + $oPage->add("

$sClassLabel

"); + $oResultBlock = new DisplayBlock($oFilter, 'list', false); + $oResultBlock->Display($oPage, 1); } } }