Announcements: Render HTML in announcment messages

refs #2641
This commit is contained in:
Johannes Meyer 2018-01-19 15:25:09 +01:00
parent 3b9d8697ed
commit e59fa13786

View File

@ -8,6 +8,7 @@ use Icinga\Data\Filter\Filter;
use Icinga\Forms\Announcement\AcknowledgeAnnouncementForm; use Icinga\Forms\Announcement\AcknowledgeAnnouncementForm;
use Icinga\Web\Announcement\AnnouncementCookie; use Icinga\Web\Announcement\AnnouncementCookie;
use Icinga\Web\Announcement\AnnouncementIniRepository; use Icinga\Web\Announcement\AnnouncementIniRepository;
use Icinga\Web\Helper\HtmlPurifier;
/** /**
* Render announcements * Render announcements
@ -35,12 +36,13 @@ class Announcements extends AbstractWidget
$announcements = $repo->findActive(); $announcements = $repo->findActive();
$announcements->applyFilter($acked); $announcements->applyFilter($acked);
if ($announcements->hasResult()) { if ($announcements->hasResult()) {
$purifier = new HtmlPurifier(array('HTML.Allowed' => 'b,a[href|target],i,*[class]'));
$html = '<ul role="alert" id="announcements">'; $html = '<ul role="alert" id="announcements">';
foreach ($announcements as $announcement) { foreach ($announcements as $announcement) {
$ackForm = new AcknowledgeAnnouncementForm(); $ackForm = new AcknowledgeAnnouncementForm();
$ackForm->populate(array('hash' => $announcement->hash)); $ackForm->populate(array('hash' => $announcement->hash));
$html .= '<li><div>' $html .= '<li><div>'
. $this->view()->escape($announcement->message) . $purifier->purify($announcement->message)
. '</div>' . '</div>'
. $ackForm . $ackForm
. '</li>'; . '</li>';