Fix create form and add edit Recettes / delete Recettes

This commit is contained in:
2026-04-03 14:42:43 +02:00
parent ae31644831
commit f8c0d6d1b2
10 changed files with 542 additions and 34 deletions

View File

@@ -432,31 +432,88 @@ ul {
} }
.recette-form { .recette-form {
height: 100%; height: 80%;
width: 100%; width: 80%;
margin: 10px; margin: 10px;
padding: 10px; padding: 10px;
border: 1px solid black;
background: white;
border-radius: 20px;
} }
.recette-form-group { .recette-form-group {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
padding: 5px;
} }
#recette-form-div-desc { #recette-form-div-desc {
height: 400px; height: 300px;
} }
#recette-form-description { #recette-form-description {
height: 95%; height: 95%;
} }
.recette-add-form-all {
display: flex;
flex-direction: row;
overflow: hidden;
}
.recette-form-add {
flex: 3;
}
.recette-form-add-ingr {
height: 30%;
}
.recette-form-add-tag {
height: 30%;
}
.recette-form-add-additional{
flex: 1;
padding-right: 10px;
}
.err {
color: red;
display: none;
text-align: center;
padding-top: 20px;
}
.liste-ingr-elem {
display: flex;
height: 100px;
padding:5px;
background-color: #c6fdefe0;
color: #000000;
border: 1px solid black;
border-radius: 10px;
box-shadow: 1px 1px 1px black;
}
.liste-ingr-elem-text {
width: 100%;
height: 100%;
flex:12;
padding-left: 20px;
line-height: 100px;
}
.ingr-image {
flex: 1;
border: 1px solid black;
border-radius: 10px;
}
/*Footer et son contenue*/ /*Footer et son contenue*/
footer{ footer{
padding: 25px; padding: 25px;
background: rgb(11, 189, 144); background: rgb(11, 189, 144);
color: white; color: white;
} border-top: 1px solid black;
}

169
public/assets/js/form.js Normal file
View File

@@ -0,0 +1,169 @@
document.addEventListener("DOMContentLoaded", function(){
let compl_form = document.getElementById("recette-form-complete");
console.log(compl_form);
function formulaire_ingredient_update(event) {
event.preventDefault();
console.log(event);
let form = document.getElementById("recette-form-ingr-add");
let cible = document.getElementById("recette-form-ingr");
let nomIngredient = document.getElementById("recette-form-ingr-nom");
let image = document.getElementById("recette-form-ingr-photo");
if( nomIngredient.value === "" || image.value === "" ){
alert( "Un champ requis est manquant." );
return;
}
let ingr = form.nom;
let form_data = new FormData(form);
fetch("/api/ingredients/create", {
method : "POST",
body: form_data
}).then( reponse => {
if (!reponse.ok) {
let div_err = document.getElementById("recette-form-div-err-ingr");
div_err.style.display = "inherit";
div_err.innerText = "Erreur de connection au serveur";
}
else {
reponse.json().then( data => {
if (data.success) {
let new_elem = document.createElement("option");
new_elem.setAttribute("value",document.getElementById('recette-form-ingr-nom').value);
new_elem.innerText = document.getElementById('recette-form-ingr-nom').value;
cible.appendChild(new_elem);
document.getElementById('recette-form-ingr-nom').value = "";
}
})
}
})
}
function formulaire_tag_update(event){
event.preventDefault();
let form = document.getElementById("recette-form-tag-add");
let cible = document.getElementById("recette-form-tag");
let nomTag = document.getElementById("recette-form-tag-nom");
if( nomTag.value === "" ){
alert( "Un champ requis est manquant." );
return;
}
let tag = form.tag;
let form_data = new FormData(form);
fetch("/api/tags/create", {
method : "POST",
body: form_data
}).then( reponse => {
if (!reponse.ok) {
let div_err = document.getElementById("recette-form-div-err-tag");
div_err.style.display = "inherit";
div_err.innerText = "Erreur de connection au serveur";
}
else {
reponse.json().then( data => {
if (data.success) {
let new_elem = document.createElement("option");
new_elem.setAttribute("value",nomTag.value);
new_elem.innerText = nomTag.value;
cible.appendChild(new_elem);
nomTag.value = "";
}
})
}
})
}
function formulaire_traitement(event){
event.preventDefault();
console.log( event );
let nom = document.getElementById('recette-form-nom');
let temps = document.getElementsByName('recette-form-nom');
let photo = document.getElementById('recette-form-photo');
let ingredients = document.getElementById('recette-form-ingr');
let tags = document.getElementById('recette-form-tag');
let description = document.getElementById('recette-form-description');
if( nom.value === "" || temps.value == "" || ingredients.value === "" || tags.value === ""){
console.log( "Another field" );
alert( "Un champ requis est manquant." );
return;
}
if( !IS_EDIT && photo.value === ""){
console.log( "Photo field" );
alert( "Un champ requis est manquant." );
return;
}
if( temps <= 0 ){
alert( "Le temps doit être positif ou supérieur à 0." );
return;
}
let form_data = new FormData(compl_form);
form_data.append( "ingredients", form_data.getAll("ingr").join(",") );
form_data.append( "tags", form_data.getAll( "tag").join(",") );
if( RECETTE_ID !== 0 )
form_data.append( 'id', RECETTE_ID );
let endpoint = IS_EDIT ? "/api/recettes/edit" : "/api/recettes/create";
fetch( endpoint, {
method : "POST",
body: form_data
}).then( reponse => {
if (!reponse.ok) {
alert( "Erreur survenie" );
}
else {
reponse.json().then( data => {
if (data.success) {
alert( "Envoyé" );
} else {
alert( data.error || "" );
}
})
}
})
}
let ingr_form = document.getElementById("recette-form-ingr-add");
ingr_form.addEventListener('submit', formulaire_ingredient_update);
let tag_form = document.getElementById("recette-form-tag-add");
tag_form.addEventListener('submit', formulaire_tag_update);
compl_form.addEventListener('submit', formulaire_traitement);
})

View File

@@ -41,13 +41,17 @@ class RecettesAPIController extends Controller {
$recetteRepo = new RecetteRepository(); $recetteRepo = new RecetteRepository();
$resp = $recetteRepo->advancedRecetteSearch( $title, $tagsId, $ingredientsId ); $resp = $recetteRepo->advancedRecetteSearch( $title, $tagsId, $ingredientsId );
$resp = array_map( function($recette) use ($recetteRepo){ $objResp = [];
$r = $recetteRepo->getByID( $recette['num_recette'] ); foreach( $resp as $r ){
$r->url = Router::getRouteURL( 'recettes->show', $r->slug ); $r = $recetteRepo->getByID( $r['num_recette'] );
$r->nb_ingredients = $r->getNumberOfIngredients(); $r->url = Router::getRouteURL( 'recettes->show', $r->slug );
return $r; $r->nb_ingredients = $r->getNumberOfIngredients();
}, $resp ?? [] ); if( !in_array( $r, $objResp ) ){
JSONResponse::sendSuccess( [ 'data' => $resp ] ); $objResp[] = $r;
}
}
JSONResponse::sendSuccess( [ 'data' => $objResp ] );
} }
@@ -58,8 +62,8 @@ class RecettesAPIController extends Controller {
$temps = Request::post( 'temps' ) ?? ""; $temps = Request::post( 'temps' ) ?? "";
$fileField = "image"; $fileField = "image";
$tagsId = explode( ",", Request::post( 'tag' ) ) ?? []; $tagsId = explode( ",", Request::post( 'tags' ) ) ?? [];
$ingredientsId = explode( ",", Request::post( 'ingr' ) ) ?? []; $ingredientsId = explode( ",", Request::post( 'ingredients' ) ) ?? [];
if( $tagsId == [ "" ] ) if( $tagsId == [ "" ] )
$tagsId = []; $tagsId = [];
@@ -83,13 +87,16 @@ class RecettesAPIController extends Controller {
// Vérification d'une entrée qui existerait déjà. // Vérification d'une entrée qui existerait déjà.
$slug = strtolower( $name ); $slug = strtolower( $name );
$slug = str_replace( ' ', '-', $slug ); $slug = str_replace( ' ', '', $slug );
$recetteRepo = new RecetteRepository(); $recetteRepo = new RecetteRepository();
if( $recetteRepo->getBySlug( $slug ) ){ if( $recetteRepo->getBySlug( $slug ) ){
JSONResponse::sendError( [ 'error' => "Recette already exists" ] ); JSONResponse::sendError( [ 'error' => "Recette already exists" ] );
} }
if( in_array( $slug, [ 'create', 'edit', 'delete' ] ) ){
JSONResponse::sendError( [ 'error' => "Recette already exists" ] );
}
// Création de la recette. // Création de la recette.
$recette = new Recette(); $recette = new Recette();
@@ -98,7 +105,7 @@ class RecettesAPIController extends Controller {
$recette->titre_recette = $name; $recette->titre_recette = $name;
$recette->slug = $slug; $recette->slug = $slug;
$recette->temps_de_preparation = intval( $temps ); $recette->temps_de_preparation = intval( $temps <= 0 ? 1 : $temps );
$recette->photo = $urlOrError; $recette->photo = $urlOrError;
$recette->description_recette = $description; $recette->description_recette = $description;
$recette->publication_date = date("Y-m-d"); $recette->publication_date = date("Y-m-d");
@@ -140,8 +147,8 @@ class RecettesAPIController extends Controller {
$temps = Request::post( 'temps' ) ?? ""; $temps = Request::post( 'temps' ) ?? "";
$fileField = "image"; $fileField = "image";
$tagsId = explode( ",", Request::post( 'tag' ) ) ?? []; $tagsId = explode( ",", Request::post( 'tags' ) ) ?? [];
$ingredientsId = explode( ",", Request::post( 'ingr' ) ) ?? []; $ingredientsId = explode( ",", Request::post( 'ingredients' ) ) ?? [];
if( $tagsId == [ "" ] ) if( $tagsId == [ "" ] )
$tagsId = []; $tagsId = [];
@@ -173,12 +180,12 @@ class RecettesAPIController extends Controller {
// Vérification d'une entrée qui existerait déjà. // Vérification d'une entrée qui existerait déjà.
$slug = strtolower( $name ); $slug = strtolower( $name );
$slug = str_replace( ' ', '-', $slug ); $slug = str_replace( ' ', '', $slug );
$recette->titre_recette = $name; $recette->titre_recette = $name;
$recette->slug = $slug; $recette->slug = $slug;
$recette->temps_de_preparation = intval( $temps ); $recette->temps_de_preparation = intval( $temps <= 0 ? 1 : $temps );
$recette->description_recette = $description; $recette->description_recette = $description;
// Importation de la recette. // Importation de la recette.

View File

@@ -33,4 +33,15 @@ class RecettesController extends Controller {
] ); ] );
} }
public function show( string $slug ): View {
$recette = new RecetteRepository()->getBySlug( $slug );
if( !$recette )
die( "Recette not found" );
return new View( 'recettes/show', [
'recette' => $recette,
]);
}
} }

View File

@@ -3,6 +3,12 @@
namespace App\Domain\Recettes; namespace App\Domain\Recettes;
use App\Domain\Controller; use App\Domain\Controller;
use App\Domain\Ingredients\IngredientRepository;
use App\Domain\Tags\TagRepository;
use App\Helpers\Authentification;
use App\Http\JSONResponse;
use App\Http\Request;
use App\Infrastructure\View;
class RecettesManagementController extends Controller { class RecettesManagementController extends Controller {
@@ -11,7 +17,69 @@ class RecettesManagementController extends Controller {
return [ return [
self::Route( routeUrl: '/recettes/create', routeName: 'recettes->create', routeAction: 'create' ), self::Route( routeUrl: '/recettes/create', routeName: 'recettes->create', routeAction: 'create' ),
self::Route( routeUrl: '/recettes/edit/{int}', routeName: 'recettes->edit', routeAction: 'edit' ), self::Route( routeUrl: '/recettes/edit/{int}', routeName: 'recettes->edit', routeAction: 'edit' ),
self::Route( routeUrl: '/recettes/delete/{int}', routeName: 'recettes->delete', routeAction: 'delete' ),
]; ];
} }
public function create(): View {
if( !Authentification::isLoggedIn() )
die( "Not logged in" );
return new View( 'recettes/create', [
'tags' => new TagRepository()->getAll(),
'ingredients' => new IngredientRepository()->getAll(),
] );
}
public function edit( int $idRecette ): View {
if( !Authentification::isLoggedIn() )
die( "Not logged in" );
$recette = new RecetteRepository()->getByID( $idRecette );
if( !$recette )
die( "Recette not found" );
$tagsID = array_map( function($tag) {
return $tag->getId();
}
, $recette->getAllLinkedTags() ?? [] );
$ingredientsID = array_map( function($tag) {
return $tag->getId();
}
, $recette->getAllLinkedIngredients() ?? [] );
return new View( 'recettes/edit', [
'recette' => $recette,
'recetteTags' => $tagsID,
'recetteIngr' => $ingredientsID,
'tags' => new TagRepository()->getAll(),
'ingredients' => new IngredientRepository()->getAll(),
]);
}
public function delete( int $idRecette ): never {
if( !Authentification::isLoggedIn() )
die( "Not logged in" );
$recette = new RecetteRepository()->getByID( $idRecette );
if( !$recette )
die( "Recette not found" );
$recetteRepo = new RecetteRepository();
// Retirer tous les liens Ingrédients/Tags.
foreach( ( $recette->getAllLinkedIngredients() ?? [] ) as $ingr ){
$recetteRepo->removeAnIngredient( $ingr, $recette );
}
foreach( ( $recette->getAllLinkedTags() ?? [] ) as $tag ){
$recetteRepo->removeATag( $tag, $recette );
}
if( !$recetteRepo->delete( $recette ) )
JSONResponse::sendError( [ 'error' => 'An error occured while deleting recette' ] );
Request::redirectTo( 'recettes->index' );
}
} }

View File

@@ -1,13 +1,2 @@
<h1>Coucou</h1> <h1>Coucou</h1>
<?php $str = "Markdown **text**\n# SOLONG\n*text*."; $md = \App\Helpers\Markdown::convertToHTML( $str ); echo "<p>$md</p>"; ?> <?php $str = "Markdown **text**\n# SOLONG\n*text*."; $md = \App\Helpers\Markdown::convertToHTML( $str ); echo "<p>$md</p>"; ?>
<?php
/*
$ing = new \App\Domain\Ingredients\Ingredient();
$ing->num_ingredient = 0;
$ing->nom_ingredient = "coucou";
new \App\Domain\Ingredients\IngredientRepository()->add($ing);
*/
var_dump( new \App\Domain\Recettes\RecetteRepository()->advancedRecetteSearch( "", [ 4 ], [] ) );
?>

77
views/recettes/create.php Normal file
View File

@@ -0,0 +1,77 @@
<?php use App\Domain\Recettes\Recette;
use App\Infrastructure\View as V; ?>
<div class="main-body">
<div class="content">
<div class="recette-add-form-all">
<form id="recette-form-complete" class="recette-form recette-form-add" action="/api/recettes/create" method="POST">
<div class="recette-form-group form-group">
<label for="nom">Titre : </label>
<input type="text" class="form-control" id="recette-form-nom" name="nom" placeholder="Titre de votre recette">
</div>
<div class="recette-form-group form-group">
<label for="temps">Temps (en min) : </label>
<input type="number" class="form-control" id="recette-form-temps" name="temps" placeholder="Temps de préparation">
</div>
<div class="recette-form-group form-group">
<label for="image">Photo du plat : </label>
<input type="file" class="form-control" id="recette-form-photo" name="image" placeholder="ajouter votre image">
</div>
<div class="recette-form-group form-group" id="recette-form-div-ingr">
<label for="ingr">Ingredients</label>
<select multiple class="form-control" id="recette-form-ingr" name="ingr" placeholder="Ingredients">
<?php foreach( V::arg( 'ingredients') as $ingr ): ?>
<option value="<?php echo $ingr->getID(); ?>"><?php echo $ingr->nom_ingredient; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="recette-form-group form-group" id="recette-form-div-tag">
<label for="tag">Tag</label>
<select multiple class="form-control" id="recette-form-tag" name="tag" placeholder="Tag">
<?php foreach( V::arg( 'tags') as $tag ): ?>
<option value="<?php echo $tag->getID(); ?>"><?php echo $tag->nom_tag; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="recette-form-group form-group" id="recette-form-div-desc">
<label for="description">Description</label>
<textarea type="texte" class="form-control" id="recette-form-description" name="description" placeholder="Description..."></textarea>
</div>
<button type='submit' class='btn btn-primary'>Confirmer</button>
</form>
<div class="recette-form-add-additional">
<form id="recette-form-ingr-add" class="recette-form recette-form-add-ingr" action="" method="POST">
<div class="recette-form-group form-group">
<label for="name">Nom de l'Ingrédient</label>
<input type="texte" class="form-control" id="recette-form-ingr-nom" name="name" placeholder="Nom de l'ingrédient" value="">
</div>
<div class="recette-form-group form-group">
<label for="image">Photo de l'Ingrédient</label>
<input type="file" class="form-control" id="recette-form-ingr-photo" name="image">
</div>
<button id="submit-ingr" type='submit' class='btn btn-primary'>Confirmer</button>
<div id="recette-form-div-err-ingr" class="err">
Erreur
</div>
</form>
<form id="recette-form-tag-add" class="recette-form recette-form-add-tag" action="" method="POST">
<div class="recette-form-group form-group">
<label for="tag">Tags</label>
<input type="text" class="form-control" id="recette-form-tag-nom" name="name" placeholder="Nom de l'ingrédient">
</div>
<button type='submit' class='btn btn-primary'>Confirmer</button>
<div id="recette-form-div-err-tag" class="err">
Erreur
</div>
</form>
</div>
</div>
</div>
</div>
<script>
const IS_EDIT = false; const RECETTE_ID = 0;
</script>
<script src="<?php V::assetUrl( 'js/form.js' ); ?>" defer></script>

77
views/recettes/edit.php Normal file
View File

@@ -0,0 +1,77 @@
<?php use App\Domain\Recettes\Recette;
use App\Infrastructure\View as V; ?>
<?php /** @var Recette $R */$R = V::arg( 'recette'); ?>
<div class="main-body">
<div class="content">
<div class="recette-add-form-all">
<form id="recette-form-complete" class="recette-form recette-form-add" action="/api/recettes/edit" method="POST">
<div class="recette-form-group form-group">
<label for="nom">Titre : </label>
<input type="text" class="form-control" id="recette-form-nom" name="nom" placeholder="Titre de votre recette" value="<?php echo $R->titre_recette; ?>">
</div>
<div class="recette-form-group form-group">
<label for="temps">Temps (en min) : </label>
<input type="number" class="form-control" id="recette-form-temps" name="temps" placeholder="Temps de préparation" value="<?php echo $R->temps_de_preparation; ?>">
</div>
<div class="recette-form-group form-group">
<label for="image">Photo du plat : </label>
<input type="file" class="form-control" id="recette-form-photo" name="image" placeholder="ajouter votre image">
</div>
<div class="recette-form-group form-group" id="recette-form-div-ingr">
<label for="ingr">Ingredients</label>
<select multiple class="form-control" id="recette-form-ingr" name="ingr" placeholder="Ingredients">
<?php foreach( V::arg( 'ingredients') as $ingr ): ?>
<option value="<?php echo $ingr->getID(); ?>" <?php echo in_array( $ingr->getId(), V::arg( 'recetteIngr') ) ? "selected" : ""; ?> ><?php echo $ingr->nom_ingredient; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="recette-form-group form-group" id="recette-form-div-tag">
<label for="tag">Tag</label>
<select multiple class="form-control" id="recette-form-tag" name="tag" placeholder="Tag">
<?php foreach( V::arg( 'tags') as $tag ): ?>
<option value="<?php echo $tag->getID(); ?>" <?php echo in_array( $tag->getId(), V::arg( 'recetteTags' ) ) ? "selected" : ""; ?> ><?php echo $tag->nom_tag; ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="recette-form-group form-group" id="recette-form-div-desc">
<label for="description">Description</label>
<textarea type="texte" class="form-control" id="recette-form-description" name="description" placeholder="Description..."><?php echo $R->description_recette; ?></textarea>
</div>
<button type='submit' class='btn btn-primary'>Confirmer</button>
</form>
<div class="recette-form-add-additional">
<form id="recette-form-ingr-add" class="recette-form recette-form-add-ingr" action="" method="POST">
<div class="recette-form-group form-group">
<label for="name">Nom de l'Ingrédient</label>
<input type="texte" class="form-control" id="recette-form-ingr-nom" name="name" placeholder="Nom de l'ingrédient" value="">
</div>
<div class="recette-form-group form-group">
<label for="image">Photo de l'Ingrédient</label>
<input type="file" class="form-control" id="recette-form-ingr-photo" name="image">
</div>
<button id="submit-ingr" type='submit' class='btn btn-primary'>Confirmer</button>
<div id="recette-form-div-err-ingr" class="err">
Erreur
</div>
</form>
<form id="recette-form-tag-add" class="recette-form recette-form-add-tag" action="" method="POST">
<div class="recette-form-group form-group">
<label for="tag">Tags</label>
<input type="text" class="form-control" id="recette-form-tag-nom" name="name" placeholder="Nom de l'ingrédient">
</div>
<button type='submit' class='btn btn-primary'>Confirmer</button>
<div id="recette-form-div-err-tag" class="err">
Erreur
</div>
</form>
</div>
</div>
</div>
</div>
<script>
const IS_EDIT = true; const RECETTE_ID = <?php echo $R->getId(); ?>;
</script>
<script src="<?php V::assetUrl( 'js/form.js' ); ?>" defer></script>

View File

@@ -5,7 +5,7 @@
<div id="recetteList" class="recettes"> <div id="recetteList" class="recettes">
<?php if( V::arg( 'recettesList' ) != null ) foreach( V::arg( 'recettesList' ) as $recette ): ?> <?php if( V::arg( 'recettesList' ) != null ) foreach( V::arg( 'recettesList' ) as $recette ): ?>
<a class="recette-icone" href="<?php V::routeUrl( 'recettes->show', $recette->slug ); ?>"> <a class="recette-icone" href="<?php V::routeUrl( 'recettes->show', $recette->slug ); ?>">
<img class="recette-preview-image" src="random-recette.jpg"> <img class="recette-preview-image" src="<?php echo $recette->photo; ?>">
<div class="recette-icone-content"> <div class="recette-icone-content">
<h3><?php echo $recette->titre_recette; ?></h3> <h3><?php echo $recette->titre_recette; ?></h3>
<ul> <ul>

53
views/recettes/show.php Normal file
View File

@@ -0,0 +1,53 @@
<?php use App\Domain\Recettes\Recette;
use App\Infrastructure\View as V; ?>
<?php /** @var Recette $R */ $R = V::arg( 'recette' ); ?>
<div class="content">
<div class="recette-title">
<h1><?php echo $R->titre_recette; ?></h1>
</div>
<div class="recette-content">
<div class="recette-div-info">
<div class="recette-div-image">
<img class="recette-image" src="<?php echo $R->photo; ?>">
</div>
<div class="recette-div-liste-info">
<?php if( \App\Helpers\Authentification::isLoggedIn() ): ?>
<ul class="recette-list-buttons">
<li><a class="recette-button" href="#" id="delete" data-id="<?php echo $R->num_recette; ?>">Supprimer</a></li>
<li><a class="recette-button" href="<?php V::routeUrl( 'recettes->edit', $R->getID() ); ?>">Modifier</a></li>
</ul>
<?php endif; ?>
<ul class="recette-liste-info">
<li class="recette-liste-info-elem"><?php echo $R->publication_date; ?></li>
<li class="recette-liste-info-elem"><?php echo $R->temps_de_preparation; ?> minutes</li>
<li class="recette-liste-info-elem"><?php echo $R->getNumberOfIngredients(); ?> ingrédients</li>
</ul>
<ul class="recette-liste-tag">
<?php foreach( $R->getAllLinkedTags() as $tag ): ?>
<li class="tag tag-unselected"><?php echo $tag->nom_tag; ?></li>
<?php endforeach; ?>
</ul>
</div>
</div>
<div class = "recette-desc">
<h3>Ingrédients :</h3>
<ul>
<?php foreach( $R->getAllLinkedIngredients() as $ingr ): ?>
<li><?php echo $ingr->nom_ingredient; ?></li>
<?php endforeach; ?>
</ul>
<div id="description">
<?php echo $R->getHTMLDescription(); ?>
</div>
</div>
</div>
</div>
<script>
document.getElementById( 'delete' ).addEventListener( 'click', e => {
if( window.confirm( "Êtes-vous sur de vouloir supprimer cette recette ? ") ){
let id = document.getElementById( 'delete' ).getAttribute( 'data-id' );
window.location.href = "/recettes/delete/" + id;
}
})
</script>