From d321e3a1621ba7e720171583b287ece618021ce2 Mon Sep 17 00:00:00 2001 From: "Christian P. MOMON" Date: Mon, 16 Nov 2020 01:09:11 +0100 Subject: [PATCH] Added custom edito management. --- .../statoolinfos/core/Configuration.java | 24 ++++ .../statoolinfos/htmlize/EditoPage.java | 127 ++++++++++++++++++ .../statoolinfos/htmlize/Htmlizer.java | 1 + .../devinsy/statoolinfos/htmlize/edito.xhtml | 19 +++ .../statoolinfos/htmlize/webCharterView.xhtml | 7 +- 5 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 src/fr/devinsy/statoolinfos/htmlize/EditoPage.java create mode 100644 src/fr/devinsy/statoolinfos/htmlize/edito.xhtml diff --git a/src/fr/devinsy/statoolinfos/core/Configuration.java b/src/fr/devinsy/statoolinfos/core/Configuration.java index 80355f9..cfa5157 100644 --- a/src/fr/devinsy/statoolinfos/core/Configuration.java +++ b/src/fr/devinsy/statoolinfos/core/Configuration.java @@ -246,6 +246,30 @@ public class Configuration extends PathPropertyList return result; } + /** + * Gets the edito directory. + * + * @return the edito directory + */ + public File getEditoDirectory() + { + File result; + + String directoryPath = get("conf.htmlize.edito.directory"); + + if (StringUtils.isBlank(directoryPath)) + { + result = null; + } + else + { + result = new File(directoryPath); + } + + // + return result; + } + /** * Gets the htmlize directory. * diff --git a/src/fr/devinsy/statoolinfos/htmlize/EditoPage.java b/src/fr/devinsy/statoolinfos/htmlize/EditoPage.java new file mode 100644 index 0000000..4cb54ae --- /dev/null +++ b/src/fr/devinsy/statoolinfos/htmlize/EditoPage.java @@ -0,0 +1,127 @@ +/* + * Copyright (C) 2020 Christian Pierre MOMON + * + * This file is part of StatoolInfos, simple service statistics tool. + * + * StatoolInfos is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * StatoolInfos is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with StatoolInfos. If not, see . + */ +package fr.devinsy.statoolinfos.htmlize; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import fr.devinsy.statoolinfos.HtmlizerContext; +import fr.devinsy.statoolinfos.core.Configuration; +import fr.devinsy.statoolinfos.core.StatoolInfosException; +import fr.devinsy.xidyn.XidynException; +import fr.devinsy.xidyn.data.TagDataManager; +import fr.devinsy.xidyn.presenters.PresenterUtils; +import fr.devinsy.xidyn.utils.XidynUtils; + +/** + * The Class EditoPage. + */ +public class EditoPage +{ + private static Logger logger = LoggerFactory.getLogger(EditoPage.class); + + /** + * Builds the. + * + * @throws StatoolInfosException + * the statool infos exception + * @throws IOException + * Signals that an I/O exception has occurred. + */ + public static void build() throws StatoolInfosException, IOException + { + logger.info("Htmlize edito page."); + + Configuration configuration = HtmlizerContext.instance().getConfiguration(); + File htmlizeDirectory = HtmlizerContext.instance().getHtmlizeDirectory(); + + String edito; + File editoDirectory = configuration.getEditoDirectory(); + if ((editoDirectory != null) && (editoDirectory.exists())) + { + File editoFile = new File(editoDirectory, "edito.xhtml"); + + if (editoFile.exists()) + { + logger.info("EDITO: found data."); + // Copy files. + FileUtils.copyDirectory(editoDirectory, htmlizeDirectory); + + // Load body edito xhtml file. + edito = FileUtils.readFileToString(editoFile, "UTF-8"); + edito = XidynUtils.extractBodyContent(edito); + } + else + { + logger.info("EDITO: not found data."); + edito = null; + } + } + else + { + logger.info("EDITO: not found configuration."); + edito = null; + } + + String page = htmlize(edito); + FileUtils.write(new File(htmlizeDirectory, "edito.xhtml"), page, StandardCharsets.UTF_8); + } + + /** + * Builds the. + * + * @return the string + * @throws StatoolInfosException + * the statool infos exception + */ + public static String htmlize(final String edito) throws StatoolInfosException + { + String result; + + try + { + logger.debug("Building edito page {}."); + + TagDataManager data = new TagDataManager(); + + if (edito != null) + { + data.setContent("edito", edito); + } + + String content = PresenterUtils.dynamize("/fr/devinsy/statoolinfos/htmlize/edito.xhtml", data).toString(); + + BreadcrumbTrail trail = new BreadcrumbTrail(); + trail.add("Édito", "edito.xhtml"); + result = WebCharterView.build(content, trail); + } + catch (XidynException exception) + { + throw new StatoolInfosException("Error building edito page: " + exception.getMessage(), exception); + } + + // + return result; + } +} diff --git a/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java b/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java index 644f3bb..3e30fff 100644 --- a/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java +++ b/src/fr/devinsy/statoolinfos/htmlize/Htmlizer.java @@ -253,6 +253,7 @@ public class Htmlizer copyCategoriesStuff(HtmlizerContext.instance().getConfiguration().get("conf.htmlize.categories.icons"), htmlizeDirectory); AboutPage.build(); + EditoPage.build(); FederationPage.build(); OrganizationPage.buildAll(); ServicePage.buildAll(); diff --git a/src/fr/devinsy/statoolinfos/htmlize/edito.xhtml b/src/fr/devinsy/statoolinfos/htmlize/edito.xhtml new file mode 100644 index 0000000..38eb200 --- /dev/null +++ b/src/fr/devinsy/statoolinfos/htmlize/edito.xhtml @@ -0,0 +1,19 @@ + + + + + StatoolInfos + + + + + + + +
+

Édito

+

Ceci est un édito par défaut.

+
+ + diff --git a/src/fr/devinsy/statoolinfos/htmlize/webCharterView.xhtml b/src/fr/devinsy/statoolinfos/htmlize/webCharterView.xhtml index 629e2bb..2e87188 100644 --- a/src/fr/devinsy/statoolinfos/htmlize/webCharterView.xhtml +++ b/src/fr/devinsy/statoolinfos/htmlize/webCharterView.xhtml @@ -15,7 +15,12 @@
-

StatoolInfosv0.0.14AboutPage updated on
xx/xx/xxxx xx:xx

+

+ StatoolInfosv0.0.14 – + Édito – + About + Page updated on
xx/xx/xxxx xx:xx
+

Fédération