Skip to content
Snippets Groups Projects
Commit 8e25084e authored by Adrien's avatar Adrien
Browse files

amelioration du script

parent ac1599f4
No related branches found
No related tags found
No related merge requests found
File deleted
File deleted
File deleted
......@@ -35,45 +35,47 @@
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">CampusTalk</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link btn btn-danger text-white" href="<%= request.getContextPath() %>/logout">Se déconnecter</a>
<a class="nav-link btn btn-danger text-white" href="<%= request.getContextPath() %>/logout">Se
déconnecter</a>
</li>
</ul>
</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);
<% 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="welcome-container text-center">
<h2>Bienvenue sur CampusTalk</h2>
<p>Bonjour, <%= username %> !</p>
<p>Vous êtes connecté en tant que <%= email %></p>
<a href="<%= request.getContextPath() %>/listerFil" class="btn btn-primary mt-4">Voir les autres fils de discussion</a>
</div>
<div class="welcome-container mt-4">
<h3>Vos abonnements</h3>
<ul class="list-group">
<% for (Abonnement abo : abonnements) { %>
<li class="list-group-item">
<a href="<%= request.getContextPath() %>/fil?id=<%= abo.getIdFil() %>"><%= fdao.findById(abo.getIdFil()).getNom() %></a>
</li>
<% } %>
</ul>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
%>
<div class="welcome-container text-center">
<h2>Bienvenue sur CampusTalk</h2>
<p>Bonjour, <%= username %> !</p>
<p>Vous êtes connecté en tant que <%= email %>
</p>
<a href="<%= request.getContextPath() %>/listerFil" class="btn btn-primary mt-4">Voir les autres fils de
discussion</a>
</div>
<div class="welcome-container mt-4">
<h3>Vos abonnements</h3>
<ul class="list-group">
<% for (Abonnement abo : abonnements) { %>
<li class="list-group-item">
<a href="<%= request.getContextPath() %>/fil?id=<%= abo.getIdFil() %>">
<%= fdao.findById(abo.getIdFil()).getNom() %>
</a>
</li>
<% } %>
</ul>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -30,49 +30,49 @@
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">CampusTalk</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link btn btn-danger text-white" href="<%= request.getContextPath() %>/logout">Se déconnecter</a>
<a class="nav-link btn btn-danger text-white" href="<%= request.getContextPath() %>/logout">Se
déconnecter</a>
</li>
</ul>
</div>
</nav>
<div class="container">
<div class="text-center mb-4">
<a href="<%= request.getContextPath() %>/listerFil" class="btn btn-primary">Retour aux fils de discussion</a>
<a href="<%= request.getContextPath() %>/listerFil" class="btn btn-primary">Retour aux fils de
discussion</a>
</div>
<%
if (request.getAttribute("error") != null) {
%>
<% if (request.getAttribute("error") !=null) { %>
<div class="alert alert-danger" role="alert">
<%= request.getAttribute("error") %>
</div>
<%
}
%>
<% } %>
<div class="form-container">
<h1 class="text-center">Créer un nouveau fil de discussion</h1>
<form action="creerFil" method="post" class="mt-4">
<div class="form-group">
<label for="nom">Nom du fil:</label>
<input type="text" class="form-control" id="nom" name="nom" required>
<div class="form-container">
<h1 class="text-center">Créer un nouveau fil de discussion</h1>
<form action="creerFil" method="post" class="mt-4">
<div class="form-group">
<label for="nom">Nom du fil:</label>
<input type="text" class="form-control" id="nom" name="nom" required>
</div>
<div class="form-group">
<label for="createuremail">Email du créateur:</label>
<input type="email" class="form-control" id="createuremail" name="createuremail" required>
</div>
<div class="form-group">
<label for="description">Description:</label>
<textarea class="form-control" id="description" name="description" rows="3"
required></textarea>
<button type="submit" class="btn btn-primary btn-block">Créer</button>
</form>
</div>
<div class="form-group">
<label for="createuremail">Email du créateur:</label>
<input type="email" class="form-control" id="createuremail" name="createuremail" required>
</div>
<div class="form-group">
<label for="description">Description:</label>
<textarea class="form-control" id="description" name="description" rows="3" required></textarea>
<button type="submit" class="btn btn-primary btn-block">Créer</button>
</form>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
......
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page language="java" contentType="text/html; ch</div>arset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="modele.FilDeDiscussion" %>
<%@ page import="modele.FilDeDiscussionDAO" %>
<%@ page import="modele.Message" %>
......@@ -107,13 +107,15 @@
<body>
<nav class="navbar navbar-expand-lg">
<a class="navbar-brand" href="#">CampusTalk</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link btn btn-danger text-white" href="<%= request.getContextPath() %>/logout">Se déconnecter</a>
<a class="nav-link btn btn-danger text-white" href="<%= request.getContextPath() %>/logout">Se
déconnecter</a>
</li>
</ul>
</div>
......@@ -122,63 +124,69 @@
<a href="<%= request.getContextPath() %>/listerFil" class="btn btn-primary">Retour</a>
</div>
<%
int id = Integer.parseInt(request.getParameter("id"));
session.setAttribute("filId", id);
FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
FilDeDiscussion fil = fddao.findById(id);
MessageDao mdao = new MessageDao();
<% int id=Integer.parseInt(request.getParameter("id")); session.setAttribute("filId", id); FilDeDiscussionDAO
fddao=new FilDeDiscussionDAO(); FilDeDiscussion fil=fddao.findById(id); MessageDao mdao=new MessageDao();
List<Message> messages = mdao.findByFil(id);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy 'à' HH:mm");
%>
%>
<div class="thread-container">
<h2 class="text-center"><%= fil.getNom() %></h2>
<div class="messages-box" id="messages-box">
<% for (Message m : messages) {
LocalDateTime datePublication = m.getDatePublication();
String formattedDate = (datePublication != null) ? datePublication.format(formatter) : "Date non disponible";
%>
<div class="message-item">
<div class="avatar">
<img src="https://www.gravatar.com/avatar/<%= m.getAuteurEmail().hashCode() %>?d=identicon&s=40" alt="Avatar">
</div>
<div class="message-content">
<h4><%= mdao.findUserName(m.getAuteurEmail()) %></h4>
<p class="message-date"><%= formattedDate %></p>
<p><%= m.getContenu() %></p>
<% if (m.getFileName() != null) { %>
<img src="<%= request.getContextPath() %>/uploads/<%= m.getFileName() %>" alt="Image" class="img-fluid mt-2">
<div class="thread-container">
<h2 class="text-center">
<%= fil.getNom() %>
</h2>
<div class="messages-box" id="messages-box">
<% for (Message m : messages) { LocalDateTime datePublication=m.getDatePublication(); String
formattedDate=(datePublication !=null) ? datePublication.format(formatter) : "Date non disponible" ;
%>
<div class="message-item">
<div class="avatar">
<img src="https://www.gravatar.com/avatar/<%= m.getAuteurEmail().hashCode() %>?d=identicon&s=40"
alt="Avatar">
</div>
<div class="message-content">
<h4>
<%= mdao.findUserName(m.getAuteurEmail()) %>
</h4>
<p class="message-date">
<%= formattedDate %>
</p>
<p>
<%= m.getContenu() %>
</p>
<% if (m.getFileName() !=null) { %>
<img src="<%= request.getContextPath() %>/uploads/<%= m.getFileName() %>" alt="Image"
class="img-fluid mt-2">
<% } %>
</div>
</div>
<% } %>
</div>
</div>
<% } %>
</div>
<div class="message-form">
<form action="envoyerMessage" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="contenu">Votre message :</label>
<textarea class="form-control" id="contenu" name="contenu" rows="3" required></textarea>
</div>
<div class="form-group">
<label for="file">Ajouter une image :</label>
<input type="file" class="form-control-file" id="file" name="file">
</div>
<input type="hidden" name="filId" value="<%= id %>">
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
<div class="message-form">
<form action="envoyerMessage" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="contenu">Votre message :</label>
<textarea class="form-control" id="contenu" name="contenu" rows="3" required></textarea>
</div>
<div class="form-group">
<label for="file">Ajouter une image :</label>
<input type="file" class="form-control-file" id="file" name="file">
</div>
<input type="hidden" name="filId" value="<%= id %>">
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script>
window.onload = function() {
let messagesBox = document.getElementById('messages-box');
messagesBox.scrollTop = messagesBox.scrollHeight;
};
</script>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script>
window.onload = function () {
let messagesBox = document.getElementById('messages-box');
messagesBox.scrollTop = messagesBox.scrollHeight;
};
</script>
</body>
</html>
\ No newline at end of file
......@@ -49,13 +49,15 @@
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">CampusTalk</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link btn btn-danger text-white" href="<%= request.getContextPath() %>/logout">Se déconnecter</a>
<a class="nav-link btn btn-danger text-white" href="<%= request.getContextPath() %>/logout">Se
déconnecter</a>
</li>
</ul>
</div>
......@@ -67,9 +69,7 @@
</div>
<div class="thread-container">
<h2 class="text-center">Fils de Discussion</h2>
<%
String email = (String) session.getAttribute("email");
AbonnementDao adao = new AbonnementDao();
<% String email=(String) session.getAttribute("email"); AbonnementDao adao=new AbonnementDao();
List<Abonnement> abonnements = adao.findAbonnements(email);
Set<Integer> abonnementsIds = new HashSet<>();
for (Abonnement abonnement : abonnements) {
......@@ -79,20 +79,22 @@
FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
for (FilDeDiscussion f : fddao.findAll()) {
if (!abonnementsIds.contains(f.getId())) {
%>
<div class="thread-item">
<h4 class="d-flex justify-content-between align-items-center">
<p class="thread-name mb-0"><%= f.getNom() %></p>
<a href="<%= request.getContextPath() %>/suivreFil?id=<%= f.getId() %>" class="btn btn-primary btn-sm">Suivre</a>
</h4>
<% if (f.getDescription() != null) { %>
<p class="thread-description"><%= f.getDescription() %></p>
<% } %>
</div>
<%
}
}
%>
%>
<div class="thread-item">
<h4 class="d-flex justify-content-between align-items-center">
<p class="thread-name mb-0">
<%= f.getNom() %>
</p>
<a href="<%= request.getContextPath() %>/suivreFil?id=<%= f.getId() %>"
class="btn btn-primary btn-sm">Suivre</a>
</h4>
<% if (f.getDescription() !=null) { %>
<p class="thread-description">
<%= f.getDescription() %>
</p>
<% } %>
</div>
<% } } %>
</div>
</div>
......
......@@ -29,7 +29,8 @@
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">CampusTalk</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</nav>
......@@ -38,11 +39,13 @@
<form action="login" method="post">
<div class="form-group">
<label for="email">Adresse e-mail</label>
<input type="email" class="form-control" name="email" id="email" placeholder="Entrez votre e-mail" required>
<input type="email" class="form-control" name="email" id="email" placeholder="Entrez votre e-mail"
required>
</div>
<div class="form-group">
<label for="motdepasse">Mot de passe</label>
<input type="password" class="form-control" name="motdepasse" id="motdepasse" placeholder="Entrez votre mot de passe" required>
<input type="password" class="form-control" name="motdepasse" id="motdepasse"
placeholder="Entrez votre mot de passe" required>
</div>
<button type="submit" class="btn btn-primary btn-block">Se connecter</button>
</form>
......
......@@ -29,36 +29,39 @@
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">CampusTalk</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</nav>
<div class="register-container">
<h2 class="text-center">Inscription</h2>
<% if (request.getAttribute("error") != null) { %>
<% if (request.getAttribute("error") !=null) { %>
<div class="alert alert-danger" role="alert">
<%= request.getAttribute("error") %>
</div>
<% request.removeAttribute("error");
} %>
<form action="register" method="post">
<div class="form-group">
<label for="nom">Nom</label>
<input type="text" class="form-control" name="nom" id="nom" placeholder="Entrez votre nom" required>
</div>
<div class="form-group">
<label for="email">Adresse e-mail</label>
<input type="email" class="form-control" name="email" id="email" placeholder="Entrez votre e-mail" required>
</div>
<div class="form-group">
<label for="motdepasse">Mot de passe</label>
<input type="password" class="form-control" name="motdepasse" id="motdepasse" placeholder="Choisissez un mot de passe" required>
</div>
<button type="submit" class="btn btn-primary btn-block">S'inscrire</button>
</form>
<div class="text-center mt-3">
<p>Vous avez déjà un compte ? <a href="<%= request.getContextPath() %>/login">Se connecter</a></p>
</div>
<% request.removeAttribute("error"); } %>
<form action="register" method="post">
<div class="form-group">
<label for="nom">Nom</label>
<input type="text" class="form-control" name="nom" id="nom" placeholder="Entrez votre nom"
required>
</div>
<div class="form-group">
<label for="email">Adresse e-mail</label>
<input type="email" class="form-control" name="email" id="email"
placeholder="Entrez votre e-mail" required>
</div>
<div class="form-group">
<label for="motdepasse">Mot de passe</label>
<input type="password" class="form-control" name="motdepasse" id="motdepasse"
placeholder="Choisissez un mot de passe" required>
</div>
<button type="submit" class="btn btn-primary btn-block">S'inscrire</button>
</form>
<div class="text-center mt-3">
<p>Vous avez déjà un compte ? <a href="<%= request.getContextPath() %>/login">Se connecter</a></p>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
......
......@@ -47,17 +47,38 @@ CREATE TABLE Abonnement (
ON DELETE CASCADE
);
-- Insertion des utilisateurs
INSERT INTO Utilisateur (email, nom, motDePasse)
VALUES ('utilisateur1@exemple.com', 'Utilisateur 1', MD5('motdepasse123'));
INSERT INTO FilDeDiscussion (nom, createurEmail)
VALUES ('Discussion Générale', 'utilisateur1@exemple.com');
INSERT INTO Message (contenu, filId, auteurEmail)
VALUES ('Bonjour, ceci est mon premier message !', 1, 'utilisateur1@exemple.com');
VALUES
('utilisateur1@exemple.com', 'Utilisateur 1', MD5('motdepasse123')),
('utilisateur2@exemple.com', 'Utilisateur 2', MD5('motdepasse123')),
('utilisateur3@exemple.com', 'Utilisateur 3', MD5('motdepasse123'));
-- Insertion des fils de discussion
INSERT INTO FilDeDiscussion (nom, createurEmail, description)
VALUES
('Discussion Générale', 'utilisateur1@exemple.com', 'Un fil pour discuter de tout et de rien.'),
('Tech Talk', 'utilisateur2@exemple.com', 'Discussions sur les dernières technologies.'),
('Sports', 'utilisateur3@exemple.com', 'Discussions sur les sports et les événements sportifs.');
-- Insertion des messages
INSERT INTO Message (contenu, filId, auteurEmail, fileName) VALUES
('Bonjour, ceci est mon premier message !', 1, 'utilisateur1@exemple.com', NULL),
('Quelquun a des nouvelles sur la dernière mise à jour de Java ?', 2, 'utilisateur2@exemple.com', NULL),
('Qui a regardé le match hier soir ?', 3, 'utilisateur3@exemple.com', NULL),
('Bienvenue à tous dans ce fil de discussion !', 1, 'utilisateur2@exemple.com', NULL),
('Je pense que la nouvelle version de Python est géniale.', 2, 'utilisateur3@exemple.com', NULL),
('Le match était incroyable, quelle performance !', 3, 'utilisateur1@exemple.com', NULL);
-- Insertion des abonnements
INSERT INTO Abonnement (utilisateurEmail, filId)
VALUES ('utilisateur1@exemple.com', 1);
VALUES
('utilisateur1@exemple.com', 1),
('utilisateur1@exemple.com', 2),
('utilisateur2@exemple.com', 1),
('utilisateur2@exemple.com', 3),
('utilisateur3@exemple.com', 2),
('utilisateur3@exemple.com', 3);
-- Lister tous les utilisateurs :
......
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