diff options
-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 |