SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit b7e9fa45 authored by George Katsikas's avatar George Katsikas :goat:
Browse files

add newsletters list and online display

fixes #284
fixes #283
parent 08728d27
No related branches found
No related tags found
No related merge requests found
...@@ -4,8 +4,19 @@ ...@@ -4,8 +4,19 @@
<span class="text-truncate">{{ newsletter.content|striptags|truncatechars:200 }}</span> <span class="text-truncate">{{ newsletter.content|striptags|truncatechars:200 }}</span>
</div> </div>
<div class="align-self-end d-flex flex-column align-items-end"> <div class="align-self-end d-flex align-items-end gap-2">
<a href="{% url "mailing_lists:newsletter_edit" newsletter.id %}">Edit</a>
<span>{{ newsletter.get_status_display }}</span> <div class="d-flex flex-column">
<a href="{% url "mailing_lists:newsletter" newsletter.id %}">View</a>
</div>
<div class="d-flex flex-column align-items-end">
{% if perms.scipost.can_manage_newsletters %}
<span>{{ newsletter.get_status_display }}</span>
<a href="{% url "mailing_lists:newsletter_edit" newsletter.id %}">Edit</a>
{% endif %}
</div>
</div> </div>
</li> </li>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<div style="max-width:600px; margin: 0 auto" class="bg-white"> <div style="max-width:600px; margin: 0 auto" class="bg-white">
<!-- Header --> <!-- Header -->
<table class="bg-dark-blue w-100" <table class="w-100"
align="center" align="center"
border="0" border="0"
cellpadding="0" cellpadding="0"
...@@ -14,6 +14,12 @@ ...@@ -14,6 +14,12 @@
role="presentation"> role="presentation">
<tbody> <tbody>
<tr> <tr>
<td class="text-center" colspan="2">
<a class="text-center"
href="{% url "mailing_lists:newsletter" newsletter.pk %}">View this newsletter online (login required)</a>
</td>
</tr>
<tr class="bg-dark-blue">
<td> <td>
<a href="{% url 'scipost:index' %}"> <a href="{% url 'scipost:index' %}">
<img src="{% static 'scipost/images/logo_scipost_RGB_HTML_groot.png' %}" <img src="{% static 'scipost/images/logo_scipost_RGB_HTML_groot.png' %}"
......
{% extends 'scipost/base.html' %}
{% load static %}
{% block breadcrumb %}
<div class="breadcrumb-container">
<div class="container">
<nav class="breadcrumb">
{% block breadcrumb_items %}
{{ block.super }}
<a class="breadcrumb-item" href="{% url "mailing_lists:newsletters" %}">Newsletters</a>
<a class="breadcrumb-item">View Newsletter</a>
{% endblock %}
</nav>
</div>
</div>
{% endblock %}
{% block container_class %}
m-auto p-2
{% endblock container_class %}
{% block content %}
<h1 class="mb-4">{{ newsletter }}</h1>
{% include "mailing_lists/_newsletter_email_body.html" %}
{% endblock content %}
{% block headsup %}
<link rel="stylesheet"
href="{% static 'scipost/assets/css/newsletter.css' %}" />
{% endblock headsup %}
{% extends 'scipost/base.html' %}
{% block breadcrumb %}
<div class="breadcrumb-container">
<div class="container">
<nav class="breadcrumb">
{% block breadcrumb_items %}
{{ block.super }}
<a class="breadcrumb-item">Newsletters</a>
{% endblock %}
</nav>
</div>
</div>
{% endblock %}
{% block pagetitle %}
: Newsletters
{% endblock pagetitle %}
{% block content %}
<h1 class="highlight">Newsletters</h1>
<p>
Here you can view all newsletters for the mailing lists you are subscribed to.
<nav>
You may manage your subscriptions on your <a href="{% url "scipost:personal_page" %}">personal page</a>, in the "Email Preferences" tab.
{% if perms.scipost.can_manage_mailing_lists %}
You may also create new Newsletters or manage the Mailing Lists themselves on the <a href="{% url "mailing_lists:manage" %}">Mailing Lists management page</a>.
{% endif %}
</nav>
</p>
<div class="row">
<div class="col-12">
{% regroup newsletters by mailing_list as newsletters %}
{% for mailing_list in newsletters %}
<h2>{{ mailing_list.grouper }}</h2>
{% for newsletter in mailing_list.list %}
{% include "mailing_lists/_hx_newsletter_list_item.html" %}
{% endfor %}
{% empty %}
<h2>No Newsletters</h2>
<p>There are no newsletters visible to you.</p>
{% endfor %}
</div>
</div>
{% endblock content %}
...@@ -49,6 +49,16 @@ urlpatterns = [ ...@@ -49,6 +49,16 @@ urlpatterns = [
views._hx_newsletter_send, views._hx_newsletter_send,
name="_hx_newsletter_send", name="_hx_newsletter_send",
), ),
path(
"newsletters/<int:pk>",
views.newsletter_detail,
name="newsletter",
),
path(
"newsletters",
views.newsletters,
name="newsletters",
),
path( path(
"<int:pk>/", "<int:pk>/",
include( include(
......
...@@ -390,3 +390,41 @@ def _hx_newsletter_media_embed_list(request, pk): ...@@ -390,3 +390,41 @@ def _hx_newsletter_media_embed_list(request, pk):
"mailing_lists/_hx_newsletter_media_embed_list.html", "mailing_lists/_hx_newsletter_media_embed_list.html",
{"newsletter": newsletter}, {"newsletter": newsletter},
) )
@login_required
def newsletters(request):
"""
Display a list of newsletters.
- Regular user: newsletters in subscribed mailing lists after they have been sent.
- Users with `can_manage_newsletters`: all newsletters.
"""
newsletters = Newsletter.objects.all()
# If not newsletter manager, only show sent newsletters from subscribed mailing lists
if not request.user.has_perm("scipost.can_manage_newsletters"):
newsletters = newsletters.filter(
mailing_list__subscribed=request.user.contributor,
status=Newsletter.STATUS_SENT,
)
return TemplateResponse(
request,
"mailing_lists/newsletters.html",
{"newsletters": newsletters},
)
@login_required
def newsletter_detail(request, pk):
"""
Display the newsletter content.
"""
newsletter = get_object_or_404(Newsletter, pk=pk)
return TemplateResponse(
request,
"mailing_lists/newsletter_detail.html",
{"newsletter": newsletter},
)
...@@ -18,7 +18,12 @@ ...@@ -18,7 +18,12 @@
<div class="col-12"> <div class="col-12">
<h1 class="highlight">SciPost News</h1> <h1 class="highlight">SciPost News</h1>
{% if perms.scipost.can_manage_news %} {% if perms.scipost.can_manage_news %}
<p>Go to the <a href="{% url 'news:manage' %}">News management page</a></p> <p>Go to the <a href="{% url 'news:manage' %}">News management page</a></p>
{% endif %}
{% if request.user.is_authenticated %}
<nav>Visit the <a href="{% url "mailing_lists:newsletters" %}">newsletters page</a> to access past newsletters for your subscribed mailing lists.
Go to your <a href="{% url 'scipost:personal_page' %}">personal page</a> to manage your subscriptions.</nav>
{% endif %} {% endif %}
</div> </div>
</div> </div>
......
...@@ -30,7 +30,8 @@ ...@@ -30,7 +30,8 @@
<h3>News management</h3> <h3>News management</h3>
<ul> <ul>
<li><a href="{% url 'news:manage' %}">Manage News Items and Collections</a></li> <li><a href="{% url 'news:manage' %}">Manage News Items and Collections</a></li>
<li><a href="{% url 'mailing_lists:manage' %}">Manage Newsletters and Mailing lists</a></li> <li><a href="{% url 'mailing_lists:manage' %}">Manage Mailing lists</a></li>
<li><a href="{% url 'mailing_lists:newsletters' %}">View Newsletters</a></li>
</ul> </ul>
{% endif %} {% endif %}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment