diff options
Diffstat (limited to 'controller/admin.php')
| -rw-r--r-- | controller/admin.php | 372 |
1 files changed, 207 insertions, 165 deletions
diff --git a/controller/admin.php b/controller/admin.php index e319c80..7f22711 100644 --- a/controller/admin.php +++ b/controller/admin.php | |||
| @@ -1,165 +1,207 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // controller/admin.php | 2 | // controller/admin.php |
| 3 | // | 3 | // |
| 4 | // utilisation du site en écriture (admin uniquement) | 4 | // utilisation du site en écriture (admin uniquement) |
| 5 | // l'éditeur ouvert ou demande de suppression d'un élément | 5 | // éditeur ouvert ou suppression d'un élément |
| 6 | 6 | ||
| 7 | function melaineEdit($numArticle, $suppression) | 7 | function melaineEdit($fileCode, $suppression) |
| 8 | { | 8 | { |
| 9 | $page_actuelle = "melaine"; | 9 | $page_actuelle = "melaine"; |
| 10 | 10 | ||
| 11 | // modèle | 11 | // infos sur les fichiers |
| 12 | $Article = new Page($page_actuelle); | 12 | $Articles = new Article($page_actuelle); |
| 13 | 13 | ||
| 14 | // nouvel article | 14 | // nouvel article |
| 15 | if($numArticle == 0) | 15 | if($fileCode == '') |
| 16 | { | 16 | { |
| 17 | $title = "Ajouter un article"; | 17 | $title = "Ajouter un article"; |
| 18 | $texte = ''; | 18 | $texte = ''; |
| 19 | } | 19 | } |
| 20 | else | 20 | else |
| 21 | { | 21 | { |
| 22 | // nom de l'article ciblé (objet et session) | 22 | // nom de l'article ciblé (objet et session) |
| 23 | $Article->findFileName($numArticle); | 23 | $Articles->fileCode = $fileCode; |
| 24 | $_SESSION['target'] = $Article->fileName; | 24 | $_SESSION['target'] = $Articles->fileCode; |
| 25 | 25 | ||
| 26 | // suppression | 26 | // suppression |
| 27 | if($suppression) | 27 | if($suppression) |
| 28 | { | 28 | { |
| 29 | $Article->delete(); | 29 | $Articles->delete(); |
| 30 | header('Location: index.php?page=' . $page_actuelle); | 30 | |
| 31 | exit(); | 31 | // redirection immédiate avant affichage |
| 32 | } | 32 | header('Location: index.php?page=' . $page_actuelle); |
| 33 | // modification | 33 | exit(); |
| 34 | else | 34 | } |
| 35 | { | 35 | // modification |
| 36 | $title = "Modifier un article"; | 36 | else |
| 37 | $texte = $Article->readOne(); // entrée de l'éditeur | 37 | { |
| 38 | } | 38 | $title = "Modifier un article"; |
| 39 | } | 39 | $texte = $Articles->readOne(); // entrée de l'éditeur |
| 40 | 40 | } | |
| 41 | // pour l'affichage des articles | 41 | } |
| 42 | $articles = array_reverse($Article->readAll()); // lourd | 42 | |
| 43 | 43 | // ajout des données dans $Articles->fileList['content'] | |
| 44 | // sécurisation du contenu pré-existant inséré dans l'éditeur | 44 | if(!empty($Articles->fileList)) |
| 45 | if($numArticle > 0 && !$suppression) | 45 | { |
| 46 | { | 46 | $Articles->readAll(); |
| 47 | require('controller/ckeditor.php'); | 47 | $Articles->fileList = array_reverse($Articles->fileList); |
| 48 | $texte = preparationCKeditor($texte); | 48 | } |
| 49 | } | 49 | |
| 50 | 50 | // sécurisation du contenu pré-existant inséré dans l'éditeur | |
| 51 | // NB: penser à ajouter au template la fonctionnalité "autosave" | 51 | if(!empty($fileCode) && !$suppression) |
| 52 | // https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/saving-data.html | 52 | { |
| 53 | 53 | $fileCodeArgument = '&article=' . $fileCode; | |
| 54 | // morceaux en HTML à assembler | 54 | require('controller/ckeditor.php'); |
| 55 | // variable $editeurHTML, contient $texte | 55 | $texte = preparationCKeditor($texte); |
| 56 | require('view/template-formulaires.php'); | 56 | } |
| 57 | // variables $css, $js, $header et $content, | 57 | else |
| 58 | // $content contient $articles et $editeurHTML | 58 | { |
| 59 | require('view/melaine.php'); | 59 | $fileCodeArgument = ''; |
| 60 | // fin de l'assemblage | 60 | } |
| 61 | require('view/template.php'); | 61 | |
| 62 | } | 62 | |
| 63 | 63 | // NB: penser à ajouter au template la fonctionnalité "autosave" | |
| 64 | function discoEdit($albumCode, $suppression) | 64 | // https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/saving-data.html |
| 65 | { | 65 | |
| 66 | $page_actuelle = "discographie"; | 66 | // morceaux en HTML à assembler |
| 67 | $title = "Discographie"; | 67 | // variable $editeurHTML, contient $texte |
| 68 | 68 | require('view/template-formulaires.php'); | |
| 69 | // modèle | 69 | // variables $css, $js, $header et $content, |
| 70 | $Albums = new Album($page_actuelle); | 70 | // $content contient $articles et $editeurHTML |
| 71 | $Albums->makeFileList(); | 71 | require('view/melaine.php'); |
| 72 | 72 | // fin de l'assemblage | |
| 73 | // nouvel album | 73 | require('view/template.php'); |
| 74 | if($albumCode == '') | 74 | } |
| 75 | { | 75 | |
| 76 | unset($_SESSION['target']); | 76 | function discoEdit($fileCode, $suppression) |
| 77 | $title = "Ajouter un album"; | 77 | { |
| 78 | 78 | $page_actuelle = "discographie"; | |
| 79 | // formulaires vides | 79 | $title = "Discographie"; |
| 80 | $vignette = ['', '', '']; | 80 | |
| 81 | $texte = ''; | 81 | // modèle |
| 82 | } | 82 | $Albums = new Album($page_actuelle); |
| 83 | else | 83 | $Albums->makeFileList(); |
| 84 | { | 84 | //var_dump($Albums); |
| 85 | // album ciblé | 85 | // contenu: JSON, HTML, noms et chemins des fichiers |
| 86 | $Albums->albumCode = $albumCode; | 86 | $Albums->readAll(); |
| 87 | 87 | $Albums->fileList = array_reverse($Albums->fileList); | |
| 88 | // suppression | 88 | //var_dump($Albums); |
| 89 | if($suppression) | 89 | //var_dump($Albums->fileList); |
| 90 | { | 90 | |
| 91 | $Albums->delete(); | 91 | // nouvel album |
| 92 | header('Location: index.php?page=' . $page_actuelle); | 92 | if($fileCode == '') |
| 93 | exit(); | 93 | { |
| 94 | } | 94 | //echo($_SESSION['target'] . "<br/>"); |
| 95 | // modification | 95 | //unset($_SESSION['target']); |
| 96 | else | 96 | $title = "Ajouter un album"; |
| 97 | { | 97 | |
| 98 | $_SESSION['target'] = $Albums->albumCode; | 98 | // formulaires vides |
| 99 | $title = "Modifier un album"; | 99 | $vignette = ['', '', '']; |
| 100 | $texte = $Albums->readOneHTML($albumCode); | 100 | $texte = ''; |
| 101 | $vignette = $Albums->getVignetteJSON(); | 101 | } |
| 102 | } | 102 | else |
| 103 | } | 103 | { |
| 104 | 104 | // album ciblé | |
| 105 | // traitements PHP pour l'éditeur | 105 | $Albums->fileCode = $fileCode; |
| 106 | // sécurisation du contenu pré-existant inséré dans l'éditeur | 106 | |
| 107 | if(!empty($albumCode) && !$suppression && !empty($texte)) | 107 | // suppression |
| 108 | { | 108 | if($suppression) |
| 109 | require('controller/ckeditor.php'); | 109 | { |
| 110 | $texte = preparationCKeditor($texte); | 110 | $Albums->delete(); |
| 111 | } | 111 | header('Location: index.php?page=' . $page_actuelle); |
| 112 | 112 | exit(); | |
| 113 | // préremplir le champ <input type="file" > | 113 | } |
| 114 | // c'est normallement impossible | 114 | // modification |
| 115 | 115 | else | |
| 116 | // contenu de tous les fichiers JSON (= tableau de chaines) | 116 | { |
| 117 | $albumsJSON = $Albums->readAll(); | 117 | $_SESSION['target'] = $fileCode; |
| 118 | // noms des fichiers JSON | 118 | $title = "Modifier un album"; |
| 119 | $albumNamesJSON = $Albums->fileList; | 119 | |
| 120 | 120 | for($i = 0; $i < $Albums->fileListCount; $i++) | |
| 121 | $annees = []; | 121 | { |
| 122 | for($i = 0; $i < count($albumsJSON); $i++) | 122 | if($fileCode == $Albums->fileList[$i]['fileCode']) |
| 123 | { | 123 | { |
| 124 | // une case supplémentaire contient le "albumCode" | 124 | // json |
| 125 | $albumsJSON[$i][3] = pathinfo($albumNamesJSON[$i])['filename']; | 125 | $vignette[0] = $Albums->fileList[$i]['titre']; |
| 126 | 126 | $vignette[1] = $Albums->fileList[$i]['annee']; | |
| 127 | $annees[$i] = $albumsJSON[$i][1]; | 127 | $vignette[2] = $Albums->fileList[$i]['pochette']; |
| 128 | } | 128 | // html |
| 129 | 129 | $texte = $Albums->fileList[$i]['HTMLcontent']; | |
| 130 | // tri d'un tableau multidimensionnel | 130 | |
| 131 | array_multisort($annees, $albumsJSON); | 131 | // image affichée à côté des formulaires |
| 132 | 132 | $imageFormulaire = 'data/' . $page_actuelle . '/images/' . $vignette[2]; | |
| 133 | // lien vers le HTML ou ancre? | 133 | } |
| 134 | $avecLien = []; | 134 | } |
| 135 | $linkDiscoChrono = []; | 135 | } |
| 136 | for($i = 0; $i < count($albumsJSON); $i++) | 136 | } |
| 137 | { | 137 | |
| 138 | // cas particulier où le dossier "html" est vide | 138 | // traitements PHP pour l'éditeur |
| 139 | if(!empty($Albums->fileList)) | 139 | // sécurisation du contenu pré-existant inséré dans l'éditeur |
| 140 | { | 140 | if(!empty($fileCode) && !$suppression && !empty($texte)) |
| 141 | if(file_exists('data/discographie/html/' . $albumsJSON[$i][3] . '.html')) | 141 | { |
| 142 | { | 142 | // dans l'adresse dans la balise <form> |
| 143 | $lienAlbum[$i] = 'page=album&album_name=' . $albumsJSON[$i][0] . '&album_code=' . $albumsJSON[$i][3]; | 143 | $fileCodeArgument = '&article=' . $fileCode; |
| 144 | $avecLien[$i] = true; | 144 | |
| 145 | $linkDiscoChrono[$i] = 'linkChrono'; // css | 145 | require('controller/ckeditor.php'); |
| 146 | } | 146 | $texte = preparationCKeditor($texte); |
| 147 | else | 147 | } |
| 148 | { | 148 | else |
| 149 | $lienAlbum[$i] = 'page=discographie#' . $albumsJSON[$i][0]; | 149 | { |
| 150 | $avecLien[$i] = false; | 150 | $fileCodeArgument = ''; |
| 151 | $linkDiscoChrono[$i] = 'noLinkChrono'; // css | 151 | } |
| 152 | } | 152 | |
| 153 | $lienBoutonModif[$i] = 'page=discographie&action=edition&album_code=' . $albumsJSON[$i][3]; | 153 | // préremplir le champ <input type="file" > |
| 154 | } | 154 | // c'est normallement impossible |
| 155 | } | 155 | |
| 156 | 156 | ||
| 157 | // morceaux en HTML à assembler | 157 | // tri des albums avec l'année dans le .json |
| 158 | // variable $editeurHTML, contient $texte | 158 | |
| 159 | require('view/template-formulaires.php'); | 159 | // noms des fichiers JSON |
| 160 | // variables $css, $js, $header et $content, | 160 | //$albumNamesJSON = $Albums->fileList; |
| 161 | // $content contient ???? et $editeurHTML | 161 | //$annees = []; |
| 162 | require('view/discographie.php'); | 162 | for($i = 0; $i < $Albums->fileListCount; $i++) |
| 163 | // fin de l'assemblage | 163 | { |
| 164 | require('view/template.php'); | 164 | // une case supplémentaire contient le "fileCode" |
| 165 | } | 165 | //$albumsJSON[$i][3] = pathinfo($albumNamesJSON[$i])['filename']; |
| 166 | //$albumsJSON[$i][3] = pathinfo($Albums->fileList[$i]['fileCode'])['filename']; | ||
| 167 | |||
| 168 | //$annees[$i] = $albumsJSON[$i][1]; | ||
| 169 | } | ||
| 170 | //var_dump($annee); die(); | ||
| 171 | |||
| 172 | // tri d'un tableau multidimensionnel | ||
| 173 | //array_multisort($annees, $albumsJSON); | ||
| 174 | |||
| 175 | |||
| 176 | |||
| 177 | // liens dans la page et le menu chronologie | ||
| 178 | // ce dernier comporte une ancre lorsque le html n'existe pas | ||
| 179 | /*$lienAlbum = []; | ||
| 180 | $avecLien = []; | ||
| 181 | $linkDiscoChrono = [];*/ | ||
| 182 | for($i = 0; $i < $Albums->fileListCount; $i++) | ||
| 183 | { | ||
| 184 | if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html')) | ||
| 185 | { | ||
| 186 | $lienAlbum[$i] = 'page=album&album_name=' . $Albums->fileList[$i]['titre'] . '&file_code=' . $Albums->fileList[$i]['fileCode']; | ||
| 187 | $avecLien[$i] = true; | ||
| 188 | $linkDiscoChrono[$i] = 'linkChrono'; // css | ||
| 189 | } | ||
| 190 | else | ||
| 191 | { | ||
| 192 | $lienAlbum[$i] = 'page=discographie#' . $Albums->fileList[$i]['titre']; | ||
| 193 | $avecLien[$i] = false; | ||
| 194 | $linkDiscoChrono[$i] = 'noLinkChrono'; // css | ||
| 195 | } | ||
| 196 | $lienBoutonModif[$i] = 'page=discographie&action=edition&file_code=' . $Albums->fileList[$i]['fileCode']; | ||
| 197 | } | ||
| 198 | |||
| 199 | // morceaux en HTML à assembler | ||
| 200 | // variable $editeurHTML, contient $texte | ||
| 201 | require('view/template-formulaires.php'); | ||
| 202 | // variables $css, $js, $header et $content, | ||
| 203 | // $content contient ???? et $editeurHTML | ||
| 204 | require('view/discographie.php'); | ||
| 205 | // fin de l'assemblage | ||
| 206 | require('view/template.php'); | ||
| 207 | } | ||
