From 90b3efeeb9d939303ff80b180725e06e2e57af79 Mon Sep 17 00:00:00 2001 From: polo Date: Thu, 13 Apr 2023 03:02:57 +0200 Subject: =?UTF-8?q?=C3=A9diteur=20page=20album?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/admin.php | 60 +++++++++++++++++++++++++++++-------- controller/ajax.php | 10 +++++-- controller/ckeditor.php | 80 +++++++++++++++++++++++++++++-------------------- controller/visitor.php | 19 +++++++----- 4 files changed, 114 insertions(+), 55 deletions(-) (limited to 'controller') diff --git a/controller/admin.php b/controller/admin.php index 845fab1..f3eeeca 100644 --- a/controller/admin.php +++ b/controller/admin.php @@ -19,7 +19,7 @@ function pageArticlesSimplesAdmin(string $page, string $title, string $headerPai } // infos sur les fichiers - $Articles = new Article($page); + $Articles = new Article($page, $page); // nouvel article if($fileCode == '') @@ -47,6 +47,7 @@ function pageArticlesSimplesAdmin(string $page, string $title, string $headerPai $texte = $Articles->readOne(); // entrée de l'éditeur } } + $lienBoutonAnnuler = $page; // ajout des données dans $Articles->fileList['content'] if(!empty($Articles->fileList)) @@ -58,7 +59,7 @@ function pageArticlesSimplesAdmin(string $page, string $title, string $headerPai // sécurisation du contenu pré-existant inséré dans l'éditeur if(!empty($fileCode) && !$suppression) { - $fileCodeArgument = '&article=' . $fileCode; + $fileCodeArgument = '&file_code=' . $fileCode; require('controller/ckeditor.php'); $texte = preparationCKeditor($texte); } @@ -156,15 +157,23 @@ function legalEdit($fileCode, int $suppression) } -// page plus complexe que les autres -function discoEdit($fileCode, int $suppression) +// l'éditeur est ouvert dans la page album +// ne servirait que pour les positions +/*function discoEdit() { - $page = "discographie"; + inversionPositions(); +}*/ + +// page complexe avec albums et articles +// cas où on fait quelque chose: ouvrir l'éditeur, monter, descendre, supprimer +function albumEdit($fileCode, int $suppression) +{ + $page = $_GET['page']; $title = "Discographie"; // modèle - $Albums = new Album($page); - $Albums->makeFileList(); + $Albums = new Album($page, 'discographie'); + //$Albums->makeFileList(); // contenu: JSON, HTML, noms et chemins des fichiers $Albums->readAll(); @@ -177,6 +186,8 @@ function discoEdit($fileCode, int $suppression) // nouvel album if($fileCode == '') { + $page = 'discographie'; + $lienBoutonAnnuler = $page; $title = "Ajouter un album"; $imageFormulaire = ''; @@ -189,9 +200,9 @@ function discoEdit($fileCode, int $suppression) // album ciblé $Albums->fileCode = $fileCode; - // suppression if($suppression) { + $page = 'discographie'; $Albums->delete(); header('Location: index.php?page=' . $page); exit(); @@ -199,6 +210,8 @@ function discoEdit($fileCode, int $suppression) // modification else { + $page = 'album'; + $Albums->readOne(); $_SESSION['target'] = $fileCode; $title = "Modifier un album"; @@ -216,7 +229,11 @@ function discoEdit($fileCode, int $suppression) // image affichée à côté des formulaires if(!empty($vignette[2])) { - $imageFormulaire = '
'; + if($page == 'album') + { + $dossier = 'discographie'; + } + $imageFormulaire = '
'; } else { @@ -232,7 +249,7 @@ function discoEdit($fileCode, int $suppression) if(!empty($fileCode) && !$suppression && !empty($texte)) { // dans l'adresse dans la balise
- $fileCodeArgument = '&article=' . $fileCode; + $fileCodeArgument = '&file_code=' . $fileCode; require('controller/ckeditor.php'); $texte = preparationCKeditor($texte); @@ -242,10 +259,16 @@ function discoEdit($fileCode, int $suppression) $fileCodeArgument = ''; } + // création des liens: menu disco + $lienBoutonAnnuler = 'discographie'; for($i = 0; $i < $Albums->fileListCount; $i++) { if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html')) { + if($Albums->fileList[$i]['fileCode'] === $fileCode) + { + $lienBoutonAnnuler = $page . '&file_code=' . $fileCode; + } $lienAlbum[$i] = 'page=album&file_code=' . $Albums->fileList[$i]['fileCode']; $avecLien[$i] = true; $linkDiscoChrono[$i] = 'linkChrono'; // css @@ -256,7 +279,7 @@ function discoEdit($fileCode, int $suppression) $avecLien[$i] = false; $linkDiscoChrono[$i] = 'noLinkChrono'; // css } - $lienBoutonModif[$i] = 'page=discographie&action=edition&file_code=' . $Albums->fileList[$i]['fileCode'] . '#' . $Albums->fileList[$i]['fileCode']; + $lienBoutonModif[$i] = 'page=album&action=edition&file_code=' . $Albums->fileList[$i]['fileCode']; } // morceaux en HTML à assembler @@ -264,7 +287,14 @@ function discoEdit($fileCode, int $suppression) require('view/template-formulaires.php'); // variables $css, $js, $header et $content, // $content contient ???? et $editeurHTML - require('view/discographie.php'); + if($page === 'discographie') + { + require('view/discographie.php'); + } + elseif($page === 'album') + { + require('view/album.php'); + } // fin de l'assemblage require('view/template.php'); } @@ -273,7 +303,11 @@ function discoEdit($fileCode, int $suppression) // version sans JS (l'autre est dans ajax.php) function inversionPositions(string $page, $fileCode, string $class, int $direction) { - $Object = new $class($page); + $Object = new $class($page, $page); + if($page === 'album') + { + $Object->setFolder('discographie'); + } $Object->fileCode = $fileCode; // direction: 1 = monter, -1 = descendre $Object->inversionPositions($direction); diff --git a/controller/ajax.php b/controller/ajax.php index 188b01f..26aa9c6 100644 --- a/controller/ajax.php +++ b/controller/ajax.php @@ -17,8 +17,14 @@ if(isset($_GET['action']) && isset($_GET['page']) && $_GET['action'] == 'upload_ else { require('model/Image.php'); - // paramètre "true" parce qu'on reçoit une requête AJAX - $Image = new Image(true); + // vaut "true" parce qu'on reçoit une requête AJAX + $Image = new Image($_GET['page'], $_GET['page'], true); + // les données des albums sont dans le dossier discographie + if($_GET['page'] === 'album') + { + $Image->setFolder('discographie'); + } + $Image->upload(); echo($Image->reponseAjax); // attendu par l'éditeur diff --git a/controller/ckeditor.php b/controller/ckeditor.php index 3e14494..f73107d 100644 --- a/controller/ckeditor.php +++ b/controller/ckeditor.php @@ -44,46 +44,28 @@ function submitCKeditor() // POST de l'éditeur if(isset($_POST['contenu'])) // optionnel pour discographie { - $contenu = Security::secureString($_POST['contenu']); + $html = Security::secureString($_POST['contenu']); // liens sans http:// devant - $contenu = fixLinks($contenu); + $html = fixLinks($html); // récupérer les liens multimedia //require("media.php"); - //$contenu = mediaSubmit($contenu); + //$html = mediaSubmit($html); // ne pas continuer si la variable est vide (javascript mal supporté ou utilisation de IE, bug?, erreur de l'utilisateur), risque perte de contenu !! - if($_GET['page'] != 'discographie' && $contenu == '') + if($_GET['page'] != 'discographie' && $_GET['page'] != 'album' && $html == '') { - header('Location: index.php?page=' . $_GET['page'] . '&erreur=contenu_vide'); + header('Location: index.php?page=' . $_GET['page'] . '&erreur=contenu_editeur_vide'); exit(); } } - // pages avec des articles simples (melaine...) - if($_GET['page'] != 'discographie') - { - $Article = new Article($_GET['page']); - - if(!isset($_SESSION['target']) || $_SESSION['target'] == '') - { - $Article->create($contenu); - - // create html-mini - } - else - { - $Article->fileCode = $_SESSION['target']; // erreur ici? - $Article->update($contenu); - - // update html-mini - } - } + // page discographie - else if($_GET['page'] == 'discographie') + if($_GET['page'] === 'discographie' || $_GET['page'] === 'album') { - $Album = new Album($_GET['page']); + $Album = new Album($_GET['page'], 'discographie'); // on retrouve les données si nécessaire if(isset($_SESSION['target']) && $_SESSION['target'] != '') @@ -117,7 +99,7 @@ function submitCKeditor() if(!empty($_POST['contenu'])) { $Album->format = 'html'; - $Album->create($contenu); + $Album->create($html); } } // modification @@ -131,16 +113,50 @@ function submitCKeditor() $Album->updateVignetteJSON($nouveauTitre, $nouvelleAnnee, $nouvellePochette, $nouvellePochetteMini); // page de l'album - // si $contenu est vide, le fichier est supprimé + // si $html est vide, le fichier est supprimé $Album->format = 'html'; - $Album->update($contenu); + $Album->update($html); + } + } + // pages avec des articles simples (melaine...) + //if($_GET['page'] != 'discographie') + else + { + $Article = new Article($_GET['page'], $_GET['page']); + + if(!isset($_SESSION['target']) || $_SESSION['target'] === '') + { + $Article->create($html); + + // create html-mini + } + else + { + $Article->fileCode = $_SESSION['target']; // erreur ici? + $Article->update($html); + + // update html-mini } } // nettoyage unset($_SESSION['target']); - unset($_GET['action']); - unset($_POST['contenu']); - header('Location: index.php?page=' . $_GET['page']); + + if($_GET['page'] === 'discographie' || $_GET['page'] === 'album') + { + if($html === '') + { + $redirection = 'index.php?page=discographie'; + } + else + { + $redirection = 'index.php?page=album&file_code=' . $Album->fileCode; + } + } + else + { + $redirection = 'index.php?page=' . $_GET['page']; + } + header('Location: ' . $redirection); exit(); } diff --git a/controller/visitor.php b/controller/visitor.php index d03197d..92f3db7 100644 --- a/controller/visitor.php +++ b/controller/visitor.php @@ -21,7 +21,7 @@ function accueil() function pageArticlesSimplesVisitor(string $page, string $title, string $headerPaintedTitle) { // infos sur les fichiers $Articles->fileList - $Articles = new Article($page); + $Articles = new Article($page, $page); // données des dates //print_r($Articles->fileList[$i]['date']); @@ -115,14 +115,16 @@ function legalVisitor() } -// page plus complexe que les autres + +// page complexe avec albums et articles +// cas où on ne fait rien, même en en mode admin function discoVisitor() { - $page = "discographie"; + $page = $_GET['page']; $title = "Discographie"; // modèle - $Albums = new Album($page); + $Albums = new Album($page, $page); //var_dump($Albums->fileList); die(); // on récupère tout: JSON, HTML, noms et chemins des fichiers @@ -148,7 +150,7 @@ function discoVisitor() $avecLien[$i] = false; $linkDiscoChrono[$i] = 'noLinkChrono'; // pour le css } - $lienBoutonModif[$i] = 'page=discographie&action=edition&file_code=' . $Albums->fileList[$i]['fileCode'] . '#' . $Albums->fileList[$i]['fileCode']; + $lienBoutonModif[$i] = 'page=album&action=edition&file_code=' . $Albums->fileList[$i]['fileCode']; } // variables $css, $js et $content @@ -158,11 +160,11 @@ function discoVisitor() } // page d'un album -function album($fileCode) +function albumVisitor($fileCode) { - $page = 'discographie'; // = nom du dossier où sont les données + $page = $_GET['page']; + $Albums = new Album($page, 'discographie'); - $Albums = new Album($page); $Albums->getAllJSON(); if(!empty($Albums->fileList)) { @@ -174,6 +176,7 @@ function album($fileCode) $title = $Albums->oneAlbum['titre']; $album = $Albums->oneAlbum['HTMLcontent']; + // création des liens: menu déroulant et section principale for($i = 0; $i < $Albums->fileListCount; $i++) { if(file_exists('data/discographie/html/' . $Albums->fileList[$i]['fileCode'] . '.html')) -- cgit v1.2.3