feat(newsletter): add newsletters listing and detail pages

* Created a newsletters table and added insertion logic during newsletter send.
* Added a /newsletters route to display a list of sent newsletters.
* Implemented a /newsletter/<int:newsletter_id> route for detailed view.
* Developed new templates with navigation, including unsubscribe links.
* Enhanced front-end styling and layout for newsletter pages.
This commit is contained in:
Blake Ridgway 2025-02-18 20:07:30 -06:00
parent e3ae855a0b
commit db5d631b0d
6 changed files with 186 additions and 6 deletions

View file

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>RideAware - Newsletters</title>
<link rel="stylesheet" href="/static/css/styles.css">
</head>
<body>
<header>
<nav>
<a href="/">
<span>Ride</span><span style="color: #1e4e9c;">Aware</span>
</a>
<a href="/newsletters">Newsletters</a>
</nav>
</header>
<main>
<h1>RideAware Newsletters</h1>
{% if newsletters %}
{% for nl in newsletters %}
<div class="newsletter">
<h2>
<a href="{{ url_for('newsletter_detail', newsletter_id=nl.id) }}">{{ nl.subject }}</a>
</h2>
<p class="newsletter-time">Sent on: {{ nl.sent_at }}</p>
<div class="newsletter-body">
{{ nl.body | safe | truncate(200) }}
</div>
<a href="{{ url_for('newsletter_detail', newsletter_id=nl.id) }}" class="read-more">Read More</a>
</div>
{% endfor %}
{% else %}
<p>No newsletters to display yet.</p>
{% endif %}
</main>
<footer class="fixed-footer">
<p>© 2025 RideAware. All rights reserved.</p>
</footer>
<script src="/static/js/main.js"></script>
</body>
</html>