mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
N°3537 run_query : use Field instead of InputWithLabel
This commit is contained in:
@@ -954,7 +954,10 @@ EOF
|
||||
$val['attflags'] = ($bEditMode) ? $this->GetFormAttributeFlags($sAttCode) : OPT_ATT_READONLY;
|
||||
|
||||
// - How the field should be rendered
|
||||
$val['layout'] = (in_array($oAttDef->GetEditClass(), static::GetAttEditClassesToRenderAsLargeField())) ? 'large' : 'small';
|
||||
$val['layout'] =
|
||||
(in_array($oAttDef->GetEditClass(), static::GetAttEditClassesToRenderAsLargeField()))
|
||||
? Field::ENUM_FIELD_LAYOUT_LARGE
|
||||
: Field::ENUM_FIELD_LAYOUT_SMALL;
|
||||
|
||||
// - For simple fields, we get the raw (stored) value as well
|
||||
$bExcludeRawValue = false;
|
||||
|
||||
@@ -22,7 +22,8 @@ $ibo-field--label--description--color: $ibo-color-grey-700 !default;
|
||||
display: inherit;
|
||||
|
||||
.ibo-field--label {
|
||||
display: inherit;
|
||||
display: inherit;
|
||||
max-width: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,9 +19,11 @@
|
||||
|
||||
use Combodo\iTop\Application\UI\Base\Component\Alert\AlertFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Button\ButtonFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Field\Field;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Form\Form;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Input\InputFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Input\TextArea;
|
||||
use Combodo\iTop\Renderer\BlockRenderer;
|
||||
|
||||
require_once('../approot.inc.php');
|
||||
require_once(APPROOT.'/application/application.inc.php');
|
||||
@@ -160,14 +162,15 @@ try
|
||||
$oHiddenParams = new Html($oAppContext->GetForForm());
|
||||
$oQueryForm->AddSubBlock($oHiddenParams);
|
||||
|
||||
$oQueryTextarea = InputFactory::MakeForTextareaWithLabel(
|
||||
'expression',
|
||||
Dict::S('UI:RunQuery:ExpressionToEvaluate'),
|
||||
'expression',
|
||||
utils::HtmlEntities($sExpression),
|
||||
120, 8
|
||||
);
|
||||
$oQueryForm->AddSubBlock($oQueryTextarea);
|
||||
$oQueryTextArea = new TextArea(utils::HtmlEntities($sExpression), 'expression', 120, 8);
|
||||
$oQueryTextAreaRenderer = new BlockRenderer($oQueryTextArea);
|
||||
$oQueryTextArea->SetName('expression');
|
||||
$oQueryField = new Field([
|
||||
'layout' => Field::ENUM_FIELD_LAYOUT_LARGE,
|
||||
'label' => Dict::S('UI:RunQuery:ExpressionToEvaluate'),
|
||||
'value' => $oQueryTextAreaRenderer->RenderHtml(),
|
||||
]);
|
||||
$oQueryForm->AddSubBlock($oQueryField);
|
||||
|
||||
$oQuerySubmit = ButtonFactory::MakeForPrimaryAction(
|
||||
Dict::S('UI:Button:Evaluate'),
|
||||
|
||||
@@ -20,12 +20,19 @@ use Combodo\iTop\Application\UI\Base\UIBlock;
|
||||
class Field extends UIBlock
|
||||
{
|
||||
// Overloaded constants
|
||||
/** @inheritdoc */
|
||||
/** @inheritdoc */
|
||||
public const BLOCK_CODE = 'ibo-field';
|
||||
/** @inheritdoc */
|
||||
/** @inheritdoc */
|
||||
public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/field/layout';
|
||||
|
||||
/** @var array Array of various parameters of the field. This should be exploded in dedicated properties instead of a grey array. */
|
||||
public const ENUM_FIELD_LAYOUT_SMALL = 'small';
|
||||
public const ENUM_FIELD_LAYOUT_LARGE = 'large';
|
||||
|
||||
/**
|
||||
* @var array Array of various parameters of the field.
|
||||
* This should be exploded in dedicated properties instead of a grey array.
|
||||
* See in the corresponding Twig file for keys to use
|
||||
*/
|
||||
protected $aParams;
|
||||
|
||||
public function __construct(array $aParams, ?string $sId = null)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
namespace Combodo\iTop\Application\UI\Base\Component\Input;
|
||||
|
||||
|
||||
use Combodo\iTop\Application\UI\Base\Component\Field\Field;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Input\Select\Select;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOption;
|
||||
|
||||
@@ -25,6 +26,15 @@ class InputFactory
|
||||
return $oInput;
|
||||
}
|
||||
|
||||
/**
|
||||
* If you need to have a real field with a label, you might use a {@link Field} component instead
|
||||
*
|
||||
* @param string $sName
|
||||
* @param string $sLabel
|
||||
* @param string|null $sId
|
||||
*
|
||||
* @return \Combodo\iTop\Application\UI\Base\Component\Input\InputWithLabel
|
||||
*/
|
||||
public static function MakeForSelectWithLabel(string $sName, string $sLabel, ?string $sId = null): InputWithLabel
|
||||
{
|
||||
$oInput = new Select($sId);
|
||||
@@ -38,22 +48,6 @@ class InputFactory
|
||||
return $oInputWithLabel;
|
||||
}
|
||||
|
||||
public static function MakeForTextareaWithLabel(
|
||||
string $sName, string $sLabel, ?string $sId = null, ?string $sValue = null,
|
||||
?int $iCols = null, ?int $iRows = null
|
||||
): InputWithLabel
|
||||
{
|
||||
$oTextArea = new TextArea($sValue, $sId, $iCols, $iRows);
|
||||
$oTextArea->SetName($sName);
|
||||
|
||||
if (is_null($sId)) {
|
||||
$sId = $oTextArea->GetId();
|
||||
}
|
||||
$oInputWithLabel = new InputWithLabel($sLabel, $oTextArea, $sId);
|
||||
|
||||
return $oInputWithLabel;
|
||||
}
|
||||
|
||||
public static function MakeForSelect(string $sName, ?string $sId = null): Select
|
||||
{
|
||||
$oInput = new Select($sId);
|
||||
|
||||
@@ -10,36 +10,46 @@ namespace Combodo\iTop\Application\UI\Base\Component\Input;
|
||||
|
||||
use Combodo\iTop\Application\UI\Base\UIBlock;
|
||||
|
||||
/**
|
||||
* You might want to use a {@link \Combodo\iTop\Application\UI\Base\Component\Field\Field} component instead...
|
||||
*
|
||||
* @package Combodo\iTop\Application\UI\Base\Component\Input
|
||||
*/
|
||||
class InputWithLabel extends UIBlock
|
||||
{
|
||||
public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/input/inputwithlabel';
|
||||
|
||||
/** @var string */
|
||||
protected $sLabel;
|
||||
/** @var \Combodo\iTop\Application\UI\Base\Component\Input\AbstractInput */
|
||||
/** @var \Combodo\iTop\Application\UI\Base\Component\Input\Input */
|
||||
protected $oInput;
|
||||
/** @var bool */
|
||||
protected $bHasBr;
|
||||
|
||||
public function __construct(string $sLabel, AbstractInput $oInput, ?string $sId, ?bool $bHasBr = null)
|
||||
/**
|
||||
* @param string $sLabel
|
||||
* @param \Combodo\iTop\Application\UI\Base\Component\Input\AbstractInput $oInput
|
||||
* @param string|null $sId
|
||||
*/
|
||||
public function __construct(string $sLabel, AbstractInput $oInput, ?string $sId)
|
||||
{
|
||||
parent::__construct($sId);
|
||||
$this->sLabel = $sLabel;
|
||||
$this->oInput = $oInput;
|
||||
|
||||
if (is_null($bHasBr)) {
|
||||
$this->bHasBr = ($oInput instanceof TextArea);
|
||||
} else {
|
||||
$this->bHasBr = $bHasBr;
|
||||
}
|
||||
}
|
||||
|
||||
public function GetInput(): AbstractInput
|
||||
/**
|
||||
* @return \Combodo\iTop\Application\UI\Base\Component\Input\AbstractInput
|
||||
*/
|
||||
public function GetInput()
|
||||
{
|
||||
return $this->oInput;
|
||||
}
|
||||
|
||||
public function SetInput(AbstractInput $oInput): InputWithLabel
|
||||
/**
|
||||
* @param \Combodo\iTop\Application\UI\Base\Component\Input\AbstractInput $oInput
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function SetInput(AbstractInput $oInput)
|
||||
{
|
||||
$this->oInput = $oInput;
|
||||
|
||||
@@ -63,12 +73,6 @@ class InputWithLabel extends UIBlock
|
||||
public function SetLabel(string $sLabel): InputWithLabel
|
||||
{
|
||||
$this->sLabel = $sLabel;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function HasBr(): bool
|
||||
{
|
||||
return $this->bHasBr;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
{% block iboInputLabel %}
|
||||
<label for="{{ oUIBlock.GetId() }}">{{ oUIBlock.GetLabel() }}</label>
|
||||
{% if oUIBlock.HasBr() %}<br>{% endif %}
|
||||
{{ render_block(oUIBlock.GetInput()) }}
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user