Select Git revision
ecrireRecette.php
-
Sofiane Lasri-Trienpont authoredSofiane Lasri-Trienpont authored
ecrireRecette.php 14.88 KiB
<?php isConnected(); ?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<!-- Dépendances -->
<?=Client::getDependencies()?>
<title><?=getWebsiteSetting("websiteName")?> | Écrire une recette</title>
<!-- Summernote -->
<link rel="stylesheet" href="<?=getWebsiteSetting("websiteUrl")?>pages/assets/vendors/summernote/dist/summernote-bs4.css">
<script type="text/javascript" src="<?=getWebsiteSetting("websiteUrl")?>pages/assets/vendors/summernote/dist/summernote-bs4.js"></script>
<link href="<?=getWebsiteSetting("websiteUrl")?>pages/assets/vendors/tam-emoji/css/emoji.css" rel="stylesheet">
<script src="<?=getWebsiteSetting("websiteUrl")?>pages/assets/vendors/tam-emoji/js/config.js"></script>
<script src="<?=getWebsiteSetting("websiteUrl")?>pages/assets/vendors/tam-emoji/js/tam-emoji.min.js"></script>
<!-- Embed -->
<meta content="<?=getWebsiteSetting("websiteName")?>" property="og:title" />
<meta content="<?=getWebsiteSetting("websiteDescription")?>" property="og:description" />
<meta content="<?=getWebsiteSetting("websiteUrl")?>" property="og:url" />
<meta content="<?=getWebsiteSetting("websiteUrl")?>data/images/logo/favicon.png" property="og:image" />
<meta content="<?=getWebsiteSetting("mainColor")?>" data-react-helmet="true" name="theme-color" />
<!-- Uniquement pour la vitrine -->
<link rel="stylesheet" href="<?=getWebsiteSetting("websiteUrl")?>pages/assets/vendors/flickity/css/flickity.css" media="screen">
</head>
<body>
<!-- Inclusion dynamique de la navbar -->
<?=Client::getNavbar()?>
<!-- Recettes -->
<div class="container mt-5">
<h4>Écrire une recette</h4>
<div class="row">
<div class="col-sm-6 col-editor-content">
<div class="form-group">
<label>Nom de la recette</label>
<input type="text" class="form-control" id="recetteTitle" placeholder="Une superbe recette">
</div>
<textarea required id="summernote" name="recetteContent"></textarea>
<div class="row">
<div class="col-sm mt-3">
<div class="card">
<h6 class="card-header">Ingrédients de la recette</h6>
<div class="card-body">
<div class="form-group">
<select multiple class="form-control" id="recetteIngredients">
<?php
$ingredients = Recette::getIngredients();
foreach($ingredients as $ingredient) {
echo '<option value="'.$ingredient['id'].'">'.$ingredient['nom'].' - '.$ingredient['calories'].' cal</option>';
}
?>
</select>
</div>
</div>
</div>
</div>
<div class="col-sm mt-3">
<div class="card">
<h6 class="card-header">Ustensiles nécessaires</h6>
<div class="card-body">
<div class="form-group">
<select multiple class="form-control" id="recetteUstensiles">
<?php
$ustensiles = Recette::getUstensiles();
foreach($ustensiles as $ustensile) {
echo '<option value="'.$ustensile['id'].'">'.$ustensile['nom'].'</option>';
}
?>
</select>
</div>
</div>
</div>
</div>
<div class="col-sm mt-3">
<div class="card">
<h6 class="card-header">Catégorie de la recette</h6>
<div class="card-body">
<div class="form-group">
<select class="form-control" id="recetteCategory">
<?php
$categories = Recette::getCategories();
foreach($categories as $category) {
echo '<option value="'.$category['id'].'">'.$category['nom'].'</option>';
}
?>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-6 col-editor-sidebar">
<div class="card vbcard">
<h6 class="card-header">Publier</h6>
<div class="card-body">
<div class="form-group d-flex flex-column">
<label>Difficulté</label>
<input
id="recetteDifficulte"
class="rating rating--nojs"
max="5"
step="1"
type="range"
value="5">
</div>
<div class="form-group d-flex flex-column">
<label>Temps de préparation (min)</label>
<input type="number" id="recettePreparation" step="1" min="1" max="100" placeholder="15">
</div>
<p class="card-text mt-2"><strong>Choisir une image d'entête</strong></p>
<a href="#" onclick="chooseHeaderPic()" class="text-orange"><div id="editor-headerPic" class="editor-headerPic border rounded" headerPic=""><i class="fas fa-image"></i>Ajouter</div></a>
<a href="#" onclick="publish()" class="btn btn-orange" style="margin-top: .75rem;">Publier</a>
</div>
</div>
<div class="card vbcard mt-3">
<h6 class="card-header">Description</h6>
<div class="card-body">
<p class="card-text"><strong>Une brève description du plat en question.</strong></p>
<textarea id="recetteDescription" class="form-control"></textarea>
</div>
</div>
</div>
</div>
</div>
<?=Client::getFooter()?>
<!-- Modal -->
<div class="modal fade" id="modal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modalTitle">Un titre d'exemple</h5>
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body" id="modalBody">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-orange" data-dismiss="modal" id="modalClose">Fermer</button>
<button type="button" class="btn btn-orange" id="modalSave">Save changes</button>
</div>
</div>
</div>
</div>
<script type="text/javascript">
// Initialise l'editeur
document.emojiButton = 'far fa-smile'; // default: fa fa-smile-o
document.emojiType = 'unicode'; // default: image
document.emojiSource = '<?=getWebsiteSetting("websiteUrl")?>pages/assets/vendors/tam-emoji/img';
$(document).ready(function() {
$('#summernote').summernote({
placeholder: "Faire cuire les sardines 30 minutes au four à micro-ondes.",
tabsize: 2,
height: 300,
toolbar: [
['style', ['style', 'bold', 'italic', 'underline', 'clear']],
['fontsize', ['fontsize', 'height', 'color']],
['para', ['ul', 'ol', 'paragraph']],
['font', ['strikethrough', 'superscript', 'subscript']],
['insert', ['link', 'picture', 'video', 'emoji']],
['view', ['fullscreen', 'codeview', 'undo', 'redo', 'help']]
]
});
});
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
function chooseHeaderPic(){
$("#modalTitle").html("Choisir une image d'entête");
$("#modalBody").html('<div class="form-group"><label>Lien de l\'image (on a pas le temps de faire un envoie de fichier)</label><input type="text" id="headerPicInput" class="form-control-file"></div>');
$("#modalSave").attr("onclick", "saveHeaderPic()");
$("#modal").modal("show");
}
function saveHeaderPic(){
var imageLink = $('input[id^="headerPicInput"]').val();
$("#editor-headerPic").css("background", "linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('"+imageLink+"')");
$("#editor-headerPic").html('<i class="fas fa-edit"></i> Modifier');
$("#editor-headerPic").attr("headerPic", imageLink);
$("#modal").modal("hide");
}
function publish(){
// On va faire les vérifications
var recetteTitle = $("#recetteTitle").val();
var recetteContent = $("#summernote").val();
var recetteDescription = $("#recetteDescription").val();
var recetteCategory = $("#recetteCategory").val();
var recetteHeaderPic = $("#editor-headerPic").attr("headerPic");
var recetteIngredients = $("#recetteIngredients").val();
var recetteUstensiles = $("#recetteUstensiles").val();
var recetteDifficulte = $("#recetteDifficulte").val();
var recettePreparation = $("#recettePreparation").val();
if(recetteTitle == ""){
SnackBar({
message: "Votre recette doit avoir un titre.",
status: "danger",
timeout: false
});
} else if(recetteContent == ""){
SnackBar({
message: "Votre recette doit avoir des instructions.",
status: "danger",
timeout: false
});
} else if(recetteDescription == ""){
SnackBar({
message: "Votre recette doit avoir une description.",
status: "danger",
timeout: false
});
} else if(recetteCategory == "0"){
SnackBar({
message: "Votre recette doit avoir une catégorie.",
status: "danger",
timeout: false
});
} else if(recetteHeaderPic == ""){
SnackBar({
message: "Votre recette doit avoir une image d'entête.",
status: "danger",
timeout: false
});
} else if(recetteIngredients == ""){
SnackBar({
message: "Votre recette doit avoir des ingrédients.",
status: "danger",
timeout: false
});
} else if(recetteUstensiles == ""){
SnackBar({
message: "Votre recette doit avoir des ustensiles.",
status: "danger",
timeout: false
});
} else if(recetteDifficulte == "0"){
SnackBar({
message: "Votre recette doit avoir une difficulté.",
status: "danger",
timeout: false
});
} else if(recettePreparation == ""){
SnackBar({
message: "Votre recette doit avoir un temps préparation.",
status: "danger",
timeout: false
});
} else {
// On peut publier
$.ajax({
url: '<?=getWebsiteSetting("websiteUrl")?><?=genPageLink("backTasks")?>?sendRecette',
type: 'POST',
data: {
action: "publishRecette",
recetteTitle: recetteTitle,
recetteContent: recetteContent,
recetteDescription: recetteDescription,
recetteCategory: recetteCategory,
recetteHeaderPic: recetteHeaderPic,
recetteIngredients: recetteIngredients,
recetteUstensiles: recetteUstensiles,
recetteDifficulte: recetteDifficulte,
recettePreparation: recettePreparation
},
success: function(data){
if(isJson(data)){
var json = JSON.parse(data);
if(json.success){
SnackBar({
message: "Votre recette a bien été publiée.",
status: "success",
timeout: false
});
setTimeout(function(){
window.location.href = "<?=getWebsiteSetting("websiteUrl")?><?=genPageLink("recette/?recetteId=")?>"+json.recetteId;
}, 2000);
} else {
SnackBar({
message: "Une erreur est survenue: "+json.error,
status: "danger",
timeout: false
});
}
}else{
SnackBar({
message: "Une erreur est survenue:"+data,
status: "danger",
timeout: false
});
}
}
});
}
}
function isJson(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
</script>
</body>
</html>