FreedomBox/plinth/templates/notifications.html
Joseph Nuthalapati bbeced68f7
notifications: Add datetime to each notification
- Notifications are displayed in a user-friendly "time ago" format.

- Use last_update_time instead of created_time

Sunil:

- Some notifications don't have app name and app icon. Styling for those
notification was different due to the last update time. Revert back to
positioning for it. Use CSS float for it.

- Use localized, locale specific date/time format for the tooltip.

Signed-off-by: Joseph Nuthalapati <njoseph@riseup.net>
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2025-07-10 16:07:37 -07:00

75 lines
2.6 KiB
HTML

{% comment %}
# SPDX-License-Identifier: AGPL-3.0-or-later
{% endcomment %}
{# Template to display notifications under the navbar #}
{% load i18n %}
{% load static %}
{% if notifications %}
<div class="notifications collapse no-no-js">
<ul>
{% for note in notifications %}
<li class="notification notification-{{ note.severity }}">
<div class="notification-header">
<span class="notification-time"
title="{{ note.last_update_time|date:'DATETIME_FORMAT' }}">
{% blocktrans trimmed with time_since=note.last_update_time|timesince %}
{{ time_since }} ago
{% endblocktrans %}
</span>
{% if note.data.app_name %}
<div class="app-name">
{% if note.data.app_icon %}
<div class="app-icon fa {{ note.data.app_icon }}"></div>
{% elif note.data.app_icon_filename %}
{% if note.app_id %}
<img src="{% static note.app_id %}/icons/{{ note.data.app_icon_filename }}.svg"
alt="{{ note.data.app_name }}"
class="notification-icon" />
{% else %}
<img src="{% static 'theme/icons/' %}{{ note.data.app_icon_filename }}.svg"
alt="{{ note.data.app_name }}"
class="notification-icon" />
{% endif %}
{% endif %}
{{ note.data.app_name }}
</div>
{% endif %}
</div>
{% if note.body %}
{{ note.body.content.decode|safe }}
{% else %}
<div class="notification-title">{{ note.title }}</div>
{% if note.message %}
<p>{{ note.message }}</p>
{% endif %}
{% if note.actions %}
<div class="btn-toolbar">
{% for action in note.actions %}
{% if action.type == "dismiss" %}
<a href="{% url 'notification_dismiss' id=note.id %}?next={{ request.path|iriencode }}"
role="button" class="btn btn-default">
{% trans "Dismiss" %}
</a>
{% else %}
<a href="{% url action.url %}" role="button"
class="btn btn-{{ action.class|default:'default' }}">
{{ action.text }}
</a>
{% endif %}
{% endfor %}
</div>
{% endif %}
{% endif %}
</li>
{% endfor %}
</ul>
</div>
{% endif %}