N°917 - Trigger on object update: limit the fields proposed to the ones that can be updated

This commit is contained in:
Eric
2018-11-08 14:36:15 +01:00
parent b050210737
commit 405b1b8e6f
3 changed files with 23 additions and 4 deletions

View File

@@ -9156,7 +9156,7 @@ class AttributeClassAttCodeSet extends AttributeSet
static public function ListExpectedParams()
{
return array_merge(parent::ListExpectedParams(), array('class_field', 'attribute_definition_list'));
return array_merge(parent::ListExpectedParams(), array('class_field', 'attribute_definition_list', 'attribute_definition_exclusion_list'));
}
public function GetMaxSize()
@@ -9181,6 +9181,17 @@ class AttributeClassAttCodeSet extends AttributeSet
{
$aAllAttributes = MetaModel::GetAttributesList($sClass);
}
$sAttDefExclusionList = $this->Get('attribute_definition_exclusion_list');
$aExcludeDefs = array();
if (!empty($sAttDefExclusionList))
{
foreach(explode(',', $sAttDefExclusionList) as $sAttDefName)
{
$sAttDefName = trim($sAttDefName);
$aExcludeDefs[$sAttDefName] = $sAttDefName;
}
}
$sAttDefList = $this->Get('attribute_definition_list');
if (!empty($sAttDefList))
{
@@ -9193,7 +9204,8 @@ class AttributeClassAttCodeSet extends AttributeSet
foreach($aAllAttributes as $sAttCode)
{
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
if (isset($aAllowedDefs[get_class($oAttDef)]))
$sAttDef = get_class($oAttDef);
if (isset($aAllowedDefs[$sAttDef]) && !isset($aExcludeDefs[$sAttDef]))
{
$aAllowedAttributes[$sAttCode] = $sAttCode.' ('.MetaModel::GetLabel($sClass, $sAttCode).')';
}
@@ -9203,7 +9215,12 @@ class AttributeClassAttCodeSet extends AttributeSet
{
foreach($aAllAttributes as $sAttCode)
{
$aAllowedAttributes[$sAttCode] = $sAttCode.' ('.MetaModel::GetLabel($sClass, $sAttCode).')';
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
$sAttDef = get_class($oAttDef);
if (!isset($aExcludeDefs[$sAttDef]))
{
$aAllowedAttributes[$sAttCode] = $sAttCode.' ('.MetaModel::GetLabel($sClass, $sAttCode).')';
}
}
}
return $aAllowedAttributes;

View File

@@ -461,7 +461,7 @@ class TriggerOnObjectUpdate extends TriggerOnObject
);
MetaModel::Init_Params($aParams);
MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeClassAttCodeSet('target_attcodes', array("allowed_values" => null, "class_field" => "target_class", "sql" => "target_attcodes", "default_value" => null, "is_null_allowed" => true, "max_items" => 20, "min_items" => 0, "attribute_definition_list" => null, "depends_on" => array('target_class'))));
MetaModel::Init_AddAttribute(new AttributeClassAttCodeSet('target_attcodes', array("allowed_values" => null, "class_field" => "target_class", "sql" => "target_attcodes", "default_value" => null, "is_null_allowed" => true, "max_items" => 20, "min_items" => 0, "attribute_definition_exclusion_list" => "AttributeDashboard,AttributeExternalField,AttributeFinalClass,AttributeFriendlyName,AttributeObsolescenceDate,AttributeObsolescenceFlag", "attribute_definition_list" => null, "depends_on" => array('target_class'))));
// Display lists
MetaModel::Init_SetZListItems('details', array('description', 'target_class', 'filter', 'target_attcodes', 'action_list')); // Attributes to be displayed for the complete details

View File

@@ -1491,6 +1491,8 @@ EOF
$aParameters['class_field'] = $this->GetMandatoryPropString($oField, 'class_field');
// List of AttributeDefinition Classes to filter class_field (empty means all)
$aParameters['attribute_definition_list'] = $this->GetPropString($oField, 'attribute_definition_list', '');
// Exclusion list of AttributeDefinition Classes to filter class_field (empty means no exclusion)
$aParameters['attribute_definition_exclusion_list'] = $this->GetPropString($oField, 'attribute_definition_exclusion_list', '');
}
elseif ($sAttType == 'AttributeQueryAttCodeSet')
{