From e53c1f2f9ff2f7106af63f26b3e17cf4b25c6694 Mon Sep 17 00:00:00 2001
From: Heike Reinken <reinken@ub.uni-leipzig.de>
Date: Fri, 23 Oct 2020 15:18:56 +0200
Subject: [PATCH] refs #17950 [master] Change tag <div> with <p> for alerts

* Use tag p instead of div for flashmessages
* Change tag <div> with <p> for alerts
* Review class text-success
** Change <div> with <p>
** Remove margin-bottom
* move newly added files to throwaway theme
* introduce finc specific Flashmessages ViewHelper

co-authored by: "Dorian Merz <merz@ub.uni-leipzig.de>"
---
 .../finc/View/Helper/Root/Flashmessages.php   |  93 +++++++++++
 .../templates/Recommend/AlphaBrowseLink.phtml |  18 +++
 .../templates/Recommend/Channels.phtml        |  13 ++
 .../templates/Recommend/DOI.phtml             |  14 ++
 .../templates/Recommend/RemoveFilters.phtml   |  10 ++
 .../templates/Recommend/SwitchType.phtml      |  10 ++
 .../RecordDriver/EDS/result-list.phtml        | 144 ++++++++++++++++++
 .../templates/Related/Channels.phtml          |  13 ++
 .../templates/myresearch/delete.phtml         |  26 ++++
 .../templates/myresearch/login.phtml          |  29 ++++
 .../templates/record/comments-list.phtml      |  23 +++
 themes/finc/js/lightbox.js                    |   4 +-
 themes/finc/scss/compiled.scss                |   1 +
 .../finc/templates/Helpers/branchinfo.phtml   |   4 +-
 .../DefaultRecord/collection-info.phtml       |   4 +-
 .../RecordDriver/DefaultRecord/core.phtml     |   4 +-
 .../DefaultRecord/list-entry.phtml            |   6 +-
 .../DefaultRecord/result-list.phtml           |   4 +-
 .../FincMissing/result-list.phtml             |   4 +-
 .../templates/RecordDriver/SolrAI/core.phtml  |   4 +-
 .../RecordDriver/SolrAI/result-list.phtml     |   4 +-
 .../RecordDriver/SolrLido/core.phtml          |   6 +-
 .../RecordDriver/SolrMarc/core.phtml          |   4 +-
 .../templates/RecordTab/hierarchytree.phtml   |   4 +-
 .../templates/RecordTab/holdingsils.phtml     |  12 +-
 .../templates/myresearch/checkedout.phtml     |  14 +-
 .../templates/myresearch/historicloans.phtml  |   2 +-
 themes/finc/templates/myresearch/holds.phtml  |   8 +-
 .../templates/myresearch/illrequests.phtml    |  10 +-
 .../myresearch/storageretrievalrequests.phtml |   8 +-
 themes/finc/theme.config.php                  |   5 +-
 31 files changed, 451 insertions(+), 54 deletions(-)
 create mode 100644 module/finc/src/finc/View/Helper/Root/Flashmessages.php
 create mode 100644 themes/finc-accessibility/templates/Recommend/AlphaBrowseLink.phtml
 create mode 100644 themes/finc-accessibility/templates/Recommend/Channels.phtml
 create mode 100644 themes/finc-accessibility/templates/Recommend/DOI.phtml
 create mode 100644 themes/finc-accessibility/templates/Recommend/RemoveFilters.phtml
 create mode 100644 themes/finc-accessibility/templates/Recommend/SwitchType.phtml
 create mode 100644 themes/finc-accessibility/templates/RecordDriver/EDS/result-list.phtml
 create mode 100644 themes/finc-accessibility/templates/Related/Channels.phtml
 create mode 100644 themes/finc-accessibility/templates/myresearch/delete.phtml
 create mode 100644 themes/finc-accessibility/templates/myresearch/login.phtml
 create mode 100644 themes/finc-accessibility/templates/record/comments-list.phtml

diff --git a/module/finc/src/finc/View/Helper/Root/Flashmessages.php b/module/finc/src/finc/View/Helper/Root/Flashmessages.php
new file mode 100644
index 00000000000..1b099d258b2
--- /dev/null
+++ b/module/finc/src/finc/View/Helper/Root/Flashmessages.php
@@ -0,0 +1,93 @@
+<?php
+/**
+ * Flash message view helper
+ *
+ * PHP version 7
+ *
+ * Copyright (C) Leipzig University Library 2020.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * @category VuFind
+ * @package  View_Helpers
+ * @author   Heike Reinken <reinken@ub.uni-leipzig.de>
+ * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @link     https://vufind.org/wiki/development Wiki
+ */
+namespace finc\View\Helper\Root;
+
+/**
+ * Flash message view helper
+ *
+ * @category VuFind
+ * @package  View_Helpers
+ * @author   Heike Reinken <reinken@ub.uni-leipzig.de>
+ * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
+ * @link     https://vufind.org/wiki/development Wiki
+ */
+class Flashmessages extends \VuFind\View\Helper\Bootstrap3\Flashmessages
+{
+    /**
+     * Generate flash message <p>'s with appropriate classes based on message type.
+     * This is basically a copy of the parent method but uses p-Tags instead of divs
+     *
+     * @return string $html
+     */
+    public function __invoke()
+    {
+        $html = '';
+        $namespaces = ['error', 'info', 'success'];
+        foreach ($namespaces as $ns) {
+            $messages = array_merge(
+                $this->fm->getMessages($ns), $this->fm->getCurrentMessages($ns)
+            );
+            foreach (array_unique($messages, SORT_REGULAR) as $msg) {
+                $html .= '<p class="' . $this->getClassForNamespace($ns) . '"';
+                if (isset($msg['dataset'])) {
+                    foreach ($msg['dataset'] as $attr => $value) {
+                        $html .= ' data-' . $attr . '="'
+                            . htmlspecialchars($value) . '"';
+                    }
+                }
+                $html .= '>';
+                // Advanced form:
+                if (is_array($msg)) {
+                    // Use a different translate helper depending on whether
+                    // or not we're in HTML mode.
+                    if (!isset($msg['translate']) || $msg['translate']) {
+                        $helper = (isset($msg['html']) && $msg['html'])
+                            ? 'translate' : 'transEsc';
+                    } else {
+                        $helper = (isset($msg['html']) && $msg['html'])
+                            ? false : 'escapeHtml';
+                    }
+                    $helper = $helper
+                        ? $this->getView()->plugin($helper) : false;
+                    $tokens = $msg['tokens'] ?? [];
+                    $default = $msg['default'] ?? null;
+                    $html .= $helper
+                        ? $helper($msg['msg'], $tokens, $default) : $msg['msg'];
+                } else {
+                    // Basic default string:
+                    $transEsc = $this->getView()->plugin('transEsc');
+                    $html .= $transEsc($msg);
+                }
+                $html .= '</p>';
+            }
+            $this->fm->clearMessages($ns);
+            $this->fm->clearCurrentMessages($ns);
+        }
+        return $html;
+    }
+}
diff --git a/themes/finc-accessibility/templates/Recommend/AlphaBrowseLink.phtml b/themes/finc-accessibility/templates/Recommend/AlphaBrowseLink.phtml
new file mode 100644
index 00000000000..6c3f63c4b61
--- /dev/null
+++ b/themes/finc-accessibility/templates/Recommend/AlphaBrowseLink.phtml
@@ -0,0 +1,18 @@
+<!-- finc-accessibility: Recommend - AlphaBrowseLink -->
+<?php /* #17950 - use <p> for alerts - HR */ ?>
+
+<?php
+  $index = $this->recommend->getIndex();
+  $from = $this->recommend->getQuery();
+  $link = $this->translate(
+    'alphabrowselink_html',
+    [
+      '%%index%%' => $this->transEsc('browse_' . $index),
+      '%%from%%' => $this->escapeHtml($from),
+      '%%url%%' => $this->url('alphabrowse-home')
+        . '?from=' . urlencode($from) . '&amp;source=' . urlencode($index)
+    ]
+  );
+?>
+<p class="alert alert-info"><?=$link?></p>
+<!-- finc-accessibility: Recommend - AlphaBrowseLink - END -->
diff --git a/themes/finc-accessibility/templates/Recommend/Channels.phtml b/themes/finc-accessibility/templates/Recommend/Channels.phtml
new file mode 100644
index 00000000000..10710cbd401
--- /dev/null
+++ b/themes/finc-accessibility/templates/Recommend/Channels.phtml
@@ -0,0 +1,13 @@
+<!-- finc-accessibility: Recommend - Channels -->
+<?php /* #17950 - use <p> for alerts - HR */ ?>
+
+<?php
+    $results = $this->recommend->getResults();
+    $link = $this->url('channels-search')
+        . $results->getUrlQuery()->getParams(false)
+        . '&source=' . urlencode($results->getParams()->getSearchClassId());
+?>
+<p class="channels-alert alert alert-info">
+  <a href="<?=$this->escapeHtmlAttr($link)?>"><?=$this->transEsc('channel_expand')?></a>
+</p>
+<!-- finc-accessibility: Recommend - Channels - END -->
diff --git a/themes/finc-accessibility/templates/Recommend/DOI.phtml b/themes/finc-accessibility/templates/Recommend/DOI.phtml
new file mode 100644
index 00000000000..0a20a62a35e
--- /dev/null
+++ b/themes/finc-accessibility/templates/Recommend/DOI.phtml
@@ -0,0 +1,14 @@
+<!-- finc-accessibility: Recommend - DOI -->
+<?php /* #17950 - use <p> for alerts - HR */ ?>
+
+<?php $doi = $this->recommend->getDOI(); if (!empty($doi)): ?>
+  <?php $url = $this->recommend->getURL(); ?>
+  <p class="alert alert-info">
+    <?=$this->translate('doi_detected_html', ['%%url%%' => $url, '%%doi%%' => $doi])?>
+  </p>
+  <?php if ($this->recommend->isFullMatch()): ?>
+    <?php $redirect = 'document.location.href = "' . $this->escapeJs($url) . '";'; ?>
+    <?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $redirect, 'SET')?>
+  <?php endif; ?>
+<?php endif; ?>
+<!-- finc-accessibility: Recommend - DOI - END -->
diff --git a/themes/finc-accessibility/templates/Recommend/RemoveFilters.phtml b/themes/finc-accessibility/templates/Recommend/RemoveFilters.phtml
new file mode 100644
index 00000000000..c79a65f63ca
--- /dev/null
+++ b/themes/finc-accessibility/templates/Recommend/RemoveFilters.phtml
@@ -0,0 +1,10 @@
+<!-- finc-accessibility: Recommend - RemoveFilters -->
+<?php /* #17950 - use <p> for alerts - HR */ ?>
+
+<?php if ($this->recommend->hasFilters()): ?>
+  <p class="alert alert-info">
+    <?=$this->transEsc('nohit_active_filters')?> 
+    <a href="<?=$this->recommend->getFilterlessUrl()?>"><?=$this->transEsc('nohit_query_without_filters')?></a>
+  </p>
+<?php endif; ?>
+<!-- finc-accessibility: Recommend - RemoveFilters - END -->
diff --git a/themes/finc-accessibility/templates/Recommend/SwitchType.phtml b/themes/finc-accessibility/templates/Recommend/SwitchType.phtml
new file mode 100644
index 00000000000..c44dc55b6b0
--- /dev/null
+++ b/themes/finc-accessibility/templates/Recommend/SwitchType.phtml
@@ -0,0 +1,10 @@
+<!-- finc-accessibility: Recommend - SwitchType -->
+<?php /* #17950 - use <p> for alerts - HR */ ?>
+
+<?php if ($handler = $this->recommend->getNewHandler()): ?>
+  <p class="alert alert-info">
+    <?=$this->transEsc('widen_prefix')?>
+    <a href="<?=$this->recommend->getResults()->getUrlQuery()->setHandler($handler)?>"><?=$this->transEsc($this->recommend->getNewHandlerName())?></a>.
+  </p>
+<?php endif; ?>
+<!-- finc-accessibility: Recommend - SwitchType - END -->
diff --git a/themes/finc-accessibility/templates/RecordDriver/EDS/result-list.phtml b/themes/finc-accessibility/templates/RecordDriver/EDS/result-list.phtml
new file mode 100644
index 00000000000..d65ddb57d0e
--- /dev/null
+++ b/themes/finc-accessibility/templates/RecordDriver/EDS/result-list.phtml
@@ -0,0 +1,144 @@
+<!-- finc-accessibility: RecordDriver - EDS - result-list -->
+<?php /* #17950 - use <p> for alerts - HR */ ?>
+
+<?php
+  $this->headLink()->appendStylesheet('EDS.css');
+  $accessLevel = $this->driver->getAccessLevel();
+  $restrictedView = empty($accessLevel) ? false : true;
+  $coverDetails = $this->record($this->driver)->getCoverDetails('result-list', 'medium', $this->recordLink()->getUrl($this->driver));
+?>
+<?php
+  $thumbnail = false;
+  $thumbnailAlignment = $this->record($this->driver)->getThumbnailAlignment('result');
+  ob_start(); ?>
+  <div class="media-<?=$thumbnailAlignment ?> <?=$this->escapeHtml($coverDetails['size'])?>">
+    <?php if ($coverDetails['cover']): ?>
+      <a href="<?=$this->recordLink()->getUrl($this->driver)?>" class="_record_link">
+        <img src="<?=$this->escapeHtmlAttr($coverDetails['cover'])?>" class="recordcover" alt="<?=$this->transEsc('Cover Image')?>"/>
+      </a>
+    <?php else: ?>
+      <span class="recordcover pt-icon pt-<?=$this->driver->getPubTypeId()?>"></span>
+      <div><?=$this->driver->getPubType()?></div>
+    <?php endif; ?>
+  </div>
+<?php $thumbnail = ob_get_contents(); ?>
+<?php ob_end_clean(); ?>
+<input type="hidden" value="<?=$this->escapeHtmlAttr($this->driver->getUniqueID())?>" class="hiddenId" />
+<input type="hidden" value="<?=$this->escapeHtmlAttr($this->driver->getSourceIdentifier())?>" class="hiddenSource" />
+<div class="media<?=$this->driver->supportsAjaxStatus()?' ajaxItem':''?>">
+  <?php if ($thumbnail && $thumbnailAlignment == 'left'): ?>
+    <?=$thumbnail ?>
+  <?php endif; ?>
+  <div class="media-body">
+    <div class="result-body">
+      <?php $items = $this->driver->getItems();
+        if (isset($items) && !empty($items)):
+          foreach ($items as $item):
+            if (!empty($item)): ?>
+              <div class="resultItemLine1">
+                <?php if('Ti' == $item['Group']): ?>
+                  <a href="<?=$this->recordLink()->getUrl($this->driver)?>" class="title getFull _record_link"  data-view="<?=$this->params->getOptions()->getListViewOption()?>">
+                  <?=$item['Data']?> </a>
+                <?php else:?>
+                  <p>
+                    <b><?=$this->transEsc($item['Label'])?>:</b>
+                    <?=$this->driver->linkUrls($item['Data'])?>
+                  </p>
+                <?php endif;?>
+              </div>
+            <?php endif;
+          endforeach;
+        elseif ($restrictedView): ?>
+          <div class="resultItemLine1">
+            <p>
+              <?=$this->transEsc('This result is not displayed to guests')?>
+              <br />
+              <a class="login" href="<?=$this->url('myresearch-home')?>">
+                <strong><?=$this->transEsc('Login for full access')?></strong>
+              </a>
+            </p>
+          </div>
+        <?php endif; ?>
+
+      <div class="resultItemLine4 custom-links">
+        <?php $customLinks = array_merge($this->driver->getFTCustomLinks(), $this->driver->getCustomLinks());
+        if (!empty($customLinks)): ?>
+          <?php foreach ($customLinks as $customLink): ?>
+            <?php
+              $url = $customLink['Url'] ?? '';
+              $mot = $customLink['MouseOverText'] ?? '';
+              $icon = $customLink['Icon'] ?? '';
+              $name = $customLink['Text'] ?? '';
+            ?>
+            <span>
+              <a href="<?=$this->escapeHtmlAttr($url)?>" target="_blank" title="<?=$this->escapeHtmlAttr($mot)?>" class="custom-link">
+                <?php if ($icon): ?><img src="<?=$this->escapeHtmlAttr($icon)?>" /> <?php endif; ?><?=$this->escapeHtml($name)?>
+              </a>
+            </span>
+          <?php endforeach; ?>
+        <?php endif; ?>
+      </div>
+
+      <?php if ($this->driver->hasHTMLFullTextAvailable()): ?>
+        <a href="<?= $this->recordLink()->getUrl($this->driver, 'fulltext') ?>#html" class="icon html fulltext _record_link" target="_blank">
+          <?=$this->transEsc('HTML Full Text')?>
+        </a>
+        &nbsp; &nbsp;
+      <?php endif; ?>
+
+      <?php if ($this->driver->hasPdfAvailable()): ?>
+        <a href="<?= $this->recordLink()->getUrl($this->driver) . '/PDF'; ?>" class="icon pdf fulltext" target="_blank">
+          <?=$this->transEsc('PDF Full Text')?>
+        </a>
+      <?php endif; ?>
+    </div>
+    <div class="result-links hidden-print">
+      <?php /* Display qrcode if appropriate: */ ?>
+      <?php if ($QRCode = $this->record($this->driver)->getQRCode("results")): ?>
+        <?php
+          // Add JS Variables for QrCode
+          $this->jsTranslations()->addStrings(['qrcode_hide' => 'qrcode_hide', 'qrcode_show' => 'qrcode_show']);
+        ?>
+        <span class="hidden-xs">
+          <i class="fa fa-fw fa-qrcode" aria-hidden="true"></i> <a href="<?=$this->escapeHtmlAttr($QRCode);?>" class="qrcodeLink"><?=$this->transEsc('qrcode_show')?></a>
+          <div class="qrcode hidden">
+            <script type="text/template" class="qrCodeImgTag">
+              <img alt="<?=$this->transEsc('QR Code')?>" src="<?=$this->escapeHtmlAttr($QRCode);?>"/>
+            </script>
+          </div><br/>
+        </span>
+      <?php endif; ?>
+
+      <?php if ($this->cart()->isActiveInSearch() && $this->params->getOptions()->supportsCart() && $this->cart()->isActive()): ?>
+        <?=$this->render('record/cart-buttons.phtml', ['id' => $this->driver->getUniqueId(), 'source' => $this->driver->getSourceIdentifier()]); ?><br/>
+      <?php endif; ?>
+
+      <?php if ($this->userlist()->getMode() !== 'disabled'): ?>
+        <?php /* Add to favorites */ ?>
+        <i class="fa fa-fw fa-star" aria-hidden="true"></i> <a href="<?=$this->recordLink()->getActionUrl($this->driver, 'Save')?>" class="save-record" data-lightbox id="<?=$this->driver->getUniqueId() ?>" title="<?=$this->transEsc('Add to favorites')?>"><?=$this->transEsc('Add to favorites')?></a><br/>
+
+        <?php /* Saved lists */ ?>
+        <p class="savedLists alert alert-info hidden">
+          <strong><?=$this->transEsc("Saved in")?>:</strong>
+        </p>
+      <?php endif; ?>
+
+      <?php /* Hierarchy tree link */ ?>
+      <?php $trees = $this->driver->tryMethod('getHierarchyTrees'); if (!empty($trees)): ?>
+        <?php foreach ($trees as $hierarchyID => $hierarchyTitle): ?>
+          <div class="hierarchyTreeLink">
+            <input type="hidden" value="<?=$this->escapeHtmlAttr($hierarchyID)?>" class="hiddenHierarchyId" />
+            <i class="fa fa-fw fa-sitemap" aria-hidden="true"></i>
+            <a class="hierarchyTreeLinkText" data-lightbox href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree')?>?hierarchy=<?=urlencode($hierarchyID)?>#tabnav" title="<?=$this->transEsc('hierarchy_tree')?>">
+              <?=$this->transEsc('hierarchy_view_context')?><?php if (count($trees) > 1): ?>: <?=$this->escapeHtml($hierarchyTitle)?><?php endif; ?>
+            </a>
+          </div>
+        <?php endforeach; ?>
+      <?php endif; ?>
+    </div>
+  </div>
+  <?php if ($thumbnail && $thumbnailAlignment == 'right'): ?>
+    <?=$thumbnail ?>
+  <?php endif; ?>
+</div>
+<!-- finc-accessibility: RecordDriver - EDS - result-list - END -->
diff --git a/themes/finc-accessibility/templates/Related/Channels.phtml b/themes/finc-accessibility/templates/Related/Channels.phtml
new file mode 100644
index 00000000000..04f65247244
--- /dev/null
+++ b/themes/finc-accessibility/templates/Related/Channels.phtml
@@ -0,0 +1,13 @@
+<!-- finc-accessibility: Related - Channels -->
+<?php /* #17950 - use <p> for alerts - HR */ ?>
+
+<?php
+    $driver = $this->related->getDriver();
+    $link = $this->url('channels-record')
+        . '?id=' . urlencode($driver->getUniqueId())
+        . '&source=' . urlencode($driver->getSourceIdentifier());
+?>
+<p class="channels-alert alert alert-info">
+  <a href="<?=$this->escapeHtmlAttr($link)?>"><?=$this->transEsc('channel_expand')?></a>
+</p>
+<!-- finc-accessibility: Related - Channels - END -->
diff --git a/themes/finc-accessibility/templates/myresearch/delete.phtml b/themes/finc-accessibility/templates/myresearch/delete.phtml
new file mode 100644
index 00000000000..b991a73aa63
--- /dev/null
+++ b/themes/finc-accessibility/templates/myresearch/delete.phtml
@@ -0,0 +1,26 @@
+<!-- finc-accessibility: myresearch - delete -->
+<?php /* #17950 - use <p> for alerts - HR */ ?>
+
+<h2><?=$this->transEsc('delete_selected_favorites')?></h2>
+ <form action="<?=$this->url('myresearch-delete')?>" method="post" name="bulkDelete" data-lightbox-onclose="VuFind.refreshPage">
+  <div id="popupMessages"><?=$this->flashmessages()?></div>
+  <div id="popupDetails">
+    <?php if (!$this->list): ?>
+      <p class="alert alert-info"><?=$this->transEsc("fav_delete_warn") ?></p>
+    <?php else: ?>
+      <h3><?=$this->transEsc("List") ?>: <?=$this->escapeHtml($this->list->title) ?></h3>
+    <?php endif; ?>
+
+    <?php foreach ($this->records as $favorite): ?>
+      <strong><?=$this->transEsc('Title') ?>:</strong>
+      <?=$this->escapeHtml($favorite->getBreadcrumb())?><br />
+    <?php endforeach; ?>
+    <br />
+    <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Delete')?>"/>
+    <?php foreach ($this->deleteIDS as $deleteID): ?>
+      <input type="hidden" name="ids[]" value="<?=$this->escapeHtmlAttr($deleteID)?>" />
+    <?php endforeach; ?>
+      <input type="hidden" name="listID" value="<?=$this->list?$this->escapeHtmlAttr($this->list->id):''?>" />
+  </div>
+</form>
+<!-- finc-accessibility: myresearch - delete - END -->
diff --git a/themes/finc-accessibility/templates/myresearch/login.phtml b/themes/finc-accessibility/templates/myresearch/login.phtml
new file mode 100644
index 00000000000..5bf1facad28
--- /dev/null
+++ b/themes/finc-accessibility/templates/myresearch/login.phtml
@@ -0,0 +1,29 @@
+<!-- finc-accessibility: myresearch - login -->
+<?php /* #17950 - use <p> for alerts - HR */ ?>
+
+<?php
+  // Set up page title:
+  $this->headTitle($this->translate('Login'));
+
+  // Set up breadcrumbs:
+  $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a></li> <li class="active">' . $this->transEsc('Login') . '</li>';
+
+  // Convenience variables:
+  $account = $this->auth()->getManager();
+  $hideLogin = !(is_object($account) && $account->loginEnabled());
+  $offlineMode = $this->ils()->getOfflineMode();
+?>
+
+<?php if ($offlineMode == "ils-offline"): ?>
+  <?=$this->render('Helpers/ils-offline.phtml', ['offlineModeMsg' => 'ils_offline_login_message'])?>
+<?php endif; ?>
+
+<h2 class="lightbox-header"><?=$this->transEsc('Login')?></h2>
+<?=$this->flashmessages()?>
+
+<?php if ($hideLogin): ?>
+  <p class="alert alert-danger"><?=$this->transEsc('login_disabled')?></p>
+<?php else: ?>
+  <?=$this->auth()->getLogin()?>
+<?php endif; ?>
+<!-- finc-accessibility: myresearch - login - END -->
diff --git a/themes/finc-accessibility/templates/record/comments-list.phtml b/themes/finc-accessibility/templates/record/comments-list.phtml
new file mode 100644
index 00000000000..66b90c54bb8
--- /dev/null
+++ b/themes/finc-accessibility/templates/record/comments-list.phtml
@@ -0,0 +1,23 @@
+<!-- finc-accessibility: record - comments-list -->
+<?php $comments = $this->driver->getComments(); ?>
+<?php if (empty($comments) || count($comments) == 0): ?>
+  <p class="alert alert-info"><?=$this->transEsc('Be the first to leave a comment')?>!</p>
+<?php else: ?>
+  <?php foreach ($comments as $comment): ?>
+    <div class="comment">
+      <div class="comment-name">
+        <strong><?=null === $comment->user_id ? $this->transEsc('comment_anonymous_user') : $this->escapeHtml(trim($comment->firstname . ' ' . $comment->lastname))?></strong><br/>
+        <small>
+          <?=$this->escapeHtml($comment->created)?>
+          <?php if (($user = $this->auth()->isLoggedIn()) && $comment->user_id == $user->id): ?>
+            <a href="<?=$this->recordLink()->getActionUrl($this->driver, 'DeleteComment')?>?delete=<?=urlencode($comment->id)?>" id="recordComment<?=$this->escapeHtml($comment->id)?>" class="delete"><?=$this->transEsc('Delete')?></a>
+          <?php endif; ?>
+        </small>
+      </div>
+      <div class="comment-text">
+        <?=$this->escapeHtml($comment->comment)?>
+      </div>
+    </div>
+  <?php endforeach; ?>
+<?php endif; ?>
+<!-- finc-accessibility: record - comments-list - END -->
diff --git a/themes/finc/js/lightbox.js b/themes/finc/js/lightbox.js
index 1593b4d96b5..50e34faa90b 100644
--- a/themes/finc/js/lightbox.js
+++ b/themes/finc/js/lightbox.js
@@ -42,7 +42,7 @@ VuFind.register('lightbox', function Lightbox() {
   // Public: Present an alert
   function showAlert(message, _type) {
     var type = _type || 'info';
-    _html('<div class="flash-message alert alert-' + type + '">' + message + '</div>'
+    _html('<p class="flash-message alert alert-' + type + '">' + message + '</p>'
         + '<button class="btn btn-default" data-dismiss="modal">' + VuFind.translate('close') + '</button>');
     _modal.modal('show');
   }
@@ -50,7 +50,7 @@ VuFind.register('lightbox', function Lightbox() {
     var type = _type || 'info';
     _modalBody.find('.flash-message,.fa.fa-spinner').remove();
     _modalBody.find('h2:first-of-type')
-      .after('<div class="flash-message alert alert-' + type + '">' + message + '</div>');
+      .after('<p class="flash-message alert alert-' + type + '">' + message + '</p>');
   }
   function close() {
     _modal.modal('hide');
diff --git a/themes/finc/scss/compiled.scss b/themes/finc/scss/compiled.scss
index 0ebc9bc1925..fa4980d19a7 100644
--- a/themes/finc/scss/compiled.scss
+++ b/themes/finc/scss/compiled.scss
@@ -354,6 +354,7 @@ legend {
 
 .text-success {
   background-color: $brand-success;
+  margin-bottom: 0;
 }
 
 .text-danger {
diff --git a/themes/finc/templates/Helpers/branchinfo.phtml b/themes/finc/templates/Helpers/branchinfo.phtml
index e3a481f15d0..dc51222d8ab 100644
--- a/themes/finc/templates/Helpers/branchinfo.phtml
+++ b/themes/finc/templates/Helpers/branchinfo.phtml
@@ -67,7 +67,7 @@
       </div>
       <div class="row">
           <?php if (isset($info['note'])): ?>
-            <div class="branch-note alert alert-info">
+            <p class="branch-note alert alert-info">
                 <?php if (is_array($info['note'])): ?>
                     <?php foreach ($info['note'] as $notes): ?>
                         <?= $notes ?>
@@ -75,7 +75,7 @@
                 <?php else: ?>
                     <?= $info['note'] ?>
                 <?php endif; ?>
-            </div>
+            </p>
           <?php endif; ?>
       </div>
     </td>
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml
index d5ce34fdcc0..fcd4bba892f 100644
--- a/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/collection-info.phtml
@@ -34,9 +34,9 @@
     <?php endif; ?>
 
     <?php /* Display the lists that this record is saved to */ ?>
-    <div class="savedLists hidden alert alert-info" id="savedLists">
+    <p class="savedLists hidden alert alert-info" id="savedLists">
       <strong><?=$this->transEsc("Saved in")?>:</strong>
-    </div>
+    </p>
 
     <?php /* finc-specific snippet - Begin - CK */
     /* Do not set to 'hidden', make table below collapse in; adapt collection_record.js to keep accordion open - CK */ ?>
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml
index d8bbee094b3..c254fb69405 100644
--- a/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/core.phtml
@@ -53,9 +53,9 @@
 
     <?php if ($this->userlist()->getMode() !== 'disabled'): ?>
       <?php /* Display the lists that this record is saved to */ ?>
-      <div class="savedLists hidden alert alert-info">
+      <p class="savedLists hidden alert alert-info">
         <strong><?= $this->transEsc("Saved in") ?>:</strong>
-      </div>
+      </p>
     <?php endif; ?>
 
     <?php /* Display Main Details */ ?>
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml
index 9980b4f5709..851e6ce67f1 100644
--- a/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/list-entry.phtml
@@ -39,12 +39,12 @@ if ($cover):
           <?php $missing = $this->driver instanceof \VuFind\RecordDriver\Missing; ?>
             <?php if ($missing && $this->driver->isCachedRecord()): ?>
                 <span class="title"><?=$this->record($this->driver)->getTitleHtml()?></span>
-                <div class="alert alert-info">
+                <p class="alert alert-info">
                     <?= $this->translate('record_from_cache')?>
                     <?php if ($queryParams = $this->record($this->driver)->getAdvancedSearchQueryParams()): ?>
                         <br/><a href="<?=$this->url('search-results', [], ['query'=>$queryParams])?>"><?=$this->transEsc('search_cached_record', ['%%title_full%%' => $this->driver->getTitle()])?></a>
                     <?php endif; ?>
-                </div>
+                </p>
             <?php elseif (!$missing): ?>
                 <a href="<?=$this->recordLink()->getUrl($this->driver)?>" class="getFull" data-view="<?=$this->params->getOptions()->getListViewOption() ?>">
                     <span class="title"><?=$this->record($this->driver)->getTitleHtml()?></span>
@@ -260,4 +260,4 @@ if ($cover):
     <?php endif; ?>
   </div>
 </div>
-<!-- finc: RecordDriver - DefaultRecord - list-entry - END -->
\ No newline at end of file
+<!-- finc: RecordDriver - DefaultRecord - list-entry - END -->
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml
index 0a278226b22..6baef95748b 100644
--- a/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml
+++ b/themes/finc/templates/RecordDriver/DefaultRecord/result-list.phtml
@@ -215,9 +215,9 @@ $i = 0;
           <?=$block?>
         <?php endif; ?>
         <?php /* Saved lists */ ?>
-        <div class="savedLists alert alert-info hidden">
+        <p class="savedLists alert alert-info hidden">
           <strong><?=$this->transEsc("Saved in")?>:</strong>
-        </div>
+        </p>
       <?php endif; ?>
 
       <?php /* Hierarchy tree link; finc: keep Icon inside link - CK */ ?>
diff --git a/themes/finc/templates/RecordDriver/FincMissing/result-list.phtml b/themes/finc/templates/RecordDriver/FincMissing/result-list.phtml
index c527c275c5f..ac12afe218d 100644
--- a/themes/finc/templates/RecordDriver/FincMissing/result-list.phtml
+++ b/themes/finc/templates/RecordDriver/FincMissing/result-list.phtml
@@ -112,9 +112,9 @@ if ($cover):
           <?=$block?>
         <?php endif; ?>
         <?php /* Saved lists */ ?>
-        <div class="savedLists alert alert-info hidden">
+        <p class="savedLists alert alert-info hidden">
           <strong><?=$this->transEsc("Saved in")?>:</strong>
-        </div>
+        </p>
       <?php endif; ?>
 
       <?=$this->driver->supportsCoinsOpenUrl() ? '<span class="Z3988" title="' . $this->escapeHtmlAttr($this->driver->getCoinsOpenUrl()) . '"></span>' : ''?>
diff --git a/themes/finc/templates/RecordDriver/SolrAI/core.phtml b/themes/finc/templates/RecordDriver/SolrAI/core.phtml
index 8b89cbb631e..85550c63194 100644
--- a/themes/finc/templates/RecordDriver/SolrAI/core.phtml
+++ b/themes/finc/templates/RecordDriver/SolrAI/core.phtml
@@ -53,9 +53,9 @@
 
       <?php if ($this->userlist()->getMode() !== 'disabled'): ?>
         <?php /* Display the lists that this record is saved to */ ?>
-      <div class="savedLists hidden alert alert-info">
+      <p class="savedLists hidden alert alert-info">
           <strong><?= $this->transEsc("Saved in") ?>:</strong>
-      </div>
+      </p>
       <?php endif; ?>
 
       <?php /* Display Main Details */ ?>
diff --git a/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml b/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml
index 29d6247448a..37b59c79605 100644
--- a/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml
+++ b/themes/finc/templates/RecordDriver/SolrAI/result-list.phtml
@@ -232,9 +232,9 @@ if ($cover):
         <?=$block?>
       <?php endif; ?>
       <?php /* Saved lists */ ?>
-      <div class="savedLists alert alert-info hidden">
+      <p class="savedLists alert alert-info hidden">
         <strong><?=$this->transEsc("Saved in")?>:</strong>
-      </div>
+      </p>
       <?php /* endif; */ ?>
 
       <?php /* Hierarchy tree link; finc: keep Icon inside link - CK */ ?>
diff --git a/themes/finc/templates/RecordDriver/SolrLido/core.phtml b/themes/finc/templates/RecordDriver/SolrLido/core.phtml
index 5ab8df4ee07..7ff89c40e24 100644
--- a/themes/finc/templates/RecordDriver/SolrLido/core.phtml
+++ b/themes/finc/templates/RecordDriver/SolrLido/core.phtml
@@ -77,9 +77,9 @@
 
     <?php if ($this->userlist()->getMode() !== 'disabled'): ?>
       <?php /* Display the lists that this record is saved to */ ?>
-      <div class="savedLists hidden alert alert-info">
+      <p class="savedLists hidden alert alert-info">
         <strong><?=$this->transEsc("Saved in")?>:</strong>
-      </div>
+      </p>
     <?php endif; ?>
 
     <?php /* Display Main Details */ ?>
@@ -106,4 +106,4 @@
     <?php /* End Main Details */ ?>
   </div>
 </div>
-<!-- finc: RecordDriver - solrLido - core - END -->
\ No newline at end of file
+<!-- finc: RecordDriver - solrLido - core - END -->
diff --git a/themes/finc/templates/RecordDriver/SolrMarc/core.phtml b/themes/finc/templates/RecordDriver/SolrMarc/core.phtml
index 674a194a369..62ca005ec17 100644
--- a/themes/finc/templates/RecordDriver/SolrMarc/core.phtml
+++ b/themes/finc/templates/RecordDriver/SolrMarc/core.phtml
@@ -53,9 +53,9 @@
 
       <?php if ($this->userlist()->getMode() !== 'disabled'): ?>
         <?php /* Display the lists that this record is saved to */ ?>
-        <div class="savedLists hidden alert alert-info">
+        <p class="savedLists hidden alert alert-info">
           <strong><?= $this->transEsc("Saved in") ?>:</strong>
-        </div>
+        </p>
       <?php endif; ?>
 
       <?php /* Display Main Details */ ?>
diff --git a/themes/finc/templates/RecordTab/hierarchytree.phtml b/themes/finc/templates/RecordTab/hierarchytree.phtml
index abb953965e0..0c5f7f1879a 100644
--- a/themes/finc/templates/RecordTab/hierarchytree.phtml
+++ b/themes/finc/templates/RecordTab/hierarchytree.phtml
@@ -46,8 +46,8 @@
         <input type="submit" class="btn btn-transparent" value="<?=$this->transEsc('Search') ?>"/>
         <i id="treeSearchLoadingImg" class="fa fa-spinner fa-spin hidden" aria-hidden="true"></i>
       </div>
-      <div id="treeSearchNoResults" class="alert alert-danger hidden"><?=$this->translate('nohit_heading')?></div>
-      <div id="treeSearchLimitReached" class="alert alert-danger hidden"><?=$this->translate('tree_search_limit_reached_html', ['%%url%%' => $this->url('search-results'), '%%limit%%' => $this->tab->getSearchLimit()])?></div>
+      <p id="treeSearchNoResults" class="alert alert-danger hidden"><?=$this->translate('nohit_heading')?></p>
+      <p id="treeSearchLimitReached" class="alert alert-danger hidden"><?=$this->translate('tree_search_limit_reached_html', ['%%url%%' => $this->url('search-results'), '%%limit%%' => $this->tab->getSearchLimit()])?></p>
     <?php endif; ?>
     <div id="hierarchyLoading" class="hide"><i class="fa fa-spinner fa-spin" aria-hidden="true"></i> <?=$this->transEsc("Loading")?>...</div>
     <div id="hierarchyTree" class="hierarchy-tree">
diff --git a/themes/finc/templates/RecordTab/holdingsils.phtml b/themes/finc/templates/RecordTab/holdingsils.phtml
index 0d631f88d4f..90f4cd7d4eb 100644
--- a/themes/finc/templates/RecordTab/holdingsils.phtml
+++ b/themes/finc/templates/RecordTab/holdingsils.phtml
@@ -35,22 +35,22 @@
 <?=$this->context($this)->renderInContext('librarycards/selectcard.phtml', ['user' => $this->auth()->isLoggedIn()]);?>
 
 <?php if (!empty($holdings['blocks'])): ?>
-  <div id="account-block-msg" class="alert alert-danger">
+  <p id="account-block-msg" class="alert alert-danger">
     <?=$this->transEsc('account_block_options_missing', ['%%details%%' => implode('; ', $holdings['blocks'])])?>
-  </div>
+  </p>
 <?php endif; ?>
 
 <?=($offlineMode == "ils-offline") ? $this->render('Helpers/ils-offline.phtml', ['offlineModeMsg' => 'ils_offline_holdings_message']) : ''?>
 <?php if (($this->ils()->getHoldsMode() == 'driver' && !empty($holdings['holdings'])) || $this->ils()->getTitleHoldsMode() == 'driver'): ?>
   <?php if ($account->loginEnabled() && $offlineMode != 'ils-offline'): ?>
     <?php if (!$user): ?>
-      <div class="alert alert-info">
+      <p class="alert alert-info">
         <a href="<?=$this->recordLink()->getTabUrl($this->driver, 'Holdings')?>?login=true&amp;catalogLogin=true" data-lightbox><?=$this->transEsc("hold_login")?></a>
-      </div>
+      </p>
     <?php elseif (!$user->cat_username): ?>
-      <div class="alert alert-info">
+      <p class="alert alert-info">
         <?=$this->translate("hold_profile_html", ['%%url%%' => $this->recordLink()->getTabUrl($this->driver, 'Holdings') . '?catalogLogin=true'])?>
-      </div>
+      </p>
     <?php endif; ?>
   <?php endif; ?>
 <?php endif; ?>
diff --git a/themes/finc/templates/myresearch/checkedout.phtml b/themes/finc/templates/myresearch/checkedout.phtml
index 8c9fb4c8fa7..8f19100634f 100644
--- a/themes/finc/templates/myresearch/checkedout.phtml
+++ b/themes/finc/templates/myresearch/checkedout.phtml
@@ -64,9 +64,9 @@
         <?php $renewDetails = $this->renewResult[$ilsDetails['item_id']]; ?>
         <?php $prefix = $ilsDetails['title'] ?? $ilsDetails['item_id']; ?>
         <?php if (isset($renewDetails['success']) && $renewDetails['success']): ?>
-          <div class="alert alert-success"><?=$this->escapeHtml($prefix . ': ') . $this->transEsc('renew_success')?></div>
+          <p class="alert alert-success"><?=$this->escapeHtml($prefix . ': ') . $this->transEsc('renew_success')?></p>
         <?php else: ?>
-          <div class="alert alert-danger"><?=$this->escapeHtml($prefix . ': ') . $this->transEsc('renew_fail')?><?php if (isset($renewDetails['sysMessage'])): ?>: <?=$this->escapeHtml($renewDetails['sysMessage'])?><?php endif; ?></div>
+          <p class="alert alert-danger"><?=$this->escapeHtml($prefix . ': ') . $this->transEsc('renew_fail')?><?php if (isset($renewDetails['sysMessage'])): ?>: <?=$this->escapeHtml($renewDetails['sysMessage'])?><?php endif; ?></p>
         <?php endif; ?>
       <?php endif; ?>
       <?php if (isset($ilsDetails['renewable']) && $ilsDetails['renewable'] && isset($ilsDetails['renew_details'])): ?>
@@ -173,24 +173,24 @@
               <?php if (isset($renewDetails['success']) && $renewDetails['success']): ?>
                 <?php $showStatus = false; ?>
                 <strong><?=$this->transEsc('Due Date')?>: <?=$this->escapeHtml($renewDetails['new_date'])?> <?php if (isset($renewDetails['new_time'])): ?><?=$this->escapeHtml($renewDetails['new_time'])?><?php endif; ?></strong>
-                <div class="alert alert-success"><?=$this->transEsc('renew_success')?></div>
+                <p class="alert alert-success"><?=$this->transEsc('renew_success')?></p>
               <?php else: ?>
                 <strong><?=$this->transEsc('Due Date')?>: <?=$this->escapeHtml($ilsDetails['duedate'])?><?php if (isset($ilsDetails['dueTime'])): ?> <?=$this->escapeHtml($ilsDetails['dueTime'])?><?php endif; ?></strong>
-                <div class="alert alert-danger"><?=$this->transEsc('renew_fail')?><?php if (isset($renewDetails['sysMessage'])): ?>: <?=$this->escapeHtml($renewDetails['sysMessage'])?><?php endif; ?></div>
+                <p class="alert alert-danger"><?=$this->transEsc('renew_fail')?><?php if (isset($renewDetails['sysMessage'])): ?>: <?=$this->escapeHtml($renewDetails['sysMessage'])?><?php endif; ?></p>
               <?php endif; ?>
             <?php else: ?>
               <strong><?=$this->transEsc('Due Date')?>: <?=$this->escapeHtml($ilsDetails['duedate'])?><?php if (isset($ilsDetails['dueTime'])): ?> <?=$this->escapeHtml($ilsDetails['dueTime'])?><?php endif; ?></strong>
               <?php if ($showStatus): ?>
                 <?php if (isset($ilsDetails['dueStatus']) && $ilsDetails['dueStatus'] == "overdue"): ?>
-                  <div class="alert alert-danger"><?=$this->transEsc("renew_item_overdue")?></div>
+                  <p class="alert alert-danger"><?=$this->transEsc("renew_item_overdue")?></p>
                 <?php elseif (isset($ilsDetails['dueStatus']) && $ilsDetails['dueStatus'] == "due"): ?>
-                  <div class="alert alert-info"><?=$this->transEsc("renew_item_due")?></div>
+                  <p class="alert alert-info"><?=$this->transEsc("renew_item_due")?></p>
                 <?php endif; ?>
               <?php endif; ?>
             <?php endif; ?>
 
             <?php if ($showStatus && isset($ilsDetails['message']) && !empty($ilsDetails['message'])): ?>
-              <div class="alert alert-info"><?=$this->transEsc($ilsDetails['message'])?></div>
+              <p class="alert alert-info"><?=$this->transEsc($ilsDetails['message'])?></p>
             <?php endif; ?>
             <?php if (isset($ilsDetails['renewable']) && $ilsDetails['renewable'] && isset($ilsDetails['renew_link'])): ?>
               <a href="<?=$this->escapeHtmlAttr($ilsDetails['renew_link'])?>"><?=$this->transEsc('renew_item')?></a>
diff --git a/themes/finc/templates/myresearch/historicloans.phtml b/themes/finc/templates/myresearch/historicloans.phtml
index 8b713395b0d..12466e0632f 100644
--- a/themes/finc/templates/myresearch/historicloans.phtml
+++ b/themes/finc/templates/myresearch/historicloans.phtml
@@ -115,7 +115,7 @@
             <?php endif; ?>
 
             <?php if (isset($ilsDetails['message']) && !empty($ilsDetails['message'])): ?>
-              <div class="alert alert-info"><?=$this->transEsc($ilsDetails['message'])?></div>
+              <p class="alert alert-info"><?=$this->transEsc($ilsDetails['message'])?></p>
             <?php endif; ?>
           </div>
           <?php if ($thumbnail && $thumbnailAlignment == 'right'): ?>
diff --git a/themes/finc/templates/myresearch/holds.phtml b/themes/finc/templates/myresearch/holds.phtml
index e837c575c5a..3411313aa62 100644
--- a/themes/finc/templates/myresearch/holds.phtml
+++ b/themes/finc/templates/myresearch/holds.phtml
@@ -148,21 +148,21 @@
             <?php if (isset($this->cancelResults['items'])): ?>
               <?php foreach ($this->cancelResults['items'] as $itemId => $cancelResult): ?>
                 <?php if ($itemId == $ilsDetails['item_id'] && $cancelResult['success'] == false): ?>
-                  <div class="alert alert-danger"><?=$this->transEsc($cancelResult['status']) ?><?php if ($cancelResult['sysMessage']) echo ' : ' . $this->transEsc($cancelResult['sysMessage']); ?></div>
+                  <p class="alert alert-danger"><?=$this->transEsc($cancelResult['status']) ?><?php if ($cancelResult['sysMessage']) echo ' : ' . $this->transEsc($cancelResult['sysMessage']); ?></p>
                 <?php endif; ?>
               <?php endforeach; ?>
             <?php endif; ?>
 
             <?php if (isset($ilsDetails['available']) && $ilsDetails['available'] == true): ?>
-              <div class="text-success">
+              <p class="text-success">
                 <?php if (!empty($ilsDetails['last_pickup_date'])): ?>
                   <?=$this->transEsc('hold_available_until', ['%%date%%' => $ilsDetails['last_pickup_date']]) ?>
                 <?php else: ?>
                   <?=$this->transEsc('hold_available') ?>
                 <?php endif; ?>
-              </div>
+              </p>
             <?php elseif (isset($ilsDetails['in_transit']) && $ilsDetails['in_transit']): ?>
-              <div class="text-success"><?=$this->transEsc('request_in_transit') . (is_string($ilsDetails['in_transit']) ? ': ' . $this->transEsc('institution_' . $ilsDetails['in_transit'], [], $ilsDetails['in_transit']) : '') ?></div>
+              <p class="text-success"><?=$this->transEsc('request_in_transit') . (is_string($ilsDetails['in_transit']) ? ': ' . $this->transEsc('institution_' . $ilsDetails['in_transit'], [], $ilsDetails['in_transit']) : '') ?></p>
             <?php elseif (isset($ilsDetails['position'])): ?>
               <p><strong><?=$this->transEsc("hold_queue_position") ?>:</strong> <?=$this->escapeHtml($ilsDetails['position']) ?></p>
             <?php endif; ?>
diff --git a/themes/finc/templates/myresearch/illrequests.phtml b/themes/finc/templates/myresearch/illrequests.phtml
index 26691d25498..eab38c18839 100644
--- a/themes/finc/templates/myresearch/illrequests.phtml
+++ b/themes/finc/templates/myresearch/illrequests.phtml
@@ -144,22 +144,22 @@
             <?php if (isset($this->cancelResults['items'])): ?>
               <?php foreach ($this->cancelResults['items'] as $itemId => $cancelResult): ?>
                 <?php if ($itemId == $ilsDetails['item_id'] && $cancelResult['success'] == false): ?>
-                  <div class="alert alert-danger"><?=$this->transEsc($cancelResult['status']) ?><?php if ($cancelResult['sysMessage']) echo ' : ' . $this->transEsc($cancelResult['sysMessage']); ?></div>
+                  <p class="alert alert-danger"><?=$this->transEsc($cancelResult['status']) ?><?php if ($cancelResult['sysMessage']) echo ' : ' . $this->transEsc($cancelResult['sysMessage']); ?></p>
                 <?php endif; ?>
               <?php endforeach; ?>
             <?php endif; ?>
 
             <?php if (isset($ilsDetails['in_transit']) && $ilsDetails['in_transit']): ?>
-              <div class="text-success"><?=$this->transEsc("request_in_transit") . (is_string($ilsDetails['in_transit']) ? ': ' . $this->transEsc('institution_' . $ilsDetails['in_transit'], [], $ilsDetails['in_transit']) : '') ?></div>
+              <p class="text-success"><?=$this->transEsc("request_in_transit") . (is_string($ilsDetails['in_transit']) ? ': ' . $this->transEsc('institution_' . $ilsDetails['in_transit'], [], $ilsDetails['in_transit']) : '') ?></p>
             <?php endif; ?>
             <?php if (isset($ilsDetails['processed']) && $ilsDetails['processed']): ?>
-              <div class="text-success"><?=$this->transEsc("ill_request_processed") . (is_string($ilsDetails['processed']) ? ': ' . $ilsDetails['processed'] : '') ?></div>
+              <p class="text-success"><?=$this->transEsc("ill_request_processed") . (is_string($ilsDetails['processed']) ? ': ' . $ilsDetails['processed'] : '') ?></p>
             <?php endif; ?>
             <?php if (isset($ilsDetails['available']) && $ilsDetails['available']): ?>
-              <div class="text-success"><?=$this->transEsc("ill_request_available") ?></div>
+              <p class="text-success"><?=$this->transEsc("ill_request_available") ?></p>
             <?php endif; ?>
             <?php if (isset($ilsDetails['canceled']) && $ilsDetails['canceled']): ?>
-              <div class="text-success"><?=$this->transEsc("ill_request_canceled") . (is_string($ilsDetails['canceled']) ? ': ' . $ilsDetails['canceled'] : '') ?></div>
+              <p class="text-success"><?=$this->transEsc("ill_request_canceled") . (is_string($ilsDetails['canceled']) ? ': ' . $ilsDetails['canceled'] : '') ?></p>
             <?php endif; ?>
             <?php if (isset($ilsDetails['cancel_link'])): ?>
               <p><a href="<?=$this->escapeHtmlAttr($ilsDetails['cancel_link']) ?>"><?=$this->transEsc("ill_request_cancel") ?></a></p>
diff --git a/themes/finc/templates/myresearch/storageretrievalrequests.phtml b/themes/finc/templates/myresearch/storageretrievalrequests.phtml
index 6e8920b2ae8..e01f8e1d7d2 100644
--- a/themes/finc/templates/myresearch/storageretrievalrequests.phtml
+++ b/themes/finc/templates/myresearch/storageretrievalrequests.phtml
@@ -143,19 +143,19 @@
             <?php if (isset($this->cancelResults['items'])): ?>
               <?php foreach ($this->cancelResults['items'] as $itemId => $cancelResult): ?>
                 <?php if ($itemId == $ilsDetails['item_id'] && $cancelResult['success'] == false): ?>
-                  <div class="alert alert-danger"><?=$this->transEsc($cancelResult['status']) ?><?php if ($cancelResult['sysMessage']) echo ' : ' . $this->transEsc($cancelResult['sysMessage']); ?></div>
+                  <p class="alert alert-danger"><?=$this->transEsc($cancelResult['status']) ?><?php if ($cancelResult['sysMessage']) echo ' : ' . $this->transEsc($cancelResult['sysMessage']); ?></p>
                 <?php endif; ?>
               <?php endforeach; ?>
             <?php endif; ?>
 
             <?php if (isset($ilsDetails['processed']) && $ilsDetails['processed']): ?>
-              <div class="text-success"><?=$this->transEsc("storage_retrieval_request_processed") . (is_string($ilsDetails['processed']) ? ': ' . $ilsDetails['processed'] : '') ?></div>
+              <p class="text-success"><?=$this->transEsc("storage_retrieval_request_processed") . (is_string($ilsDetails['processed']) ? ': ' . $ilsDetails['processed'] : '') ?></p>
             <?php endif; ?>
             <?php if (isset($ilsDetails['available']) && $ilsDetails['available']): ?>
-              <div class="text-success"><?=$this->transEsc("storage_retrieval_request_available") ?></div>
+              <p class="text-success"><?=$this->transEsc("storage_retrieval_request_available") ?></p>
             <?php endif; ?>
             <?php if (isset($ilsDetails['canceled']) && $ilsDetails['canceled']): ?>
-              <div class="text-success"><?=$this->transEsc("storage_retrieval_request_canceled") . (is_string($ilsDetails['canceled']) ? ': ' . $ilsDetails['canceled'] : '') ?></div>
+              <p class="text-success"><?=$this->transEsc("storage_retrieval_request_canceled") . (is_string($ilsDetails['canceled']) ? ': ' . $ilsDetails['canceled'] : '') ?></p>
             <?php endif; ?>
             <?php if (isset($ilsDetails['cancel_link'])): ?>
               <p><a href="<?=$this->escapeHtmlAttr($ilsDetails['cancel_link']) ?>"><?=$this->transEsc("storage_retrieval_request_cancel") ?></a></p>
diff --git a/themes/finc/theme.config.php b/themes/finc/theme.config.php
index 1b47dba63bb..bf5726986a1 100644
--- a/themes/finc/theme.config.php
+++ b/themes/finc/theme.config.php
@@ -15,6 +15,7 @@ return [
             'resultfeed' => 'finc\View\Helper\Root\ResultFeed',
             'recordLink' => 'finc\View\Helper\Root\RecordLink',
             'record' => 'finc\View\Helper\Root\Record',
+            'flashmessages' => 'finc\View\Helper\Root\Flashmessages',
         ],
         'factories' => [
             'finc\View\Helper\Root\BranchInfo' =>
@@ -36,7 +37,9 @@ return [
             'VuFind\View\Helper\Root\RecordDataFormatter' =>
                 'finc\View\Helper\Root\RecordDataFormatterFactory',
             'finc\View\Helper\Root\ResultFeed' =>
-                'VuFind\View\Helper\Root\ResultFeedFactory'
+                'VuFind\View\Helper\Root\ResultFeedFactory',
+            'finc\View\Helper\Root\Flashmessages' =>
+                'VuFind\View\Helper\Root\FlashmessagesFactory',
         ]
     ]
 ];
-- 
GitLab