Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
1 result

ecrireRecette.php

Blame
  • 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">&times;</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>