summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgit-pc-greta <ordipolo@gmx.fr>2025-01-30 14:52:59 +0100
committergit-pc-greta <ordipolo@gmx.fr>2025-01-30 14:52:59 +0100
commit63759dbbf023daa8f7f310b914a04310a4770154 (patch)
tree54432d8c60c3f00d3a8f9866ecd7e3089007d467 /src
parent4b21b40292de8ee08220ab901651a13ec5e35199 (diff)
downloadckeditor5-63759dbbf023daa8f7f310b914a04310a4770154.zip
foreach articles, modèle et id à l'extérieur
Diffstat (limited to 'src')
-rw-r--r--src/integration/ckeditor5/CKEditor.php65
-rw-r--r--src/integration/ckeditor5/image_upload.php6
-rw-r--r--src/integration/ckeditor5/view.php6
-rw-r--r--src/view/templates/page.php7
4 files changed, 36 insertions, 48 deletions
diff --git a/src/integration/ckeditor5/CKEditor.php b/src/integration/ckeditor5/CKEditor.php
index 6f630c8..9fa0f42 100644
--- a/src/integration/ckeditor5/CKEditor.php
+++ b/src/integration/ckeditor5/CKEditor.php
@@ -4,9 +4,10 @@
4class CKEditor 4class CKEditor
5{ 5{
6 public const string INTEGRATION_PATH = 'src/integration/ckeditor5/'; 6 public const string INTEGRATION_PATH = 'src/integration/ckeditor5/';
7 7 public const string DATA_PATH = 'data/page';
8 //public const string SERVER_PATH = '/'; 8 //public const string SERVER_PATH = '/';
9 private const string SERVER_PATH = '/ckeditor5/'; 9 private const string SERVER_PATH = '/ckeditor5/';
10
10 private string $server_root; // pour les "imports" en javascript 11 private string $server_root; // pour les "imports" en javascript
11 // pour l'importmap: j'ai modifié la version "installation avec CDN de la doc pour utiliser les fichiers locaux 12 // pour l'importmap: j'ai modifié la version "installation avec CDN de la doc pour utiliser les fichiers locaux
12 // l'"importmap" permet d'utiliser "import" (ça ressemble pas mal au python) dans le navigateur comme n'importe quel langage de programmation normal 13 // l'"importmap" permet d'utiliser "import" (ça ressemble pas mal au python) dans le navigateur comme n'importe quel langage de programmation normal
@@ -14,13 +15,12 @@ class CKEditor
14 private string $storage_mode = 'files'; 15 private string $storage_mode = 'files';
15 private string $page = 'accueil'; 16 private string $page = 'accueil';
16 private string $from = ''; 17 private string $from = '';
17 private string $id_article = ''; 18 //private string $id_article = '';
18 19
19 private string $php_ini_max_size; 20 private string $php_ini_max_size;
20 private string $css_editor_tag = ''; 21 private string $css_editor_tag = '';
21 private string $css_outside_editor_tag = ''; 22 private string $css_outside_editor_tag = '';
22 private string $toolbar_language = 'fr'; 23 private string $toolbar_language = 'fr';
23 private string $data_path = 'data/page';
24 24
25 25
26 public function __construct() 26 public function __construct()
@@ -41,14 +41,6 @@ class CKEditor
41 { 41 {
42 return $this->from; 42 return $this->from;
43 } 43 }
44 public function getIdArticle(): string
45 {
46 return $this->id_article;
47 }
48 public function getDataPath(): string
49 {
50 return $this->data_path;
51 }
52 public function getCSSOutsideEditorTag(): string 44 public function getCSSOutsideEditorTag(): string
53 { 45 {
54 return $this->css_outside_editor_tag; 46 return $this->css_outside_editor_tag;
@@ -71,10 +63,6 @@ class CKEditor
71 { 63 {
72 $this->from = $from; 64 $this->from = $from;
73 } 65 }
74 public function setIdArticle(string $id_article): void
75 {
76 $this->id_article = $id_article;
77 }
78 public function setStorageMode($mode): void 66 public function setStorageMode($mode): void
79 { 67 {
80 $this->storage_mode = $mode; 68 $this->storage_mode = $mode;
@@ -87,40 +75,36 @@ class CKEditor
87 die; 75 die;
88 } 76 }
89 77
90 78 public function displayArticle(string $id, string $texte): string
91 public function checkSubmitPOST(): void
92 { 79 {
93 $html_from_editor = $this->getAndCleanEditorOutput($_POST["contenu"]); // manipule $_POST['contenu']; 80 $html = '<div class="conteneur_article" >' . $texte . '</div>
94 81 <p><a href="index.php?page=' . $this->getPage() . '&action=open_editor&id=' . $id . '">ouvrir l\'éditeur</a></p>';
95 // enregistrement des données 82 return $html;
96 //var_dump($html_from_editor);
97 echo "ce programme n'enregistre rien, faîtes-le dans votre application et supprimer cette ligne dans index.php"; die;
98
99 header('Location: ' . $this->from);
100 die;
101 } 83 }
102 84
103 public function openEditor(): string 85 public function openEditor(string $id, string $texte): string
104 { 86 {
105 // version "minifiée" 87 // version "minifiée"
106 $this->css_editor_tag = '<link rel="stylesheet" href="node_modules/ckeditor5/dist/browser/ckeditor5.css" />'; 88 $this->css_editor_tag = '<link rel="stylesheet" href="node_modules/ckeditor5/dist/browser/ckeditor5.css" />';
107 // version normale aérée et commentée" 89 // version normale aérée et commentée"
108 $this->css_editor_tag = '<link rel="stylesheet" href="node_modules/ckeditor5/dist/ckeditor5.css" />'; 90 $this->css_editor_tag = '<link rel="stylesheet" href="node_modules/ckeditor5/dist/ckeditor5.css" />';
109 91
110 if($this->getStorageMode() === 'database')
111 {}
112 elseif($this->getStorageMode() === 'files')
113 {
114 $texte = file_get_contents($this->data_path . '/html/' . $this->id_article . '.html');
115
116 $texte = trim(addcslashes($texte, "'")); // échapper les simples quotes pour javascript
117 //$texte = trim(addslashes($texte)); // échappe ', ", \ et NULL, je sais pas si c'est bien
118 }
119
120 require self::INTEGRATION_PATH . 'view.php'; // html + JS 92 require self::INTEGRATION_PATH . 'view.php'; // html + JS
121 return $editeurHTML; 93 return $editeurHTML;
122 } 94 }
123 95
96 public function checkSubmitPOST(): void
97 {
98 $html_from_editor = $this->getAndCleanEditorOutput($_POST["contenu"]); // manipule $_POST['contenu'];
99
100 // enregistrement des données
101 //var_dump($html_from_editor); // debug
102 echo "ce programme n'enregistre rien, faîtes-le dans votre application et supprimer cette ligne dans index.php"; die;
103
104 header('Location: ' . $this->from);
105 die;
106 }
107
124 /* lien symbolique des traductions 108 /* lien symbolique des traductions
125 l'éditeur recherche un dans module/ckeditor5/dist/browser/translations 109 l'éditeur recherche un dans module/ckeditor5/dist/browser/translations
126 un fichier se trouvant dans module/ckeditor5/dist/translations 110 un fichier se trouvant dans module/ckeditor5/dist/translations
@@ -171,7 +155,7 @@ class CKEditor
171 // bugs possibles sans trim() lorsqu'on insère le HTML dans l'éditeur 155 // bugs possibles sans trim() lorsqu'on insère le HTML dans l'éditeur
172 $html = trim($html); 156 $html = trim($html);
173 157
174 //checkContentInFile($html, 'avant'); 158 //$this->checkContentInFile($html, 'avant');
175 159
176 // sécurisation du HTML (faille XSS) 160 // sécurisation du HTML (faille XSS)
177 require 'vendor/htmlawed/htmlawed/htmLawed.php'; 161 require 'vendor/htmlawed/htmlawed/htmLawed.php';
@@ -188,7 +172,7 @@ class CKEditor
188 $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs 172 $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs
189 $html = htmLawed($html, $configHtmLawed, $specHtmLawed); 173 $html = htmLawed($html, $configHtmLawed, $specHtmLawed);
190 174
191 //checkContentInFile($html, 'après'); 175 //$this->checkContentInFile($html, 'après');
192 176
193 return $html; 177 return $html;
194 } 178 }
@@ -196,11 +180,10 @@ class CKEditor
196 180
197 private function checkContentInFile($html, $file_name): void 181 private function checkContentInFile($html, $file_name): void
198 { 182 {
199 $page = 'page';
200 $nom_fichier = $file_name . ".html"; 183 $nom_fichier = $file_name . ".html";
201 $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 184 $fichier = fopen(self::DATA_PATH . '/' . $nom_fichier, 'w'); // w peut créer un fichier, si il existe déjà, il est effacé par le nouveau contenu
202 fputs($fichier, $html); 185 fputs($fichier, $html);
203 fclose($fichier); 186 fclose($fichier);
204 chmod('data/' . $page . '/' . $nom_fichier, 0666); 187 chmod(self::DATA_PATH . '/' . $nom_fichier, 0666);
205 } 188 }
206} 189}
diff --git a/src/integration/ckeditor5/image_upload.php b/src/integration/ckeditor5/image_upload.php
index 5764569..d549690 100644
--- a/src/integration/ckeditor5/image_upload.php
+++ b/src/integration/ckeditor5/image_upload.php
@@ -19,8 +19,8 @@ if($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['upload'])
19 // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur) 19 // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur)
20 if(in_array($extension, $extautorisées)) 20 if(in_array($extension, $extautorisées))
21 { 21 {
22 move_uploaded_file ($_FILES['upload']['tmp_name'], $this->data_path . '/images/' . $_FILES['upload']['name']); 22 move_uploaded_file ($_FILES['upload']['tmp_name'], self::DATA_PATH . '/images/' . $_FILES['upload']['name']);
23 chmod($this->data_path . '/images/' . $_FILES['upload']['name'], 0666); 23 chmod(self::DATA_PATH . '/images/' . $_FILES['upload']['name'], 0666);
24 } 24 }
25 else 25 else
26 { 26 {
@@ -39,7 +39,7 @@ if($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['upload'])
39 39
40 if(empty($erreur)) 40 if(empty($erreur))
41 { 41 {
42 $chemin = '{"url": "' . $this->data_path . '/images/' . $_FILES['upload']['name'] . '"}'; 42 $chemin = '{"url": "' . self::DATA_PATH . '/images/' . $_FILES['upload']['name'] . '"}';
43 echo $chemin; 43 echo $chemin;
44 } 44 }
45 else 45 else
diff --git a/src/integration/ckeditor5/view.php b/src/integration/ckeditor5/view.php
index bb1f6a2..4bcad52 100644
--- a/src/integration/ckeditor5/view.php
+++ b/src/integration/ckeditor5/view.php
@@ -1,13 +1,13 @@
1<?php 1<?php
2// src/integration/ckeditor5/view.php 2// src/integration/ckeditor5/view.php
3 3
4$submit_action = 'index.php?from=' . $this->page . '&action=submit_editor&id=' . $this->id_article; 4$submit_action = 'index.php?from=' . $this->page . '&action=submit_editor&id=' . $id;
5 5
6$cancel_button = 'index.php?page=' . $this->page; 6$cancel_button = 'index.php?page=' . $this->page;
7$cancel_button .= !empty($this->id_article) ? '&id=' . $this->id_article : ''; 7//$cancel_button .= !empty($id) ? '&id=' . $id : ''; // à ajouter si on a besoin de revenir sur un article spécifique
8 8
9$upload_ajax = 'index.php?action=upload_image_editor'; 9$upload_ajax = 'index.php?action=upload_image_editor';
10$upload_ajax .= !empty($this->id_article) ? '&id=' . $this->id_article : ''; 10$upload_ajax .= !empty($id) ? '&id=' . $id : '';
11 11
12ob_start(); 12ob_start();
13?> 13?>
diff --git a/src/view/templates/page.php b/src/view/templates/page.php
index 05c7444..3ea227a 100644
--- a/src/view/templates/page.php
+++ b/src/view/templates/page.php
@@ -9,7 +9,12 @@
9</head> 9</head>
10<body> 10<body>
11 <div> 11 <div>
12 <?= $editeurHTML ?> 12<?php
13foreach ($articles_content as $article)
14{
15 echo $article;
16}
17?>
13 </div> 18 </div>
14</body> 19</body>
15</html> 20</html>