-
Giorgio Utzeri authoredGiorgio Utzeri authored
menu.jsp 8.11 KiB
<%@ page import="java.util.List" %>
<%@ page import="dto.Fil" %>
<%@ page import="dto.Message" %>
<%@ page import="dto.Utilisateur" %>
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%@ page import="java.util.Map" %>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LilleConnect</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="css/styleMenu.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css">
<link href="css/styleMenu2.css" rel="stylesheet">
<meta http-equiv="refresh" content="10">
<link rel="icon" href="images/LilleConnect.png" type="image/png">
</head>
<body>
<div class="container">
<%
List<Fil> fils = (List<Fil>) request.getAttribute("fils");
Utilisateur utilisateur = (Utilisateur) session.getAttribute("utilisateur");
boolean isUserInFil = fils != null && !fils.isEmpty();
%>
<!-- Bouton hamburger visible sur mobile -->
<button class="navbar-toggler d-lg-none" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMenu" aria-controls="navbarMenu" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Navbar mobile (visible quand on clique sur le hamburger) -->
<div class="collapse navbar-collapse d-lg-none" id="navbarMenu">
<div class="sidebar">
<div class="d-flex align-items-center justify-content-between w-100">
<a href="UserInfo" class="d-flex align-items-center gap-3 fs-4 text-decoration-none text-light">
<i class="bi bi-person"></i>
<span><%= utilisateur.getPrenom() + " " + utilisateur.getNom() %></span>
</a>
<a href="LogoutServlet" class="text-danger fs-3">
<i class="bi bi-box-arrow-right"></i>
</a>
</div>
<div class="border-top border-3 border-primary my-4"></div>
<h3>Vos fils de discussion</h3>
<div class="separator"></div>
<% if (isUserInFil) { %>
<ul class="list-group">
<% for (Fil fil : fils) { %>
<li class="list-group-item d-flex justify-content-center align-items-center text-white border-0" style="background-color: #00072D;">
<a href="Menu?filId=<%= fil.getFid() %>" class="gap-2 px-5 py-2">
<%= fil.getTitre() %>
</a>
<a href="LeaveFil?filId=<%= fil.getFid() %>" class="text-danger fs-3">
<i class="bi bi-box-arrow-right"></i>
</a>
</li>
<% } %>
</ul>
<% } else { %>
<p>Aucun fil de discussion trouvé.</p>
<% } %>
<div class="separator"></div>
<div class="mt-3 text-center">
<a href="creerFil.html" class="btn btn-primary d-flex align-items-center gap-2 px-4 py-2">
<span class="d-inline-flex justify-content-center align-items-center border border-light rounded" style="width: 24px; height: 24px;">
<i class="bi bi-plus-lg"></i>
</span>
Ajouter un fil
</a>
</div>
</div>
</div>
<div class="main-content d-flex flex-column bg-image"
style="min-height: 100vh; background-image: url('images/login-bg.png'); background-size: cover; background-position: center;">
<%
List<Message> messages = (List<Message>) request.getAttribute("message");
if (messages != null && isUserInFil) {
%>
<div class="message-container w-100">
<% for (Message mess : messages) {
boolean utilisateurConnecte = mess.getUid() == utilisateur.getId();
%>
<div>
<div class="message <% if(utilisateurConnecte) { %> blue ms-auto <% } %> w-75 mb-2 p-3 rounded shadow-sm">
<p class="username">
<i class="bi-person pe-2"></i>
<%= ((Map<Integer, String>) request.getAttribute("userNames")).get(mess.getUid()) %>
</p>
<%
byte[] messageData = mess.getMessageData();
String encodedImage = null;
boolean isImage = mess.isImage();
if (isImage) {
encodedImage = java.util.Base64.getEncoder().encodeToString(messageData);
}
%>
<% if (isImage) { %>
<img src="data:image/jpeg;base64,<%= encodedImage %>" alt="Message Image" class="contenu-img img-fluid" />
<% } else { %>
<p class="contenu"><%= new String(messageData, "UTF-8") %></p>
<% } %>
<div class="d-flex align-items-center justify-content-end">
<form action="ControleurLike" method="POST">
<input type="hidden" name="messId" value="<%= mess.getMid() %>">
<input type="hidden" name="fid" value="<%= request.getAttribute("filId") %>">
<button type="submit" class="btn text-dark d-flex align-items-center gap-1">
<i class="bi bi-hand-thumbs-up"></i><%= new dao.LikeDAO().getNbLike(mess.getMid()) %>
</button>
</form>
</div>
</div>
</div>
<% } %>
</div>
<%
Boolean isAdmin = (Boolean) request.getAttribute("isAdmin");
%>
<form action="EnvoyerMessage" method="POST" class="w-100 mt-auto d-flex flex-column" enctype="multipart/form-data">
<input type="hidden" name="fid" value="<%= request.getAttribute("filId") %>">
<input type="hidden" name="uid" value="<%= utilisateur.getId() %>">
<div class="input-group p-1 rounded border d-flex align-items-center bg-white">
<%
if(isAdmin){
%>
<a href="AddUser?filId=<%=request.getAttribute("filId")%>" class="btn btn-light text-dark fs3">
<i class="bi bi-person-plus fs-4"></i>
</a>
<span class="px-2 text-muted bg-white">|</span>
<% } %>
<label class="btn btn-light text-dark" for="image-upload">
<i class="bi bi-image fs-4"></i>
</label>
<input type="file" id="image-upload" name="image" class="d-none" accept="image/*">
<span class="px-2 text-muted bg-white">|</span>
<input type="text" class="form-control border-0" name="message" placeholder="Tapez votre message ici ..." aria-label="Message">
<span class="px-2 text-muted bg-white">|</span>
<button class="btn btn-light text-dark" type="submit">
<i class="bi bi-send fs-4"></i>
</button>
</div>
</form>
<% } else { %>
<div class="d-flex">
<div class="text-center p-5 rounded-3 shadow-lg text-white" style="background-color: #291968;">
<h1 class="display-4 mb-4">Bienvenue sur LilleConnect</h1>
<p class="lead">Veuillez sélectionner un fil de discussion.</p>
</div>
</div>
<% } %>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
crossorigin="anonymous"></script>
<script>
window.onload = () => {
const container = document.querySelector('.message-container');
if (container) {
container.scrollTop = container.scrollHeight;
}
};
</script>
</body>
</html>