WYSIWYG

WYSIWYG est un projet que j'ai fait pour l'école EEMI.

Le but recherché ici était d'avoir une interface administrateur avec un éditeur WYSIWYG, ici on utilise TinyMCE.


Actuellement disponible sur cette adresse : cyvax.fr/wysiwyg ou en téléchargement l'archive WYSIWYG.zip.

<?php
session_start();
include ("database.php");
$error = false;
$success = false;
$error_status = ["status" => "Request Not Processed"];
$status = ["status" => ""];
$filename = "Formulaire";
$origin = "formulaire.php";
$notification = "";
$special_chars = ["?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", ".", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}", "%", "+", chr(0)];
function sanitize($filename): string {
global $special_chars;
$file = str_replace($special_chars, "", $filename);
preg_match_all('/[\x21-\x7e]/', $file, $file_array); // Only Printable ASCII char.
if (count($file_array[0]) != 0) {
return implode("", $file_array[0]);
}
$file = htmlentities($file, ENT_COMPAT, "UTF-8");
$file = preg_replace('/&([a-zA-Z])(uml|acute|grave|circ|tilde|ring|slash);/','$1',$file);
return html_entity_decode($file);
}
function array_keys_checks(array $needles, array $haystack): bool
{
foreach ($needles as $needle)
{
if ( ! isset($haystack[$needle])) return false;
}
return true;
}
if ($_SERVER["REQUEST_METHOD"] === "POST") {
if (!array_keys_checks(["filename", "title", "decription", "html_h1", "html_content"], $_POST)) {
$html_filename = sanitize($_POST["filename"]);
$html_title = htmlspecialchars($_POST["title"]);
$html_h1 = htmlspecialchars($_POST["html_h1"]);
$html_description = htmlspecialchars($_POST["description"]);
$html_content = $_POST["html_content"];
$html = include "components/base_html.php";
// file_put_contents("pages/" . $html_filename . ".html", $html);
header("201 Created");
$success = true;
$status["status"] = "Votre fichier a bien été créé... Il est disponible <a href='./pages/" . $html_filename . ".html'>ici</a>.";
} else {
$error = true;
$error_status["status"] = "Erreur, Il manque des données, merci de vous réitérer...";
}
}
$head = '<script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script>';
$scripts = "<script>tinymce.init({selector:'textarea'});</script>";
$hero = '<div class="form_register">
<form method="POST" action="formulaire.php">
<label class="label has-text-left is-size-5" for="filename">Nom du Fichier<span class="required"></span></label>
<input class="input" type="text" name="filename" id="filename" placeholder="Nom du Fichier" required>
<label class="label has-text-left is-size-5" for="title">Titre de la page<span class="required"></span></label>
<input class="input" type="text" name="title" id="title" placeholder="Titre de la page" required>
<label class="label has-text-left is-size-5" for="description">Description<span class="required"></span></label>
<input class="input" type="text" name="description" id="description" placeholder="Description" required>
<label class="label has-text-left is-size-5" for="html_h1">Titre du document<span class="required"></span></label>
<input class="input" type="text" name="html_h1" id="html_h1" placeholder="Titre du document (h1)" required>
<label class="label has-text-left is-size-5" for="html_content">Main<span class="required"></span></label>
<textarea name="html_content">Vous pouvez commencer à créer votre page HTML !</textarea>
<div class="field button-field">
<button class="button is-block is-info is-large">Créer Page<i class="fa fa-sign-in" aria-hidden="true"></i></button>
</div>
</form>
</div>';
if ($error) {
$notification .= '<div class="notification is-danger ">
<button class="delete" onclick="deleteNotif(this)"></button>' . $error_status["status"] . '</div>';
}
if ($success) {
$notification .= '<div class="notification is-success ">
<button class="delete" onclick="deleteNotif(this)"></button>' . $status["status"] . '</div>';
}
include("components/base.php");
view raw formulaire.php hosted with ❤ by GitHub

cyvax - 2024