diff --git a/application/datamodel.application.xml b/application/datamodel.application.xml index 0030af252..e20a1a95b 100644 --- a/application/datamodel.application.xml +++ b/application/datamodel.application.xml @@ -111,7 +111,6 @@ 10 AdminTools - 11 @@ -141,7 +140,6 @@ 30 AdminTools - 31 @@ -188,7 +186,6 @@ 50 ConfigurationTools - 20 diff --git a/application/menunode.class.inc.php b/application/menunode.class.inc.php index 32a039e18..1e3a6dff9 100644 --- a/application/menunode.class.inc.php +++ b/application/menunode.class.inc.php @@ -10,7 +10,6 @@ use Combodo\iTop\Application\WebPage\iTopWebPage; use Combodo\iTop\Application\WebPage\WebPage; require_once(APPROOT.'/application/utils.inc.php'); -require_once(APPROOT.'/application/template.class.inc.php'); require_once(APPROOT."/application/user.dashboard.class.inc.php"); @@ -999,10 +998,6 @@ class MenuGroup extends MenuNode */ class TemplateMenuNode extends MenuNode { - /** - * @var string - */ - protected $sTemplateFile; /** * Create a menu item based on a custom template and inserts it into the application's main menu @@ -1018,17 +1013,6 @@ class TemplateMenuNode extends MenuNode public function __construct($sMenuId, $sTemplateFile, $iParentIndex, $fRank = 0.0, $sEnableClass = null, $iActionCode = null, $iAllowedResults = UR_ALLOWED_YES, $sEnableStimulus = null) { parent::__construct($sMenuId, $iParentIndex, $fRank, $sEnableClass, $iActionCode, $iAllowedResults, $sEnableStimulus); - $this->sTemplateFile = $sTemplateFile; - $this->aReflectionProperties['template_file'] = $sTemplateFile; - } - - /** - * @inheritDoc - */ - public function GetHyperlink($aExtraParams) - { - if ($this->sTemplateFile == '') return ''; - return parent::GetHyperlink($aExtraParams); } /** @@ -1037,18 +1021,7 @@ class TemplateMenuNode extends MenuNode */ public function RenderContent(WebPage $oPage, $aExtraParams = array()) { - ApplicationMenu::CheckMenuIdEnabled($this->GetMenuId()); - $sTemplate = @file_get_contents($this->sTemplateFile); - if ($sTemplate !== false) - { - $aExtraParams['table_id'] = 'Menu_'.$this->GetMenuId(); - $oTemplate = new DisplayTemplate($sTemplate); - $oTemplate->Render($oPage, $aExtraParams); - } - else - { - $oPage->p("Error: failed to load template file: '{$this->sTemplateFile}'"); // No need to translate ? - } + //DO NOTHING this type of menu is only used for title not clickable } } diff --git a/application/template.class.inc.php b/application/template.class.inc.php deleted file mode 100644 index c03998b52..000000000 --- a/application/template.class.inc.php +++ /dev/null @@ -1,427 +0,0 @@ -m_aTags = array( - 'itopblock', - 'itopcheck', - 'itoptabs', - 'itoptab', - 'itoptoggle', - 'itopstring', - 'sqlblock', - ); - $this->m_sTemplate = $sTemplate; - } - - public function Render(WebPage $oPage, $aParams = array()) - { - $this->m_sTemplate = MetaModel::ApplyParams($this->m_sTemplate, $aParams); - $iStart = 0; - $iEnd = strlen($this->m_sTemplate); - $iCount = 0; - $iBeforeTagPos = $iStart; - $iAfterTagPos = $iStart; - while($sTag = $this->GetNextTag($iStart, $iEnd)) - { - $sContent = $this->GetTagContent($sTag, $iStart, $iEnd); - $iAfterTagPos = $iEnd + strlen(''); - $sOuterTag = substr($this->m_sTemplate, $iStart, $iAfterTagPos - $iStart); - $oPage->add(substr($this->m_sTemplate, $iBeforeTagPos, $iStart - $iBeforeTagPos)); - if ($sTag == DisplayBlock::TAG_BLOCK) - { - try - { - $oBlock = DisplayBlock::FromTemplate($sOuterTag); - if (is_object($oBlock)) - { - $oBlock->Display($oPage, 'block_'.self::$iBlockCount, $aParams); - } - } - catch(OQLException $e) - { - $oPage->p('Error in template (please contact your administrator) - Invalid query'); - } - catch(Exception $e) - { - $oPage->p('Error in template (please contact your administrator)'); - } - - self::$iBlockCount++; - } - else - { - $aAttributes = $this->GetTagAttributes($sTag, $iStart, $iEnd); - //$oPage->p("Tag: $sTag - ($iStart, $iEnd)"); - $this->RenderTag($oPage, $sTag, $aAttributes, $sContent); - - } - $iAfterTagPos = $iEnd + strlen(''); - $iBeforeTagPos = $iAfterTagPos; - $iStart = $iEnd; - $iEnd = strlen($this->m_sTemplate); - $iCount++; - } - $oPage->add(substr($this->m_sTemplate, $iAfterTagPos)); - } - - public function GetNextTag(&$iStartPos, &$iEndPos) - { - $iChunkStartPos = $iStartPos; - $sNextTag = null; - $iStartPos = $iEndPos; - foreach($this->m_aTags as $sTag) - { - // Search for the opening tag - $iOpeningPos = stripos($this->m_sTemplate, '<'.$sTag.' ', $iChunkStartPos); - if ($iOpeningPos === false) - { - $iOpeningPos = stripos($this->m_sTemplate, '<'.$sTag.'>', $iChunkStartPos); - } - if ($iOpeningPos !== false) - { - $iClosingPos = stripos($this->m_sTemplate, '', $iOpeningPos); - } - if ( ($iOpeningPos !== false) && ($iClosingPos !== false)) - { - if ($iOpeningPos < $iStartPos) - { - // This is the next tag - $iStartPos = $iOpeningPos; - $iEndPos = $iClosingPos; - $sNextTag = $sTag; - } - } - } - return $sNextTag; - } - - public function GetTagContent($sTag, $iStartPos, $iEndPos) - { - $sContent = ""; - $iContentStart = strpos($this->m_sTemplate, '>', $iStartPos); // Content of tag start immediatly after the first closing bracket - if ($iContentStart !== false) - { - $sContent = substr($this->m_sTemplate, 1+$iContentStart, $iEndPos - $iContentStart - 1); - } - return $sContent; - } - - public function GetTagAttributes($sTag, $iStartPos, $iEndPos) - { - $aAttr = array(); - $iAttrStart = strpos($this->m_sTemplate, ' ', $iStartPos); // Attributes start just after the first space - $iAttrEnd = strpos($this->m_sTemplate, '>', $iStartPos); // Attributes end just before the first closing bracket - if ( ($iAttrStart !== false) && ($iAttrEnd !== false) && ($iAttrEnd > $iAttrStart)) - { - $sAttributes = substr($this->m_sTemplate, 1+$iAttrStart, $iAttrEnd - $iAttrStart - 1); - $aAttributes = explode(' ', $sAttributes); - foreach($aAttributes as $sAttr) - { - if ( preg_match('/(.+) *= *"(.+)"$/', $sAttr, $aMatches) ) - { - $aAttr[strtolower($aMatches[1])] = $aMatches[2]; - } - } - } - return $aAttr; - } - - protected function RenderTag($oPage, $sTag, $aAttributes, $sContent) - { - static $iTabContainerCount = 0; - switch($sTag) - { - case 'itoptabs': - $oPage->AddTabContainer('Tabs_'.$iTabContainerCount); - $oPage->SetCurrentTabContainer('Tabs_'.$iTabContainerCount); - $iTabContainerCount++; - //$oPage->p('Content:
'.htmlentities($sContent, ENT_QUOTES, 'UTF-8').'
'); - $oTemplate = new DisplayTemplate($sContent); - $oTemplate->Render($oPage, array()); // no params to apply, they have already been applied - $oPage->SetCurrentTabContainer(''); - break; - - case 'itopcheck': - $sClassName = $aAttributes['class']; - if (MetaModel::IsValidClass($sClassName) && UserRights::IsActionAllowed($sClassName, UR_ACTION_READ)) - { - $oTemplate = new DisplayTemplate($sContent); - $oTemplate->Render($oPage, array()); // no params to apply, they have already been applied - } - else - { - // Leave a trace for those who'd like to understand why nothing is displayed - $oPage->add("\n"); - } - break; - - case 'itoptab': - $oPage->SetCurrentTab($aAttributes['name'], str_replace('_', ' ', $aAttributes['name'])); - $oTemplate = new DisplayTemplate($sContent); - $oTemplate->Render($oPage, array()); // no params to apply, they have already been applied - //$oPage->p('iTop Tab Content:
'.htmlentities($sContent, ENT_QUOTES, 'UTF-8').'
'); - $oPage->SetCurrentTab(''); - break; - - case 'itoptoggle': - $sName = isset($aAttributes['name']) ? $aAttributes['name'] : 'Tagada'; - $bOpen = isset($aAttributes['open']) ? $aAttributes['open'] : true; - $oPage->StartCollapsibleSection(Dict::S($sName), $bOpen); - $oTemplate = new DisplayTemplate($sContent); - $oTemplate->Render($oPage, array()); // no params to apply, they have already been applied - //$oPage->p('iTop Tab Content:
'.htmlentities($sContent, ENT_QUOTES, 'UTF-8').'
'); - $oPage->EndCollapsibleSection(); - break; - - case 'itopstring': - $oPage->add(Dict::S($sContent)); - break; - - case 'sqlblock': - $oBlock = SqlBlock::FromTemplate($sContent); - $oBlock->RenderContent($oPage); - break; - - case 'itopblock': // No longer used, handled by DisplayBlock::FromTemplate see above - $oPage->add(""); - break; - - default: - // Unknown tag, just ignore it or now -- output an HTML comment - $oPage->add(""); - } - } - - /** - * Unit test - */ - static public function UnitTest() - { - require_once(APPROOT.'/application/startup.inc.php'); - - $sAppRootUrl = utils::GetAbsoluteUrlAppRoot(); - $sTemplate = ' - - - - SELECT Interface AS i WHERE i.device_id = $id$ - - - SELECT Contact AS c JOIN lnkContactToCI AS l ON l.contact_id = c.id WHERE l.ci_id = $id$ - - - SELECT Document AS d JOIN lnkDocumentToCI as l ON l.document_id = d.id WHERE l.ci_id = $id$) - - '; - - $oPage = new iTopWebPage('Unit Test'); - //$oPage->add("Template content:
".htmlentities($sTemplate, ENT_QUOTES, 'UTF-8')."
\n"); - $oTemplate = new DisplayTemplate($sTemplate); - $oTemplate->Render($oPage, array('class'=>'Network device','pkey'=> 271, 'name' => 'deliversw01.mecanorama.fr', 'org_id' => 3)); - $oPage->output(); - } -} - -/** - * Special type of template for displaying the details of an object - * On top of the defaut 'blocks' managed by the parent class, the following placeholders - * are available in such a template: - * $attribute_code$ An attribute of the object (in edit mode this is the input for the attribute) - * $attribute_code->label()$ The label of an attribute - * $PlugIn:plugInClass->properties()$ The ouput of OnDisplayProperties of the specified plugInClass - */ -class ObjectDetailsTemplate extends DisplayTemplate -{ - public function __construct($sTemplate, $oObj, $sFormPrefix = '') - { - parent::__construct($sTemplate); - $this->m_oObj = $oObj; - $this->m_sPrefix = $sFormPrefix; - } - - public function Render(WebPage $oPage, $aParams = array(), $bEditMode = false) - { - $sStateAttCode = MetaModel :: GetStateAttributeCode(get_class($this->m_oObj)); - $aTemplateFields = array(); - preg_match_all('/\\$this->([a-z0-9_]+)\\$/', $this->m_sTemplate, $aMatches); - foreach ($aMatches[1] as $sAttCode) - { - if (MetaModel::IsValidAttCode(get_class($this->m_oObj), $sAttCode)) - { - $aTemplateFields[] = $sAttCode; - } - else - { - $aParams['this->'.$sAttCode] = ""; - } - } - preg_match_all('/\\$this->field\\(([a-z0-9_]+)\\)\\$/', $this->m_sTemplate, $aMatches); - foreach ($aMatches[1] as $sAttCode) - { - if (MetaModel::IsValidAttCode(get_class($this->m_oObj), $sAttCode)) - { - $aTemplateFields[] = $sAttCode; - } - else - { - $aParams['this->field('.$sAttCode.')'] = ""; - } - } - $aFieldsComments = (isset($aParams['fieldsComments'])) ? $aParams['fieldsComments'] : array(); - $aFieldsMap = array(); - - $sClass = get_class($this->m_oObj); - // Renders the fields used in the template - foreach(MetaModel::ListAttributeDefs(get_class($this->m_oObj)) as $sAttCode => $oAttDef) - { - $aParams['this->label('.$sAttCode.')'] = $oAttDef->GetLabel(); - $aParams['this->comments('.$sAttCode.')'] = isset($aFieldsComments[$sAttCode]) ? $aFieldsComments[$sAttCode] : ''; - $iInputId = '2_'.$sAttCode; // TODO: generate a real/unique prefix... - if (in_array($sAttCode, $aTemplateFields)) - { - if ($this->m_oObj->IsNew()) - { - $iFlags = $this->m_oObj->GetInitialStateAttributeFlags($sAttCode); - } - else - { - $iFlags = $this->m_oObj->GetAttributeFlags($sAttCode); - } - if (($iFlags & OPT_ATT_MANDATORY) && $this->m_oObj->IsNew()) - { - $iFlags = $iFlags & ~OPT_ATT_READONLY; // Mandatory fields cannot be read-only when creating an object - } - - if ((!$oAttDef->IsWritable()) || ($sStateAttCode == $sAttCode)) - { - $iFlags = $iFlags | OPT_ATT_READONLY; - } - - if ($iFlags & OPT_ATT_HIDDEN) - { - $aParams['this->label('.$sAttCode.')'] = ''; - $aParams['this->field('.$sAttCode.')'] = ''; - $aParams['this->comments('.$sAttCode.')'] = ''; - $aParams['this->'.$sAttCode] = ''; - } - else - { - if ($bEditMode && ($iFlags & (OPT_ATT_READONLY|OPT_ATT_SLAVE))) - { - // Check if the attribute is not read-only because of a synchro... - $aReasons = array(); - $sSynchroIcon = ''; - if ($iFlags & OPT_ATT_SLAVE) - { - $iSynchroFlags = $this->m_oObj->GetSynchroReplicaFlags($sAttCode, $aReasons); - $sAppRooturl = utils::GetAbsoluteUrlAppRoot(); - $sSynchroIcon = " "; - $sTip = ''; - foreach($aReasons as $aRow) - { - $sDescription = utils::EscapeHtml($aRow['description']); - $sDescription = str_replace(array("\r\n", "\n"), "
", $sDescription); - $sTip .= "
"; - $sTip .= "
Synchronized with {$aRow['name']}
"; - $sTip .= "
$sDescription
"; - } - $oPage->add_ready_script("$('#synchro_$iInputId').qtip( { content: '$sTip', show: 'mouseover', hide: 'mouseout', style: { name: 'dark', tip: 'leftTop' }, position: { corner: { target: 'rightMiddle', tooltip: 'leftTop' }} } );"); - } - - // Attribute is read-only - $sHTMLValue = "".$this->m_oObj->GetAsHTML($sAttCode); - $sHTMLValue .= ''; - $aFieldsMap[$sAttCode] = $iInputId; - $aParams['this->comments('.$sAttCode.')'] = $sSynchroIcon; - } - - if ($bEditMode && !($iFlags & OPT_ATT_READONLY)) //TODO: check the data synchro status... - { - $aParams['this->field('.$sAttCode.')'] = "".$this->m_oObj->GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, - $this->m_oObj->Get($sAttCode), - $this->m_oObj->GetEditValue($sAttCode), - $iInputId, // InputID - '', - $iFlags, - array('this' => $this->m_oObj) // aArgs - ).''; - $aFieldsMap[$sAttCode] = $iInputId; - } - else - { - $aParams['this->field('.$sAttCode.')'] = $this->m_oObj->GetAsHTML($sAttCode); - } - $aParams['this->'.$sAttCode] = "
".$aParams['this->label('.$sAttCode.')'].":".$aParams['this->field('.$sAttCode.')']."".$aParams['this->comments('.$sAttCode.')']."
"; - } - } - } - - // Renders the PlugIns used in the template - preg_match_all('/\\$PlugIn:([A-Za-z0-9_]+)->properties\\(\\)\\$/', $this->m_sTemplate, $aMatches); - $aPlugInProperties = $aMatches[1]; - foreach($aPlugInProperties as $sPlugInClass) - { - /** @var \iApplicationUIExtension $oInstance */ - $oInstance = MetaModel::GetPlugins('iApplicationUIExtension', $sPlugInClass); - if ($oInstance != null) // Safety check... - { - $offset = $oPage->start_capture(); - $oInstance->OnDisplayProperties($this->m_oObj, $oPage, $bEditMode); - $sContent = $oPage->end_capture($offset); - $aParams["PlugIn:{$sPlugInClass}->properties()"]= $sContent; - } - else - { - $aParams["PlugIn:{$sPlugInClass}->properties()"]= "Missing PlugIn: $sPlugInClass"; - } - } - - $offset = $oPage->start_capture(); - parent::Render($oPage, $aParams); - $sContent = $oPage->end_capture($offset); - // Remove empty table rows in case some attributes are hidden... - $sContent = preg_replace('/]*>\s*(]*>\s*<\\/td>)+\s*<\\/tr>/im', '', $sContent); - $oPage->add($sContent); - return $aFieldsMap; - } -} - -//DisplayTemplate::UnitTest(); -?> diff --git a/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml b/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml index 45f63b23b..b62404bcc 100755 --- a/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml +++ b/datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml @@ -4591,7 +4591,6 @@ 3 ChangeManagement - 1 diff --git a/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml b/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml index 43a0acbb1..58eee5480 100755 --- a/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml +++ b/datamodels/2.x/itop-change-mgmt/datamodel.itop-change-mgmt.xml @@ -833,7 +833,6 @@ 3 ChangeManagement - 1 diff --git a/datamodels/2.x/itop-faq-light/datamodel.itop-faq-light.xml b/datamodels/2.x/itop-faq-light/datamodel.itop-faq-light.xml index f90946cd0..fcab02acd 100755 --- a/datamodels/2.x/itop-faq-light/datamodel.itop-faq-light.xml +++ b/datamodels/2.x/itop-faq-light/datamodel.itop-faq-light.xml @@ -217,7 +217,6 @@ 5 ProblemManagement - 4.5 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 94125ce4b..ff765712d 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 @@ -1769,7 +1769,6 @@ 3 IncidentManagement - 0 diff --git a/datamodels/2.x/itop-knownerror-mgmt/datamodel.itop-knownerror-mgmt.xml b/datamodels/2.x/itop-knownerror-mgmt/datamodel.itop-knownerror-mgmt.xml index facfdce2c..c7f89ecb6 100755 --- a/datamodels/2.x/itop-knownerror-mgmt/datamodel.itop-knownerror-mgmt.xml +++ b/datamodels/2.x/itop-knownerror-mgmt/datamodel.itop-knownerror-mgmt.xml @@ -448,7 +448,6 @@ 5 ProblemManagement - 3 diff --git a/datamodels/2.x/itop-problem-mgmt/datamodel.itop-problem-mgmt.xml b/datamodels/2.x/itop-problem-mgmt/datamodel.itop-problem-mgmt.xml index a11b217a4..2351a0ec3 100755 --- a/datamodels/2.x/itop-problem-mgmt/datamodel.itop-problem-mgmt.xml +++ b/datamodels/2.x/itop-problem-mgmt/datamodel.itop-problem-mgmt.xml @@ -731,7 +731,6 @@ 5 ProblemManagement - 0 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 1f908f7a7..2c6078774 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 @@ -1958,7 +1958,6 @@ 3 RequestManagement - 0 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 2d7396f66..7bb0b8bb1 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 @@ -1999,7 +1999,6 @@ 3 RequestManagement - 0 diff --git a/datamodels/2.x/itop-structure/datamodel.itop-structure.xml b/datamodels/2.x/itop-structure/datamodel.itop-structure.xml index 0707d1ac8..38e87ee5e 100644 --- a/datamodels/2.x/itop-structure/datamodel.itop-structure.xml +++ b/datamodels/2.x/itop-structure/datamodel.itop-structure.xml @@ -1892,7 +1892,6 @@ 50 DataAdministration - 10 diff --git a/setup/compiler.class.inc.php b/setup/compiler.class.inc.php index db0a1cbbf..08da04706 100644 --- a/setup/compiler.class.inc.php +++ b/setup/compiler.class.inc.php @@ -2882,9 +2882,7 @@ CSS; break; case 'TemplateMenuNode': - $sTemplateFile = $oMenu->GetChildText('template_file'); - $sTemplateSpec = $this->PathToPHP($sTemplateFile, $sModuleRelativeDir); - $sNewMenu = "new TemplateMenuNode('$sMenuId', $sTemplateSpec, $sParentSpec, $fRank {$sOptionalEnableParams});"; + $sNewMenu = "new TemplateMenuNode('$sMenuId', '', $sParentSpec, $fRank {$sOptionalEnableParams});"; break; case 'MenuGroup': diff --git a/setup/itop_design.xsd b/setup/itop_design.xsd index 146f2af0a..93bb4b3cd 100644 --- a/setup/itop_design.xsd +++ b/setup/itop_design.xsd @@ -485,9 +485,6 @@ - - - diff --git a/setup/itopdesignformat.class.inc.php b/setup/itopdesignformat.class.inc.php index 144aa0edf..ec8d7d257 100644 --- a/setup/itopdesignformat.class.inc.php +++ b/setup/itopdesignformat.class.inc.php @@ -1129,7 +1129,7 @@ class iTopDesignFormat */ protected function From32To33($oFactory) { - // Nothing for now... + $this->RemoveNodeFromXPath("/itop_design/menus/menu[@xsi:type='TemplateMenuNode']/template_file"); } /** diff --git a/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.2_to_3.3.expected.xml b/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.2_to_3.3.expected.xml index 996d6274b..37008da0a 100644 --- a/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.2_to_3.3.expected.xml +++ b/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.2_to_3.3.expected.xml @@ -1,3 +1,9 @@ + + + 3 + ChangeManagement + + diff --git a/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.2_to_3.3.input.xml b/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.2_to_3.3.input.xml index da9755d33..5554d2c28 100644 --- a/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.2_to_3.3.input.xml +++ b/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.2_to_3.3.input.xml @@ -1,3 +1,10 @@ + + + 3 + ChangeManagement + + + diff --git a/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.3_to_3.2.input.xml b/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.3_to_3.2.input.xml index da9755d33..996d6274b 100644 --- a/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.3_to_3.2.input.xml +++ b/tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.3_to_3.2.input.xml @@ -1,3 +1,3 @@ - +