Un avviso ha un testo per lingua; per differenziare le piattaforme si creano due avvisi. L'app riceve già il copy risolto da Accept-Language. Co-authored-by: Cursor <cursoragent@cursor.com>
47 lines
2.1 KiB
ERB
47 lines
2.1 KiB
ERB
<% announcements = @site_announcements %>
|
||
<% if announcements.present? %>
|
||
<div class="site-announcements" role="region" aria-label="<%= t("announcement.region") %>">
|
||
<% announcements.each do |item| %>
|
||
<article class="site-announcement site-announcement--<%= item.kind %> site-announcement--<%= item.severity %>"
|
||
data-announcement-id="<%= item.id %>">
|
||
<div class="site-announcement__body">
|
||
<p class="site-announcement__title"><%= item.localized_title %></p>
|
||
<div class="site-announcement__text"><%= simple_format(item.localized_body) %></div>
|
||
<% action_url = item.resolved_action_url(nil) %>
|
||
<% if action_url.present? %>
|
||
<p class="site-announcement__action">
|
||
<%= link_to (item.localized_action_label.presence || t("announcement.open")), action_url,
|
||
class: "site-announcement__link", target: "_blank", rel: "noopener noreferrer" %>
|
||
</p>
|
||
<% end %>
|
||
</div>
|
||
<% if item.dismissible? %>
|
||
<button type="button" class="site-announcement__dismiss" data-announcement-dismiss aria-label="<%= t("announcement.dismiss") %>">
|
||
×
|
||
</button>
|
||
<% end %>
|
||
</article>
|
||
<% end %>
|
||
</div>
|
||
<script>
|
||
(function () {
|
||
var key = "mltv.webDismissedAnnouncements";
|
||
var dismissed = [];
|
||
try { dismissed = JSON.parse(localStorage.getItem(key) || "[]"); } catch (e) {}
|
||
document.querySelectorAll(".site-announcement[data-announcement-id]").forEach(function (el) {
|
||
if (dismissed.indexOf(el.getAttribute("data-announcement-id")) !== -1) el.remove();
|
||
});
|
||
document.querySelectorAll("[data-announcement-dismiss]").forEach(function (btn) {
|
||
btn.addEventListener("click", function () {
|
||
var box = btn.closest("[data-announcement-id]");
|
||
if (!box) return;
|
||
var id = box.getAttribute("data-announcement-id");
|
||
if (dismissed.indexOf(id) === -1) dismissed.push(id);
|
||
localStorage.setItem(key, JSON.stringify(dismissed));
|
||
box.remove();
|
||
});
|
||
});
|
||
})();
|
||
</script>
|
||
<% end %>
|