From e9a5da044f63851aa37d401ef37c8102b08ae274 Mon Sep 17 00:00:00 2001 From: polo Date: Mon, 13 Jan 2025 00:44:49 +0100 Subject: =?UTF-8?q?chemins=20chang=C3=A9s,=20dossier=20integration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.php | 19 --- index.php | 36 ++--- lib/ckeditor5/article_hors_editeur.css | 38 ----- lib/ckeditor5/clean_html.php | 46 ------ lib/ckeditor5/create.php | 16 -- lib/ckeditor5/image_upload.php | 64 -------- lib/ckeditor5/view.php | 173 --------------------- src/integration/ckeditor5/article_hors_editeur.css | 38 +++++ src/integration/ckeditor5/clean_html.php | 40 +++++ src/integration/ckeditor5/config.php | 22 +++ src/integration/ckeditor5/create.php | 18 +++ src/integration/ckeditor5/image_upload.php | 64 ++++++++ src/integration/ckeditor5/init.php | 13 ++ src/integration/ckeditor5/view.php | 173 +++++++++++++++++++++ src/templates/page.php | 15 -- src/view/templates/page.php | 15 ++ 16 files changed, 400 insertions(+), 390 deletions(-) delete mode 100644 config.php delete mode 100644 lib/ckeditor5/article_hors_editeur.css delete mode 100644 lib/ckeditor5/clean_html.php delete mode 100644 lib/ckeditor5/create.php delete mode 100644 lib/ckeditor5/image_upload.php delete mode 100644 lib/ckeditor5/view.php create mode 100644 src/integration/ckeditor5/article_hors_editeur.css create mode 100644 src/integration/ckeditor5/clean_html.php create mode 100644 src/integration/ckeditor5/config.php create mode 100644 src/integration/ckeditor5/create.php create mode 100644 src/integration/ckeditor5/image_upload.php create mode 100644 src/integration/ckeditor5/init.php create mode 100644 src/integration/ckeditor5/view.php delete mode 100644 src/templates/page.php create mode 100644 src/view/templates/page.php diff --git a/config.php b/config.php deleted file mode 100644 index 43e8523..0000000 --- a/config.php +++ /dev/null @@ -1,19 +0,0 @@ - requête AJAX { - require 'lib/ckeditor5/image_upload.php'; + require $ckeditor_integration_path . 'image_upload.php'; } + +// submit normal elseif(isset($_GET['action']) && $_GET['action'] === 'submit') // HTML envoyé par l'éditeur { - require 'lib/ckeditor5/clean_html.php'; + require $ckeditor_integration_path . 'clean_html.php'; $html_from_editor = getAndCleanEditorOutput(); // manipule $_POST['contenu']; // enregistrement des données @@ -29,9 +27,11 @@ elseif(isset($_GET['action']) && $_GET['action'] === 'submit') // HTML envoyé p header('Location: ' . $previous_page); die; } -elseif(isset($_GET['page']) && $_GET['page'] === 'editor') // ouvrir l'éditeur + +// ouvrir l'éditeur +elseif(isset($_GET['page']) && $_GET['page'] === 'editor') { - require 'lib/ckeditor5/create.php'; + require $ckeditor_integration_path . 'create.php'; } else // $previous_page, affichage sans l'article { @@ -43,8 +43,8 @@ else // $previous_page, affichage sans l'article elseif($storage === 'files') { $texte = file_get_contents('data/' . $page . '/html/' . $nom_article . '.html'); - $texte = trim(addcslashes($texte, "'")); // échappe seulement les simples quotes - //$texte = trim($texte); + //$texte = trim(addcslashes($texte, "'")); // échappe seulement les simples quotes + $texte = trim($texte); } // vue @@ -54,6 +54,4 @@ else // $previous_page, affichage sans l'article } // vue -require 'src/templates/page.php'; - -// fin du script +require 'src/view/templates/page.php'; diff --git a/lib/ckeditor5/article_hors_editeur.css b/lib/ckeditor5/article_hors_editeur.css deleted file mode 100644 index a38b384..0000000 --- a/lib/ckeditor5/article_hors_editeur.css +++ /dev/null @@ -1,38 +0,0 @@ -.conteneur_article{width: 630px;} -.conteneur_article:after{content: ""; display: block; clear: both;} - -img{vertical-align: bottom;} -@media screen and (max-width: 1000px) -{img{max-width: 900px;}} - -.text-tiny{font-size: x-small;} -.text-small{font-size: small;} -.text-big{font-size: large;} -.text-huge{font-size: x-large;} - -blockquote{border-left: 5px #cccccc solid; margin: 14px 0px; padding: 2px 25px; font-style: italic;} - -.marker-yellow{background-color: #fdfd77;} -.marker-green{background-color: #62f962;} -.marker-pink{background-color: #fc7899;} -.marker-blue{background-color: #72ccfd;} -.pen-red{background-color: white; color: red;} -.pen-green{background-color: white; color: green;} - -ul{padding-left: 10px;} -.todo-list>li{list-style-type : none;} -input[type=checkbox]{-webkit-appearance: none;-moz-appearance: none;-ms-appearance: none; -height: 16px; width: 16px; border: 1px solid black; border-radius: 2px; position: relative; top: 5px; margin-right: 10px;} -input[type="checkbox"]:checked{border: none; background: #26ab33;} - -.table>table{border-collapse: collapse;} -.table td{border: 1px grey solid; padding: 7px; min-width: 30px;} -td p{margin: 0px;} - -.image{margin: 0px; text-align: center; display: inline-block;} -.image-style-side{float: right;} -.image img{max-width: 630px;} -.image-style-side img{max-width: 315px;} -.image>figcaption{margin: 0px 10px; padding: 7px; text-align: center; font-size: small; background-color: #f7f7f7;} - -iframe{min-width: 400px; min-height: 300px; max-width: 1200px; max-height: 900px;} diff --git a/lib/ckeditor5/clean_html.php b/lib/ckeditor5/clean_html.php deleted file mode 100644 index 5d00532..0000000 --- a/lib/ckeditor5/clean_html.php +++ /dev/null @@ -1,46 +0,0 @@ -1, // protection contre les élements et attributs dangereux - - // balises autorisées - 'elements'=>'h2, h3, h4, p, span, i, strong, u, s, mark, blockquote, li, ol, ul, a, figure, hr, img, figcaption, table, tbody, tr, td', - // note: change en - - // attributs interdits - 'deny_attribute'=>'id', // 'class' et 'style' sont conservés pour le ckeditor - ); - $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs - $html = htmLawed($html, $configHtmLawed, $specHtmLawed); - - - //~ $nom_fichier = "après.html"; - //~ $fichier = fopen('data/' . $page . '/' . $nom_fichier, 'w'); // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu - //~ fputs($fichier, $html); - //~ fclose($fichier); - //~ chmod('data/' . $page . '/' . $nom_fichier, 0666); - - - return $html; -} - - - diff --git a/lib/ckeditor5/create.php b/lib/ckeditor5/create.php deleted file mode 100644 index d62f893..0000000 --- a/lib/ckeditor5/create.php +++ /dev/null @@ -1,16 +0,0 @@ - - -// pour voir cette réponse, les messages d'erreur ou tout affichage avec echo ou var_dump: -// outils de développement (F12) => réseau => trouver la requête (xhr) => cliquer dessus puis sur réponse - -// rappel: le téléchargement de fichier avec PHP nécessite un dossier temporaire et que le serveur y soit autorisé en écriture - - -$erreur = ''; -if(isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok -{ - if($_FILES['upload']['size'] <= $php_ini_max_size ) - { - $infos = pathinfo ($_FILES['upload']['name']); - $extension = $infos['extension']; - $extautorisées = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff']; - // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur) - if(in_array($extension, $extautorisées)) - { - move_uploaded_file ($_FILES['upload']['tmp_name'], 'data/' . $page . '/images/' . $_FILES['upload']['name']); - chmod('data/' . $page . '/images/' . $_FILES['upload']['name'], 0666); - } - else - { - $erreur = 'mauvais format, veuillez utiliser une image comportant un de ces formats: jpg ou jpeg, png, gif, bmp, webp, tiff
le format svg n\'est pas supporté'; - } - } - else - { - $erreur = 'fichier trop lourd'; - } -} -else -{ - $erreur = $_FILES['upload']['error']; -} -/* les erreurs retournées avec $_FILES['upload']['error']: -0 pas d'erreur -1 taille du fichier supérieure à la valeur de upload_max_filesize dans le fichier php.ini (par défaut = 2 MO) -2 taille du fichier supérieure à la valeur de MAX_FILE_SIZE dans le formulaire HTML -3 fichier partiellement téléchargé -4 pas de fichier du tout -6 pas de dossier temporaire pour mettre le fichier -7 echec de l'écriture sur le DD -8 envoi arrêté par une extension de PHP mais on ne nous dit pas pourquoi => diagnostic avec la fonction phpinfo() */ - -if(empty($erreur)) -{ - $chemin = '{"url": "data/' . $page . '/images/' . $_FILES['upload']['name'] . '"}'; - echo $chemin; -} -else -{ - echo $erreur; -} -die; diff --git a/lib/ckeditor5/view.php b/lib/ckeditor5/view.php deleted file mode 100644 index e592a73..0000000 --- a/lib/ckeditor5/view.php +++ /dev/null @@ -1,173 +0,0 @@ -'; // version normale aérée et commentée -$css_editeur = ''; // version "minifiée" - -ob_start(); -?> -
-
- - - - - - -
-
-li{list-style-type : none;} +input[type=checkbox]{-webkit-appearance: none;-moz-appearance: none;-ms-appearance: none; +height: 16px; width: 16px; border: 1px solid black; border-radius: 2px; position: relative; top: 5px; margin-right: 10px;} +input[type="checkbox"]:checked{border: none; background: #26ab33;} + +.table>table{border-collapse: collapse;} +.table td{border: 1px grey solid; padding: 7px; min-width: 30px;} +td p{margin: 0px;} + +.image{margin: 0px; text-align: center; display: inline-block;} +.image-style-side{float: right;} +.image img{max-width: 630px;} +.image-style-side img{max-width: 315px;} +.image>figcaption{margin: 0px 10px; padding: 7px; text-align: center; font-size: small; background-color: #f7f7f7;} + +iframe{min-width: 400px; min-height: 300px; max-width: 1200px; max-height: 900px;} diff --git a/src/integration/ckeditor5/clean_html.php b/src/integration/ckeditor5/clean_html.php new file mode 100644 index 0000000..e56f49c --- /dev/null +++ b/src/integration/ckeditor5/clean_html.php @@ -0,0 +1,40 @@ +1, // protection contre les élements et attributs dangereux + + // balises autorisées + 'elements'=>'h2, h3, h4, p, span, i, strong, u, s, mark, blockquote, li, ol, ul, a, figure, hr, img, figcaption, table, tbody, tr, td', + // note: change en + + // attributs interdits + 'deny_attribute'=>'id', // 'class' et 'style' sont conservés pour le ckeditor + ); + $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs + $html = htmLawed($html, $configHtmLawed, $specHtmLawed); + + //checkContentInFile($html, 'après'); + + return $html; +} + + +function checkContentInFile($html, $file_name) +{ + $page = 'page'; + $nom_fichier = $file_name . ".html"; + $fichier = fopen('data/' . $page . '/' . $nom_fichier, 'w'); // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu + fputs($fichier, $html); + fclose($fichier); + chmod('data/' . $page . '/' . $nom_fichier, 0666); +} \ No newline at end of file diff --git a/src/integration/ckeditor5/config.php b/src/integration/ckeditor5/config.php new file mode 100644 index 0000000..822884f --- /dev/null +++ b/src/integration/ckeditor5/config.php @@ -0,0 +1,22 @@ +'; + +$server_root = $_SERVER['SERVER_NAME'] . '/ckeditor5/'; +// pour l'importmap: j'ai modifié la version "installation avec CDN de la doc pour utiliser les fichiers locaux +// l'"importmap" permet d'utiliser "import" (ça ressemble pas mal au python) dans le navigateur comme n'importe quel langage de programmation normal + +$previous_page = 'index.php'; +$open_editor_link = 'index.php?page=editor'; +$form_action_file = 'index.php?action=submit'; +$upload_ajax_url = 'index.php?action=upload_image'; + +$toolbar_language = 'fr'; + +$storage = 'files'; // choisir 'files' ou 'database' +$page = 'page'; +$nom_article = "article"; + +$php_ini_max_size = ini_get('upload_max_filesize'); // = 2M par défaut dans le php.ini diff --git a/src/integration/ckeditor5/create.php b/src/integration/ckeditor5/create.php new file mode 100644 index 0000000..863c420 --- /dev/null +++ b/src/integration/ckeditor5/create.php @@ -0,0 +1,18 @@ + + +// pour voir cette réponse, les messages d'erreur ou tout affichage avec echo ou var_dump: +// outils de développement (F12) => réseau => trouver la requête (xhr) => cliquer dessus puis sur réponse + +// rappel: le téléchargement de fichier avec PHP nécessite un dossier temporaire et que le serveur y soit autorisé en écriture + + +$erreur = ''; +if(isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok +{ + if($_FILES['upload']['size'] <= $php_ini_max_size ) + { + $infos = pathinfo ($_FILES['upload']['name']); + $extension = $infos['extension']; + $extautorisées = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff']; + // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur) + if(in_array($extension, $extautorisées)) + { + move_uploaded_file ($_FILES['upload']['tmp_name'], 'data/' . $page . '/images/' . $_FILES['upload']['name']); + chmod('data/' . $page . '/images/' . $_FILES['upload']['name'], 0666); + } + else + { + $erreur = 'mauvais format, veuillez utiliser une image comportant un de ces formats: jpg ou jpeg, png, gif, bmp, webp, tiff
le format svg n\'est pas supporté'; + } + } + else + { + $erreur = 'fichier trop lourd'; + } +} +else +{ + $erreur = $_FILES['upload']['error']; +} +/* les erreurs retournées avec $_FILES['upload']['error']: +0 pas d'erreur +1 taille du fichier supérieure à la valeur de upload_max_filesize dans le fichier php.ini (par défaut = 2 MO) +2 taille du fichier supérieure à la valeur de MAX_FILE_SIZE dans le formulaire HTML +3 fichier partiellement téléchargé +4 pas de fichier du tout +6 pas de dossier temporaire pour mettre le fichier +7 echec de l'écriture sur le DD +8 envoi arrêté par une extension de PHP mais on ne nous dit pas pourquoi => diagnostic avec la fonction phpinfo() */ + +if(empty($erreur)) +{ + $chemin = '{"url": "data/' . $page . '/images/' . $_FILES['upload']['name'] . '"}'; + echo $chemin; +} +else +{ + echo $erreur; +} +die; diff --git a/src/integration/ckeditor5/init.php b/src/integration/ckeditor5/init.php new file mode 100644 index 0000000..4d77cba --- /dev/null +++ b/src/integration/ckeditor5/init.php @@ -0,0 +1,13 @@ +'; // version normale aérée et commentée +$css_editeur = ''; // version "minifiée" + +ob_start(); +?> +
+
+ + + + + + +
+
+ - - - - - - - - - -
- -
- - diff --git a/src/view/templates/page.php b/src/view/templates/page.php new file mode 100644 index 0000000..3153ced --- /dev/null +++ b/src/view/templates/page.php @@ -0,0 +1,15 @@ + + + + + + + + + + +
+ +
+ + -- cgit v1.2.3