Skip to content
Snippets Groups Projects
Commit 2bffffab authored by Adrien Fryson's avatar Adrien Fryson
Browse files

clean + nouvelle interface

parent de2c58d4
No related branches found
No related tags found
No related merge requests found
No preview for this file type
...@@ -15,57 +15,43 @@ ...@@ -15,57 +15,43 @@
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
<link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png">
</head> </head>
<body class="bg-gray-100"> <body class="bg-gray-100 flex">
<nav class="bg-white shadow-md"> <aside class="w-64 bg-gray-800 text-white h-screen">
<div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8"> <div class="p-4">
<div class="relative flex items-center justify-between h-16"> <h1 class="text-2xl font-bold">CampusTalk</h1>
<div class="absolute inset-y-0 left-0 flex items-center sm:hidden">
<button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white" aria-controls="mobile-menu" aria-expanded="false">
<span class="sr-only">Open main menu</span>
<svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7" />
</svg>
<svg class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
</div>
<div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
<div class="flex-shrink-0">
<a class="text-xl font-bold text-gray-800" href="#">CampusTalk</a>
</div>
<div class="hidden sm:block sm:ml-auto">
<div class="flex space-x-4">
<a href="<%= request.getContextPath() %>/logout" class="text-red-600 hover:bg-red-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Se déconnecter</a>
</div>
</div>
</div>
</div>
</div>
</nav>
<%
UtilisateurDao udao=new UtilisateurDao(); String email=(String) session.getAttribute("email");
String username=udao.findUtilisateur(email).getNom(); AbonnementDao adao=new AbonnementDao();
List<Abonnement> abonnements = adao.findAbonnements(email);
FilDeDiscussionDAO fdao = new FilDeDiscussionDAO();
%>
<div class="max-w-2xl mx-auto mt-12 p-6 bg-white rounded-lg shadow-md">
<h2 class="text-2xl font-bold mb-4">Bienvenue sur CampusTalk</h2>
<p class="mb-4">Bonjour, <%= username %> !</p>
<p class="mb-4">Vous êtes connecté en tant que <%= email %></p>
<a href="<%= request.getContextPath() %>/listerFil" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Voir les autres fils de discussion</a>
</div>
<div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md">
<h3 class="text-xl font-bold mb-4">Vos abonnements</h3>
<ul class="list-disc pl-5">
<% for (Abonnement abo : abonnements) { %>
<li class="mb-2">
<a href="<%= request.getContextPath() %>/fil?id=<%= abo.getIdFil() %>" class="text-blue-500 hover:underline">
<%= fdao.findById(abo.getIdFil()).getNom() %>
</a>
</li>
<% } %>
</ul>
</div> </div>
<nav class="mt-4">
<a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a>
<a href="<%= request.getContextPath() %>/listerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Autres Fils de Discussion</a>
<a href="<%= request.getContextPath() %>/creerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Créer un Fil</a>
<a href="<%= request.getContextPath() %>/logout" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-red-700">Se déconnecter</a>
</nav>
</aside>
<div class="flex-1 p-6">
<%
UtilisateurDao udao=new UtilisateurDao(); String email=(String) session.getAttribute("email");
String username=udao.findUtilisateur(email).getNom(); AbonnementDao adao=new AbonnementDao();
List<Abonnement> abonnements = adao.findAbonnements(email);
FilDeDiscussionDAO fdao = new FilDeDiscussionDAO();
%>
<div class="max-w-2xl mx-auto mt-12 p-6 bg-white rounded-lg shadow-md">
<h2 class="text-2xl font-bold mb-4">Bienvenue sur CampusTalk</h2>
<p class="mb-4">Bonjour, <%= username %> !</p>
<p class="mb-4">Vous êtes connecté en tant que <%= email %></p>
<a href="<%= request.getContextPath() %>/listerFil" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Voir les autres fils de discussion</a>
</div>
<div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md">
<h3 class="text-xl font-bold mb-4">Vos abonnements</h3>
<ul class="list-disc pl-5">
<% for (Abonnement abo : abonnements) { %>
<li class="mb-2">
<a href="<%= request.getContextPath() %>/fil?id=<%= abo.getIdFil() %>" class="text-blue-500 hover:underline">
<%= fdao.findById(abo.getIdFil()).getNom() %>
</a>
</li>
<% } %>
</ul>
</div>
</div>
</body> </body>
</html> </html>
...@@ -9,61 +9,44 @@ ...@@ -9,61 +9,44 @@
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
<link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png">
</head> </head>
<body class="bg-gray-100"> <body class="bg-gray-100 flex">
<nav class="bg-white shadow-md"> <aside class="w-64 bg-gray-800 text-white h-screen">
<div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8"> <div class="p-4">
<div class="relative flex items-center justify-between h-16"> <h1 class="text-2xl font-bold">CampusTalk</h1>
<div class="absolute inset-y-0 left-0 flex items-center sm:hidden">
<button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white" aria-controls="mobile-menu" aria-expanded="false">
<span class="sr-only">Open main menu</span>
<svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7" />
</svg>
<svg class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
</div>
<div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
<div class="flex-shrink-0">
<a class="text-xl font-bold text-gray-800" href="#">CampusTalk</a>
</div>
<div class="hidden sm:block sm:ml-auto">
<div class="flex space-x-4">
<a href="<%= request.getContextPath() %>/logout" class="text-red-600 hover:bg-red-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Se déconnecter</a>
</div>
</div>
</div>
</div>
</div> </div>
</nav> <nav class="mt-4">
<div class="container mx-auto px-4 mt-4 text-center"> <a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a>
<a href="<%= request.getContextPath() %>/listerFil" class="bg-blue-500 text-white px-4 py-2 rounded">Retour aux fils de discussion</a> <a href="<%= request.getContextPath() %>/listerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Autres Fils de Discussion</a>
</div> <a href="<%= request.getContextPath() %>/creerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Créer un Fil</a>
<a href="<%= request.getContextPath() %>/logout" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-red-700">Se déconnecter</a>
</nav>
</aside>
<div class="flex-1 p-6">
<% if (request.getAttribute("error") != null) { %> <% if (request.getAttribute("error") != null) { %>
<div class="max-w-2xl mx-auto mt-4 p-4 bg-red-100 text-red-700 rounded-lg"> <div class="max-w-2xl mx-auto mt-4 p-4 bg-red-100 text-red-700 rounded-lg">
<%= request.getAttribute("error") %> <%= request.getAttribute("error") %>
</div>
<% } %>
<div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md">
<h1 class="text-2xl font-bold mb-4 text-center">Créer un nouveau fil de discussion</h1>
<form action="creerFil" method="post" class="mt-4">
<div class="mb-4">
<label for="nom" class="block text-gray-700 font-semibold">Nom du fil:</label>
<input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="nom" name="nom" required>
</div>
<div class="mb-4">
<label for="createuremail" class="block text-gray-700 font-semibold">Email du créateur:</label>
<input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="createuremail" name="createuremail" required>
</div> </div>
<div class="mb-4"> <% } %>
<label for="description" class="block text-gray-700 font-semibold">Description:</label>
<textarea class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="description" name="description" rows="3" required></textarea> <div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md">
</div> <h1 class="text-2xl font-bold mb-4 text-center">Créer un nouveau fil de discussion</h1>
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">Créer</button> <form action="creerFil" method="post" class="mt-4">
</form> <div class="mb-4">
<label for="nom" class="block text-gray-700 font-semibold">Nom du fil:</label>
<input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="nom" name="nom" required>
</div>
<div class="mb-4">
<label for="createuremail" class="block text-gray-700 font-semibold">Email du créateur:</label>
<input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="createuremail" name="createuremail" required>
</div>
<div class="mb-4">
<label for="description" class="block text-gray-700 font-semibold">Description:</label>
<textarea class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="description" name="description" rows="3" required></textarea>
</div>
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">Créer</button>
</form>
</div>
</div> </div>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -30,85 +30,98 @@ ...@@ -30,85 +30,98 @@
} }
</style> </style>
</head> </head>
<body class="bg-gray-100 text-gray-900 font-sans"> <body class="bg-gray-100 flex">
<nav class="bg-white shadow-md"> <aside class="w-64 bg-gray-800 text-white h-screen">
<div class="container mx-auto px-4 py-2 flex justify-between items-center"> <div class="p-4">
<a class="text-xl font-bold" href="#">CampusTalk</a> <h1 class="text-2xl font-bold">CampusTalk</h1>
<div>
<a class="bg-red-500 text-white px-4 py-2 rounded" href="<%= request.getContextPath() %>/logout">Se déconnecter</a>
</div>
</div> </div>
</nav> <nav class="mt-4">
<a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a>
<div class="container mx-auto px-4 mt-4 text-center"> <a href="<%= request.getContextPath() %>/listerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Autres Fils de Discussion</a>
<a href="<%= request.getContextPath() %>/accueil" class="bg-blue-500 text-white px-4 py-2 rounded">Retour</a> <a href="<%= request.getContextPath() %>/creerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Créer un Fil</a>
</div> <a href="<%= request.getContextPath() %>/logout" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-red-700">Se déconnecter</a>
</nav>
</aside>
<div class="flex-1 p-6">
<% <%
int id = Integer.parseInt(request.getParameter("id")); int id = Integer.parseInt(request.getParameter("id"));
session.setAttribute("filId", id); session.setAttribute("filId", id);
FilDeDiscussionDAO fddao = new FilDeDiscussionDAO(); FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
FilDeDiscussion fil = fddao.findById(id); FilDeDiscussion fil = fddao.findById(id);
MessageDao mdao = new MessageDao(); MessageDao mdao = new MessageDao();
List<Message> messages = mdao.findByFil(id); List<Message> messages = mdao.findByFil(id);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy 'à' HH:mm"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy 'à' HH:mm");
%> %>
<div class="container mx-auto px-4 mt-8"> <div class="container mx-auto px-4 mt-8">
<div class="bg-white p-6 rounded-lg shadow-lg"> <div class="bg-white p-6 rounded-lg shadow-lg">
<h2 class="text-2xl font-bold mb-4 text-center"><%= fil.getNom() %></h2> <h2 class="text-2xl font-bold mb-4 text-center"><%= fil.getNom() %></h2>
<div class="overflow-y-auto max-h-96" id="messages-box"> <div class="overflow-y-auto max-h-96" id="messages-box">
<% for (Message m : messages) { <% for (Message m : messages) {
LocalDateTime datePublication = m.getDatePublication(); LocalDateTime datePublication = m.getDatePublication();
String formattedDate = (datePublication != null) ? datePublication.format(formatter) : "Date non disponible"; String formattedDate = (datePublication != null) ? datePublication.format(formatter) : "Date non disponible";
%> %>
<div class="flex items-start mb-4 message-container"> <div class="flex items-start mb-4 message-container">
<div class="w-10 h-10 rounded-full overflow-hidden"> <div class="w-10 h-10 rounded-full overflow-hidden">
<img src="https://www.gravatar.com/avatar/<%= m.getAuteurEmail().hashCode() %>?d=identicon&s=40" alt="Avatar"> <img src="https://www.gravatar.com/avatar/<%= m.getAuteurEmail().hashCode() %>?d=identicon&s=40" alt="Avatar">
</div> </div>
<div class="ml-4 bg-gray-200 p-4 rounded-lg"> <div class="ml-4 bg-gray-200 p-4 rounded-lg">
<h4 class="font-bold"><%= mdao.findUserName(m.getAuteurEmail()) %></h4> <h4 class="font-bold"><%= mdao.findUserName(m.getAuteurEmail()) %></h4>
<p class="text-sm text-gray-600"><%= formattedDate %></p> <p class="text-sm text-gray-600"><%= formattedDate %></p>
<p class="mt-2"><%= m.getContenu() %></p> <p class="mt-2"><%= m.getContenu() %></p>
<% if (m.getFileName() != null) { %> <% if (m.getFileName() != null) { %>
<img src="<%= request.getContextPath() %>/uploads/<%= m.getFileName() %>" alt="Image" class="mt-2 message-image"> <img src="<%= request.getContextPath() %>/uploads/<%= m.getFileName() %>" alt="Image" class="mt-2 message-image">
<% } %> <% } %>
<div class="mt-2 flex items-center">
<form action="<%= request.getContextPath() %>/Like" method="post" class="mr-2">
<input type="hidden" name="messageId" value="<%= m.getId() %>">
<button type="submit" class="text-blue-500 hover:text-blue-700">
<% if (m.getLikeCount()) { %>
❤️ Enlever le like
<% } else { %>
🤍 Like
<% } %>
</button>
</form>
</div>
</div>
</div> </div>
<% } %>
</div> </div>
<% } %>
</div>
<div class="mt-6 bg-white p-6 rounded-lg shadow-lg"> <div class="mt-6 bg-white p-6 rounded-lg shadow-lg">
<form action="envoyerMessage" method="post" enctype="multipart/form-data"> <form action="envoyerMessage" method="post" enctype="multipart/form-data">
<div class="mb-4"> <div class="mb-4">
<label for="contenu" class="block text-gray-700 font-semibold">Votre message :</label> <label for="contenu" class="block text-gray-700 font-semibold">Votre message :</label>
<textarea class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="contenu" name="contenu" rows="3" required></textarea> <textarea class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" id="contenu" name="contenu" rows="3" required></textarea>
</div>
<div class="mb-4">
<label for="file" class="block text-gray-700 font-semibold">Ajouter une image :</label>
<div class="flex items-center">
<input type="file" class="hidden" id="file" name="file">
<label for="file" class="cursor-pointer bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors flex items-center">
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"></path>
</svg>
Télécharger
</label>
</div> </div>
</div> <div class="mb-4">
<input type="hidden" name="filId" value="<%= id %>"> <label for="file" class="block text-gray-700 font-semibold">Ajouter une image :</label>
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors">Envoyer</button> <div class="flex items-center">
</form> <input type="file" class="hidden" id="file" name="file">
<label for="file" class="cursor-pointer bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors flex items-center">
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"></path>
</svg>
Télécharger
</label>
</div>
</div>
<input type="hidden" name="filId" value="<%= id %>">
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors">Envoyer</button>
</form>
</div>
</div> </div>
</div> </div>
</div>
<script> <script>
window.onload = function () { window.onload = function () {
let messagesBox = document.getElementById('messages-box'); let messagesBox = document.getElementById('messages-box');
messagesBox.scrollTop = messagesBox.scrollHeight; messagesBox.scrollTop = messagesBox.scrollHeight;
}; };
</script> </script>
</div>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -16,67 +16,48 @@ ...@@ -16,67 +16,48 @@
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
<link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png">
</head> </head>
<body class="bg-gray-100"> <body class="bg-gray-100 flex">
<nav class="bg-white shadow-md"> <aside class="w-64 bg-gray-800 text-white h-screen">
<div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8"> <div class="p-4">
<div class="relative flex items-center justify-between h-16"> <h1 class="text-2xl font-bold">CampusTalk</h1>
<div class="absolute inset-y-0 left-0 flex items-center sm:hidden">
<button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white" aria-controls="mobile-menu" aria-expanded="false">
<span class="sr-only">Open main menu</span>
<svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7" />
</svg>
<svg class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
</div>
<div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
<div class="flex-shrink-0">
<a class="text-xl font-bold text-gray-800" href="#">CampusTalk</a>
</div>
<div class="hidden sm:block sm:ml-auto">
<div class="flex space-x-4">
<a href="<%= request.getContextPath() %>/logout" class="text-red-600 hover:bg-red-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Se déconnecter</a>
</div>
</div>
</div>
</div>
</div> </div>
</nav> <nav class="mt-4">
<a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a>
<div class="container mx-auto px-4 mt-4 text-center"> <a href="<%= request.getContextPath() %>/listerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Autres Fils de Discussion</a>
<a href="<%= request.getContextPath() %>/accueil" class="bg-blue-500 text-white px-4 py-2 rounded">Retour à l'accueil</a> <a href="<%= request.getContextPath() %>/creerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Créer un Fil</a>
<a href="<%= request.getContextPath() %>/creerFil" class="bg-blue-500 text-white px-4 py-2 rounded">Créer un fil de discussion</a> <a href="<%= request.getContextPath() %>/logout" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-red-700">Se déconnecter</a>
</div> </nav>
</aside>
<div class="flex-1 p-6">
<div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md"> <div class="max-w-2xl mx-auto mt-8 p-6 bg-white rounded-lg shadow-md">
<h2 class="text-2xl font-bold mb-4 text-center">Fils de Discussion</h2> <h2 class="text-2xl font-bold mb-4 text-center">Fils de Discussion</h2>
<p class="text-gray-700 mb-4 text-center">(auxquels vous n'êtes pas abonné)</p> <p class="text-gray-700 mb-4 text-center">(auxquels vous n'êtes pas abonné)</p>
<% <%
String email = (String) session.getAttribute("email"); String email = (String) session.getAttribute("email");
AbonnementDao adao = new AbonnementDao(); AbonnementDao adao = new AbonnementDao();
List<Abonnement> abonnements = adao.findAbonnements(email); List<Abonnement> abonnements = adao.findAbonnements(email);
Set<Integer> abonnementsIds = new HashSet<>(); Set<Integer> abonnementsIds = new HashSet<>();
for (Abonnement abonnement : abonnements) { for (Abonnement abonnement : abonnements) {
abonnementsIds.add(abonnement.getIdFil()); abonnementsIds.add(abonnement.getIdFil());
} }
FilDeDiscussionDAO fddao = new FilDeDiscussionDAO(); FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
for (FilDeDiscussion f : fddao.findAll()) { for (FilDeDiscussion f : fddao.findAll()) {
if (!abonnementsIds.contains(f.getId())) { if (!abonnementsIds.contains(f.getId())) {
%> %>
<div class="mb-4 p-4 bg-gray-100 rounded-lg shadow-md"> <div class="mb-4 p-4 bg-gray-100 rounded-lg shadow-md">
<h4 class="font-bold text-lg"><%= f.getNom() %></h4> <h4 class="font-bold text-lg"><%= f.getNom() %></h4>
<% if (f.getDescription() != null) { %> <% if (f.getDescription() != null) { %>
<p class="text-gray-700"><%= f.getDescription() %></p> <p class="text-gray-700"><%= f.getDescription() %></p>
<% } %> <% } %>
<a href="<%= request.getContextPath() %>/suivreFil?id=<%= f.getId() %>" class="bg-blue-500 text-white px-4 py-2 rounded mt-2 inline-block">Suivre</a> <a href="<%= request.getContextPath() %>/suivreFil?id=<%= f.getId() %>" class="bg-blue-500 text-white px-4 py-2 rounded mt-2 inline-block">Suivre</a>
</div> </div>
<% <%
}
} }
} %>
%> </div>
</div> </div>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -14,41 +14,43 @@ ...@@ -14,41 +14,43 @@
} }
</style> </style>
</head> </head>
<body class="bg-gray-100"> <body class="bg-gray-100 flex">
<nav class="bg-white shadow-md"> <aside class="w-64 bg-gray-800 text-white h-screen">
<div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8"> <div class="p-4">
<div class="relative flex items-center justify-between h-16"> <h1 class="text-2xl font-bold">CampusTalk</h1>
<div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
<div class="flex-shrink-0">
<a class="text-xl font-bold text-gray-800" href="#">CampusTalk</a>
</div>
</div>
</div>
</div> </div>
</nav> <nav class="mt-4">
<div class="max-w-md mx-auto mt-12 p-6 bg-white rounded-lg shadow-md"> <a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a>
<h2 class="text-2xl font-bold mb-4 text-center">Bienvenue sur CampusTalk</h2> <a href="<%= request.getContextPath() %>/listerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Autres Fils de Discussion</a>
<form action="login" method="post"> <a href="<%= request.getContextPath() %>/creerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Créer un Fil</a>
<% <a href="<%= request.getContextPath() %>/logout" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-red-700">Se déconnecter</a>
request.getAttribute("error"); </nav>
if (request.getAttribute("error") != null) { </aside>
%> <div class="flex-1 p-6">
<div class="bg-red-100 text-red-700 p-4 rounded-lg mb-4"> <div class="max-w-md mx-auto mt-12 p-6 bg-white rounded-lg shadow-md">
<%= request.getAttribute("error") %> <h2 class="text-2xl font-bold mb-4 text-center">Bienvenue sur CampusTalk</h2>
</div> <form action="login" method="post">
<% request.removeAttribute("error"); } %> <%
<div class="mb-4"> request.getAttribute("error");
<label for="email" class="block text-gray-700 font-semibold">Adresse e-mail</label> if (request.getAttribute("error") != null) {
<input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="email" id="email" placeholder="Entrez votre e-mail" required> %>
</div> <div class="bg-red-100 text-red-700 p-4 rounded-lg mb-4">
<div class="mb-4"> <%= request.getAttribute("error") %>
<label for="motdepasse" class="block text-gray-700 font-semibold">Mot de passe</label> </div>
<input type="password" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="motdepasse" id="motdepasse" placeholder="Entrez votre mot de passe" required> <% request.removeAttribute("error"); } %>
<div class="mb-4">
<label for="email" class="block text-gray-700 font-semibold">Adresse e-mail</label>
<input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="email" id="email" placeholder="Entrez votre e-mail" required>
</div>
<div class="mb-4">
<label for="motdepasse" class="block text-gray-700 font-semibold">Mot de passe</label>
<input type="password" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="motdepasse" id="motdepasse" placeholder="Entrez votre mot de passe" required>
</div>
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">Se connecter</button>
</form>
<div class="text-center mt-3">
<p>Vous n'avez pas de compte ? <a href="<%= request.getContextPath() %>/register" class="text-blue-500 hover:underline">S'inscrire</a></p>
</div> </div>
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">Se connecter</button>
</form>
<div class="text-center mt-3">
<p>Vous n'avez pas de compte ? <a href="<%= request.getContextPath() %>/register" class="text-blue-500 hover:underline">S'inscrire</a></p>
</div> </div>
</div> </div>
</body> </body>
......
...@@ -9,42 +9,44 @@ ...@@ -9,42 +9,44 @@
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
<link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png"> <link rel="shortcut icon" href="https://www.shareicon.net/data/2016/07/10/119195_chat_512x512.png">
</head> </head>
<body class="bg-gray-100"> <body class="bg-gray-100 flex">
<nav class="bg-white shadow-md"> <aside class="w-64 bg-gray-800 text-white h-screen">
<div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8"> <div class="p-4">
<div class="relative flex items-center justify-between h-16"> <h1 class="text-2xl font-bold">CampusTalk</h1>
<div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
<div class="flex-shrink-0">
<a class="text-xl font-bold text-gray-800" href="#">CampusTalk</a>
</div>
</div>
</div>
</div> </div>
</nav> <nav class="mt-4">
<div class="max-w-md mx-auto mt-12 p-6 bg-white rounded-lg shadow-md"> <a href="<%= request.getContextPath() %>/accueil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Accueil</a>
<h2 class="text-2xl font-bold mb-4 text-center">Inscription</h2> <a href="<%= request.getContextPath() %>/listerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Autres Fils de Discussion</a>
<% if (request.getAttribute("error") != null) { %> <a href="<%= request.getContextPath() %>/creerFil" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-gray-700">Créer un Fil</a>
<div class="bg-red-100 text-red-700 p-4 rounded-lg mb-4"> <a href="<%= request.getContextPath() %>/logout" class="block py-2.5 px-4 rounded transition duration-200 hover:bg-red-700">Se déconnecter</a>
<%= request.getAttribute("error") %> </nav>
</div> </aside>
<% request.removeAttribute("error"); } %> <div class="flex-1 p-6">
<form action="register" method="post"> <div class="max-w-md mx-auto mt-12 p-6 bg-white rounded-lg shadow-md">
<div class="mb-4"> <h2 class="text-2xl font-bold mb-4 text-center">Inscription</h2>
<label for="nom" class="block text-gray-700 font-semibold">Nom</label> <% if (request.getAttribute("error") != null) { %>
<input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="nom" id="nom" placeholder="Entrez votre nom" required> <div class="bg-red-100 text-red-700 p-4 rounded-lg mb-4">
</div> <%= request.getAttribute("error") %>
<div class="mb-4"> </div>
<label for="email" class="block text-gray-700 font-semibold">Adresse e-mail</label> <% request.removeAttribute("error"); } %>
<input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="email" id="email" placeholder="Entrez votre e-mail" required> <form action="register" method="post">
</div> <div class="mb-4">
<div class="mb-4"> <label for="nom" class="block text-gray-700 font-semibold">Nom</label>
<label for="motdepasse" class="block text-gray-700 font-semibold">Mot de passe</label> <input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="nom" id="nom" placeholder="Entrez votre nom" required>
<input type="password" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="motdepasse" id="motdepasse" placeholder="Choisissez un mot de passe" required> </div>
<div class="mb-4">
<label for="email" class="block text-gray-700 font-semibold">Adresse e-mail</label>
<input type="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="email" id="email" placeholder="Entrez votre e-mail" required>
</div>
<div class="mb-4">
<label for="motdepasse" class="block text-gray-700 font-semibold">Mot de passe</label>
<input type="password" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400" name="motdepasse" id="motdepasse" placeholder="Choisissez un mot de passe" required>
</div>
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">S'inscrire</button>
</form>
<div class="text-center mt-3">
<p>Vous avez déjà un compte ? <a href="<%= request.getContextPath() %>/login" class="text-blue-500 hover:underline">Se connecter</a></p>
</div> </div>
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors w-full">S'inscrire</button>
</form>
<div class="text-center mt-3">
<p>Vous avez déjà un compte ? <a href="<%= request.getContextPath() %>/login" class="text-blue-500 hover:underline">Se connecter</a></p>
</div> </div>
</div> </div>
</body> </body>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment