diff options
author | polo-pc-greta <ordipolo@gmx.fr> | 2025-04-09 13:32:47 +0200 |
---|---|---|
committer | polo-pc-greta <ordipolo@gmx.fr> | 2025-04-09 13:32:47 +0200 |
commit | 73d49e47fe1f74a65c3f39a293b0f9fab5bfdbd0 (patch) | |
tree | aa602f8e4296f00c8d3723b8546baca5f70cfafb | |
parent | 1937a2f49ebe920b79604cb5df3649f9f1dff738 (diff) | |
download | cms-73d49e47fe1f74a65c3f39a293b0f9fab5bfdbd0.zip |
simplification de l'après création d'une news, MAJ Config et fichier deploiement.txt
-rw-r--r-- | deploiement.txt | 88 | ||||
-rw-r--r-- | public/css/main.css | 3 | ||||
-rw-r--r-- | public/images/meeting_aquabaie.png | bin | 0 -> 456439 bytes | |||
-rw-r--r-- | public/index.php | 7 | ||||
-rw-r--r-- | public/js/tinymce.js | 23 | ||||
-rw-r--r-- | src/view/NewBuilder.php | 12 |
6 files changed, 66 insertions, 67 deletions
diff --git a/deploiement.txt b/deploiement.txt index 5346145..9a83fd2 100644 --- a/deploiement.txt +++ b/deploiement.txt | |||
@@ -1,58 +1,84 @@ | |||
1 | déploiement | 1 | déploiement |
2 | 2 | ||
3 | => procédure pour un hébergement "normal" avec un accès SSH, | ||
4 | ne marche pas sans la formule pro d'OVH | ||
5 | - peu de manips (le renommage) peuvent être faites avec filezilla | ||
6 | - pour le reste il faut contourner avec des scripts PHP faisant des exec() | ||
7 | 3 | ||
8 | => pour utiliser PHP-cli il faut utiliser le chemin de PHP /usr/local/php8.3/bin | 4 | => procédure spécifique sur un hébergement "normal" avec un accès SSH. |
5 | => avec un hébergement non-pro d'OVH, SSH n'est pas disponible, par contre il y a un phpmyadmin, | ||
6 | pour le reste il faut contourner avec des scripts PHP faisant des exec() | ||
7 | |||
8 | => pour utiliser PHP-cli il faut utiliser le chemin de PHP, quelque chose comme /usr/local/php8.4/bin/ | ||
9 | ou l'ajouter au PATH en éditant .bash_profile (facile avec filezilla): | 9 | ou l'ajouter au PATH en éditant .bash_profile (facile avec filezilla): |
10 | trouver la ligne PATH=$PATH:$HOME/bin | 10 | trouver la ligne PATH=$PATH:$HOME/bin |
11 | et y coller :$HOME/usr/local/php8.3/bin | 11 | et y coller :$HOME/usr/local/php8.4/bin |
12 | 12 | ||
13 | => utiliser PHP-cli depuis un script web: | 13 | => utiliser PHP-cli depuis un script web: |
14 | $param = '-r "echo \'hello world\';"'; | 14 | $param = '-r echo hello world 2>&1'; |
15 | $commande = 'php ' . $param; // OU | 15 | $commande = 'php ' . $param; // OU |
16 | $commande = '/usr/local/php8.3/bin/php ' . $param; | 16 | $commande = '/usr/local/php8.4/bin/php ' . $param; |
17 | $sortie = null; | 17 | $sortie = null; |
18 | $code_retour = null; | 18 | $code_retour = null; |
19 | exec($commande, $sortie, $code_retour); | 19 | exec($commande, $sortie, $code_retour); |
20 | 20 | ||
21 | 21 | ||
22 | => avec SSH | ||
23 | |||
22 | 1/ se connecter au serveur en ssh et télécharger les fichiers: | 24 | 1/ se connecter au serveur en ssh et télécharger les fichiers: |
23 | cd /var/www | 25 | cd dossier_parent_du_site |
24 | git clone git@ordipolo.fr:nageurs | 26 | git clone lien_git |
25 | 27 | ||
26 | 2/ renommer le dossier du site pour apache | 28 | 2/ renommer le dossier du site pour apache |
27 | mv nageurs dossier_du_site | 29 | mv nageurs nom_de_domaine |
30 | |||
31 | 3/ selon l'hébergement, si apache utilise son propre utilisateur (www-data), | ||
32 | changer les permissions parce qu'on veut utiliser composer et la console de doctrine avec cet utilisateur | ||
33 | chown -R www-data:www-data dossier_du_site | ||
28 | 34 | ||
29 | 3/ côté client, envoyer les fichier config.ini et bdd_nageurs.sql en FTP | 35 | on ajoutera ensuite "sudo -u www-data" devant les commandes |
30 | placer config.ini à la racine du site | ||
31 | 36 | ||
32 | retour côté serveur en ssh | 37 | 4/ si nécessaire, trouver PHP-cli! |
38 | placer sur le site un fichier php contenant: | ||
39 | <?php phpinfo(); | ||
33 | 40 | ||
34 | 4/ mieux vaut utiliser composer et la console doctrine sans être root, | 41 | un fichier de config devrait être trouvé, du genre: |
35 | changer les permissions: | 42 | /usr/local/php8.4/etc/php.ini |
36 | chown -R www-data www-data dossier_du_site | 43 | |
44 | l'exécutable est donc (à vérifier dans filezilla): | ||
45 | /usr/local/php8.4/bin/php | ||
46 | |||
47 | optionnel: l'ajouter au PATH en éditant .bash_profile (facile avec filezilla): | ||
48 | trouver la ligne PATH=$PATH:$HOME/bin | ||
49 | et y coller :$HOME/usr/local/php8.4/bin | ||
37 | 50 | ||
38 | 5/ télécharger les dépendances PHP (dont doctrine) en lisant le composer.json: | 51 | 5/ installer composer, si n'y est pas: |
39 | sudo -u www-data php composer.phar update | 52 | php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" |
53 | php composer-setup.php | ||
40 | 54 | ||
41 | 6/ générer l'autoloader | 55 | on appelera donc composer en faisant: php composer.phar |
42 | composer dump-autoload -o | ||
43 | 56 | ||
44 | 7/ se connecter à la BDD et créer la base: | 57 | 6/ installer les dépendances |
58 | sudo -u www-data php composer.phar install | ||
59 | |||
60 | cette commande exécute du PHP écrit dans composer.json qui réalise la copie de fichiers dans /vendor vers /public/js | ||
61 | si une erreur se présente, il doit y avoir un problème de permission avec /public/js/tinymce et /public/js/tinymce-langs | ||
62 | |||
63 | 7/ générer l'autoloader | ||
64 | php composer.phar dump-autoload -o | ||
65 | |||
66 | 8/ se connecter à la BDD et créer la base: | ||
45 | mysql/mariadb -u root -p | 67 | mysql/mariadb -u root -p |
46 | CREATE DATABASES nageurs CHARACTER SET utf8mb4; | 68 | CREATE DATABASE nageurs CHARACTER SET utf8mb4; |
47 | l'utilisateur doit avoir les droits SELECT, INSERT, UPDATE, DELETE, CREATE, DROP et ALTER | 69 | |
70 | 9/ droits de l'utilisateur sur la base de données | ||
71 | l'utilisateur de la BDD doit avoir les droits SELECT, INSERT, UPDATE, DELETE, CREATE, DROP et ALTER | ||
72 | |||
73 | 10/ avec FTP, envoyer le fichier config.ini et le placer dans /config | ||
74 | ce fichier contient les codes de la BDD | ||
48 | 75 | ||
49 | 8/ créer les tables: | 76 | 11/ créer les tables avec composer: |
50 | sudo -u www-data php bin/doctrine orm:schema-tool:create | 77 | sudo -u www-data php bin/doctrine orm:schema-tool:create |
51 | et remplir la base de données: | ||
52 | mariadb -D nageurs -u root -p < bdd_nageurs.sql | ||
53 | 78 | ||
54 | 9/ le 1er chargement d'une page est long, | 79 | 12/ éventuellement: remplir la base de données: |
55 | le cache de symfony inclu fait ensuite son job | 80 | => phpmyadmin ou ligne de commande |
81 | mariadb -D nageurs -u utilisateur_mysql -p < bdd_nageurs.sql | ||
56 | 82 | ||
57 | sinon, regarder ici: | 83 | 13/ associer le domaine au dossier du site dans l'espace client de l'hébergeur |
58 | https://www.doctrine-project.org/projects/doctrine-orm/en/3.3/reference/caching.html | 84 | par sécurité, choisir comme racine le dossier /public du site et non la vraie racine! |
diff --git a/public/css/main.css b/public/css/main.css index cb44e16..b297a65 100644 --- a/public/css/main.css +++ b/public/css/main.css | |||
@@ -76,6 +76,7 @@ button .action_icon | |||
76 | background-color: #ffff00; | 76 | background-color: #ffff00; |
77 | border-radius: 4px; | 77 | border-radius: 4px; |
78 | border: lightgrey 2px outset; | 78 | border: lightgrey 2px outset; |
79 | cursor: pointer; | ||
79 | } | 80 | } |
80 | button .action_icon:hover | 81 | button .action_icon:hover |
81 | { | 82 | { |
@@ -122,9 +123,9 @@ main button | |||
122 | } | 123 | } |
123 | main button:hover | 124 | main button:hover |
124 | { | 125 | { |
125 | cursor: pointer; /* curseur qui pointe du doigt */ | ||
126 | background-color: #ffff00; | 126 | background-color: #ffff00; |
127 | border-radius: 4px; | 127 | border-radius: 4px; |
128 | cursor: pointer; | ||
128 | } | 129 | } |
129 | 130 | ||
130 | article a:hover | 131 | article a:hover |
diff --git a/public/images/meeting_aquabaie.png b/public/images/meeting_aquabaie.png new file mode 100644 index 0000000..58bc1f7 --- /dev/null +++ b/public/images/meeting_aquabaie.png | |||
Binary files differ | |||
diff --git a/public/index.php b/public/index.php index 8cb2b9a..abdac71 100644 --- a/public/index.php +++ b/public/index.php | |||
@@ -1,13 +1,6 @@ | |||
1 | <?php | 1 | <?php |
2 | // public/index/php | 2 | // public/index/php |
3 | 3 | ||
4 | /* installation de composer sur un hébergement mutualisé | ||
5 | 1. télécharger le script d'installation: | ||
6 | php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" | ||
7 | 2. installation: php composer-setup.php | ||
8 | 3. supprimer l'installateur: php -r "unlink('composer-setup.php');" | ||
9 | 4. utilisation: php composer.phar */ | ||
10 | |||
11 | declare(strict_types=1); | 4 | declare(strict_types=1); |
12 | 5 | ||
13 | // -- prétraitement -- | 6 | // -- prétraitement -- |
diff --git a/public/js/tinymce.js b/public/js/tinymce.js index 092698e..88d8474 100644 --- a/public/js/tinymce.js +++ b/public/js/tinymce.js | |||
@@ -164,15 +164,6 @@ function closeEditor(id, page = '', restore_old = true) | |||
164 | document.querySelector(`#delete-${id}`).classList.remove('hidden'); | 164 | document.querySelector(`#delete-${id}`).classList.remove('hidden'); |
165 | } | 165 | } |
166 | } | 166 | } |
167 | if(page != 'article'){ | ||
168 | /*document.querySelector(`#position_up-${id}`).classList.remove('hidden'); | ||
169 | document.querySelector(`#position_down-${id}`).classList.remove('hidden'); | ||
170 | document.querySelector(`#delete-${id}`).classList.remove('hidden');*/ | ||
171 | } | ||
172 | else{ | ||
173 | //document.querySelector(`#delete-${real_id}`).classList.remove('hidden'); | ||
174 | } | ||
175 | |||
176 | } | 167 | } |
177 | 168 | ||
178 | function submitArticle(id, page = '', clone = null) | 169 | function submitArticle(id, page = '', clone = null) |
@@ -227,17 +218,15 @@ function submitArticle(id, page = '', clone = null) | |||
227 | .then(response => response.json()) | 218 | .then(response => response.json()) |
228 | .then(data => { | 219 | .then(data => { |
229 | if (data.success) { | 220 | if (data.success) { |
230 | console.log(data.article_id); | 221 | //console.log(data.article_id); |
231 | if(id[0] === 'n' && page === 'article'){ | 222 | if(id[0] === 'n' && page === 'article'){ |
232 | console.log('données envoyées au serveur avec succès.'); | 223 | console.log('données envoyées au serveur avec succès.'); |
233 | 224 | ||
234 | // remplacer bouton Enregistrer par Supprimer | 225 | // redirection page de l'article |
235 | submit_btn = document.getElementById('save-' + id_from_builder); // id précédent par NewBuilder | 226 | window.setTimeout(function(){ |
236 | submit_btn.classList.add('hidden'); | 227 | location.href = "index.php?page=article&id=" + data.article_id; |
237 | delete_btn = document.getElementById('delete-' + id_from_builder); | 228 | }, 0); |
238 | delete_btn.id = data.article_id; | 229 | |
239 | delete_btn.querySelector('button').setAttribute('onclick', "deleteArticle('" + data.article_id + "', 'article')"); | ||
240 | delete_btn.classList.remove('hidden'); | ||
241 | } | 230 | } |
242 | else{ | 231 | else{ |
243 | // Fermer l'éditeur et mettre à jour le contenu de l'article | 232 | // Fermer l'éditeur et mettre à jour le contenu de l'article |
diff --git a/src/view/NewBuilder.php b/src/view/NewBuilder.php index d93155e..ac2cf9a 100644 --- a/src/view/NewBuilder.php +++ b/src/view/NewBuilder.php | |||
@@ -101,23 +101,13 @@ class NewBuilder extends AbstractBuilder | |||
101 | $submit_date = '<p id="submit-' . $id_date . '" class="hidden"><button ' . $submit_js_date . '>Valider</button></p>'; | 101 | $submit_date = '<p id="submit-' . $id_date . '" class="hidden"><button ' . $submit_js_date . '>Valider</button></p>'; |
102 | $date_buttons = '<div class="button_zone">' . $modify_date . $close_editor_date . $submit_date . '</div>'; | 102 | $date_buttons = '<div class="button_zone">' . $modify_date . $close_editor_date . $submit_date . '</div>'; |
103 | 103 | ||
104 | $delete_article = ''; | ||
105 | $submit_article = ''; | 104 | $submit_article = ''; |
106 | $delete_class = ''; | ||
107 | // nouvel article: bouton pour valider la création d'un nouvel article | 105 | // nouvel article: bouton pour valider la création d'un nouvel article |
108 | if($_GET['id'][0] != 'i'){ | 106 | if($_GET['id'][0] != 'i'){ |
109 | $submit_js = 'onclick="submitArticle(\'' . $_GET['id'] . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; | 107 | $submit_js = 'onclick="submitArticle(\'' . $_GET['id'] . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; |
110 | $submit_article = '<p id="save-' . $id . '"><button ' . $submit_js . '><img class="action_icon" src="assets/edit.svg">Tout<br>enregistrer</button></p>' . "\n"; | 108 | $submit_article = '<p id="save-' . $id . '"><button ' . $submit_js . '><img class="action_icon" src="assets/edit.svg">Tout<br>enregistrer</button></p>' . "\n"; |
111 | $delete_class = 'class="hidden"'; | ||
112 | } | 109 | } |
113 | // modification: bouton "supprimer" | 110 | $admin_buttons = $submit_article; |
114 | else{ | ||
115 | $delete_class = 'class=""'; | ||
116 | } | ||
117 | $delete_js = 'onclick="deleteArticle(\'' . $id . '\', \'' . Director::$page_path->getLast()->getEndOfPath() . '\')"'; | ||
118 | $delete_article = '<p ' . $delete_class . ' id="delete-' . $id . '"><button ' . $delete_js . '><img class="action_icon" src="assets/delete-bin.svg">Retirer<br>la publication</button></p>' . "\n"; | ||
119 | |||
120 | $admin_buttons = $delete_article . $submit_article; | ||
121 | } | 111 | } |
122 | // page d'accueil | 112 | // page d'accueil |
123 | else{ | 113 | else{ |