
The notifications schema is already set up for reddit-style chronological notifications. We simply have to remove the logic that builds the context and patch up a few places in the frontend that were expecting full reply trees. `Comment.header_msg` previously expected the user's own comment to be top-level in comment replies. Logic is revised to expect the actual reply. `files.routes.front.notifications_main` now has reduced query volume because we aren't expiring the session when marking notifications read. This also allows us to remove the unused `comms` variable, which is a makeshift "pattern" of storing duplicate database replies across a commit so the templates don't requery (thus losing data attached to the runtime object, like `c.unread` / `c.notif_utc`). We move the `is_notification_page` flag to the route callers rather than templates checking `request.path`. Minor UI style: "Clear all notifications" -> "Mark All Read", since this was a persistent point of user confusion upstream, with people expecting their inbox to empty out. Also less margin between notifs to be consistent with tighter comment display elsewhere and removed need to separate groups of comments vs single comments.
122 lines
3.6 KiB
HTML
122 lines
3.6 KiB
HTML
{% extends "default.html" %}
|
|
|
|
{% block fixedMobileBarJS %}{% endblock %}
|
|
|
|
{% block pagetype %}{% endblock %}
|
|
|
|
{% block navbar %}
|
|
<div class="font-weight-bold py-3"></div>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
|
|
<div class="row border-bottom bg-white w-200 pr-0" style="overflow: visible;">
|
|
<div class="col p-0 w-100">
|
|
<ul class="nav settings-nav" style="padding:0 0 0 20px">
|
|
<li class="nav-item">
|
|
<a class="nav-link py-3{% if not '=true' in request.full_path %} active{% endif %}" href="/notifications">
|
|
All {% if v.normal_count %} <span class="font-weight-bold" style="color:red">({{v.normal_count}})</span>{% endif %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link py-3{% if '/notifications/posts' in request.full_path %} active{% endif %}" href="/notifications/posts">
|
|
Posts {% if v.post_notifications_count %}<span class="font-weight-bold" style="color:blue">({{v.post_notifications_count}})</span>{% endif %}
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link py-3{% if '/notifications/messages' in request.full_path %} active{% endif %}" href="/notifications/messages">
|
|
Messages
|
|
</a>
|
|
</li>
|
|
{% if v.admin_level >= 2 %}
|
|
<li class="nav-item">
|
|
<a class="nav-link py-3{% if '/notifications/modmail' in request.full_path %} active{% endif %}" href="/notifications/modmail">
|
|
Modmail
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a class="btn btn-primary mt-3 ml-3" role="button" onclick="post_toast(this, '/clear', '1')">Mark All Read</a>
|
|
|
|
<div class="notifs px-3 p-md-0">
|
|
|
|
{% with comments=notifications %}
|
|
{% include "comments.html" %}
|
|
{% endwith %}
|
|
|
|
{% if not notifications %}
|
|
<div class="text-center py-7 py-md-8">
|
|
|
|
<span class="fa-stack fa-2x text-muted mb-4">
|
|
<i class="fas fa-square text-gray-400 fa-stack-2x"></i>
|
|
<i class="fas text-gray-600 fa-envelope fa-stack-1x text-lg"></i>
|
|
</span>
|
|
|
|
<div class="h5">No unread messages</div>
|
|
<div class="text-small text-muted mb-3">When someone comments or replies, it will show up here.</div>
|
|
<a href="/notifications" class="btn btn-primary ">View entire inbox</a>
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
</div>
|
|
|
|
{% endblock %}
|
|
|
|
{% block pagenav %}
|
|
{% if notifications %}
|
|
<nav aria-label="Page navigation">
|
|
<ul class="pagination pagination-sm mb-0 mt-4">
|
|
{% if page>1 %}
|
|
<li class="page-item">
|
|
{% if "?page=" in request.full_path %}
|
|
{% set path = request.full_path.split("?page=")[0] %}
|
|
{% elif "&page=" in request.full_path %}
|
|
{% set path = request.full_path.split("&page=")[0] %}
|
|
{% else %}
|
|
{% set path = request.full_path %}
|
|
{% endif %}
|
|
{% if '=true' in request.full_path %}
|
|
<small><a class="page-link" href="{{path}}&page={{page-1}}">Previous</a></small>
|
|
{% else %}
|
|
<small><a class="page-link" href="{{request.path}}?page={{page-1}}">Previous</a></small>
|
|
{% endif %}
|
|
</li>
|
|
{% else %}
|
|
<li class="page-item disabled"><span class="page-link">Prev</span></li>
|
|
{% endif %}
|
|
|
|
{% if next_exists %}
|
|
<li class="page-item">
|
|
{% if "?page=" in request.full_path %}
|
|
{% set path = request.full_path.split("?page=")[0] %}
|
|
{% elif "&page=" in request.full_path %}
|
|
{% set path = request.full_path.split("&page=")[0] %}
|
|
{% else %}
|
|
{% set path = request.full_path %}
|
|
{% endif %}
|
|
{% if '=true' in request.full_path %}
|
|
<small><a class="page-link" href="{{path}}&page={{page+1}}">Next</a></small>
|
|
{% else %}
|
|
<small><a class="page-link" href="{{request.path}}?page={{page+1}}">Next</a></small>
|
|
{% endif %}
|
|
</li>
|
|
{% else %}
|
|
<li class="page-item disabled"><span class="page-link">Next</span></li>
|
|
{% endif %}
|
|
</ul>
|
|
</nav>
|
|
{% endif %}
|
|
<style>
|
|
.comment {
|
|
margin-top: 1rem;
|
|
}
|
|
</style>
|
|
{% endblock %}
|
|
|
|
{% block GIFpicker %}
|
|
{% endblock %}
|