diff --git a/pages/run_query.php b/pages/run_query.php index 91f0c76a7..60bdaac7a 100644 --- a/pages/run_query.php +++ b/pages/run_query.php @@ -245,11 +245,11 @@ JS $aMoreInfoBlocks = []; $oDevelopedQuerySet = new FieldSet(Dict::S('UI:RunQuery:DevelopedQuery')); - $oDevelopedQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode(utils::EscapeHtml($oFilter->ToOQL()))); + $oDevelopedQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode($oFilter->ToOQL())); $aMoreInfoBlocks[] = $oDevelopedQuerySet; $oSerializedQuerySet = new FieldSet(Dict::S('UI:RunQuery:SerializedFilter')); - $oSerializedQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode(utils::EscapeHtml($oFilter->serialize()))); + $oSerializedQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode($oFilter->serialize())); $aMoreInfoBlocks[] = $oSerializedQuerySet; diff --git a/sources/Application/UI/Base/Layout/UIContentBlockUIBlockFactory.php b/sources/Application/UI/Base/Layout/UIContentBlockUIBlockFactory.php index d8d82765d..72198bb1d 100644 --- a/sources/Application/UI/Base/Layout/UIContentBlockUIBlockFactory.php +++ b/sources/Application/UI/Base/Layout/UIContentBlockUIBlockFactory.php @@ -45,33 +45,45 @@ class UIContentBlockUIBlockFactory extends AbstractUIBlockFactory * The \n are replaced by
* * @api - * @param string $sCode + * @param string $sCode plain text code * @param string|null $sId * * @return \Combodo\iTop\Application\UI\Base\Layout\UIContentBlock */ public static function MakeForCode(string $sCode, string $sId = null) { - $oCode = new UIContentBlock($sId, ['ibo-is-code']); - $sCode = str_replace("\n", '
', $sCode); - $oCode->AddSubBlock(new Html($sCode)); + $sCode = str_replace("\n", '
', \utils::HtmlEntities($sCode)); - return $oCode; + return self::MakeFromHTMLCode($sId, $sCode); } /** * Used to display a block of preformatted text in a
 tag.
 	 *
 	 * @api
-	 * @param string $sCode
+	 * @param string $sCode plain text code
 	 * @param string|null $sId
 	 *
 	 * @return \Combodo\iTop\Application\UI\Base\Layout\UIContentBlock
 	 */
 	public static function MakeForPreformatted(string $sCode, string $sId = null)
 	{
-		$sCode = '
'.$sCode.'
'; + $sCode = '
'.\utils::HtmlEntities($sCode).'
'; - return static::MakeForCode($sCode, $sId); + return self::MakeFromHTMLCode($sId, $sCode); + } + + /** + * @param string|null $sId + * @param string $sCode + * + * @return \Combodo\iTop\Application\UI\Base\Layout\UIContentBlock + */ + private static function MakeFromHTMLCode(?string $sId, string $sCode): UIContentBlock + { + $oCode = new UIContentBlock($sId, ['ibo-is-code']); + $oCode->AddSubBlock(new Html($sCode)); + + return $oCode; } } \ No newline at end of file diff --git a/tests/manual-visual-tests/Backoffice/RenderAllUiBlocks.php b/tests/manual-visual-tests/Backoffice/RenderAllUiBlocks.php index 5d2e4defc..154646f98 100644 --- a/tests/manual-visual-tests/Backoffice/RenderAllUiBlocks.php +++ b/tests/manual-visual-tests/Backoffice/RenderAllUiBlocks.php @@ -41,6 +41,7 @@ use Combodo\iTop\Application\UI\Base\Component\PopoverMenu\PopoverMenu; use Combodo\iTop\Application\UI\Base\Component\Title\TitleUIBlockFactory; use Combodo\iTop\Application\UI\Base\Layout\Object\ObjectFactory; use Combodo\iTop\Application\UI\Base\Layout\PageContent\PageContentFactory; +use Combodo\iTop\Application\UI\Base\Layout\UIContentBlockUIBlockFactory; use Combodo\iTop\Application\UI\Base\Layout\UIContentBlockWithJSRefreshCallback; use iTopWebPage; use LoginWebPage; @@ -355,6 +356,22 @@ $oDashletFieldset2->AddSubBlock($oDashletField4); $oDashletFieldset2->AddSubBlock($oDashletField5); $oDashletFieldset2->AddSubBlock($oDashletField6); +///////// +// Code +///////// + +$oPage->AddUiBlock(TitleUIBlockFactory::MakeNeutral('Code examples (MakeForCode)', 2 )); +$oCode1 = UIContentBlockUIBlockFactory::MakeForCode('function mean(int $a, int $b) { + return ($a + $b)/2 +}'); +$oPage->AddUiBlock($oCode1); + +$oPage->AddUiBlock(TitleUIBlockFactory::MakeNeutral('Code examples (MakeForPreformatted)', 2 )); +$oCode2 = UIContentBlockUIBlockFactory::MakeForPreformatted('function mean(int $a, int $b) { + return ($a + $b)/2 +}'); +$oPage->AddUiBlock($oCode2); + ///////// // Pill /////////