diff --git a/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml b/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml
index e58bd54a1..6a29f9950 100755
--- a/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml
+++ b/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml
@@ -26,7 +26,7 @@
diff --git a/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml b/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml
index 3a94d597c..522eb97e9 100755
--- a/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml
+++ b/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml
@@ -26,7 +26,7 @@
diff --git a/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml b/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml
index 9d3353b18..55f57dce7 100755
--- a/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml
+++ b/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml
@@ -26,7 +26,7 @@
diff --git a/datamodels/2.x/itop-structure/datamodel.itop-structure.xml b/datamodels/2.x/itop-structure/datamodel.itop-structure.xml
index 09aa37570..771b43472 100644
--- a/datamodels/2.x/itop-structure/datamodel.itop-structure.xml
+++ b/datamodels/2.x/itop-structure/datamodel.itop-structure.xml
@@ -392,8 +392,8 @@
diff --git a/setup/compiler.class.inc.php b/setup/compiler.class.inc.php
index 34e4af969..7b7b7b230 100644
--- a/setup/compiler.class.inc.php
+++ b/setup/compiler.class.inc.php
@@ -54,6 +54,21 @@ class MFCompiler
{
const DATA_PRECOMPILED_FOLDER = 'data'.DIRECTORY_SEPARATOR.'precompiled_styles'.DIRECTORY_SEPARATOR;
+ /**
+ * @var string
+ * @see self::GenerateStyleDataFromNode
+ * @internal
+ * @since 3.0.0
+ */
+ public const ENUM_STYLE_HOST_ELEMENT_TYPE_CLASS = 'class';
+ /**
+ * @var string
+ * @see self::GenerateStyleDataFromNode
+ * @internal
+ * @since 3.0.0
+ */
+ public const ENUM_STYLE_HOST_ELEMENT_TYPE_ENUM = 'enum';
+
/**
* Path to the "use symlinks" file
* If this file is present, then we will compile to symlink !
@@ -1211,15 +1226,9 @@ EOF
// Style
if ($oStyle = $oProperties->GetOptionalElement('style')) {
- $sMainColor = $oStyle->GetChildText('main_color');
- $sComplementaryColor = $oStyle->GetChildText('complementary_color');
- $sStyleCSSClass = "ibo-dm-class--$sClass";
- $sStyleCSSAltClass = "ibo-dm-class-alt--$sClass";
- if (($sIcon = $oStyle->GetChildText('icon')) && (strlen($sIcon) > 0)) {
- $sIcon = $sModuleRelativeDir.'/'.$sIcon;
- $sIcon = ", '$sIcon'";
- }
- $aClassParams['style'] = "new ormStyle('$sStyleCSSClass', '$sStyleCSSAltClass', '$sMainColor', '$sComplementaryColor', null $sIcon)";
+ $aClassStyleData = $this->GenerateStyleDataFromNode($oStyle, $sModuleRelativeDir, self::ENUM_STYLE_HOST_ELEMENT_TYPE_CLASS, $sClass);
+ $aClassParams['style'] = $aClassStyleData['orm_style_instantiation'];
+ $sCss .= $aClassStyleData['scss'];
}
@@ -1439,9 +1448,9 @@ EOF
$aValues[] = $sCode;
$oStyleNode = $oValue->GetOptionalElement('style');
if ($oStyleNode) {
- $aEnumStyleData = $this->GenerateFieldStyleData($oStyleNode, 'enum', $sClass, $sAttCode, $sCode);
- $aStyledValues[] = $aEnumStyleData['orm_style'];
- $sCss .= $aEnumStyleData['css'];
+ $aEnumStyleData = $this->GenerateStyleDataFromNode($oStyleNode, $sModuleRelativeDir, self::ENUM_STYLE_HOST_ELEMENT_TYPE_ENUM, $sClass, $sAttCode, $sCode);
+ $aStyledValues[] = $aEnumStyleData['orm_style_instantiation'];
+ $sCss .= $aEnumStyleData['scss'];
}
}
$sValues = '"'.implode(',', $aValues).'"';
@@ -1452,9 +1461,9 @@ EOF
}
$oDefaultStyleNode = $oField->GetOptionalElement('default_style');
if ($oDefaultStyleNode) {
- $aEnumStyleData = $this->GenerateFieldStyleData($oDefaultStyleNode, 'enum', $sClass, $sAttCode);
- $aParameters['default_style'] = $aEnumStyleData['orm_style'];
- $sCss .= $aEnumStyleData['css'];
+ $aEnumStyleData = $this->GenerateStyleDataFromNode($oDefaultStyleNode, $sModuleRelativeDir, self::ENUM_STYLE_HOST_ELEMENT_TYPE_ENUM, $sClass, $sAttCode);
+ $aParameters['default_style'] = $aEnumStyleData['orm_style_instantiation'];
+ $sCss .= $aEnumStyleData['scss'];
}
$aParameters['display_style'] = $this->GetPropString($oField, 'display_style', 'list');
$aParameters['sql'] = $this->GetMandatoryPropString($oField, 'sql');
@@ -1474,9 +1483,9 @@ EOF
$aValues[] = $sCode;
$oStyleNode = $oValue->GetOptionalElement('style');
if ($oStyleNode) {
- $aEnumStyleData = $this->GenerateFieldStyleData($oStyleNode, 'enum', $sClass, $sAttCode, $sCode);
- $aStyledValues[] = $aEnumStyleData['orm_style'];
- $sCss .= $aEnumStyleData['css'];
+ $aEnumStyleData = $this->GenerateStyleDataFromNode($oStyleNode, $sModuleRelativeDir, self::ENUM_STYLE_HOST_ELEMENT_TYPE_ENUM, $sClass, $sAttCode, $sCode);
+ $aStyledValues[] = $aEnumStyleData['orm_style_instantiation'];
+ $sCss .= $aEnumStyleData['scss'];
}
}
// new style... $sValues = 'array('.implode(', ', $aValues).')';
@@ -1487,9 +1496,9 @@ EOF
}
$oDefaultStyleNode = $oField->GetOptionalElement('default_style');
if ($oDefaultStyleNode) {
- $aEnumStyleData = $this->GenerateFieldStyleData($oDefaultStyleNode, 'enum', $sClass, $sAttCode);
- $aParameters['default_style'] = $aEnumStyleData['orm_style'];
- $sCss .= $aEnumStyleData['css'];
+ $aEnumStyleData = $this->GenerateStyleDataFromNode($oDefaultStyleNode, $sModuleRelativeDir, self::ENUM_STYLE_HOST_ELEMENT_TYPE_ENUM, $sClass, $sAttCode);
+ $aParameters['default_style'] = $aEnumStyleData['orm_style_instantiation'];
+ $sCss .= $aEnumStyleData['scss'];
}
$aParameters['allowed_values'] = "new ValueSetEnum($sValues)";
$aParameters['sql'] = $this->GetMandatoryPropString($oField, 'sql');
@@ -2217,70 +2226,152 @@ EOF
}
/**
- * This method is public in order to be used in the tests
- *
- * @internal
+ * @internal This method is public in order to be used in the tests
*
* @param \MFElement $oNode Style node, can be either a