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:
		
							parent
							
								
									e3ae855a0b
								
							
						
					
					
						commit
						db5d631b0d
					
				
					 6 changed files with 186 additions and 6 deletions
				
			
		
							
								
								
									
										43
									
								
								templates/newsletters.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								templates/newsletters.html
									
										
									
									
									
										Normal 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> | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Blake Ridgway
						Blake Ridgway