N°2313 - Markup extensibility: Add metadata on session messages in the end-users portal

This commit is contained in:
Molkobain
2020-01-28 17:26:45 +01:00
parent a80bd6f2b9
commit 524e43b8c4
3 changed files with 13 additions and 4 deletions

View File

@@ -1172,7 +1172,7 @@ class ObjectFormManager extends FormManager
{
/** @var \Combodo\iTop\Portal\Helper\SessionMessageHelper $oSessionMessageHelper */
$oSessionMessageHelper = $this->oContainer->get('session_message_helper');
$oSessionMessageHelper->AddMessage(uniqid(), Dict::Format('Brick:Portal:Object:Form:Message:ObjectSaved', $this->oObject->GetName()), SessionMessageHelper::ENUM_SEVERITY_OK);
$oSessionMessageHelper->AddMessage(uniqid(), Dict::Format('Brick:Portal:Object:Form:Message:ObjectSaved', $this->oObject->GetName()), SessionMessageHelper::ENUM_SEVERITY_OK, array('object_class' => $sObjectClass, 'object_id' => $this->oObject->GetKey()));
}
}
catch (Exception $e)

View File

@@ -22,6 +22,7 @@ namespace Combodo\iTop\Portal\Helper;
use ArrayIterator;
use IteratorAggregate;
use Symfony\Component\DependencyInjection\ContainerInterface;
use utils;
/**
* Class SessionMessageHelper
@@ -65,9 +66,10 @@ class SessionMessageHelper implements IteratorAggregate
* @param string $sId
* @param string $sContent
* @param string $sSeverity
* @param array $aMetadata An array of key => scalar value
* @param int $iRank
*/
public function AddMessage($sId, $sContent, $sSeverity = self::DEFAULT_SEVERITY, $iRank = 1)
public function AddMessage($sId, $sContent, $sSeverity = self::DEFAULT_SEVERITY, $aMetadata = array(), $iRank = 1)
{
$sKey = $this->GetMessagesKey();
if(!isset($_SESSION['obj_messages'][$sKey]))
@@ -79,6 +81,7 @@ class SessionMessageHelper implements IteratorAggregate
'severity' => $sSeverity,
'rank' => $iRank,
'message' => $sContent,
'metadata' => $aMetadata,
);
}
@@ -158,7 +161,13 @@ class SessionMessageHelper implements IteratorAggregate
$sMsgClass .= 'success';
break;
}
$aObjectMessages[] = array('css_classes' => $sMsgClass, 'message' => $aMessageData['message']);
$sMsgMetadata = '';
foreach ($aMessageData['metadata'] as $sMetadatumName => $sMetadatumValue)
{
$sMsgMetadata .= 'data-'.str_replace('_', '-', $sMetadatumName).'="'.utils::HtmlEntities($sMetadatumValue).'" ';
}
$aObjectMessages[] = array('css_classes' => $sMsgClass, 'message' => $aMessageData['message'], 'metadata' => $sMsgMetadata);
$aRanks[] = $aMessageData['rank'];
}
unset($_SESSION['obj_messages'][$sMessageKey]);

View File

@@ -328,7 +328,7 @@
<section class="row" id="session-messages">
<div class="col-xs-12">
{% for aSessionMessage in app['session_message_helper'] %}
<div class="{{ aSessionMessage['css_classes'] }}">
<div class="{{ aSessionMessage['css_classes'] }}" {{ aSessionMessage['metadata']|raw }}>
<button type="button" class="close" data-dismiss="alert" aria-label="X"><span class="fas fa-times"></span></button>
{{ aSessionMessage['message'] }}
</div>