diff options
author | polo <ordipolo@gmx.fr> | 2022-02-17 18:13:00 +0100 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2022-02-17 18:13:00 +0100 |
commit | 787d03e48471ba62cd830379428f04d996f0b74b (patch) | |
tree | e9f98c7b9288c4530b50985688dd82622106ba2d /controller/admin.php | |
parent | 29df6f1362745eabf4fbcaedf309eb63795152fa (diff) | |
download | melaine-787d03e48471ba62cd830379428f04d996f0b74b.zip |
model update
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 | } | ||