diff --git a/application/cmdbabstract.class.inc.php b/application/cmdbabstract.class.inc.php index 3c1f83e3e..3bd178c57 100644 --- a/application/cmdbabstract.class.inc.php +++ b/application/cmdbabstract.class.inc.php @@ -1036,12 +1036,6 @@ HTML $sClass = get_class($this); $iKey = $this->GetKey(); - $oPage->add(<< -
-HTML - ); - // Object's details $oObjectDetails = ObjectFactory::MakeDetails($this); @@ -1064,10 +1058,6 @@ HTML $this->DisplayBareRelations($oPage, $bEditMode); // TODO 3.0.0: What to do with this? //$this->DisplayBareHistory($oPage, $bEditMode); - $oPage->add(<< -HTML - ); // Note: Adding the JS snippet which enables the image upload should have been done directly by the ActivityPanel which would have kept the independance principle // of the UIBlock. For now we keep it this way in order to move on and trace this known limitation in N°3736. diff --git a/pages/UI.php b/pages/UI.php index 15ea0e294..afd5ad6d1 100644 --- a/pages/UI.php +++ b/pages/UI.php @@ -19,11 +19,16 @@ use Combodo\iTop\Application\UI\Base\Component\Button\ButtonUIBlockFactory; use Combodo\iTop\Application\UI\Base\Component\Form\Form; +use Combodo\iTop\Application\UI\Base\Component\Form\FormUIBlockFactory; use Combodo\iTop\Application\UI\Base\Component\GlobalSearch\GlobalSearchHelper; +use Combodo\iTop\Application\UI\Base\Component\Html\HtmlFactory; use Combodo\iTop\Application\UI\Base\Component\Input\InputUIBlockFactory; +use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOptionUIBlockFactory; +use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory; use Combodo\iTop\Application\UI\Base\Component\QuickCreate\QuickCreateHelper; use Combodo\iTop\Application\UI\Base\Component\Title\Title; use Combodo\iTop\Application\UI\Base\Component\Title\TitleUIBlockFactory; +use Combodo\iTop\Application\UI\Base\Component\Toolbar\ToolbarUIBlockFactory; use Combodo\iTop\Application\UI\Base\Layout\PageContent\PageContentFactory; /** @@ -819,72 +824,56 @@ EOF $oP->set_title(Dict::Format('UI:CreationPageTitle_Class', $sClassLabel)); $oP->SetContentLayout(PageContentFactory::MakeForObjectDetails($oObjToClone, cmdbAbstractObject::ENUM_OBJECT_MODE_CREATE)); cmdbAbstractObject::DisplayCreationForm($oP, $sRealClass, $oObjToClone, array(), array('wizard_container' => 1, 'keep_source_object' => true)); // wizard_container: Display the title above the form - } - else - { + } else { // Select the derived class to create $sClassLabel = MetaModel::GetName($sClass); - $sClassIcon = MetaModel::GetClassIcon($sClass); - $sHeaderTitle = Dict::Format('UI:CreationTitle_Class', $sClassLabel); - $oP->add(<< -
- - -
-HTML - ); - $oP->add('
'); - $oP->add('

'.Dict::Format('UI:SelectTheTypeOf_Class_ToCreate', $sClassLabel)); + $sClassIconUrl = MetaModel::GetClassIcon($sClass, false); + $sTitle = Dict::Format('UI:CreationTitle_Class', $sClassLabel); + + $oP->set_title($sTitle); + $oPanel = PanelUIBlockFactory::MakeForClass($sClass, $sTitle) + ->SetIcon($sClassIconUrl); + $oP->AddUiBlock($oPanel); + + $oClassForm = FormUIBlockFactory::MakeStandard(); + $oPanel->AddMainBlock($oClassForm); + + $oClassForm->AddSubBlock(HtmlFactory::MakeParagraph(Dict::Format('UI:SelectTheTypeOf_Class_ToCreate', $sClassLabel))) + ->AddHtml($oAppContext->GetForForm()) + ->AddSubBlock(InputUIBlockFactory::MakeForHidden('checkSubclass', '0')) + ->AddSubBlock(InputUIBlockFactory::MakeForHidden('state', $sStateCode)) + ->AddSubBlock(InputUIBlockFactory::MakeForHidden('operation', 'new')); + $aDefaults = utils::ReadParam('default', array(), false, 'raw_data'); - $oP->add($oAppContext->GetForForm()); - $oP->add("\n"); - $oP->add("\n"); - $oP->add("\n"); - foreach($aDefaults as $key => $value) - { - if (is_array($value)) - { - foreach($value as $key2 => $value2) - { - if (is_array($value2)) - { - foreach($value2 as $key3 => $value3) - { - $sValue = htmlentities($value3, ENT_QUOTES, 'UTF-8'); - $oP->add("\n"); + foreach ($aDefaults as $key => $value) { + if (is_array($value)) { + foreach ($value as $key2 => $value2) { + if (is_array($value2)) { + foreach ($value2 as $key3 => $value3) { + $sValue = utils::EscapeHtml($value3); + $oClassForm->AddSubBlock(InputUIBlockFactory::MakeForHidden("default[$key][$key2][$key3]", $sValue)); } - } - else - { - $sValue = htmlentities($value2, ENT_QUOTES, 'UTF-8'); - $oP->add("\n"); + } else { + $sValue = utils::EscapeHtml($value2); + $oClassForm->AddSubBlock(InputUIBlockFactory::MakeForHidden("default[$key][$key2]", $sValue)); } } - } - else - { - $sValue = htmlentities($value, ENT_QUOTES, 'UTF-8'); - $oP->add("\n"); + } else { + $sValue = utils::EscapeHtml($value); + $oClassForm->AddSubBlock(InputUIBlockFactory::MakeForHidden("default[$key]", $sValue)); } } - $oP->add(''); - $oP->add(" 

"); - $oP->add('
'); - $oP->add(<< -
-HTML - ); + + $oToolbar = ToolbarUIBlockFactory::MakeForAction(); + $oClassForm->AddSubBlock($oToolbar); + $oToolbar->AddSubBlock(ButtonUIBlockFactory::MakeForPrimaryAction(Dict::S('UI:Button:Apply'), null, null, true)); } break; diff --git a/sources/application/UI/Base/Component/Input/Select/Select.php b/sources/application/UI/Base/Component/Input/Select/Select.php index 8996a36ad..d19fd3bb5 100644 --- a/sources/application/UI/Base/Component/Input/Select/Select.php +++ b/sources/application/UI/Base/Component/Input/Select/Select.php @@ -12,13 +12,15 @@ use Combodo\iTop\Application\UI\Base\Layout\UIContentBlock; class Select extends UIContentBlock { + // Overloaded constants + public const BLOCK_CODE = 'ibo-select'; public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/input/select/select'; /** @var string */ protected $sName; /** @var string */ protected $sValue; - /** @var bool */ + /** @var bool */ protected $bSubmitOnChange = false; diff --git a/sources/application/UI/Base/Component/Input/Select/SelectOption.php b/sources/application/UI/Base/Component/Input/Select/SelectOption.php index 6c57cfea2..15bab00ef 100644 --- a/sources/application/UI/Base/Component/Input/Select/SelectOption.php +++ b/sources/application/UI/Base/Component/Input/Select/SelectOption.php @@ -12,6 +12,8 @@ use Combodo\iTop\Application\UI\Base\UIBlock; class SelectOption extends UIBlock { + // Overloaded constants + public const BLOCK_CODE = 'ibo-select-option'; public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/input/select/selectoption'; /** @var string */