diff --git a/application/cmdbabstract.class.inc.php b/application/cmdbabstract.class.inc.php
index fa0d05cf0d..a797b5ff70 100644
--- a/application/cmdbabstract.class.inc.php
+++ b/application/cmdbabstract.class.inc.php
@@ -272,35 +272,7 @@ EOF
}
}
$sMessageKey = get_class($this).'::'.$this->GetKey();
- if (array_key_exists('obj_messages', $_SESSION) && array_key_exists($sMessageKey,
- $_SESSION['obj_messages'])) {
- $aReadMessages = [];
- foreach ($_SESSION['obj_messages'][$sMessageKey] as $sMessageId => $aMessageData) {
- if (!in_array($aMessageData['message'], $aReadMessages)) {
- $aReadMessages[] = $aMessageData['message'];
- $aRanks[] = $aMessageData['rank'];
- switch ($aMessageData['severity']) {
- case 'info':
- $aMessages[] = AlertUIBlockFactory::MakeForInformation('', $aMessageData['message']);
- break;
- case 'ok':
- $aMessages[] = AlertUIBlockFactory::MakeForSuccess('', $aMessageData['message']);
- break;
- case 'warning':
- $aMessages[] = AlertUIBlockFactory::MakeForWarning('', $aMessageData['message']);
- break;
- case 'error':
- $aMessages[] = AlertUIBlockFactory::MakeForDanger('', $aMessageData['message']);
- break;
- }
- }
- }
- unset($_SESSION['obj_messages'][$sMessageKey]);
- }
- array_multisort($aRanks, $aMessages);
- foreach ($aMessages as $oMessage) {
- $oPage->AddUiBlock($oMessage);
- }
+ $oPage->AddSessionMessages($sMessageKey, $aRanks, $aMessages);
}
if (!$oPage->IsPrintableVersion() && ($sMode === static::ENUM_OBJECT_MODE_VIEW))
diff --git a/pages/UI.php b/pages/UI.php
index 3cc16f19e3..59b945357f 100644
--- a/pages/UI.php
+++ b/pages/UI.php
@@ -22,12 +22,16 @@ use Combodo\iTop\Application\UI\Base\Component\Form\Form;
use Combodo\iTop\Application\UI\Base\Component\GlobalSearch\GlobalSearchHelper;
use Combodo\iTop\Application\UI\Base\Component\Input\InputUIBlockFactory;
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\Layout\PageContent\PageContentFactory;
/**
* Displays a popup welcome message, once per session at maximum
* until the user unchecks the "Display welcome at startup"
+ *
* @param WebPage $oP The current web page for the display
+ *
* @return void
*/
function DisplayWelcomePopup(WebPage $oP)
@@ -156,25 +160,9 @@ function DisplayDetails($oP, $sClass, $oObj, $id)
* @param string $sMessageKey
* @param WebPage $oPage
*/
-function DisplayMessages($sMessageKey, WebPage $oPage)
+function DisplayMessages(string $sMessageKey, WebPage $oPage)
{
- if (array_key_exists('obj_messages', $_SESSION) && array_key_exists($sMessageKey, $_SESSION['obj_messages']))
- {
- $aMessages = array();
- $aRanks = array();
- foreach ($_SESSION['obj_messages'][$sMessageKey] as $sMessageId => $aMessageData)
- {
- $sMsgClass = 'message_'.$aMessageData['severity'];
- $aMessages[] = "
";
- $aRanks[] = $aMessageData['rank'];
- }
- unset($_SESSION['obj_messages'][$sMessageKey]);
- array_multisort($aRanks, $aMessages);
- foreach ($aMessages as $sMessage)
- {
- $oPage->add($sMessage);
- }
- }
+ $oPage->AddSessionMessages($sMessageKey);
}
/**
@@ -1250,28 +1238,22 @@ HTML
$sMessage = Dict::Format('UI:Title:Object_Of_Class_Created', $sName, $sClassLabel);
$sNextAction = utils::ReadPostedParam('next_action', '');
- if (!empty($sNextAction))
- {
+ if (!empty($sNextAction)) {
$oP->add("$sMessage
");
- try
- {
+ try {
ApplyNextAction($oP, $oObj, $sNextAction);
}
- catch (ApplicationException $e)
- {
+ catch (ApplicationException $e) {
$sMessage = $e->getMessage();
$sSeverity = 'info';
ReloadAndDisplay($oP, $oObj, 'create', $sMessage, $sSeverity);
}
- }
- else
- {
+ } else {
// Nothing more to do
ReloadAndDisplay($oP, $oObj, 'create', $sMessage, 'ok');
}
}
- catch (CoreCannotSaveObjectException $e)
- {
+ catch (CoreCannotSaveObjectException $e) {
// Found issues, explain and give the user a second chance
//
$aIssues = $e->getIssues();
@@ -1281,33 +1263,17 @@ HTML
$sHeaderTitle = Dict::Format('UI:CreationTitle_Class', $sClassLabel);
$oP->set_title(Dict::Format('UI:CreationPageTitle_Class', $sClassLabel));
- $oP->add(<<
-
-
-
-
-HTML
- );
+ $oTitle = TitleUIBlockFactory::MakeForPageWithIcon($sHeaderTitle, $sClassIcon, Title::DEFAULT_ICON_COVER_METHOD, false);
+ $oP->AddUiBlock($oTitle);
-
- if (!empty($aIssues))
- {
+ if (!empty($aIssues)) {
$oP->AddHeaderMessage($e->getHtmlMessage(), 'message_error');
}
- if (!empty($aWarnings))
- {
+ if (!empty($aWarnings)) {
$sWarnings = implode(', ', $aWarnings);
- $oP->AddHeaderMessage($sWarnings, 'message_info');
+ $oP->AddHeaderMessage($sWarnings, 'message_warning');
}
cmdbAbstractObject::DisplayCreationForm($oP, $sClass, $oObj);
- $oP->add(<<
-
-HTML
- );
}
}
break;
diff --git a/sources/application/WebPage/WebPage.php b/sources/application/WebPage/WebPage.php
index 538e3b98a0..acd7e0bd8c 100644
--- a/sources/application/WebPage/WebPage.php
+++ b/sources/application/WebPage/WebPage.php
@@ -18,6 +18,7 @@
*/
use Combodo\iTop\Application\TwigBase\Twig\TwigHelper;
+use Combodo\iTop\Application\UI\Base\Component\Alert\AlertUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
use Combodo\iTop\Application\UI\Base\Component\PopoverMenu\PopoverMenu;
@@ -131,10 +132,50 @@ class WebPage implements Page
ob_start(); // Start capturing the output
}
+ /**
+ * @param string $sMessageKey
+ * @param array $aRanks
+ * @param array $aMessages
+ */
+ public function AddSessionMessages(string $sMessageKey, array $aRanks = [], array $aMessages = []): void
+ {
+ if (array_key_exists('obj_messages', $_SESSION) && array_key_exists($sMessageKey,
+ $_SESSION['obj_messages'])) {
+ $aReadMessages = [];
+ foreach ($_SESSION['obj_messages'][$sMessageKey] as $sMessageId => $aMessageData) {
+ if (!in_array($aMessageData['message'], $aReadMessages)) {
+ $aReadMessages[] = $aMessageData['message'];
+ $aRanks[] = $aMessageData['rank'];
+ switch ($aMessageData['severity']) {
+ case 'ok':
+ $aMessages[] = AlertUIBlockFactory::MakeForSuccess('', $aMessageData['message']);
+ break;
+ case 'warning':
+ $aMessages[] = AlertUIBlockFactory::MakeForWarning('', $aMessageData['message']);
+ break;
+ case 'error':
+ $aMessages[] = AlertUIBlockFactory::MakeForDanger('', $aMessageData['message']);
+ break;
+ case 'info':
+ default:
+ $aMessages[] = AlertUIBlockFactory::MakeForInformation('', $aMessageData['message']);
+ break;
+ }
+ }
+ }
+ unset($_SESSION['obj_messages'][$sMessageKey]);
+ }
+ array_multisort($aRanks, $aMessages);
+ foreach ($aMessages as $oMessage) {
+ $this->AddUiBlock($oMessage);
+ }
+ }
+
/**
* Change the title of the page after its creation
*
* @param string $s_title
+ *
* @return void
*/
public function set_title($s_title)
diff --git a/sources/application/WebPage/iTopWebPage.php b/sources/application/WebPage/iTopWebPage.php
index dda0170099..e8bb06574c 100644
--- a/sources/application/WebPage/iTopWebPage.php
+++ b/sources/application/WebPage/iTopWebPage.php
@@ -1193,15 +1193,28 @@ EOF
* @param string $sContent
* @param string $sCssClasses CSS classes to add to the container
*
- * @throws \Exception
* @since 2.6.0
*/
- public function AddHeaderMessage($sContent, $sCssClasses = 'message_info')
+ public function AddHeaderMessage(string $sContent, string $sCssClasses = 'message_info')
{
- $this->add(<<
-EOF
- );
+ switch ($sCssClasses) {
+ case 'message_ok':
+ $oAlert = AlertUIBlockFactory::MakeForSuccess('', $sContent);
+ break;
+ case 'message_warning':
+ $oAlert = AlertUIBlockFactory::MakeForWarning('', $sContent);
+ break;
+ case 'message_error':
+ $oAlert = AlertUIBlockFactory::MakeForDanger('', $sContent);
+ break;
+ case 'message_info':
+ default:
+ $oAlert = AlertUIBlockFactory::MakeForInformation('', $sContent);
+ break;
+
+ }
+ $oAlert->AddCSSClass($sCssClasses);
+ $this->AddUiBlock($oAlert);
}