diff --git a/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php b/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php
index 9200b566a4..5e8d99e16e 100644
--- a/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php
+++ b/datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php
@@ -114,9 +114,8 @@ class ObjectFormManager extends FormManager
* @throws \Exception
* @throws \SecurityException if twig content is present and $bTrustContent is false
*
- * @since 2.7.6 3.0.0 N°4384 new $bTrustContent parameter
*/
- public static function FromJSON($sJson, $bTrustContent = false)
+ public static function FromJSON($sJson)
{
$aJson = static::DecodeFormManagerData($sJson);
@@ -172,37 +171,6 @@ class ObjectFormManager extends FormManager
return $oFormManager;
}
- /**
- * @param string $sPostedFormManagerData received data from the browser
- * @param array $aOriginalFormProperties data generated server side
- *
- * @return bool true if the data are identical
- *
- * @since 2.7.6 3.0.0 N°4384 Check formmanager_data
- */
- public static function CanTrustFormLayoutContent($sPostedFormManagerData, $aOriginalFormProperties)
- {
- $aPostedFormManagerData = static::DecodeFormManagerData($sPostedFormManagerData);
- $sPostedFormLayoutType = (isset($aPostedFormManagerData['formproperties']['layout']['type'])) ? $aPostedFormManagerData['formproperties']['layout']['type'] : '';
-
- if ($sPostedFormLayoutType === 'xhtml') {
- return true;
- }
-
- // We need to parse the content so that autoclose tags are returned correctly (`
` => ``)
- $oHtmlDocument = new \DOMDocument();
-
- $sPostedFormLayoutContent = (isset($aPostedFormManagerData['formproperties']['layout']['content'])) ? $aPostedFormManagerData['formproperties']['layout']['content'] : '';
- $oHtmlDocument->loadXML(''.$sPostedFormLayoutContent.'');
- $sPostedFormLayoutRendered = $oHtmlDocument->saveHTML();
-
- $sOriginalFormLayoutContent = (isset($aOriginalFormProperties['layout']['content'])) ? $aOriginalFormProperties['layout']['content'] : '';
- $oHtmlDocument->loadXML(''.$sOriginalFormLayoutContent.'');
- $sOriginalFormLayoutContentRendered = $oHtmlDocument->saveHTML();
-
- return ($sPostedFormLayoutRendered === $sOriginalFormLayoutContentRendered);
- }
-
/**
*
* @return \Symfony\Component\DependencyInjection\ContainerInterface
diff --git a/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php b/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php
index 1a5e1936fb..155ec56559 100644
--- a/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php
+++ b/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php
@@ -132,12 +132,10 @@ class ObjectFormHandlerHelper
$bModal = ($oRequest->isXmlHttpRequest() && empty($sOperation));
// - Retrieve form properties
- $aOriginalFormProperties = ApplicationHelper::GetLoadedFormFromClass($this->aCombodoPortalInstanceConf['forms'], $sObjectClass, $sMode);
if ($aFormProperties === null)
{
- $aFormProperties = $aOriginalFormProperties;
+ $aFormProperties = ApplicationHelper::GetLoadedFormFromClass($this->aCombodoPortalInstanceConf['forms'], $sObjectClass, $sMode);
}
-
// - Create and
if (empty($sOperation))
{
@@ -299,8 +297,7 @@ class ObjectFormHandlerHelper
throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, 'Parameters formmanager_class and formmanager_data must be defined.');
}
- $bTrustContent = $sFormManagerClass::CanTrustFormLayoutContent($sFormManagerData, $aOriginalFormProperties);
- $oFormManager = $sFormManagerClass::FromJSON($sFormManagerData, $bTrustContent);
+ $oFormManager = $sFormManagerClass::FromJSON($sFormManagerData);
$oFormManager->SetContainer($this->oContainer);
// Applying action rules if present
diff --git a/datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php b/datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
index 363e565dfb..88ad564406 100644
--- a/datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
+++ b/datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
@@ -99,7 +99,8 @@ class AppExtension extends AbstractExtension
return $sUrl;
});
- //$filters[] = new TwigFilter('filter', 'twig_array_filter');
+ //since 2.7.7 3.0.2 3.1.0 N°4867 "Twig content not allowed" error when use the extkey widget search icon in the user portal
+ //overwrite native twig filter : disable use of 'system' filter
$filters[] = new Twig_SimpleFilter('filter', function ($array, $arrow) {
if ($arrow == 'system'){
return json_encode($array);
diff --git a/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml b/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml
index 9f2c0b0f49..9fba410218 100755
--- a/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml
+++ b/datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml
@@ -1733,7 +1733,6 @@
500
- true