diff options
| author | polo <ordipolo@gmx.fr> | 2023-04-23 23:39:10 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2023-04-23 23:39:10 +0200 |
| commit | 21746f17dbd12499f794b1f2822b50e9e6c5d494 (patch) | |
| tree | a8769620928d112bc5f4752b87886d5d2f2c90ea | |
| parent | 6d4de815d7252956c4507b8767bd4b79b9a71fc8 (diff) | |
| download | melaine-21746f17dbd12499f794b1f2822b50e9e6c5d494.tar.gz melaine-21746f17dbd12499f794b1f2822b50e9e6c5d494.tar.bz2 melaine-21746f17dbd12499f794b1f2822b50e9e6c5d494.zip | |
bouton partager
| -rw-r--r-- | controller/config.php | 5 | ||||
| -rw-r--r-- | public/css/discographie.css | 10 | ||||
| -rw-r--r-- | public/css/main.css | 9 | ||||
| -rw-r--r-- | public/css/pages_articles_simples.css | 6 | ||||
| -rw-r--r-- | public/icone_modifier.png | bin | 8809 -> 8960 bytes | |||
| -rw-r--r-- | public/icone_partager.png | bin | 0 -> 4778 bytes | |||
| -rw-r--r-- | public/main.js | 13 | ||||
| -rw-r--r-- | view/album.php | 15 | ||||
| -rw-r--r-- | view/articlesContent.php | 13 | ||||
| -rw-r--r-- | view/courriel.php | 2 | ||||
| -rw-r--r-- | view/discographie.php | 13 | ||||
| -rw-r--r-- | view/template-formulaires.php | 1 | ||||
| -rw-r--r-- | à faire après livraison.txt | 22 |
13 files changed, 64 insertions, 45 deletions
diff --git a/controller/config.php b/controller/config.php index 47b85f9..067d89b 100644 --- a/controller/config.php +++ b/controller/config.php | |||
| @@ -15,8 +15,9 @@ $storage = 'files'; | |||
| 15 | // Racine du site (inutile pour l'instant) | 15 | // Racine du site (inutile pour l'instant) |
| 16 | //$root = getcwd(); | 16 | //$root = getcwd(); |
| 17 | 17 | ||
| 18 | // nom de domaine (inutile pour l'instant) | 18 | // nom de domaine (utilisé pour créer des liens absolus) |
| 19 | //$host = $_SERVER['HTTP_HOST']; | 19 | // depuis une fonction, faire un: 'global $host;' |
| 20 | $host = 'http://' . $_SERVER['HTTP_HOST']; | ||
| 20 | 21 | ||
| 21 | // bibliothèque utilisée pour créer les miniatures | 22 | // bibliothèque utilisée pour créer les miniatures |
| 22 | if(extension_loaded("imagick")) // on préfère imagemagick | 23 | if(extension_loaded("imagick")) // on préfère imagemagick |
diff --git a/public/css/discographie.css b/public/css/discographie.css index 2aae57e..7fb48df 100644 --- a/public/css/discographie.css +++ b/public/css/discographie.css | |||
| @@ -120,12 +120,6 @@ input | |||
| 120 | padding-bottom: 20px; | 120 | padding-bottom: 20px; |
| 121 | border-bottom: 1px black solid; | 121 | border-bottom: 1px black solid; |
| 122 | } | 122 | } |
| 123 | /* mêmes règles que .boutonArticle dans main.css */ | ||
| 124 | .boutonAlbum span | ||
| 125 | { | ||
| 126 | padding: 2px; | ||
| 127 | border: 4px black groove; | ||
| 128 | } | ||
| 129 | 123 | ||
| 130 | #articles | 124 | #articles |
| 131 | { | 125 | { |
| @@ -209,10 +203,10 @@ a:hover figure figcaption | |||
| 209 | { | 203 | { |
| 210 | width: 100%; | 204 | width: 100%; |
| 211 | } | 205 | } |
| 212 | .linkAlbumHTML | 206 | /*.linkAlbumHTML |
| 213 | { | 207 | { |
| 214 | color: blue; | 208 | color: blue; |
| 215 | } | 209 | }*/ |
| 216 | 210 | ||
| 217 | 211 | ||
| 218 | @media screen and (min-width: 700px) | 212 | @media screen and (min-width: 700px) |
diff --git a/public/css/main.css b/public/css/main.css index 77ab7ff..4017e31 100644 --- a/public/css/main.css +++ b/public/css/main.css | |||
| @@ -87,11 +87,12 @@ img | |||
| 87 | vertical-align: bottom; | 87 | vertical-align: bottom; |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | .boutonArticle span | 90 | button a |
| 91 | { | 91 | { |
| 92 | padding: 2px; | 92 | color: black; |
| 93 | border: 4px black groove; | 93 | text-decoration: none; |
| 94 | } | 94 | } |
| 95 | |||
| 95 | .boutonSubmitEditeur | 96 | .boutonSubmitEditeur |
| 96 | { | 97 | { |
| 97 | margin-top: 5px; | 98 | margin-top: 5px; |
| @@ -144,8 +145,6 @@ form | |||
| 144 | #courriel * | 145 | #courriel * |
| 145 | { | 146 | { |
| 146 | max-width: 220px; | 147 | max-width: 220px; |
| 147 | color: black; | ||
| 148 | text-decoration: none; | ||
| 149 | } | 148 | } |
| 150 | 149 | ||
| 151 | #courriel>button /* bouton pour remonter */ | 150 | #courriel>button /* bouton pour remonter */ |
diff --git a/public/css/pages_articles_simples.css b/public/css/pages_articles_simples.css index 2f3e901..ec8e665 100644 --- a/public/css/pages_articles_simples.css +++ b/public/css/pages_articles_simples.css | |||
| @@ -29,11 +29,7 @@ figure | |||
| 29 | /* comme "article" dans main.css */ | 29 | /* comme "article" dans main.css */ |
| 30 | font-size: 90%; | 30 | font-size: 90%; |
| 31 | } | 31 | } |
| 32 | .boutonArticle span | 32 | |
| 33 | { | ||
| 34 | position: relative; | ||
| 35 | bottom: 6px; | ||
| 36 | } | ||
| 37 | @media screen and (min-width: 700px) | 33 | @media screen and (min-width: 700px) |
| 38 | { | 34 | { |
| 39 | #titre | 35 | #titre |
diff --git a/public/icone_modifier.png b/public/icone_modifier.png index 3691389..aa5304c 100644 --- a/public/icone_modifier.png +++ b/public/icone_modifier.png | |||
| Binary files differ | |||
diff --git a/public/icone_partager.png b/public/icone_partager.png new file mode 100644 index 0000000..ab3b829 --- /dev/null +++ b/public/icone_partager.png | |||
| Binary files differ | |||
diff --git a/public/main.js b/public/main.js index ede1a30..4080832 100644 --- a/public/main.js +++ b/public/main.js | |||
| @@ -40,15 +40,20 @@ function clientCourriel() | |||
| 40 | document.location.href = link; | 40 | document.location.href = link; |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | // bouton pour "copier" dans le presse-papier | 43 | // pour "cacher" l'adresse du HTML |
| 44 | function copierAdresse() | 44 | // inutile -> nécessite une requête AJAX |
| 45 | function copierCourriel() | ||
| 45 | { | 46 | { |
| 46 | var adresse = "melaine.favennec@wanadoo.fr"; | 47 | var adresse = "melaine.favennec@wanadoo.fr"; |
| 48 | copierDansPressePapier(adresse); | ||
| 49 | } | ||
| 47 | 50 | ||
| 51 | function copierDansPressePapier(chaine) | ||
| 52 | { | ||
| 48 | // une balise <input> avec des attributs | 53 | // une balise <input> avec des attributs |
| 49 | var element = document.createElement("input"); | 54 | var element = document.createElement("input"); |
| 50 | element.setAttribute("id", "copyMe"); | 55 | element.setAttribute("id", "copyMe"); |
| 51 | element.setAttribute("value", adresse); | 56 | element.setAttribute("value", chaine); |
| 52 | 57 | ||
| 53 | // placement dans la page (= le "document") | 58 | // placement dans la page (= le "document") |
| 54 | document.body.appendChild(element); | 59 | document.body.appendChild(element); |
| @@ -65,6 +70,8 @@ function copierAdresse() | |||
| 65 | // test optionnel | 70 | // test optionnel |
| 66 | // essayer un document.execCommand("paste"); dans une variable | 71 | // essayer un document.execCommand("paste"); dans une variable |
| 67 | // mais depuis une deuxième fonction | 72 | // mais depuis une deuxième fonction |
| 73 | |||
| 74 | alert('Cette adresse a été copiée dans le presse-papier:\n\n' + chaine); | ||
| 68 | } | 75 | } |
| 69 | 76 | ||
| 70 | // cacher le lien #nouvelArticle quand le ckeditor est appelé | 77 | // cacher le lien #nouvelArticle quand le ckeditor est appelé |
diff --git a/view/album.php b/view/album.php index e2989dc..f0fd807 100644 --- a/view/album.php +++ b/view/album.php | |||
| @@ -88,23 +88,20 @@ else | |||
| 88 | // modifier ouvre l'éditeur, supprimer renvoie vers la discographie | 88 | // modifier ouvre l'éditeur, supprimer renvoie vers la discographie |
| 89 | if($_SESSION['admin'] == 1 && (!isset($_GET['action']) || $_GET['action'] !== 'edition')) | 89 | if($_SESSION['admin'] == 1 && (!isset($_GET['action']) || $_GET['action'] !== 'edition')) |
| 90 | { | 90 | { |
| 91 | $lien_partage = 'index.php?page=' . $page . '&file_code=' . $fileCode; | ||
| 92 | global $host; | ||
| 91 | ?> | 93 | ?> |
| 92 | <p> | 94 | <p> |
| 95 | <a href="<?= $lien_partage ?>" > | ||
| 96 | <img src="public/icone_partager.png" onclick="copierDansPressePapier('<?= $host ?>/<?= $lien_partage ?>')" > | ||
| 97 | </a> | ||
| 93 | <a href="index.php?page=album&action=edition&file_code=<?= $fileCode ?>" > | 98 | <a href="index.php?page=album&action=edition&file_code=<?= $fileCode ?>" > |
| 94 | <img src="public/icone_modifier.png" > | 99 | <img src="public/icone_modifier.png" > |
| 95 | </a> | 100 | </a> |
| 96 | <a href="index.php?page=discographie&action=suppression&file_code=<?= $fileCode ?>" onclick="confirmerSuppression()" > | 101 | <a href="index.php?page=discographie&action=suppression&file_code=<?= $fileCode ?>" onclick="confirmerSuppression()" > |
| 97 | <img src="public/icone_supprimer.png" > | 102 | <img src="public/icone_supprimer.png" > |
| 98 | </a> | 103 | </a> |
| 99 | <a class="linkAlbumHTML" href="index.php?page=discographie" >Retour à la discographie</a> | 104 | <button><a href="index.php?page=discographie" >Retour page discographie</a></button> |
| 100 | </p> | ||
| 101 | <?php | ||
| 102 | } | ||
| 103 | else | ||
| 104 | { | ||
| 105 | ?> | ||
| 106 | <p> | ||
| 107 | <a class="linkAlbumHTML" href="index.php?page=discographie" >Retour à la discographie</a> | ||
| 108 | </p> | 105 | </p> |
| 109 | <?php | 106 | <?php |
| 110 | } | 107 | } |
diff --git a/view/articlesContent.php b/view/articlesContent.php index c07ba75..4762f8e 100644 --- a/view/articlesContent.php +++ b/view/articlesContent.php | |||
| @@ -22,9 +22,11 @@ if($_SESSION['admin'] == 1) | |||
| 22 | ?> | 22 | ?> |
| 23 | <div> | 23 | <div> |
| 24 | <p class="boutonArticle boutonNouvelArticle" > | 24 | <p class="boutonArticle boutonNouvelArticle" > |
| 25 | <a href="index.php?page=<?= $page ?>&action=editor" > | 25 | <button> |
| 26 | <span>Nouvel article</span> | 26 | <a href="index.php?page=<?= $page ?>&action=editor" > |
| 27 | </a> | 27 | Nouvel article |
| 28 | </a> | ||
| 29 | </button> | ||
| 28 | </p> | 30 | </p> |
| 29 | <?php | 31 | <?php |
| 30 | } | 32 | } |
| @@ -81,9 +83,14 @@ for($i = 0; $i < $Articles->fileListCount; $i++) | |||
| 81 | // bouton | 83 | // bouton |
| 82 | if($_SESSION['admin'] == 1) | 84 | if($_SESSION['admin'] == 1) |
| 83 | { | 85 | { |
| 86 | $lien_partage = 'index.php?page=' . $page . '#' . $Articles->fileList[$i]['fileCode']; | ||
| 87 | global $host; | ||
| 84 | ?> | 88 | ?> |
| 85 | </div> | 89 | </div> |
| 86 | <p class="boutonArticle" > | 90 | <p class="boutonArticle" > |
| 91 | <a href="<?= $lien_partage ?>" > | ||
| 92 | <img src="public/icone_partager.png" onclick="copierDansPressePapier('<?= $host ?>/<?= $lien_partage ?>')" > | ||
| 93 | </a> | ||
| 87 | <a href="index.php?page=<?= $page ?>&action=editor&file_code=<?= $Articles->fileList[$i]['fileCode'] ?>#<?= $Articles->fileList[$i]['fileCode'] ?>" > | 94 | <a href="index.php?page=<?= $page ?>&action=editor&file_code=<?= $Articles->fileList[$i]['fileCode'] ?>#<?= $Articles->fileList[$i]['fileCode'] ?>" > |
| 88 | <img src="public/icone_modifier.png" ></a> | 95 | <img src="public/icone_modifier.png" ></a> |
| 89 | <a href="index.php?page=<?= $page ?>&action=monter&file_code=<?= $Articles->fileList[$i]['fileCode'] ?>&position=<?= $Articles->fileList[$i]['position'] ?>#<?= $Articles->fileList[$i]['fileCode'] ?>" > | 96 | <a href="index.php?page=<?= $page ?>&action=monter&file_code=<?= $Articles->fileList[$i]['fileCode'] ?>&position=<?= $Articles->fileList[$i]['position'] ?>#<?= $Articles->fileList[$i]['fileCode'] ?>" > |
diff --git a/view/courriel.php b/view/courriel.php index 7dd7ba4..8934461 100644 --- a/view/courriel.php +++ b/view/courriel.php | |||
| @@ -6,6 +6,6 @@ | |||
| 6 | 6 | ||
| 7 | <div id="courrielJS" > | 7 | <div id="courrielJS" > |
| 8 | <button onclick="clientCourriel();" >Avec mon logiciel<br />de messagerie</button> | 8 | <button onclick="clientCourriel();" >Avec mon logiciel<br />de messagerie</button> |
| 9 | <button onclick="copierAdresse();" >Copier l'adresse dans<br />le presse-papier</button> | 9 | <button onclick="copierCourriel();" >Copier l'adresse dans<br />le presse-papier</button> |
| 10 | </div> | 10 | </div> |
| 11 | </div> \ No newline at end of file | 11 | </div> \ No newline at end of file |
diff --git a/view/discographie.php b/view/discographie.php index 206a9b8..c5c9135 100644 --- a/view/discographie.php +++ b/view/discographie.php | |||
| @@ -84,9 +84,11 @@ if($_SESSION['admin'] == 1) | |||
| 84 | <!-- le bouton Nouvel album est considéré comme un article --> | 84 | <!-- le bouton Nouvel album est considéré comme un article --> |
| 85 | <article> | 85 | <article> |
| 86 | <p class="boutonAlbum" > | 86 | <p class="boutonAlbum" > |
| 87 | <a href="index.php?page=discographie&action=edition" > | 87 | <button> |
| 88 | <span>Nouvel album</span> | 88 | <a href="index.php?page=discographie&action=edition" > |
| 89 | </a> | 89 | Nouvel album |
| 90 | </a> | ||
| 91 | </button> | ||
| 90 | </p> | 92 | </p> |
| 91 | </article> | 93 | </article> |
| 92 | <?php | 94 | <?php |
| @@ -147,8 +149,13 @@ for($i = 0; $i < $Albums->fileListCount; $i++) | |||
| 147 | // boutons | 149 | // boutons |
| 148 | if($_SESSION['admin'] == 1) | 150 | if($_SESSION['admin'] == 1) |
| 149 | { | 151 | { |
| 152 | /*$lien_partage = 'index.php?page=' . $page . '#' . $Albums->fileList[$i]['fileCode']; | ||
| 153 | global $host;*/ | ||
| 150 | ?> | 154 | ?> |
| 151 | <p> | 155 | <p> |
| 156 | <!-- <a href="<?= $lien_partage ?>" > | ||
| 157 | <img src="public/icone_partager.png" onclick="copierDansPressePapier('<?= $host ?>/<?= $lien_partage ?>')" > | ||
| 158 | </a> --> | ||
| 152 | <a href="index.php?<?= $lienBoutonModif[$i] ?>" > | 159 | <a href="index.php?<?= $lienBoutonModif[$i] ?>" > |
| 153 | <img src="public/icone_modifier.png" > | 160 | <img src="public/icone_modifier.png" > |
| 154 | </a> | 161 | </a> |
diff --git a/view/template-formulaires.php b/view/template-formulaires.php index be51df6..e7c7470 100644 --- a/view/template-formulaires.php +++ b/view/template-formulaires.php | |||
| @@ -56,6 +56,7 @@ if($page === 'discographie' || $page === 'album') | |||
| 56 | <a class="boutonAnnuler" href="index.php?page=<?= $lienBoutonAnnuler ?>" > | 56 | <a class="boutonAnnuler" href="index.php?page=<?= $lienBoutonAnnuler ?>" > |
| 57 | <input type="button" value="Annuler" /> | 57 | <input type="button" value="Annuler" /> |
| 58 | </a> | 58 | </a> |
| 59 | <button><a href="index.php?page=discographie" >Retour page discographie</a></button> | ||
| 59 | 60 | ||
| 60 | <script> | 61 | <script> |
| 61 | let editor; // variable utilisable depuis une fonction | 62 | let editor; // variable utilisable depuis une fonction |
diff --git a/à faire après livraison.txt b/à faire après livraison.txt index e86aec3..9fd5345 100644 --- a/à faire après livraison.txt +++ b/à faire après livraison.txt | |||
| @@ -1,11 +1,21 @@ | |||
| 1 | barre de progression au téléchargement d'un melaineDATA | ||
| 2 | -> permettra de savoir aussi si la limite de 30s d'un script PHP a une importance | ||
| 3 | |||
| 1 | empêcher de monter ou descendre à nouveau un élément en rechargeant la page | 4 | empêcher de monter ou descendre à nouveau un élément en rechargeant la page |
| 2 | -> solution 1: rediriger vers la même page sans action dans l'url après le déplacement | 5 | -> solution 1: rediriger vers la même page sans action dans l'url après le déplacement |
| 3 | -> solution 2: déplacement AJAX avec javascript | 6 | -> solution 2: déplacement AJAX avec javascript |
| 4 | ne remplace pas la solution 1 qui doit toujours fonctionner | 7 | ne remplace pas la solution 1 qui doit toujours fonctionner |
| 5 | 8 | ||
| 6 | infobulles en mode admin | 9 | gérer le cas où l'éditeur est ouvert et qu'on clique sur un bouton monter ou descendre |
| 10 | -> solution 1: cacher les boutons (et bloquer la fonctionnalité!) | ||
| 11 | -> solution 2: changement de position en JS ET version non JS en enregistrant le contenu en cours dans 'data/tmp' | ||
| 12 | (c'est lourd, mais on évite de dérouter l'utilisateur) | ||
| 13 | |||
| 14 | trouver une solution au problème du cache du visiteur (surtout Melaine) lorsque le site est mis à jour | ||
| 15 | |||
| 16 | infobulles sur les boutons d'action (seul le mode admin est concerné à moins de proposer un bouton partager au visiteur) | ||
| 7 | 17 | ||
| 8 | bouton partage et lien d'encre sur tous les articles | 18 | Actualité: remplacer le mot "actualité" (page menu) par un logo sur le côté du genre panneau Attention! |
| 9 | 19 | ||
| 10 | rendre le menu chronologie moins moche | 20 | rendre le menu chronologie moins moche |
| 11 | 21 | ||
| @@ -26,9 +36,9 @@ affichage avec javascript OU au moins dans une "page" dotée d'un bouton pour so | |||
| 26 | galerie en css (ou/et en javascript) pour les peintures de bateau | 36 | galerie en css (ou/et en javascript) pour les peintures de bateau |
| 27 | https://www.guyom-design.com/blog/astuces/css/tuto_diapo_css/ | 37 | https://www.guyom-design.com/blog/astuces/css/tuto_diapo_css/ |
| 28 | 38 | ||
| 29 | hyperlien avec liens relatifs (par exemple dans emoi des mots qui doit pointer vers la presse) | 39 | Explorateur de fichiers pour les images |
| 30 | 40 | ||
| 31 | créer page musique | 41 | page musique avec vidéos embarquées |
| 32 | 42 | ||
| 33 | n'utiliser que les grandes images dans le menu | 43 | n'utiliser que les grandes images dans le menu |
| 34 | 44 | ||
| @@ -50,8 +60,6 @@ ajouter d'autres format de sauvegarde (il parait que zip se fait vieux) | |||
| 50 | 60 | ||
| 51 | Identification avec deux codes (login + mot de passe) | 61 | Identification avec deux codes (login + mot de passe) |
| 52 | 62 | ||
| 53 | Explorateur de fichiers pour les images | ||
| 54 | |||
| 55 | pagination (ex: max 10 articles par page) | 63 | pagination (ex: max 10 articles par page) |
| 56 | à voir selon le volume, c'est mieux avec de l'AJAX | 64 | à voir selon le volume, c'est mieux avec de l'AJAX |
| 57 | 65 | ||
| @@ -64,6 +72,8 @@ plugin autosave de l'éditeur | |||
| 64 | Editeur "inline" ou "balloon block" | 72 | Editeur "inline" ou "balloon block" |
| 65 | 73 | ||
| 66 | défense aux attaques par force brute quand l'attaquant multiplie les connexions au site | 74 | défense aux attaques par force brute quand l'attaquant multiplie les connexions au site |
| 75 | -> limiter le nombre de connexions simultanées, exemple 3 | ||
| 76 | -> une fonction "déconnecter tous les appareils" | ||
| 67 | 77 | ||
| 68 | Protection contre les falsifications de requête inter-site - CSRF | 78 | Protection contre les falsifications de requête inter-site - CSRF |
| 69 | connexion avec un jeton | 79 | connexion avec un jeton |
