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

modification d'un fil

parent 0d2ba962
No related branches found
No related tags found
No related merge requests found
package controleur;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import modele.FilDeDiscussionDAO;
@WebServlet("/deleteFil")
public class DeleteFil extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
if (req.getSession(false) == null || req.getSession().getAttribute("email") == null) {
res.sendRedirect(req.getContextPath() + "/login");
return;
}
int id = Integer.parseInt(req.getParameter("id"));
FilDeDiscussionDAO filDao = new FilDeDiscussionDAO();
if (filDao.delete(id)) {
req.setAttribute("success", "Fil de discussion supprimé.");
} else {
req.setAttribute("error", "Erreur lors de la suppression du fil de discussion.");
}
res.sendRedirect(req.getContextPath() + "/listerFil");
}
}
......@@ -9,8 +9,8 @@ import jakarta.servlet.http.HttpServletResponse;
import modele.Message;
import modele.MessageDao;
@WebServlet("/delete")
public class Delete extends HttpServlet {
@WebServlet("/deleteMessage")
public class DeleteMessage extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
if (req.getSession(false) == null || req.getSession().getAttribute("email") == null) {
res.sendRedirect(req.getContextPath() + "/login");
......
......@@ -23,6 +23,7 @@ public class Fil extends HttpServlet {
return;
}
req.setAttribute("id", id);
req.getSession().setAttribute("idFil", id);
req.getRequestDispatcher("/WEB-INF/vue/fil.jsp").forward(req, res);
}
}
package controleur;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletException;
import java.io.IOException;
@WebServlet("/menuFil")
public class MenuFil extends HttpServlet {
public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
if (req.getSession(false) == null || req.getSession().getAttribute("email") == null) {
res.sendRedirect(req.getContextPath() + "/login");
return;
}
req.getRequestDispatcher("/WEB-INF/vue/menuFil.jsp").forward(req, res);
}
}
package controleur;
import java.io.File;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.MultipartConfig;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.Part;
import modele.FilDeDiscussion;
import modele.FilDeDiscussionDAO;
import org.apache.commons.text.StringEscapeUtils;
@WebServlet("/modifierFil")
@MultipartConfig(
maxFileSize = 1024 * 1024 * 5,
maxRequestSize = 1024 * 1024 * 10,
fileSizeThreshold = 0
)
public class ModifierFil extends HttpServlet {
private static final String UPLOAD_DIR = "uploads";
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
if (req.getSession(false) == null || req.getSession().getAttribute("email") == null) {
res.sendRedirect(req.getContextPath() + "/login");
return;
}
if (req.getSession().getAttribute("idFil") == null) {
res.sendRedirect(req.getContextPath() + "/listerFil");
return;
}
int id = Integer.parseInt(req.getSession().getAttribute("idFil").toString());
String nom = StringEscapeUtils.escapeHtml4(req.getParameter("nom"));
String description = StringEscapeUtils.escapeHtml4(req.getParameter("description"));
Part filePart = req.getPart("file");
String fileName = null;
if (filePart != null && filePart.getSize() > 0) {
fileName = getFileName(filePart);
String uploadPath = getServletContext().getRealPath("") + File.separator + UPLOAD_DIR;
File uploadDir = new File(uploadPath);
if (!uploadDir.exists()) {
uploadDir.mkdir();
}
filePart.write(uploadPath + File.separator + fileName);
}
FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
FilDeDiscussion fil = fddao.findById(id);
fil.setNom(nom);
fil.setDescription(description);
if (fileName != null) {
fil.setLogo(fileName);
}
fddao.update(fil);
res.sendRedirect(req.getContextPath() + "/fil?id=" + id);
}
private String getFileName(Part part) {
String contentDisposition = part.getHeader("content-disposition");
for (String cd : contentDisposition.split(";")) {
if (cd.trim().startsWith("filename")) {
return cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
}
}
return null;
}
}
......@@ -64,13 +64,30 @@ public class FilDeDiscussionDAO {
return filsDeDiscussion;
}
public void delete(int id) {
public boolean delete(int id) {
try (Connection con = DS.instance.getConnection()) {
PreparedStatement pstmt = con.prepareStatement("DELETE FROM filDeDiscussion WHERE id = ?");
pstmt.setInt(1, id);
int modif = pstmt.executeUpdate();
return modif > 0;
} catch (Exception e) {
System.err.println(e.getMessage());
}
return false;
}
public void update(FilDeDiscussion filDeDiscussion) {
try (Connection con = DS.instance.getConnection()) {
PreparedStatement pstmt = con
.prepareStatement("UPDATE filDeDiscussion SET nom = ?, description = ?, logo = ? WHERE id = ?");
pstmt.setString(1, filDeDiscussion.getNom());
pstmt.setString(2, filDeDiscussion.getDescription());
pstmt.setString(3, filDeDiscussion.getLogo());
pstmt.setInt(4, filDeDiscussion.getId());
pstmt.executeUpdate();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
......@@ -43,9 +43,11 @@
<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 flex flex-col">
<%
String email = (String) session.getAttribute("email");
int id = Integer.parseInt(request.getParameter("id"));
session.setAttribute("filId", id);
FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
......@@ -55,6 +57,14 @@
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy 'à' HH:mm");
%>
<% if (email.equals(fil.getCreateurEmail())) { %>
<div class="flex justify-end">
<form action="<%= request.getContextPath() %>/menuFil" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="<%= fil.getId() %>">
<button type="submit" class="bg-yellow-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-yellow-600 transition-colors">Modifier le fil</button>
</form>
</div>
<% } %>
<div class="container mx-auto px-4 mt-8">
<div class="bg-gray-800 p-6 rounded-lg shadow-lg">
<h2 class="text-2xl font-bold mb-4 text-center"><%= fil.getNom() %></h2>
......@@ -87,7 +97,7 @@
</form>
</div>
<% if (session.getAttribute("email").equals(m.getAuteurEmail())) { %>
<form action="<%= request.getContextPath() %>/delete" method="post" class="mt-2">
<form action="<%= request.getContextPath() %>/deleteMessage" method="post" class="mt-2">
<input type="hidden" name="messageId" value="<%= m.getId() %>">
<button type="submit" class="text-red-500 hover:text-red-700">delete</button>
</form>
......
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="modele.FilDeDiscussion" %>
<%@ page import="modele.FilDeDiscussionDAO" %>
<%
int id = Integer.parseInt(session.getAttribute("filId").toString());
FilDeDiscussionDAO fddao = new FilDeDiscussionDAO();
FilDeDiscussion fil = fddao.findById(id);
%>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modifier Fil de Discussion</title>
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
<link rel="shortcut icon" href="<%= request.getContextPath() %>/images/logo.png">
</head>
<body class="bg-gray-900 text-white flex">
<aside class="w-64 bg-gray-800 text-white h-screen flex flex-col fixed">
<div class="p-4 text-center">
<img src="<%= request.getContextPath() %>/images/logo.png" alt="CampusTalk Logo" class="w-16 h-16 mx-auto">
<h1 class="text-2xl font-bold mt-4">CampusTalk</h1>
</div>
<nav class="mt-4 flex-grow">
<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">
<div class="max-w-2xl mx-auto mt-8 p-6 bg-gray-800 rounded-lg shadow-lg">
<h2 class="text-2xl font-bold mb-4 text-center">Modifier le Fil de Discussion</h2>
<form action="<%= request.getContextPath() %>/modifierFil" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="<%= fil.getId() %>">
<div class="mb-4">
<label for="nom" class="block text-gray-300 font-semibold">Nom :</label>
<input type="text" id="nom" name="nom" value="<%= fil.getNom() %>" class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" required>
</div>
<div class="mb-4">
<label for="description" class="block text-gray-300 font-semibold">Description :</label>
<textarea id="description" name="description" class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white" rows="3" required><%= fil.getDescription() %></textarea>
</div>
<div class="mb-4">
<label for="file" class="block text-gray-300 font-semibold">Logo :</label>
<input type="file" id="file" name="file" class="w-full p-3 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-400 bg-gray-700 text-white">
<% if (fil.getLogo() != null) { %>
<img src="<%= request.getContextPath() %>/uploads/<%= fil.getLogo() %>" alt="Logo" class="mt-2 message-image">
<% } %>
</div>
<div class="flex justify-between">
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-blue-600 transition-colors">Sauvegarder</button>
<form action="<%= request.getContextPath() %>/deleteFil" method="post">
<input type="hidden" name="id" value="<%= fil.getId() %>">
<button type="submit" class="bg-red-500 text-white px-4 py-2 rounded-lg shadow-md hover:bg-red-600 transition-colors">Supprimer</button>
</form>
</div>
</form>
</div>
</div>
</body>
</html>
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