diff options
author | polo <ordipolo@gmx.fr> | 2021-09-08 02:09:34 +0200 |
---|---|---|
committer | polo <ordipolo@gmx.fr> | 2021-09-08 02:09:34 +0200 |
commit | cdf1bda847edd3e22e9fe817a802219ad8e0f626 (patch) | |
tree | adbe2b35e9741a5db74491c85914f4c03d3d4c99 /controller | |
parent | 9a552c6b751f25bac9e816cf605fb972da8b9e27 (diff) | |
download | melaine-cdf1bda847edd3e22e9fe817a802219ad8e0f626.zip |
vignette
Diffstat (limited to 'controller')
-rw-r--r-- | controller/admin.php | 51 | ||||
-rw-r--r-- | controller/ckeditor.php | 44 | ||||
-rw-r--r-- | controller/visitor.php | 54 |
3 files changed, 77 insertions, 72 deletions
diff --git a/controller/admin.php b/controller/admin.php index 3c2b613..ba6fd83 100644 --- a/controller/admin.php +++ b/controller/admin.php | |||
@@ -98,11 +98,6 @@ function discoEdit($numArticle, $suppression) | |||
98 | } | 98 | } |
99 | } | 99 | } |
100 | 100 | ||
101 | $albumsJSON = array_reverse($Album->readAll()); // lourd | ||
102 | |||
103 | // $albums contient un tableau de chaines JSON, | ||
104 | // on extrait de chacune 3 variables: titre, année, pochette | ||
105 | |||
106 | // traitements PHP pour l'éditeur | 101 | // traitements PHP pour l'éditeur |
107 | // sécurisation du contenu pré-existant inséré dans l'éditeur | 102 | // sécurisation du contenu pré-existant inséré dans l'éditeur |
108 | if($numArticle >= 0 && !$suppression) | 103 | if($numArticle >= 0 && !$suppression) |
@@ -111,44 +106,58 @@ function discoEdit($numArticle, $suppression) | |||
111 | $texte = preparationCKeditor($numArticle, $texte); | 106 | $texte = preparationCKeditor($numArticle, $texte); |
112 | } | 107 | } |
113 | 108 | ||
114 | // changer les chaines JSON en tableaux | 109 | |
110 | // contenu de tous les fichiers JSON (= tableau de chaines) | ||
111 | $albumsJSON = $Album->readAll(); | ||
112 | // noms des fichiers JSON | ||
113 | $albumNamesJSON = $Album->getFileList(); | ||
114 | |||
115 | // changer les chaines JSON en tableaux: titre, année, pochette | ||
115 | $i = 0; | 116 | $i = 0; |
117 | $annees = array(); | ||
116 | foreach($albumsJSON as $oneAlbum) | 118 | foreach($albumsJSON as $oneAlbum) |
117 | { | 119 | { |
118 | $albumsJSON[$i] = json_decode($oneAlbum, true); | 120 | $albumsJSON[$i] = json_decode($oneAlbum, true); |
121 | |||
122 | // ajout des noms des fichiers JSON | ||
123 | $albumsJSON[$i][3] = $albumNamesJSON[$i]; | ||
124 | $annees[$i] = $albumsJSON[$i][1]; | ||
119 | $i++; | 125 | $i++; |
120 | } | 126 | } |
127 | // tri d'un tableau multidimensionnel | ||
128 | array_multisort($annees, $albumsJSON); | ||
121 | 129 | ||
122 | // on passe maintenant au contenu HTML | 130 | // on passe maintenant au contenu HTML |
123 | $albumNamesJSON = array_reverse($Album->getFileNames()); | ||
124 | $Album->setFormat('html'); | 131 | $Album->setFormat('html'); |
125 | $Album->makeFileList(); | 132 | $Album->makeFileList(); |
126 | $albumNamesHTML = array_reverse($Album->getFileNames()); | 133 | $albumNamesHTML = $Album->getFileList(); |
127 | 134 | ||
128 | // lien vers le HTML ou ancre? | 135 | // lien vers le HTML ou ancre? |
129 | // pour chaque album, détecter le fichier html | 136 | // pour chaque album, détecter le fichier html |
130 | // si non, ne fournir qu'un lien d'ancre pour la liste d'album | 137 | // si non, ne fournir qu'un lien d'ancre pour la liste d'album |
131 | $i = 0; | 138 | $i = 0; |
132 | $avecLien = []; | 139 | $avecLien = []; |
133 | foreach($albumNamesJSON as $oneAlbum) | 140 | foreach($albumsJSON as $oneAlbum) |
134 | { | 141 | { |
135 | // nom sans extension | 142 | // nom sans extension |
136 | $chemin = pathinfo($oneAlbum); | 143 | $chemin = pathinfo($oneAlbum[3]); |
137 | $nomJSONsansExt = $chemin['filename']; | 144 | $nomJSONsansExt = $chemin['filename']; |
138 | $chemin = pathinfo($albumNamesHTML[0]); | ||
139 | 145 | ||
140 | // détection | 146 | // au cas où la discographie ne contient aucun html |
141 | if(file_exists($chemin['dirname'] . '/' . $nomJSONsansExt . '.html')) | 147 | if(!empty($albumNamesHTML)) |
142 | { | 148 | { |
143 | $lienAlbum[$i] = 'album&album_code=' . $nomJSONsansExt . '&album_name=' . $albumsJSON[$i][0]; | 149 | if(file_exists('data/discographie/html/' . $nomJSONsansExt . '.html')) |
144 | $avecLien[$i] = true; | 150 | { |
151 | $lienAlbum[$i] = 'album&album_code=' . $nomJSONsansExt . '&album_name=' . $albumsJSON[$i][0]; | ||
152 | $avecLien[$i] = true; | ||
153 | } | ||
154 | else | ||
155 | { | ||
156 | $lienAlbum[$i] = 'discographie#' . $albumsJSON[$i][0]; | ||
157 | $avecLien[$i] = false; | ||
158 | } | ||
159 | $i++; | ||
145 | } | 160 | } |
146 | else | ||
147 | { | ||
148 | $lienAlbum[$i] = 'discographie#' . $albumsJSON[$i][0]; | ||
149 | $avecLien[$i] = false; | ||
150 | } | ||
151 | $i++; | ||
152 | } | 161 | } |
153 | 162 | ||
154 | // morceaux en HTML Ã assembler | 163 | // morceaux en HTML Ã assembler |
diff --git a/controller/ckeditor.php b/controller/ckeditor.php index 2e72be2..d07f2a2 100644 --- a/controller/ckeditor.php +++ b/controller/ckeditor.php | |||
@@ -87,7 +87,7 @@ function submitCKeditor($nomFichier) | |||
87 | { | 87 | { |
88 | $titre = $_POST['titre']; | 88 | $titre = $_POST['titre']; |
89 | $annee = $_POST['annee']; | 89 | $annee = $_POST['annee']; |
90 | $pochette = $_POST['pochette']; // une image | 90 | $pochette = $_FILES['upload']['name']; |
91 | 91 | ||
92 | // des formulaires simples | 92 | // des formulaires simples |
93 | $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed); | 93 | $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed); |
@@ -95,36 +95,8 @@ function submitCKeditor($nomFichier) | |||
95 | $annee = htmLawed($annee, $configHtmLawed, $specHtmLawed); | 95 | $annee = htmLawed($annee, $configHtmLawed, $specHtmLawed); |
96 | $annee = trim($annee); | 96 | $annee = trim($annee); |
97 | 97 | ||
98 | // pochette | ||
99 | // Album->imageUpload(); | ||
100 | // test formats jpg, jpeg, png, gif, tiff | ||
101 | // enregistrement du fichier | ||
102 | } | ||
103 | |||
104 | // lien sans http:// | ||
105 | // un clic sur un lien dans l'éditeur affiche une infobulle montrant l'adresse cible du lien si celle-ci a déjà été précisée | ||
106 | // il est possible de cliquer sur ce lien, ce qui ouvre un onglet avec le site demandé | ||
107 | // toutefois si cette adresse est de type "domaine.fr" (sans http:// devant), le navigateur ne va pas rechercher un site mais un fichier comme si mon adresse était de type file:///fichier | ||
108 | // tomber ainsi sur une page d'erreur est déroutant: | ||
109 | // "ai-je perdu le texte que j'étais en train de taper?"" | ||
110 | // solution 1 (mauvaise): activer la redirection en cas d'erreur 404 dans le .htaccess | ||
111 | // solution 2 (façon pop-up): fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>'; | ||
112 | // pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... | ||
113 | |||
114 | |||
115 | // enregistrement | ||
116 | // var_dump($titre, $annee, $pochette, $contenu); | ||
117 | // die(); | ||
118 | |||
119 | // modèle | ||
120 | if($page == 'discographie') | ||
121 | { | ||
122 | // on instancie avec l'enfant de OneArticle | 98 | // on instancie avec l'enfant de OneArticle |
123 | $Album = new Album($page); | 99 | $Album = new Album($page); |
124 | |||
125 | //var_dump($_GET['article']); | ||
126 | //var_dump($_POST); | ||
127 | //exit(); | ||
128 | 100 | ||
129 | // enregistrement | 101 | // enregistrement |
130 | if($_GET['article'] == 0) | 102 | if($_GET['article'] == 0) |
@@ -132,7 +104,7 @@ function submitCKeditor($nomFichier) | |||
132 | // page disco | 104 | // page disco |
133 | $Album->createVignette($titre, $annee, $pochette); | 105 | $Album->createVignette($titre, $annee, $pochette); |
134 | 106 | ||
135 | // page détail de l'album | 107 | // page de l'album |
136 | if(!empty($_POST['contenu'])) | 108 | if(!empty($_POST['contenu'])) |
137 | { | 109 | { |
138 | $Album->create($contenu); | 110 | $Album->create($contenu); |
@@ -143,7 +115,7 @@ function submitCKeditor($nomFichier) | |||
143 | // page disco | 115 | // page disco |
144 | $Album->updateVignette($titre, $annee, $pochette); | 116 | $Album->updateVignette($titre, $annee, $pochette); |
145 | 117 | ||
146 | // page détail de l'album | 118 | // page de l'album |
147 | if(isset($_POST['contenu'])) | 119 | if(isset($_POST['contenu'])) |
148 | { | 120 | { |
149 | $Album->update($content); | 121 | $Album->update($content); |
@@ -167,5 +139,15 @@ function submitCKeditor($nomFichier) | |||
167 | } | 139 | } |
168 | } | 140 | } |
169 | 141 | ||
142 | // lien sans http:// | ||
143 | // un clic sur un lien dans l'éditeur affiche une infobulle montrant l'adresse cible du lien si celle-ci a déjà été précisée | ||
144 | // il est possible de cliquer sur ce lien, ce qui ouvre un onglet avec le site demandé | ||
145 | // toutefois si cette adresse est de type "domaine.fr" (sans http:// devant), le navigateur ne va pas rechercher un site mais un fichier comme si mon adresse était de type file:///fichier | ||
146 | // tomber ainsi sur une page d'erreur est déroutant: | ||
147 | // "ai-je perdu le texte que j'étais en train de taper?"" | ||
148 | // solution 1 (mauvaise): activer la redirection en cas d'erreur 404 dans le .htaccess | ||
149 | // solution 2 (façon pop-up): fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>'; | ||
150 | // pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... | ||
151 | |||
170 | function cleanHTML($contenu) | 152 | function cleanHTML($contenu) |
171 | {} | 153 | {} |
diff --git a/controller/visitor.php b/controller/visitor.php index 239c139..a5bf538 100644 --- a/controller/visitor.php +++ b/controller/visitor.php | |||
@@ -51,49 +51,62 @@ function discoVisitor() | |||
51 | // modèle | 51 | // modèle |
52 | $AllAlbums = new Album($page_actuelle); | 52 | $AllAlbums = new Album($page_actuelle); |
53 | $AllAlbums->makeFileList(); | 53 | $AllAlbums->makeFileList(); |
54 | $albumsJSON = array_reverse($AllAlbums->readAll()); // lourd | ||
55 | 54 | ||
56 | // $albums est un tableau de chaines JSON, | 55 | // contenu de tous les fichiers JSON (= tableau de chaines) |
57 | // chacune renferme 3 variables: titre, année, pochette | 56 | $albumsJSON = $AllAlbums->readAll(); |
57 | // noms des fichiers JSON | ||
58 | $albumNamesJSON = $AllAlbums->getFileList(); | ||
58 | 59 | ||
59 | // changer les chaines JSON en tableaux | 60 | // changer les chaines JSON en tableaux: titre, année, pochette |
60 | $i = 0; | 61 | $i = 0; |
62 | $annees = array(); | ||
61 | foreach($albumsJSON as $oneAlbum) | 63 | foreach($albumsJSON as $oneAlbum) |
62 | { | 64 | { |
63 | $albumsJSON[$i] = json_decode($oneAlbum, true); | 65 | $albumsJSON[$i] = json_decode($oneAlbum, true); |
66 | $annees[$i] = $albumsJSON[$i][1]; | ||
67 | |||
68 | // ajout des noms des fichiers JSON | ||
69 | $albumsJSON[$i][3] = $albumNamesJSON[$i]; | ||
70 | |||
64 | $i++; | 71 | $i++; |
65 | } | 72 | } |
73 | // tri d'un tableau multidimensionnel | ||
74 | array_multisort($annees, $albumsJSON); | ||
66 | 75 | ||
67 | // on passe maintenant au contenu HTML | 76 | // on passe maintenant au contenu HTML |
68 | $albumNamesJSON = array_reverse($AllAlbums->getFileNames()); | ||
69 | $AllAlbums->setFormat('html'); | 77 | $AllAlbums->setFormat('html'); |
70 | $AllAlbums->makeFileList(); | 78 | $AllAlbums->makeFileList(); |
71 | $albumNamesHTML = array_reverse($AllAlbums->getFileNames()); | 79 | $albumNamesHTML = $AllAlbums->getFileList(); |
72 | 80 | ||
73 | // lien vers le HTML ou ancre? | 81 | // lien vers le HTML ou ancre? |
74 | // pour chaque album, détecter le fichier html | 82 | // pour chaque album, détecter le fichier html |
75 | // si non, ne fournir qu'un lien d'ancre pour la liste d'album | 83 | // si non, ne fournir qu'un lien d'ancre pour la liste d'album |
76 | $i = 0; | 84 | $i = 0; |
77 | $avecLien = []; | 85 | $avecLien = []; |
78 | foreach($albumNamesJSON as $oneAlbum) | 86 | $linkDiscoChrono = []; |
87 | foreach($albumsJSON as $oneAlbum) | ||
79 | { | 88 | { |
80 | // nom sans extension | 89 | // nom sans extension |
81 | $chemin = pathinfo($oneAlbum); | 90 | $chemin = pathinfo($oneAlbum[3]); |
82 | $nomJSONsansExt = $chemin['filename']; | 91 | $nomJSONsansExt = $chemin['filename']; |
83 | $chemin = pathinfo($albumNamesHTML[0]); | ||
84 | 92 | ||
85 | // détection | 93 | // au cas où la discographie ne contient aucun html |
86 | if(file_exists($chemin['dirname'] . '/' . $nomJSONsansExt . '.html')) | 94 | if(!empty($albumNamesHTML)) |
87 | { | 95 | { |
88 | $lienAlbum[$i] = 'album&album_code=' . $nomJSONsansExt . '&album_name=' . $albumsJSON[$i][0]; | 96 | if(file_exists('data/discographie/html/' . $nomJSONsansExt . '.html')) |
89 | $avecLien[$i] = true; | 97 | { |
98 | $lienAlbum[$i] = 'album&album_code=' . $nomJSONsansExt . '&album_name=' . $albumsJSON[$i][0]; | ||
99 | $avecLien[$i] = true; | ||
100 | $linkDiscoChrono[$i] = 'linkChrono'; // css | ||
101 | } | ||
102 | else | ||
103 | { | ||
104 | $lienAlbum[$i] = 'discographie#' . $albumsJSON[$i][0]; | ||
105 | $avecLien[$i] = false; | ||
106 | $linkDiscoChrono[$i] = 'noLinkChrono'; // css | ||
107 | } | ||
108 | $i++; | ||
90 | } | 109 | } |
91 | else | ||
92 | { | ||
93 | $lienAlbum[$i] = 'discographie#' . $albumsJSON[$i][0]; | ||
94 | $avecLien[$i] = false; | ||
95 | } | ||
96 | $i++; | ||
97 | } | 110 | } |
98 | 111 | ||
99 | // variables $css, $js et $content | 112 | // variables $css, $js et $content |
@@ -102,6 +115,7 @@ function discoVisitor() | |||
102 | require('view/template.php'); | 115 | require('view/template.php'); |
103 | } | 116 | } |
104 | 117 | ||
118 | // page d'un album | ||
105 | function album($albumCode, $albumName) | 119 | function album($albumCode, $albumName) |
106 | { | 120 | { |
107 | $page_actuelle = 'discographie'; | 121 | $page_actuelle = 'discographie'; |