Languages
This commit is contained in:
parent
c818f9f7b6
commit
88bc2a77c4
|
@ -26,7 +26,7 @@ public class LocaleConfiguration implements WebMvcConfigurer {
|
|||
@Bean
|
||||
public LocaleResolver localeResolver() {
|
||||
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
|
||||
localeResolver.setDefaultLocale(Locale.FRENCH);
|
||||
localeResolver.setDefaultLocale(Locale.ENGLISH);
|
||||
return localeResolver;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ package fyloz.trial.ColorRecipesExplorer.model;
|
|||
import org.hibernate.annotations.ColumnDefault;
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
@ -16,6 +17,7 @@ public class Material extends BeanModel implements Serializable {
|
|||
private Integer materialID = 0;
|
||||
|
||||
@NotNull
|
||||
@NotEmpty
|
||||
private String materialCode;
|
||||
|
||||
@NotNull
|
||||
|
@ -25,7 +27,7 @@ public class Material extends BeanModel implements Serializable {
|
|||
@ColumnDefault("false")
|
||||
private boolean isMixType = false;
|
||||
|
||||
// Peut être null pour la création des types de mélanges
|
||||
@NotNull
|
||||
@ManyToOne
|
||||
private MaterialType materialType;
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ public class StringBank {
|
|||
public static final String MATERIAL_ID = "materialID";
|
||||
public static final String MATERIAL_CODE = "materialCode";
|
||||
public static final String MATERIAL_TYPES = "materialTypes";
|
||||
public static final String MATERIAL_TYPE = "materialType";
|
||||
public static final String RECIPES = "recipes";
|
||||
public static final String RECIPE = "recipe";
|
||||
public static final String RECIPE_ID = "recipeID";
|
||||
|
|
|
@ -35,7 +35,8 @@ public class MaterialCreatorController {
|
|||
* @return La page à afficher.
|
||||
*/
|
||||
@GetMapping(CREATOR_MATERIAL)
|
||||
public String showCreationPage(Model model) {
|
||||
public String showCreationPage(Model model, Material material) {
|
||||
model.addAttribute(MATERIAL, material == null ? new Material() : material);
|
||||
model.addAttribute(MATERIAL_TYPES, materialTypeService.getAll());
|
||||
return CREATOR_MATERIAL;
|
||||
}
|
||||
|
@ -77,6 +78,6 @@ public class MaterialCreatorController {
|
|||
model.addAttribute(RESPONSE_ERROR, String.format(MATERIAL_ALREADY_EXIST, material.getMaterialCode()));
|
||||
}
|
||||
|
||||
return showCreationPage(model);
|
||||
return showCreationPage(model, material);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,8 @@ public class MaterialTypeCreatorController {
|
|||
}
|
||||
|
||||
@GetMapping(CREATOR_MATERIAL_TYPE)
|
||||
public String showPage() {
|
||||
public String showPage(Model model, MaterialType materialType) {
|
||||
model.addAttribute(MATERIAL_TYPE, materialType == null ? new MaterialType() : materialType);
|
||||
return CREATOR_MATERIAL_TYPE;
|
||||
}
|
||||
|
||||
|
@ -41,6 +42,6 @@ public class MaterialTypeCreatorController {
|
|||
model.addAttribute(RESPONSE_ERROR, String.format(MIX_TYPE_ALREADY_USED, materialType.getMaterialTypeName()));
|
||||
}
|
||||
|
||||
return showPage();
|
||||
return showPage(model, materialType);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ spring.thymeleaf.template-loader-path=classpath:/templates
|
|||
spring.thymeleaf.suffix=.html
|
||||
spring.thymeleaf.cache=false
|
||||
# Messages
|
||||
spring.messages.cache-duration=1
|
||||
spring.messages.fallback-to-system-locale=false
|
||||
#spring.messages.basename=lang/messages
|
||||
#spring.messages.encoding=UTF-8
|
||||
#server.tomcat.uri-encoding=UTF-8
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
menu.list=Liste
|
||||
menu.add=Ajouter
|
||||
menu.edit=Modifier
|
||||
menu.delete=Supprimer
|
||||
menu.inventory=Inventaire
|
||||
menu.others=Autres
|
||||
recipe.color=Couleur
|
||||
recipe.description=Courte description
|
||||
recipe.sample=Échantillon
|
||||
recipe.approbationDate=Date d'approbation
|
||||
recipe.remark=Remarque
|
||||
recipe.notice=Note
|
||||
recipe.steps=Étapes
|
||||
keyword.company=Bannière
|
||||
keyword.material=Produit
|
||||
keyword.recipe=Recette
|
||||
keyword.touchUpKitPDF=PDF Kits de retouche
|
||||
keyword.quantity=Quantité
|
||||
keyword.type=Type
|
||||
keyword.units=Unités
|
||||
keyword.edit=Modifier
|
||||
keyword.use=Utiliser
|
||||
keyword.save=Enregistrer
|
||||
keyword.back=Retour
|
||||
mix.location=Position
|
||||
material.code=Code
|
||||
material.inventoryQuantity=Quantité en inventaire
|
||||
material.type=Type de produit
|
||||
material.SIMDUTFile=Fichier SIMDUT
|
||||
units.milliliters=Millilitres
|
||||
units.liters=Litres
|
||||
units.gallons=Gallons
|
||||
inventory.lowQuantity=Quantité faible
|
||||
inventory.hideOthers=Cacher les autres produits
|
||||
inventory.showOnly=Voir seulement
|
||||
product.error.notFound=Aucun produit n'a été trouvé.
|
||||
app.title=Explorateur de recettes de couleur
|
||||
footer.lang=See in english
|
||||
company.add.title=Ajout d'une bannière
|
||||
company.success.created=La bannière {0} à été enregistrée.
|
||||
company.form.companyName=Nom de la bannière
|
|
@ -26,16 +26,35 @@ keyword.back=Back
|
|||
mix.location=Location
|
||||
material.code=Code
|
||||
material.inventoryQuantity=Inventory quantity
|
||||
material.type=Product type
|
||||
material.type=Material type
|
||||
material.SIMDUTFile=SIMDUT File
|
||||
units.milliliters=Milliliters
|
||||
units.liters=Liters
|
||||
units.gallons=Gallons
|
||||
inventory.lowQuantity=Low quantity
|
||||
inventory.hideOthers=Hide other products
|
||||
inventory.hideOthers=Hide other materials
|
||||
inventory.showOnly=Show only
|
||||
product.error.notFound=No products were found.
|
||||
material.error.anyFound=No materials were found.
|
||||
app.title=Color recipes explorer
|
||||
footer.lang=Voir en français
|
||||
company.add.title=Adding a banner
|
||||
company.success.created=The banner {0} has been saved.
|
||||
company.success.created=The banner {0} has been saved.
|
||||
keyword.see=See
|
||||
company.error.anyFound=No banners were found.
|
||||
recipe.warning.notApproved=This recipe is not approved
|
||||
company.delete.title=Delete banners
|
||||
company.success.deleted=The banner {0} has been deleted.
|
||||
keyword.delete=Delete
|
||||
material.add.title=Adding a material
|
||||
material.success.created=The material {0} has been saved.
|
||||
material.editing.title=Editing {0}
|
||||
material.delete.title=Delete materials
|
||||
material.success.deleted=The material {0} has been deleted.
|
||||
material.success.saved=The material {0} has been saved.
|
||||
material.edit.title=Edit materials
|
||||
material.simdut.choose=Choose material's SIMDUT file
|
||||
materialType.add.title=Add a material type
|
||||
materialType.name=Material type name
|
||||
materialType.prefix=Prefix
|
||||
keyword.characters=characters
|
||||
materialType.usePercents=Use percentages
|
|
@ -17,6 +17,7 @@ header, footer {
|
|||
|
||||
footer {
|
||||
position: fixed;
|
||||
height: 5%;
|
||||
bottom: 0;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title th:text="#{company.add.title}"></title>
|
||||
<th:block th:include="fragments.html :: head(#{company.add.title})"></th:block>
|
||||
|
||||
<link href="/css/main.css" rel="stylesheet"/>
|
||||
</head>
|
||||
|
@ -17,7 +16,7 @@
|
|||
<button class="returnIndex" th:text="#{keyword.back}"></button>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title th:text="#{company.add.title}"></title>
|
||||
<th:block th:include="fragments.html :: head(#{company.add.title})"></th:block>
|
||||
|
||||
<link href="/css/main.css" rel="stylesheet"/>
|
||||
<link href="/css/forms.css" rel="stylesheet"/>
|
||||
|
@ -22,7 +21,7 @@
|
|||
<tr>
|
||||
<td><b><label th:for="${#ids.next('companyName')}"
|
||||
th:text="#{company.form.companyName} + ':'"></label></b></td>
|
||||
<td><input type="text" th:field="*{companyName}"/></td>
|
||||
<td><input type="text" th:field="*{companyName}" required /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
@ -37,7 +36,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Supprimer des bannières</title>
|
||||
<th:block th:include="fragments.html :: head(#{company.delete.title})"></th:block>
|
||||
|
||||
<link href="/css/main.css" rel="stylesheet"/>
|
||||
<link href="/css/forms.css" rel="stylesheet"/>
|
||||
<!-- <link href="/css/forms.css" rel="stylesheet"/>-->
|
||||
|
||||
<style>
|
||||
table {
|
||||
|
@ -29,15 +27,15 @@
|
|||
<section>
|
||||
<p class="error" th:text="${error}"></p>
|
||||
<p class="success" th:if="${successCompanyName != null}"
|
||||
th:text="'La bannière \'' + ${successCompanyName} + '\' a bien été supprimée.'"></b>
|
||||
th:text="#{company.success.deleted(${successCompanyName})}"></b>
|
||||
</p>
|
||||
<h1>Supprimer des bannières</h1>
|
||||
<h1 th:text="#{company.delete.title}"></h1>
|
||||
|
||||
<form action="/company/remover/" class="requireAuth-remover" method="POST">
|
||||
<th:block th:if="${!companies.empty}">
|
||||
<table id="companiesList">
|
||||
<tr>
|
||||
<th>Nom de la bannière</th>
|
||||
<th th:text="#{company.form.companyName}"></th>
|
||||
</tr>
|
||||
<th:block th:each="company : ${companies}">
|
||||
<tr>
|
||||
|
@ -45,8 +43,7 @@
|
|||
<td>
|
||||
<button class="remover" th:data-code="${company.companyName}"
|
||||
th:data-recipeID="${company.companyID}"
|
||||
type="button">Supprimer
|
||||
</button>
|
||||
type="button" th:text="#{keyword.delete}"></button>
|
||||
</td>
|
||||
</tr>
|
||||
</th:block>
|
||||
|
@ -54,11 +51,11 @@
|
|||
</th:block>
|
||||
</form>
|
||||
<th:block th:if="${companies.empty}">
|
||||
<b class="error">Aucune bannière n'a été trouvée.</b>
|
||||
<b class="error" th:text="#{company.error.anyFound}"></b>
|
||||
</th:block>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer('/company/remover')"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -50,8 +50,14 @@
|
|||
</nav>
|
||||
</div>
|
||||
|
||||
<div th:fragment="footer">
|
||||
<a th:href="@{''(lang=__${#locale.toString() == 'en' ? 'fr' : 'en'}__)}" th:text="#{footer.lang}"></a>
|
||||
<div th:fragment="footer(link)">
|
||||
<th:block th:if="${link == null}">
|
||||
<a th:href="@{''(lang=__${#locale.toString() == 'en' ? 'fr' : 'en'}__)}" th:text="#{footer.lang}"></a>
|
||||
</th:block>
|
||||
<th:block th:unless="${link == null}">
|
||||
<a th:href="@{${link + '?lang=__${#locale.toString() == 'en' ? 'fr' : 'en'}__'}}"
|
||||
th:text="#{footer.lang}"></a>
|
||||
</th:block>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Ajout une image</title>
|
||||
|
@ -23,7 +23,7 @@
|
|||
</form>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
|
||||
|
@ -57,9 +57,9 @@
|
|||
<th:block th:if="${!recipes.get(company).empty}">
|
||||
<table style="display:none" th:id="'recipes_' + ${company.companyName}">
|
||||
<tr>
|
||||
<th>Couleur</th>
|
||||
<th>Description</th>
|
||||
<th>Échantillon</th>
|
||||
<th th:text="#{recipe.color}"></th>
|
||||
<th th:text="#{recipe.description}"></th>
|
||||
<th th:text="#{recipe.sample}"></th>
|
||||
</tr>
|
||||
<th:block th:each="recipe : ${recipes.get(company)}">
|
||||
<tr class="recipeRow" th:data-approbationDate="${recipe.approbationDate}">
|
||||
|
@ -67,9 +67,7 @@
|
|||
<td class="centerCell recipeDescription" th:text="${recipe.recipeDescription}"></td>
|
||||
<td class="centerCell" th:text="${recipe.sample}"></td>
|
||||
<td>
|
||||
<button class="gotoRecipe" th:data-recipeID="${recipe.recipeID}" type="button">
|
||||
Voir
|
||||
</button>
|
||||
<button class="gotoRecipe" th:data-recipeID="${recipe.recipeID}" type="button" th:text="#{keyword.see}"></button>
|
||||
</td>
|
||||
</tr>
|
||||
</th:block>
|
||||
|
@ -78,16 +76,18 @@
|
|||
</th:block>
|
||||
</th:block>
|
||||
<th:block th:if="${recipes.empty}">
|
||||
<b class="error">Aucune bannière n'a été trouvée.</b>
|
||||
<b class="error" th:text="#{company.error.anyFound}"></b>
|
||||
</th:block>
|
||||
</div>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
<script>
|
||||
<script th:inline="javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
(() => {
|
||||
document.querySelectorAll(".gotoRecipe").forEach(e => {
|
||||
e.addEventListener("click", () => {
|
||||
|
@ -102,10 +102,12 @@
|
|||
|
||||
if (approbationDate === null) {
|
||||
e.classList.add("unapproved");
|
||||
e.title = "Cette recette n'est pas approuvée";
|
||||
e.title = /*[[#{recipe.warning.notApproved}]]*/ "Cette recette n'est pas approuvée";
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
||||
/*]]>*/
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -113,11 +113,11 @@
|
|||
</table>
|
||||
</th:block>
|
||||
<th:block th:if="${materials.empty}">
|
||||
<b class="error" th:text="#{product.error.notFound}"></b>
|
||||
<b class="error" th:text="#{material.error.anyFound}"></b>
|
||||
</th:block>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
<script>
|
||||
(() => {
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Ajout d'un produit</title>
|
||||
<th:block th:include="fragments.html :: head(#{material.add.title})"></th:block>
|
||||
|
||||
<link href="/css/main.css" rel="stylesheet"/>
|
||||
</head>
|
||||
|
@ -12,12 +11,12 @@
|
|||
<header th:include="fragments.html :: header"></header>
|
||||
<!-- Corps de la page -->
|
||||
<section>
|
||||
<h1>Ajout d'un produit</h1>
|
||||
<p th:text="'Le produit ' + ${materialCode} + ' a été enregistré.'"></p>
|
||||
<button class="returnIndex">Retour</button>
|
||||
<h1 th:text="#{material.add.title}"></h1>
|
||||
<p th:text="#{material.success.created(${materialCode})}"></p>
|
||||
<button class="returnIndex" th:text="#{keyword.back}"></button>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Ajout d'un produit</title>
|
||||
<th:block th:include="fragments.html :: head(#{material.add.title})"></th:block>
|
||||
|
||||
<link href="/css/main.css" rel="stylesheet"/>
|
||||
<link href="/css/forms.css" rel="stylesheet"/>
|
||||
|
@ -15,59 +14,60 @@
|
|||
<section>
|
||||
<p class="error" th:text="${error}"></p>
|
||||
|
||||
<h1>Ajout d'un produit</h1>
|
||||
<h1 th:text="#{material.add.title}"></h1>
|
||||
<div class="form">
|
||||
<form action="/material/creator" class="requireAuth" enctype="multipart/form-data" method="POST">
|
||||
<form th:action="@{/material/creator}" th:object="${material}" class="requireAuth" enctype="multipart/form-data"
|
||||
method="POST">
|
||||
<table>
|
||||
|
||||
<tr>
|
||||
<td><b><label for="materialCode">Code du produit: </label></b></td>
|
||||
<td><input id="materialCode" name="materialCode" type="text"/></td>
|
||||
<td><b><label th:for="${#ids.next('materialCode')}" th:text="#{material.code} + ':'"></label></b>
|
||||
</td>
|
||||
<td><input type="text" th:field="*{materialCode}" required /></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b><label for="inventoryQuantity">Quantité en inventaire: </label></b></td>
|
||||
<td><b><label for="quantity" th:text="#{material.inventoryQuantity} + ':'"></label></b></td>
|
||||
<td><input data-unit="mL" id="quantity" min="0" name="quantity"
|
||||
onchange="calculateMilliliters(this.value, this.dataset.unit)" step="0.01" type="number">
|
||||
onchange="calculateMilliliters(this.value, this.dataset.unit)" step="0.01" type="number"
|
||||
th:value="${material.inventoryQuantity}" required>
|
||||
<!--Contient la quantité en millilitres-->
|
||||
<input type="hidden" th:field="*{inventoryQuantity}"/>
|
||||
</td>
|
||||
|
||||
<!--Contient la quantité en millilitres-->
|
||||
<input id="inventoryQuantity" name="inventoryQuantity" type="hidden"/>
|
||||
|
||||
<td>
|
||||
<select id="units" name="units"
|
||||
onchange="switchUnits(this)">
|
||||
<option selected value="mL">Millilitres</option>
|
||||
<option value="L">Litres</option>
|
||||
<option value="gal">Gallons</option>
|
||||
<option selected value="mL" th:text="#{units.milliliters}"></option>
|
||||
<option value="L" th:text="#{units.liters}"></option>
|
||||
<option value="gal" th:text="#{units.gallons}"></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b><label for="materialType">Type de produit: </label></b></td>
|
||||
<td><b><label th:for="${#ids.next('materialType')}" th:text="#{material.type} + ':'"></label></b>
|
||||
</td>
|
||||
<td>
|
||||
<select id="materialType" name="materialType">
|
||||
<th:block th:each="materialType : ${materialTypes}">
|
||||
<option th:text="${materialType.materialTypeName}"
|
||||
th:value="${materialType.materialTypeID}"></option>
|
||||
</th:block>
|
||||
<select th:field="*{materialType}" required>
|
||||
<option th:each="materialType : ${materialTypes}" th:value="${materialType.materialTypeID}"
|
||||
th:text="${materialType.materialTypeName}"></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><b><label for="simdut">Fichier SIMDUT: </label></b></td>
|
||||
<td><input id="simdut" name="simdut" type="file"></td>
|
||||
<td><b><label for="simdut" th:text="#{material.SIMDUTFile} + ':'"></label></b></td>
|
||||
<td><input id="simdut" name="simdut" type="file"/></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<button class="returnIndex" type="button">Retour</button>
|
||||
<button class="returnIndex" type="button" th:text="#{keyword.back}"></button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="submit">Enregistrer</button>
|
||||
<button type="submit" th:text="#{keyword.save}"></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -75,8 +75,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
<script>
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title th:text="'Modification de ' + ${material.materialCode}"></title>
|
||||
<th:block th:include="fragments.html :: head(#{material.editing.title(${material.materialCode})})"></th:block>
|
||||
|
||||
<link href="/css/main.css" rel="stylesheet"/>
|
||||
<link href="/css/forms.css" rel="stylesheet"/>
|
||||
<link th:href="@{/css/forms.css}" rel="stylesheet"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
@ -15,55 +13,53 @@
|
|||
<section>
|
||||
<p class="error" th:text="${error}"></p>
|
||||
|
||||
<h1 class="materialCode" th:text="'Modification de ' + ${material.materialCode}"></h1>
|
||||
<h1 class="materialCode" th:text="#{material.editing.title(${material.materialCode})}"></h1>
|
||||
<div class="form">
|
||||
<form action="/material/editor" class="requireAuth" method="POST">
|
||||
<input id="materialID" name="materialID" th:value="${material.materialID}" type="hidden"/>
|
||||
<input name="materialCode" th:value="${material.materialCode}" type="hidden"/>
|
||||
<form th:action="#{/material/editor}" th:object="${material}" class="requireAuth" method="POST">
|
||||
<input type="hidden" th:field="*{materialID}"/>
|
||||
<input type="hidden" th:field="*{materialCode}"/>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><b><label for="inventoryQuantity">Quantité en inventaire: </label></b></td>
|
||||
<td><b><label for="quantity" th:text="#{material.inventoryQuantity}"></label></b></td>
|
||||
<td><input data-unit="mL" id="quantity" min="0" name="quantity"
|
||||
onchange="calculateMilliliters(this.value, this.dataset.unit)" step="0.01"
|
||||
th:value="${material.inventoryQuantity}" type="number"></td>
|
||||
|
||||
<!--Contient la quantité en millilitres-->
|
||||
<input id="inventoryQuantity" name="inventoryQuantity" th:value="${material.inventoryQuantity}"
|
||||
type="hidden"/>
|
||||
<input type="hidden" th:field="*{inventoryQuantity}"/>
|
||||
<td>
|
||||
<select id="units" name="units"
|
||||
onchange="switchUnits(this)">
|
||||
<option selected value="mL">Millilitres</option>
|
||||
<option value="L">Litres</option>
|
||||
<option value="gal">Gallons</option>
|
||||
<option selected value="mL" th:text="#{units.milliliters}"></option>
|
||||
<option value="L" th:text="#{units.liters}"></option>
|
||||
<option value="gal" th:text="#{units.gallons}"></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="materialType">Type de produit: </label></td>
|
||||
<td><select id="materialType" name="materialType">
|
||||
<th:block th:each="materialType : ${materialTypes}">
|
||||
<option th:attrappend="selected=${materialType.materialTypeName.equalsIgnoreCase('aucun') || materialType.materialTypeID == material.materialType.materialTypeID}"
|
||||
th:text="${materialType.materialTypeName}"
|
||||
th:value="${materialType.materialTypeID}"></option>
|
||||
</th:block>
|
||||
<td><label th:for="${#ids.next('materialType')}">Type de produit: </label></td>
|
||||
<td><select th:field="*{materialType}">
|
||||
<option th:each="materialType : ${materialTypes}"
|
||||
th:attrappend="selected=${materialType.materialTypeID == material.materialType.materialTypeID}"
|
||||
th:text="${materialType.materialTypeName}"
|
||||
th:value="${materialType.materialTypeID}"></option>
|
||||
</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button id="showSIMDUT" type="button">Fichier SIMDUT</button>
|
||||
<button id="showSIMDUT" type="button" th:text="#{material.SIMDUTFile}">Fichier SIMDUT</button>
|
||||
</td>
|
||||
<td>
|
||||
<button id="editSIMDUT" type="button">Modifier</button>
|
||||
<button id="editSIMDUT" type="button" th:text="#{keyword.edit}"></button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button class="returnIndex" type="button">Retour</button>
|
||||
<button class="returnIndex" type="button" th:text="#{keyword.back}"></button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="submit">Enregistrer</button>
|
||||
<button type="submit" th:text="#{keyword.save}"></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -71,7 +67,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Modifier un produit</title>
|
||||
|
||||
<link href="/css/main.css" rel="stylesheet"/>
|
||||
<th:block th:include="fragments.html :: head(#{material.edit.title})"></th:block>
|
||||
|
||||
<style>
|
||||
table {
|
||||
|
@ -25,35 +22,29 @@
|
|||
<section>
|
||||
<p class="error" th:text="${error}"></p>
|
||||
<p class="success" th:if="${materialCode != null}"
|
||||
th:text="'Le produit \'' + ${materialCode} + '\' a bien été sauvegardé.'"></b>
|
||||
th:text="#{material.success.saved(${materialCode})}"></b>
|
||||
</p>
|
||||
<h1>Modifier des produits</h1>
|
||||
<h1 th:text="#{material.edit.title}"></h1>
|
||||
|
||||
<th:block th:if="${!materials.empty}">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Produit</th>
|
||||
<th>Type</th>
|
||||
</tr>
|
||||
<th:block th:each="material : ${materials}">
|
||||
<tr>
|
||||
<td class="materialCode" th:data-materialID="${material.materialID}"
|
||||
th:text="${material.materialCode}"></td>
|
||||
<td th:text="${material.materialType.materialTypeName}"></td>
|
||||
<td>
|
||||
<button class="editor" th:data-materialID="${material.materialID}" type="button">Modifier
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</th:block>
|
||||
</table>
|
||||
</th:block>
|
||||
<th:block th:if="${materials.empty}">
|
||||
<b class="error">Aucun produit n'a été trouvé</b>
|
||||
</th:block>
|
||||
<table th:if="${!materials.empty}">
|
||||
<tr>
|
||||
<th th:text="#{keyword.material}"></th>
|
||||
<th th:text="#{keyword.type}"></th>
|
||||
</tr>
|
||||
<tr th:each="material : ${materials}">
|
||||
<td class="materialCode" th:data-materialID="${material.materialID}"
|
||||
th:text="${material.materialCode}"></td>
|
||||
<td th:text="${material.materialType.materialTypeName}"></td>
|
||||
<td>
|
||||
<button class="editor" th:data-materialID="${material.materialID}" type="button"
|
||||
th:text="#{keyword.edit}"></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<b th:if="${materials.empty}" class="error" th:text="#{material.error.anyFound}"></b>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Supprimer des produits</title>
|
||||
|
||||
<link href="/css/main.css" rel="stylesheet"/>
|
||||
<th:block th:include="fragments.html :: head(#{material.delete.title})"></th:block>
|
||||
|
||||
<style>
|
||||
table {
|
||||
|
@ -25,39 +22,33 @@
|
|||
<section>
|
||||
<p class="error" th:text="${error}"></p>
|
||||
<p class="success" th:if="${materialCode != null}"
|
||||
th:text="'Le produit \'' + ${materialCode} + '\' a bien été supprimée.'"></b>
|
||||
</p>
|
||||
<h1>Supprimer des produits</h1>
|
||||
th:text="#{material.success.deleted(${materialCode})}"></p>
|
||||
<h1 th:text="#{material.delete.title}"></h1>
|
||||
|
||||
<form action="/material/remover/" class="requireAuth-remover" method="POST">
|
||||
<th:block th:if="${!materials.empty}">
|
||||
<table id="materialsList">
|
||||
<tr>
|
||||
<th>Produit</th>
|
||||
<th>Type</th>
|
||||
</tr>
|
||||
<th:block th:each="material : ${materials}">
|
||||
<tr>
|
||||
<td class="materialCode" th:data-materialID="${material.materialID}"
|
||||
th:text="${material.materialCode}"></td>
|
||||
<td th:text="${material.materialType.materialTypeName}"></td>
|
||||
<td>
|
||||
<button class="remover" th:data-code="${material.materialCode}"
|
||||
th:data-recipeID="${material.materialID}"
|
||||
type="button">Supprimer
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</th:block>
|
||||
</table>
|
||||
</th:block>
|
||||
<table th:if="${!materials.empty}" id="materialsList">
|
||||
<tr>
|
||||
<th th:text="#{keyword.material}"></th>
|
||||
<th th:text="#{material.type}"></th>
|
||||
</tr>
|
||||
<tr th:each="material : ${materials}">
|
||||
<td class="materialCode" th:data-materialID="${material.materialID}"
|
||||
th:text="${material.materialCode}"></td>
|
||||
<td th:text="${material.materialType.materialTypeName}"></td>
|
||||
<td>
|
||||
<button class="remover" th:data-code="${material.materialCode}"
|
||||
th:data-recipeID="${material.materialID}"
|
||||
type="button" th:text="#{keyword.delete}"></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<th:block th:if="${materials.empty}">
|
||||
<b class="error">Aucun produit n'a été trouvé.</b>
|
||||
<th:block th:if="${materials.isEmpty()}">
|
||||
<b class="error" th:text="#{material.error.anyFound}"></b>
|
||||
</th:block>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer('/material/remover')"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Ajout d'un produit</title>
|
||||
|
||||
<link href="/css/main.css" rel="stylesheet"/>
|
||||
<link href="/css/forms.css" rel="stylesheet"/>
|
||||
<th:block th:include="fragments.html :: head(#{material.add.title})"></th:block>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
@ -13,23 +9,23 @@
|
|||
<header th:include="fragments.html :: header"></header>
|
||||
<!-- Corps de la page -->
|
||||
<section>
|
||||
<h1>Ajout d'un produit</h1>
|
||||
<h1 th:text="#{material.add.title}"></h1>
|
||||
<div class="form">
|
||||
<form action="/material/simdut" class="requireAuth" enctype="multipart/form-data" method="POST">
|
||||
<form th:action="@{/material/simdut}" class="requireAuth" enctype="multipart/form-data" method="POST">
|
||||
<input name="materialID" th:value="${materialID}" type="hidden"/>
|
||||
|
||||
<label for="simdut">Choisissez le fichier SIMDUT du produit:</label>
|
||||
<label for="simdut" th:text="#{material.simdut.choose} + ':'"></label>
|
||||
<input id="simdut" name="simdut" type="file"/>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<input type="submit" value="Enregistrer"/>
|
||||
<input type="submit" th:value="#{keyword.save}"/>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Ajout d'un type de produit</title>
|
||||
<th:block th:include="fragments.html :: head(#{materialType.add.title})"></th:block>
|
||||
|
||||
<link href="/css/main.css" rel="stylesheet"/>
|
||||
<link href="/css/forms.css" rel="stylesheet"/>
|
||||
<link rel="stylesheet" th:href="@{/css/forms.css}"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
@ -14,29 +12,32 @@
|
|||
<!-- Corps de la page -->
|
||||
<section>
|
||||
<p class="error" th:text="${error}"></p>
|
||||
<h1>Ajout d'un type de produit</h1>
|
||||
<h1 th:text="#{materialType.add.title}"></h1>
|
||||
|
||||
<div class="form">
|
||||
<form action="/materialType/creator" class="requireAuth" method="POST">
|
||||
<form th:action="@{/materialType/creator}" th:object="${materialType}" class="requireAuth" method="POST">
|
||||
<table>
|
||||
<tr>
|
||||
<td><label for="materialTypeName">Nom du type de produit: </label></td>
|
||||
<td><input id="materialTypeName" name="materialTypeName" required type="text"></td>
|
||||
<td><label th:for="${#ids.next('materialTypeName')}" th:text="#{materialType.name} + ':'"></label>
|
||||
</td>
|
||||
<td><input type="text" th:field="*{materialTypeName}" required></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="prefix">Préfixe (3 caractères): </label></td>
|
||||
<td><input id="prefix" maxlength="3" minlength="3" name="prefix" required type="text"></td>
|
||||
<td><label th:for="${#ids.next('prefix')}"
|
||||
th:text="#{materialType.prefix} + ' (3 ' + #{keyword.characters} + '):'"></label></td>
|
||||
<td><input maxlength="3" minlength="3" type="text" th:field="*{prefix}" required></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="usePercentages">Utiliser les pourcentages: </label></td>
|
||||
<td><input id="usePercentages" name="usePercentages" type="checkbox"></td>
|
||||
<td><label th:for="${#ids.next('usePercentages')}"
|
||||
th:text="#{materialType.usePercents} + ':'"></label></td>
|
||||
<td><input type="checkbox" th:field="*{usePercentages}"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button class="returnIndex" type="button">Retour</button>
|
||||
<button class="returnIndex" type="button" th:text="#{keyword.back}"></button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="submit">Enregistrer</button>
|
||||
<button type="submit" th:text="#{keyword.save}"></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -44,7 +45,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Ajout d'un mélange</title>
|
||||
|
@ -73,7 +73,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Modifier un mélange</title>
|
||||
|
@ -58,7 +58,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Ajout d'une recette</title>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<button th:onclick="'document.location.href=\'/recipe/editor/' + ${recipeID} + '\''">Continuer</button>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Ajout d'une recette</title>
|
||||
|
@ -59,7 +59,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title th:text="'Modification de ' + ${recipe.recipeCode}"></title>
|
||||
|
@ -203,7 +203,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Modifier une recette</title>
|
||||
|
@ -70,7 +70,7 @@
|
|||
</th:block>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title th:text="'Couleur ' + ${recipe.recipeCode}"></title>
|
||||
|
@ -232,7 +232,7 @@
|
|||
</table>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<html lang="fr" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Supprimer des recettes</title>
|
||||
|
@ -68,7 +68,7 @@
|
|||
</form>
|
||||
</section>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<th:block th:include="fragments.html :: head(#{app.title})"></th:block>
|
||||
<title>Génération du PDF d'un kit de retouche</title>
|
||||
|
@ -22,7 +22,7 @@
|
|||
<input type="submit" value="Générer"/>
|
||||
</form>
|
||||
<!-- Fragment du pied de page -->
|
||||
<footer th:include="fragments.html :: footer"></footer>
|
||||
<footer th:include="fragments.html :: footer(null)"></footer>
|
||||
|
||||
<script src="/js/main.js"></script>
|
||||
</body>
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue