113 lines
4.1 KiB
Java
113 lines
4.1 KiB
Java
package projet;
|
|
|
|
import jakarta.servlet.RequestDispatcher;
|
|
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 jakarta.servlet.http.HttpSession;
|
|
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@WebServlet("/AfficherPage")
|
|
public class AfficherPage extends HttpServlet {
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
|
HttpSession session = request.getSession();
|
|
Utilisateur u = (Utilisateur) session.getAttribute("utilisateur");
|
|
|
|
String idStr = request.getParameter("id");
|
|
|
|
if(u != null) {
|
|
u.chargerPages();
|
|
u.chargerPagesPartagees();
|
|
ArrayList<Page> listePages = u.getListePages();
|
|
ArrayList<Page> listePagesPartagees = u.getListePagesPartagees();
|
|
ArrayList<Message> listeMessages = Message.getListeMessages();
|
|
ArrayList<Utilisateur> listeUtilisateurs = Utilisateur.getListeUtilisateurs();
|
|
|
|
request.setAttribute("listePages", listePages);
|
|
request.setAttribute("listePagesPartagees", listePagesPartagees);
|
|
request.setAttribute("listeMessages", listeMessages);
|
|
request.setAttribute("listeUtilisateurs", listeUtilisateurs);
|
|
|
|
String menuHtml = genererMenuHTML(u.getId());
|
|
request.setAttribute("menuHtml", menuHtml);
|
|
|
|
|
|
if (idStr != null ) {
|
|
try {
|
|
int id = Integer.parseInt(idStr);
|
|
Page page = Page.getPageById(u.getId(), id);
|
|
|
|
if (page != null) {
|
|
request.setAttribute("page", page);
|
|
|
|
Map<Integer, String> hierarchie = u.getHierarchie(id);
|
|
request.setAttribute("hierarchie", hierarchie);
|
|
|
|
request.getRequestDispatcher("/WEB-INF/AfficherPage.jsp").forward(request, response);
|
|
return;
|
|
} else {
|
|
request.getRequestDispatcher("/WEB-INF/AfficherPage.jsp").forward(request, response);
|
|
return;
|
|
}
|
|
} catch (NumberFormatException e) {
|
|
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "ID invalide");
|
|
return;
|
|
}
|
|
}
|
|
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/AfficherPage.jsp");
|
|
rd.forward(request, response);
|
|
} else {
|
|
response.sendRedirect("/Projet/");
|
|
}
|
|
}
|
|
|
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
|
}
|
|
|
|
public static String genererMenuHTML(int idU) {
|
|
Map<Integer, List<Page>> arbre = Page.getArbreDesPages(idU);
|
|
StringBuilder html = new StringBuilder();
|
|
html.append("<ul>\n");
|
|
construireHTMLRecursif(arbre, -1, html, 6);
|
|
html.append(" </ul>\n");
|
|
return html.toString();
|
|
}
|
|
|
|
private static void construireHTMLRecursif(Map<Integer, List<Page>> arbre, int parentId, StringBuilder html, int indentLevel) {
|
|
List<Page> enfants = arbre.get(parentId);
|
|
if (enfants == null || enfants.isEmpty()) return;
|
|
|
|
String indent = "\t".repeat(indentLevel);
|
|
|
|
for (Page p : enfants) {
|
|
List<Page> sousPages = arbre.get(p.getId());
|
|
boolean aSousPages = sousPages != null && !sousPages.isEmpty();
|
|
|
|
html.append(indent).append("<li>\n");
|
|
|
|
html.append(indent).append("\t<div class='is-flex is-align-items-center is-justify-content-space-between'>\n");
|
|
html.append(indent).append("\t\t<a href='AfficherPage?id=").append(p.getId()).append("'>")
|
|
.append(p.getTitre()).append("</a>\n");
|
|
html.append(indent).append("\t\t<button class='delete delete-page-btn has-background-danger ml-2' data-id='")
|
|
.append(p.getId()).append("'></button>\n");
|
|
html.append(indent).append("\t</div>\n");
|
|
|
|
if (aSousPages) {
|
|
html.append(indent).append("\t<ul class='ml-4'>\n");
|
|
construireHTMLRecursif(arbre, p.getId(), html, indentLevel + 1);
|
|
html.append(indent).append("\t</ul>\n");
|
|
}
|
|
|
|
html.append(indent).append("</li>\n");
|
|
}
|
|
}
|
|
}
|