mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-11 03:37:06 +02:00
* Initial work on #15621 * Signal receiver should ignore models which don't support notifications * Flesh out NotificationGroup functionality * Add NotificationGroup filters for users & groups * Separate read & dimiss actions * Enable one-click dismissals from notifications list * Include total notification count in dropdown * Drop 'kind' field from Notification model * Register event types in the registry; add colors & icons * Enable event rules to target notification groups * Define dynamic choices for Notification.event_name * Move event registration to core * Add more job events * Misc cleanup * Misc cleanup * Correct absolute URLs for notifications & subscriptions * Optimize subscriber notifications * Use core event types when queuing events * Standardize queued event attribute to event_type; change content_type to object_type * Rename Notification.event_name to event_type * Restore NotificationGroupBulkEditView * Add API tests * Add view & filterset tests * Add model documentation * Fix tests * Update notification bell when notifications have been cleared * Ensure subscribe button appears only on relevant models * Notifications/subscriptions cannot be ordered by object * Misc cleanup * Add event icon & type to notifications table * Adjust icon sizing * Mute color of read notifications * Misc cleanup
65 lines
2.5 KiB
HTML
65 lines
2.5 KiB
HTML
{% load i18n %}
|
|
{% load navigation %}
|
|
|
|
{% if request.user.is_authenticated %}
|
|
{# Notifications #}
|
|
{% with notifications=request.user.notifications.unread.exists %}
|
|
<div class="nav-item dropdown">
|
|
<a href="#" class="nav-link" data-bs-toggle="dropdown" hx-get="{% url 'extras:notifications' %}" hx-target="next .notifications" aria-label="Notifications">
|
|
{% include 'inc/notification_bell.html' %}
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow notifications"></div>
|
|
</div>
|
|
{% endwith %}
|
|
|
|
{# User menu #}
|
|
<div class="nav-item dropdown">
|
|
<a href="#" class="nav-link d-flex lh-1 text-reset p-0" data-bs-toggle="dropdown" aria-label="Open user menu">
|
|
<div class="d-xl-block ps-2">
|
|
<div>{{ request.user }}</div>
|
|
<div class="mt-1 small text-secondary">
|
|
{% if request.user.is_superuser %}
|
|
{% trans "Admin" %}
|
|
{% elif request.user.is_staff %}
|
|
{% trans "Staff" %}
|
|
{% else %}
|
|
{% trans "User" %}
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-end dropdown-menu-arrow" {% htmx_boost %}>
|
|
{% if config.DJANGO_ADMIN_ENABLED and request.user.is_staff %}
|
|
<a class="dropdown-item" href="{% url 'admin:index' %}">
|
|
<i class="mdi mdi-cog"></i> {% trans "Django Admin" %}
|
|
</a>
|
|
{% endif %}
|
|
<a href="{% url 'account:profile' %}" class="dropdown-item">
|
|
<i class="mdi mdi-account"></i> {% trans "Profile" %}
|
|
</a>
|
|
<a href="{% url 'account:bookmarks' %}" class="dropdown-item">
|
|
<i class="mdi mdi-bookmark"></i> {% trans "Bookmarks" %}
|
|
</a>
|
|
<a href="{% url 'account:subscriptions' %}" class="dropdown-item">
|
|
<i class="mdi mdi-bell"></i> {% trans "Subscriptions" %}
|
|
</a>
|
|
<a href="{% url 'account:preferences' %}" class="dropdown-item">
|
|
<i class="mdi mdi-wrench"></i> {% trans "Preferences" %}
|
|
</a>
|
|
<a href="{% url 'account:usertoken_list' %}" class="dropdown-item">
|
|
<i class="mdi mdi-key"></i> {% trans "API Tokens" %}
|
|
</a>
|
|
<hr class="dropdown-divider" />
|
|
<a href="{% url 'logout' %}" hx-disable="true" class="dropdown-item">
|
|
<i class="mdi mdi-logout-variant"></i> {% trans "Log Out" %}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
{% else %}
|
|
<div class="btn-group align-items-center ps-2">
|
|
<a class="btn btn-primary" type="button" href="{% url 'login' %}?next={{ request.path }}">
|
|
<i class="mdi mdi-login-variant"></i> {% trans "Log In" %}
|
|
</a>
|
|
</div>
|
|
{% endif %}
|