N°2847 - move console specific methods from BlockRenderer to ConsoleBlockRenderer

This commit is contained in:
Eric
2020-12-16 15:15:50 +01:00
parent 42354ba794
commit 31f3bf9368
10 changed files with 117 additions and 70 deletions

View File

@@ -1,6 +1,6 @@
<?php
use Combodo\iTop\Renderer\BlockRenderer;
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
/**
* Copyright (C) 2013-2020 Combodo SARL
@@ -352,26 +352,26 @@ EOF;
* @param $aExtraParams
*
* @return string
* @throws \ApplicationException
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \DictExceptionMissingString
* @throws \MissingQueryArgument
* @throws \MySQLException
* @throws \MySQLHasGoneAwayException
* @throws \OQLException
* @throws \ReflectionException
* @throws \Twig\Error\LoaderError
* @throws \Twig\Error\RuntimeError
* @throws \Twig\Error\SyntaxError
*/
protected function GetActionsMenu(WebPage $oPage, $aExtraParams)
{
$oMenuBlock = new MenuBlock($this->oSet->GetFilter(), 'list');
$oBlock = $oMenuBlock->GetRenderContent($oPage, $aExtraParams, $this->iListId);
foreach ($oBlock->GetCssFilesUrlRecursively(true) as $sFileAbsUrl) {
$oPage->add_linked_stylesheet($sFileAbsUrl);
}
// JS files
foreach ($oBlock->GetJsFilesUrlRecursively(true) as $sFileAbsUrl) {
$oPage->add_linked_script($sFileAbsUrl);
}
$oPage->RenderInlineScriptsAndCSSRecursively($oBlock);
return BlockRenderer::RenderBlockTemplate($oPage, $oBlock);
return ConsoleBlockRenderer::RenderBlockTemplateInPage($oPage, $oBlock);
}
/**

View File

@@ -28,7 +28,7 @@ use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableFactory;
use Combodo\iTop\Application\UI\Base\Component\DataTable\StaticTable\FormTableRow\FormTableRow;
use Combodo\iTop\Application\UI\Links\Indirect\BlockIndirectLinksEdit\BlockIndirectLinksEdit;
use Combodo\iTop\Application\UI\Links\Indirect\BlockObjectPickerDialog\BlockObjectPickerDialog;
use Combodo\iTop\Renderer\BlockRenderer;
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
require_once(APPROOT.'application/displayblock.class.inc.php');
@@ -374,10 +374,16 @@ JS
*
* @return string The HTML fragment to be inserted into the page
* @throws \ArchivedObjectException
* @throws \ConfigException
* @throws \CoreException
* @throws \DictExceptionMissingString
* @throws \CoreUnexpectedValue
* @throws \MySQLException
* @throws \ReflectionException
* @throws \Twig\Error\LoaderError
* @throws \Twig\Error\RuntimeError
* @throws \Twig\Error\SyntaxError
*/
public function Display(WebPage $oPage, $oValue, $aArgs, $sFormPrefix, $oCurrentObj)
public function Display(WebPage $oPage, $oValue, $aArgs, $sFormPrefix, $oCurrentObj): string
{
$sLinkedSetId = "{$this->m_sAttCode}{$this->m_sNameSuffix}";
@@ -430,7 +436,7 @@ JS
$oBlock->AddControls();
return BlockRenderer::RenderBlockTemplate($oPage, $oBlock);
return ConsoleBlockRenderer::RenderBlockTemplateInPage($oPage, $oBlock);
}
/**

View File

@@ -296,6 +296,7 @@ return array(
'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\BsSetFieldRenderer' => $baseDir . '/sources/Renderer/Bootstrap/FieldRenderer/BsSetFieldRenderer.php',
'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\BsSimpleFieldRenderer' => $baseDir . '/sources/Renderer/Bootstrap/FieldRenderer/BsSimpleFieldRenderer.php',
'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\BsSubFormFieldRenderer' => $baseDir . '/sources/Renderer/Bootstrap/FieldRenderer/BsSubFormFieldRenderer.php',
'Combodo\\iTop\\Renderer\\Console\\ConsoleBlockRenderer' => $baseDir . '/sources/Renderer/Console/ConsoleBlockRenderer.php',
'Combodo\\iTop\\Renderer\\Console\\ConsoleFormRenderer' => $baseDir . '/sources/Renderer/Console/ConsoleFormRenderer.php',
'Combodo\\iTop\\Renderer\\Console\\FieldRenderer\\ConsoleSelectObjectFieldRenderer' => $baseDir . '/sources/Renderer/Console/FieldRenderer/ConsoleSelectObjectFieldRenderer.php',
'Combodo\\iTop\\Renderer\\Console\\FieldRenderer\\ConsoleSimpleFieldRenderer' => $baseDir . '/sources/Renderer/Console/FieldRenderer/ConsoleSimpleFieldRenderer.php',

View File

@@ -526,6 +526,7 @@ class ComposerStaticInit0018331147de7601e7552f7da8e3bb8b
'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\BsSetFieldRenderer' => __DIR__ . '/../..' . '/sources/Renderer/Bootstrap/FieldRenderer/BsSetFieldRenderer.php',
'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\BsSimpleFieldRenderer' => __DIR__ . '/../..' . '/sources/Renderer/Bootstrap/FieldRenderer/BsSimpleFieldRenderer.php',
'Combodo\\iTop\\Renderer\\Bootstrap\\FieldRenderer\\BsSubFormFieldRenderer' => __DIR__ . '/../..' . '/sources/Renderer/Bootstrap/FieldRenderer/BsSubFormFieldRenderer.php',
'Combodo\\iTop\\Renderer\\Console\\ConsoleBlockRenderer' => __DIR__ . '/../..' . '/sources/Renderer/Console/ConsoleBlockRenderer.php',
'Combodo\\iTop\\Renderer\\Console\\ConsoleFormRenderer' => __DIR__ . '/../..' . '/sources/Renderer/Console/ConsoleFormRenderer.php',
'Combodo\\iTop\\Renderer\\Console\\FieldRenderer\\ConsoleSelectObjectFieldRenderer' => __DIR__ . '/../..' . '/sources/Renderer/Console/FieldRenderer/ConsoleSelectObjectFieldRenderer.php',
'Combodo\\iTop\\Renderer\\Console\\FieldRenderer\\ConsoleSimpleFieldRenderer' => __DIR__ . '/../..' . '/sources/Renderer/Console/FieldRenderer/ConsoleSimpleFieldRenderer.php',

View File

@@ -19,7 +19,7 @@
use Combodo\iTop\Application\UI\Base\Layout\ActivityPanel\ActivityEntry\ActivityEntryFactory;
use Combodo\iTop\Controller\AjaxRenderController;
use Combodo\iTop\Renderer\BlockRenderer;
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
use Combodo\iTop\Renderer\Console\ConsoleFormRenderer;
require_once('../approot.inc.php');
@@ -1126,7 +1126,7 @@ EOF
}
if ($oDashlet->IsRedrawNeeded()) {
$oBlock = $oDashlet->DoRender($oPage, true, false, $aExtraParams);
$sHtml = BlockRenderer::RenderBlockTemplate($oPage, $oBlock);
$sHtml = ConsoleBlockRenderer::RenderBlockTemplateInPage($oPage, $oBlock);
$oPage->add_script("$('#dashlet_$sDashletId').html('$sHtml');");
}
if ($oDashlet->IsFormRedrawNeeded()) {

View File

@@ -22,7 +22,6 @@ namespace Combodo\iTop\Renderer;
use Combodo\iTop\Application\TwigBase\Twig\TwigHelper;
use Combodo\iTop\Application\UI\Base\iUIBlock;
use utils;
use WebPage;
/**
* Class BlockRenderer
@@ -72,7 +71,6 @@ class BlockRenderer
/**
* Helper to use directly in TWIG to render a block and its sub blocks
*
* @param \WebPage $oPage
* @param \Combodo\iTop\Application\UI\Base\iUIBlock $oBlock
* @param array $aContextParams
*
@@ -81,60 +79,14 @@ class BlockRenderer
* @throws \Twig\Error\LoaderError
* @throws \Twig\Error\RuntimeError
* @throws \Twig\Error\SyntaxError
* @throws \Exception
*/
public static function RenderBlockTemplate(WebPage $oPage, iUIBlock $oBlock, array $aContextParams = []): string
public static function RenderBlockTemplates(iUIBlock $oBlock, array $aContextParams = []): string
{
static::RenderCssJsInPage($oPage, $oBlock, $aContextParams);
static::RenderDeferredBlocks($oPage, $oBlock);
$oSelf = new static($oBlock, $aContextParams);
return $oSelf->RenderHtml();
}
protected static function RenderDeferredBlocks(WebPage $oPage, iUIBlock $oBlock)
{
foreach ($oBlock->GetDeferredBlocks() as $oDeferredBlock) {
$oPage->AddDeferredBlock($oDeferredBlock);
}
foreach ($oBlock->GetSubBlocks() as $oSubBlock) {
static::RenderDeferredBlocks( $oPage, $oSubBlock);
}
}
/**
* @param \WebPage $oPage
* @param \Combodo\iTop\Application\UI\Base\iUIBlock $oBlock
* @param array $aContextParams
*
* @throws \Exception
*/
public static function RenderCssJsInPage(WebPage $oPage, iUIBlock $oBlock, array $aContextParams = []): void
{
// CSS files
foreach ($oBlock->GetCssFilesUrlRecursively(true) as $sFileAbsUrl) {
$oPage->add_linked_stylesheet($sFileAbsUrl);
}
// JS files
foreach ($oBlock->GetJsFilesUrlRecursively(true) as $sFileAbsUrl) {
$oPage->add_linked_script($sFileAbsUrl);
}
static::RenderCssJsTemplatesRecursively($oPage, $oBlock, $aContextParams);
}
protected static function RenderCssJsTemplatesRecursively(WebPage $oPage, iUIBlock $oBlock, array $aContextParams = []): void
{
$oBlockRenderer = new static($oBlock, $aContextParams);
$oPage->add_init_script($oBlockRenderer->RenderJsInline(iUIBlock::JS_TYPE_ON_INIT));
$oPage->add_script($oBlockRenderer->RenderJsInline(iUIBlock::JS_TYPE_LIVE));
$oPage->add_ready_script($oBlockRenderer->RenderJsInline(iUIBlock::JS_TYPE_ON_READY));
$oPage->add_style($oBlockRenderer->RenderCssInline());
foreach ($oBlock->GetSubBlocks() as $oSubBlock) {
static::RenderCssJsTemplatesRecursively( $oPage, $oSubBlock, $aContextParams);
}
}
/** @var \Combodo\iTop\Application\UI\Base\iUIBlock $oBlock */
protected $oBlock;
/** @var array $aContextParams Optional context parameters to pass to the template during rendering */

View File

@@ -0,0 +1,84 @@
<?php
/**
* @copyright Copyright (C) 2010-2020 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
namespace Combodo\iTop\Renderer\Console;
use Combodo\iTop\Application\UI\Base\iUIBlock;
use Combodo\iTop\Renderer\BlockRenderer;
use WebPage;
class ConsoleBlockRenderer extends BlockRenderer
{
/**
* Helper to use directly in TWIG to render a block and its sub blocks
*
* @param \WebPage $oPage
* @param \Combodo\iTop\Application\UI\Base\iUIBlock $oBlock
* @param array $aContextParams
*
* @return string
* @throws \ReflectionException
* @throws \Twig\Error\LoaderError
* @throws \Twig\Error\RuntimeError
* @throws \Twig\Error\SyntaxError
* @throws \Exception
*/
public static function RenderBlockTemplateInPage(WebPage $oPage, iUIBlock $oBlock, array $aContextParams = []): string
{
static::AddCssJsToPage($oPage, $oBlock, $aContextParams);
static::AddDeferredBlocksToPage($oPage, $oBlock);
$oSelf = new static($oBlock, $aContextParams);
return $oSelf->RenderHtml();
}
protected static function AddDeferredBlocksToPage(WebPage $oPage, iUIBlock $oBlock)
{
foreach ($oBlock->GetDeferredBlocks() as $oDeferredBlock) {
$oPage->AddDeferredBlock($oDeferredBlock);
}
foreach ($oBlock->GetSubBlocks() as $oSubBlock) {
static::AddDeferredBlocksToPage( $oPage, $oSubBlock);
}
}
/**
* @param \WebPage $oPage
* @param \Combodo\iTop\Application\UI\Base\iUIBlock $oBlock
* @param array $aContextParams
*
* @throws \Exception
*/
public static function AddCssJsToPage(WebPage $oPage, iUIBlock $oBlock, array $aContextParams = []): void
{
// CSS files
foreach ($oBlock->GetCssFilesUrlRecursively(true) as $sFileAbsUrl) {
$oPage->add_linked_stylesheet($sFileAbsUrl);
}
// JS files
foreach ($oBlock->GetJsFilesUrlRecursively(true) as $sFileAbsUrl) {
$oPage->add_linked_script($sFileAbsUrl);
}
static::AddCssJsTemplatesToPageRecursively($oPage, $oBlock, $aContextParams);
}
protected static function AddCssJsTemplatesToPageRecursively(WebPage $oPage, iUIBlock $oBlock, array $aContextParams = []): void
{
$oBlockRenderer = new static($oBlock, $aContextParams);
$oPage->add_init_script($oBlockRenderer->RenderJsInline(iUIBlock::JS_TYPE_ON_INIT));
$oPage->add_script($oBlockRenderer->RenderJsInline(iUIBlock::JS_TYPE_LIVE));
$oPage->add_ready_script($oBlockRenderer->RenderJsInline(iUIBlock::JS_TYPE_ON_READY));
$oPage->add_style($oBlockRenderer->RenderCssInline());
foreach ($oBlock->GetSubBlocks() as $oSubBlock) {
static::AddCssJsTemplatesToPageRecursively( $oPage, $oSubBlock, $aContextParams);
}
}
}

View File

@@ -8,6 +8,7 @@ use Combodo\iTop\Application\TwigBase\Twig\TwigHelper;
use Combodo\iTop\Application\UI\Base\iUIBlock;
use Combodo\iTop\Application\UI\Base\Layout\iUIContentBlock;
use Combodo\iTop\Renderer\BlockRenderer;
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
class AjaxPage extends WebPage implements iTabbedPage
{
@@ -147,7 +148,7 @@ class AjaxPage extends WebPage implements iTabbedPage
header($s_header);
}
BlockRenderer::RenderCssJsInPage($this, $this->oContentLayout);
ConsoleBlockRenderer::AddCssJsToPage($this, $this->oContentLayout);
// Render the blocks
// Additional UI widgets to be activated inside the ajax fragment

View File

@@ -25,6 +25,7 @@ use Combodo\iTop\Application\UI\Base\iUIBlock;
use Combodo\iTop\Application\UI\Base\Layout\iUIContentBlock;
use Combodo\iTop\Application\UI\Base\Layout\UIContentBlock;
use Combodo\iTop\Renderer\BlockRenderer;
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
/**
@@ -784,7 +785,7 @@ class WebPage implements Page
$aData['oLayout'] = $this->oContentLayout;
$aData['aDeferredBlocks'] = $this->GetDeferredBlocks($this->oContentLayout);
BlockRenderer::RenderCssJsInPage($this, $this->oContentLayout);
ConsoleBlockRenderer::AddCssJsToPage($this, $this->oContentLayout);
// Base structure of data to pass to the TWIG template
$aData['aPage'] = [

View File

@@ -31,6 +31,7 @@ use Combodo\iTop\Application\UI\Base\Layout\TopBar\TopBarFactory;
use Combodo\iTop\Application\UI\Base\Layout\UIContentBlock;
use Combodo\iTop\Application\UI\Base\UIBlock;
use Combodo\iTop\Renderer\BlockRenderer;
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
/**
* Web page with some associated CSS and scripts (jquery) for a fancier display
@@ -891,7 +892,7 @@ EOF;
continue;
}
BlockRenderer::RenderCssJsInPage($this, $oLayout);
ConsoleBlockRenderer::AddCssJsToPage($this, $oLayout);
}
// Components