From cdf1bda847edd3e22e9fe817a802219ad8e0f626 Mon Sep 17 00:00:00 2001 From: polo Date: Wed, 8 Sep 2021 02:09:34 +0200 Subject: vignette --- controller/admin.php | 51 +++++++++++++++++++++++++++------------------- controller/ckeditor.php | 44 ++++++++++++---------------------------- controller/visitor.php | 54 +++++++++++++++++++++++++++++++------------------ 3 files changed, 77 insertions(+), 72 deletions(-) (limited to 'controller') 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) } } - $albumsJSON = array_reverse($Album->readAll()); // lourd - - // $albums contient un tableau de chaines JSON, - // on extrait de chacune 3 variables: titre, année, pochette - // traitements PHP pour l'éditeur // sécurisation du contenu pré-existant inséré dans l'éditeur if($numArticle >= 0 && !$suppression) @@ -111,44 +106,58 @@ function discoEdit($numArticle, $suppression) $texte = preparationCKeditor($numArticle, $texte); } - // changer les chaines JSON en tableaux + + // contenu de tous les fichiers JSON (= tableau de chaines) + $albumsJSON = $Album->readAll(); + // noms des fichiers JSON + $albumNamesJSON = $Album->getFileList(); + + // changer les chaines JSON en tableaux: titre, année, pochette $i = 0; + $annees = array(); foreach($albumsJSON as $oneAlbum) { $albumsJSON[$i] = json_decode($oneAlbum, true); + + // ajout des noms des fichiers JSON + $albumsJSON[$i][3] = $albumNamesJSON[$i]; + $annees[$i] = $albumsJSON[$i][1]; $i++; } + // tri d'un tableau multidimensionnel + array_multisort($annees, $albumsJSON); // on passe maintenant au contenu HTML - $albumNamesJSON = array_reverse($Album->getFileNames()); $Album->setFormat('html'); $Album->makeFileList(); - $albumNamesHTML = array_reverse($Album->getFileNames()); + $albumNamesHTML = $Album->getFileList(); // lien vers le HTML ou ancre? // pour chaque album, détecter le fichier html // si non, ne fournir qu'un lien d'ancre pour la liste d'album $i = 0; $avecLien = []; - foreach($albumNamesJSON as $oneAlbum) + foreach($albumsJSON as $oneAlbum) { // nom sans extension - $chemin = pathinfo($oneAlbum); + $chemin = pathinfo($oneAlbum[3]); $nomJSONsansExt = $chemin['filename']; - $chemin = pathinfo($albumNamesHTML[0]); - // détection - if(file_exists($chemin['dirname'] . '/' . $nomJSONsansExt . '.html')) + // au cas où la discographie ne contient aucun html + if(!empty($albumNamesHTML)) { - $lienAlbum[$i] = 'album&album_code=' . $nomJSONsansExt . '&album_name=' . $albumsJSON[$i][0]; - $avecLien[$i] = true; + if(file_exists('data/discographie/html/' . $nomJSONsansExt . '.html')) + { + $lienAlbum[$i] = 'album&album_code=' . $nomJSONsansExt . '&album_name=' . $albumsJSON[$i][0]; + $avecLien[$i] = true; + } + else + { + $lienAlbum[$i] = 'discographie#' . $albumsJSON[$i][0]; + $avecLien[$i] = false; + } + $i++; } - else - { - $lienAlbum[$i] = 'discographie#' . $albumsJSON[$i][0]; - $avecLien[$i] = false; - } - $i++; } // 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) { $titre = $_POST['titre']; $annee = $_POST['annee']; - $pochette = $_POST['pochette']; // une image + $pochette = $_FILES['upload']['name']; // des formulaires simples $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed); @@ -95,36 +95,8 @@ function submitCKeditor($nomFichier) $annee = htmLawed($annee, $configHtmLawed, $specHtmLawed); $annee = trim($annee); - // pochette - // Album->imageUpload(); - // test formats jpg, jpeg, png, gif, tiff - // enregistrement du fichier - } - - // lien sans http:// - // 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 - // il est possible de cliquer sur ce lien, ce qui ouvre un onglet avec le site demandé - // 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 - // tomber ainsi sur une page d'erreur est déroutant: - // "ai-je perdu le texte que j'étais en train de taper?"" - // solution 1 (mauvaise): activer la redirection en cas d'erreur 404 dans le .htaccess - // solution 2 (façon pop-up): fermer ce nouvel onglet avec echo ''; - // pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... - - - // enregistrement - // var_dump($titre, $annee, $pochette, $contenu); - // die(); - - // modèle - if($page == 'discographie') - { // on instancie avec l'enfant de OneArticle $Album = new Album($page); - - //var_dump($_GET['article']); - //var_dump($_POST); - //exit(); // enregistrement if($_GET['article'] == 0) @@ -132,7 +104,7 @@ function submitCKeditor($nomFichier) // page disco $Album->createVignette($titre, $annee, $pochette); - // page détail de l'album + // page de l'album if(!empty($_POST['contenu'])) { $Album->create($contenu); @@ -143,7 +115,7 @@ function submitCKeditor($nomFichier) // page disco $Album->updateVignette($titre, $annee, $pochette); - // page détail de l'album + // page de l'album if(isset($_POST['contenu'])) { $Album->update($content); @@ -167,5 +139,15 @@ function submitCKeditor($nomFichier) } } +// lien sans http:// +// 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 +// il est possible de cliquer sur ce lien, ce qui ouvre un onglet avec le site demandé +// 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 +// tomber ainsi sur une page d'erreur est déroutant: +// "ai-je perdu le texte que j'étais en train de taper?"" +// solution 1 (mauvaise): activer la redirection en cas d'erreur 404 dans le .htaccess +// solution 2 (façon pop-up): fermer ce nouvel onglet avec echo ''; +// pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... + function cleanHTML($contenu) {} 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() // modèle $AllAlbums = new Album($page_actuelle); $AllAlbums->makeFileList(); - $albumsJSON = array_reverse($AllAlbums->readAll()); // lourd - // $albums est un tableau de chaines JSON, - // chacune renferme 3 variables: titre, année, pochette + // contenu de tous les fichiers JSON (= tableau de chaines) + $albumsJSON = $AllAlbums->readAll(); + // noms des fichiers JSON + $albumNamesJSON = $AllAlbums->getFileList(); - // changer les chaines JSON en tableaux + // changer les chaines JSON en tableaux: titre, année, pochette $i = 0; + $annees = array(); foreach($albumsJSON as $oneAlbum) { $albumsJSON[$i] = json_decode($oneAlbum, true); + $annees[$i] = $albumsJSON[$i][1]; + + // ajout des noms des fichiers JSON + $albumsJSON[$i][3] = $albumNamesJSON[$i]; + $i++; } + // tri d'un tableau multidimensionnel + array_multisort($annees, $albumsJSON); // on passe maintenant au contenu HTML - $albumNamesJSON = array_reverse($AllAlbums->getFileNames()); $AllAlbums->setFormat('html'); $AllAlbums->makeFileList(); - $albumNamesHTML = array_reverse($AllAlbums->getFileNames()); - + $albumNamesHTML = $AllAlbums->getFileList(); + // lien vers le HTML ou ancre? // pour chaque album, détecter le fichier html // si non, ne fournir qu'un lien d'ancre pour la liste d'album $i = 0; $avecLien = []; - foreach($albumNamesJSON as $oneAlbum) + $linkDiscoChrono = []; + foreach($albumsJSON as $oneAlbum) { // nom sans extension - $chemin = pathinfo($oneAlbum); + $chemin = pathinfo($oneAlbum[3]); $nomJSONsansExt = $chemin['filename']; - $chemin = pathinfo($albumNamesHTML[0]); - // détection - if(file_exists($chemin['dirname'] . '/' . $nomJSONsansExt . '.html')) + // au cas où la discographie ne contient aucun html + if(!empty($albumNamesHTML)) { - $lienAlbum[$i] = 'album&album_code=' . $nomJSONsansExt . '&album_name=' . $albumsJSON[$i][0]; - $avecLien[$i] = true; + if(file_exists('data/discographie/html/' . $nomJSONsansExt . '.html')) + { + $lienAlbum[$i] = 'album&album_code=' . $nomJSONsansExt . '&album_name=' . $albumsJSON[$i][0]; + $avecLien[$i] = true; + $linkDiscoChrono[$i] = 'linkChrono'; // css + } + else + { + $lienAlbum[$i] = 'discographie#' . $albumsJSON[$i][0]; + $avecLien[$i] = false; + $linkDiscoChrono[$i] = 'noLinkChrono'; // css + } + $i++; } - else - { - $lienAlbum[$i] = 'discographie#' . $albumsJSON[$i][0]; - $avecLien[$i] = false; - } - $i++; } // variables $css, $js et $content @@ -102,6 +115,7 @@ function discoVisitor() require('view/template.php'); } +// page d'un album function album($albumCode, $albumName) { $page_actuelle = 'discographie'; -- cgit v1.2.3