Amélioration export

This commit is contained in:
Lensors 2025-05-03 07:38:54 +02:00
parent db919b8902
commit 0993140ffd
7 changed files with 29 additions and 21 deletions

View File

@ -30,7 +30,7 @@ public class Export extends HttpServlet {
u.chargerPagesPartagees(); u.chargerPagesPartagees();
ArrayList<Page> listePages = u.getListePages(); ArrayList<Page> listePages = u.getListePages();
listePages.addAll(u.getListePagesPartagees()); listePages.addAll(u.getListePagesPartagees());
Page pageToExport;
try { try {
int id = Integer.parseInt(idStr); int id = Integer.parseInt(idStr);
Boolean estDans = false; Boolean estDans = false;
@ -46,7 +46,7 @@ public class Export extends HttpServlet {
return; return;
} }
Page pageToExport = Page.getPageById(u.getId(), id); pageToExport = Page.getPageById(u.getId(), id);
BlocRenderer blocRenderer; BlocRenderer blocRenderer;
PageRender pageRender; PageRender pageRender;
String filename; String filename;
@ -74,7 +74,7 @@ public class Export extends HttpServlet {
return; return;
} }
String exportContent = pageRender.render(blocRenderer, pageToExport.getListeBlocs()); String exportContent = pageRender.render(blocRenderer, pageToExport.getListeBlocs(), pageToExport.getTitre());
response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
response.getWriter().write(exportContent); response.getWriter().write(exportContent);

View File

@ -3,19 +3,22 @@ package projet;
public class HtmlPageRender implements PageRender { public class HtmlPageRender implements PageRender {
@Override @Override
public String getHeader() { public String getHeader(String titrePage) {
return "<!DOCTYPE html>\n" return "<!DOCTYPE html>\n"
+ "<html>\n" + "<html>\n"
+ "<head>\n" + " <head>\n"
+ "<meta charset=\"UTF-8\">\n" + " <meta charset=\"UTF-8\">\n"
+ "<title>Page</title>\n" + " <title>" + titrePage + "</title>\n"
+ "</head>\n" + " <script type=\"text/javascript\" async\n"
+ "<body>\n"; + " src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\"\n>"
+ " </script>"
+ " </head>\n"
+ " <body>\n";
} }
@Override @Override
public String getFooter() { public String getFooter() {
return "</body>\n" return " </body>\n"
+ "</html>\n"; + "</html>\n";
} }
} }

View File

@ -3,11 +3,13 @@ package projet;
public class LatexPageRender implements PageRender { public class LatexPageRender implements PageRender {
@Override @Override
public String getHeader() { public String getHeader(String titrePage) {
return "\\documentclass{article}\n" return "\\documentclass{article}\n"
+ "\\usepackage[utf8]{inputenc}\n" + "\\usepackage[utf8]{inputenc}\n"
+ "\\usepackage{hyperref}\n" + "\\usepackage{hyperref}\n"
+ "\\begin{document}\n"; + "\\begin{document}\n"
+ "\\title{" + titrePage + "}\n"
+ "\\maketitle\n";
} }
@Override @Override

View File

@ -3,7 +3,7 @@ package projet;
public class MarkdownPageRender implements PageRender { public class MarkdownPageRender implements PageRender {
@Override @Override
public String getHeader() { public String getHeader(String titrePage) {
return ""; return "";
} }

View File

@ -188,11 +188,11 @@ public class Page extends ParamBD {
ResultSet rs; ResultSet rs;
try { try {
Connection connexion = DriverManager.getConnection(bdURL, bdLogin, bdPassword); Connection connexion = DriverManager.getConnection(bdURL, bdLogin, bdPassword);
sql = " SELECT titre" sql = " SELECT titre, auteur_id"
+ " FROM page" + " FROM page"
+ " WHERE id=? AND auteur_id = ?" + " WHERE id=? AND auteur_id = ?"
+ " UNION" + " UNION"
+ " SELECT titre" + " SELECT titre, NULL AS auteur_id"
+ " FROM partage" + " FROM partage"
+ " JOIN page ON partage.page_id = page.id" + " JOIN page ON partage.page_id = page.id"
+ " WHERE partage.utilisateur_id = ?" + " WHERE partage.utilisateur_id = ?"
@ -208,6 +208,7 @@ public class Page extends ParamBD {
titre = rs.getString("titre"); titre = rs.getString("titre");
page.titre = titre; page.titre = titre;
page.id = id; page.id = id;
page.auteur_id = rs.getInt("auteur_id");
} }
if(titre != null) { if(titre != null) {
sql = " SELECT id, contenu, type, ordre, metadata" sql = " SELECT id, contenu, type, ordre, metadata"

View File

@ -4,12 +4,12 @@ import java.util.List;
public interface PageRender { public interface PageRender {
String getHeader(); String getHeader(String titrePage);
String getFooter(); String getFooter();
default String render(BlocRenderer blocRenderer, List<Bloc> blocs) { default String render(BlocRenderer blocRenderer, List<Bloc> blocs, String titrePage) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append(getHeader()); sb.append(getHeader(titrePage));
for (Bloc bloc : blocs) { for (Bloc bloc : blocs) {
sb.append(blocRenderer.render(bloc)).append("\n"); sb.append(blocRenderer.render(bloc)).append("\n");
} }

View File

@ -77,9 +77,11 @@
data-metadata='${bloc.metadata}' data-metadata='${bloc.metadata}'
>${bloc.contenu}</div> >${bloc.contenu}</div>
</div> </div>
<c:if test="${ page.auteur_id eq utilisateur.id}">
<div class="control"> <div class="control">
<button class="delete is-danger delete-bloc-btn" data-id="${bloc.id}"></button> <button class="delete is-danger delete-bloc-btn" data-id="${bloc.id}"></button>
</div> </div>
</c:if>
</div> </div>
</c:forEach> </c:forEach>
</div> </div>