summaryrefslogtreecommitdiff
path: root/controller/admin.php
diff options
context:
space:
mode:
Diffstat (limited to 'controller/admin.php')
-rw-r--r--controller/admin.php372
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
7function melaineEdit($numArticle, $suppression) 7function 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"
64function 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']); 76function 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}