N°2847 Refactor Inputs components

This commit is contained in:
Stephen Abello
2020-09-30 09:39:40 +02:00
parent c0337eaa23
commit 12bf77d9ca
8 changed files with 70 additions and 15 deletions

View File

@@ -21,6 +21,7 @@ use Combodo\iTop\Application\UI\Component\Button\ButtonFactory;
use Combodo\iTop\Application\UI\Component\Form\Form;
use Combodo\iTop\Application\UI\Component\Html\Html;
use Combodo\iTop\Application\UI\Component\Input\InputFactory;
use Combodo\iTop\Application\UI\Component\Input\RichText\RichText;
use Combodo\iTop\Application\UI\Component\Panel\Panel;
use Combodo\iTop\Application\UI\Component\Title\TitleFactory;
use Combodo\iTop\Application\UI\Layout\PageContent\PageContentFactory;
@@ -463,10 +464,12 @@ function GetUserLanguageForm(ApplicationContext $oAppContext, string $sURL): For
$aSortedLang[$aLang['description']] = $sCode;
}
ksort($aSortedLang);
$oUserLanguageBlockSelect = InputFactory::MakeForSelect('language', Dict::S('UI:Favorites:SelectYourLanguage'));
$oUserLanguageBlockSelect = InputFactory::MakeForSelectWithLabel('language', Dict::S('UI:Favorites:SelectYourLanguage'));
/** @var \Combodo\iTop\Application\UI\Component\Input\Select $oUserLanguageBlockSelectInput */
$oUserLanguageBlockSelectInput = $oUserLanguageBlockSelect->GetInput();
foreach ($aSortedLang as $sCode) {
$bSelected = ($sCode == Dict::GetUserLanguage());
$oUserLanguageBlockSelect->AddOption(InputFactory::MakeForSelectOption($sCode, $aLanguages[$sCode]['description'].' ('.$aLanguages[$sCode]['localized_description'].')', $bSelected));
$oUserLanguageBlockSelectInput->AddOption(InputFactory::MakeForSelectOption($sCode, $aLanguages[$sCode]['description'].' ('.$aLanguages[$sCode]['localized_description'].')', $bSelected));
}
$oUserLanguageForm->AddSubBlock($oUserLanguageBlockSelect);
@@ -478,6 +481,9 @@ function GetUserLanguageForm(ApplicationContext $oAppContext, string $sURL): For
// - Submit button
$oUserLanguageSubmitButton = ButtonFactory::MakeForValidationAction(Dict::S('UI:Button:Apply'), null, null, true);
$oUserLanguageForm->AddSubBlock($oUserLanguageSubmitButton);
$oTestRichText = new RichText();
$oUserLanguageForm->AddSubBlock($oTestRichText);
return $oUserLanguageForm;
}

View File

@@ -8,6 +8,9 @@
namespace Combodo\iTop\Application\UI\Component\Input;
use Combodo\iTop\Application\UI\Component\Input\Select\Select;
use Combodo\iTop\Application\UI\Component\Input\Select\SelectOption;
class InputFactory
{
@@ -22,13 +25,20 @@ class InputFactory
return $oInput;
}
public static function MakeForSelect(string $sName, string $sLabel, ?string $sId = null): Select
public static function MakeForSelectWithLabel(string $sName, string $sLabel, ?string $sId = null): InputWithLabel
{
$oInput = new Select();
$oInput->SetName($sName);
$oInputWithLabel = new InputWithLabel($sLabel, $oInput, $sId);
return $oInputWithLabel;
}
public static function MakeForSelect(string $sName, ?string $sId = null): Select
{
$oInput = new Select($sId);
$oInput->SetName($sName)
->SetLabel($sLabel);
$oInput->SetName($sName);
return $oInput;
}

View File

@@ -8,12 +8,49 @@
namespace Combodo\iTop\Application\UI\Component\Input;
class InputWithLabel extends Input
use Combodo\iTop\Application\UI\UIBlock;
class InputWithLabel extends UIBlock
{
public const HTML_TEMPLATE_REL_PATH = 'components/input/inputwithlabel';
/** @var string */
protected $sLabel;
/** @var \Combodo\iTop\Application\UI\Component\Input\Input */
protected $oInput;
/**
* InputWithLabel constructor.
*
* @param string $sLabel
* @param \Combodo\iTop\Application\UI\Component\Input\Input $oInput
*/
public function __construct(string $sLabel, \Combodo\iTop\Application\UI\Component\Input\Input $oInput, ?string $sId)
{
parent::__construct($sId);
$this->sLabel = $sLabel;
$this->oInput = $oInput;
}
/**
* @return \Combodo\iTop\Application\UI\Component\Input\Input
*/
public function GetInput(): \Combodo\iTop\Application\UI\Component\Input\Input
{
return $this->oInput;
}
/**
* @param \Combodo\iTop\Application\UI\Component\Input\Input $oInput
*
* @return $this
*/
public function SetInput(\Combodo\iTop\Application\UI\Component\Input\Input $oInput): InputWithLabel
{
$this->oInput = $oInput;
return $this;
}
/**
* @return string

View File

@@ -5,12 +5,14 @@
*/
namespace Combodo\iTop\Application\UI\Component\Input;
namespace Combodo\iTop\Application\UI\Component\Input\Select;
class Select extends InputWithLabel
use Combodo\iTop\Application\UI\Component\Input\Input;
class Select extends Input
{
public const HTML_TEMPLATE_REL_PATH = 'components/input/select';
public const HTML_TEMPLATE_REL_PATH = 'components/input/select/select';
/** @var array */
protected $aOptions;

View File

@@ -5,14 +5,14 @@
*/
namespace Combodo\iTop\Application\UI\Component\Input;
namespace Combodo\iTop\Application\UI\Component\Input\Select;
use Combodo\iTop\Application\UI\UIBlock;
class SelectOption extends UIBlock
{
public const HTML_TEMPLATE_REL_PATH = 'components/input/selectoption';
public const HTML_TEMPLATE_REL_PATH = 'components/input/select/selectoption';
/** @var string */
protected $sValue;

View File

@@ -1,4 +1,4 @@
{% extends "components/input/layout.html.twig" %}
{% block iboInputLabel %}
<label for="{{ oUIBlock.GetId() }}">{{ oUIBlock.GetLabel() }}</label>
{{ render_block(oUIBlock.GetInput()) }}
{% endblock %}

View File

@@ -1,6 +1,6 @@
{# @copyright Copyright (C) 2010-2020 Combodo SARL #}
{# @license http://opensource.org/licenses/AGPL-3.0 #}
{% extends "components/input/inputwithlabel.html.twig" %}
{% extends "components/input/layout.html.twig" %}
{% block iboInput %}
<select id="{{ oUIBlock.GetId() }}" name="{{ oUIBlock.GetName() }}">
{% for oSubBlock in oUIBlock.GetSubBlocks() %}