summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpolo-pc-greta <ordipolo@gmx.fr>2025-04-09 13:32:47 +0200
committerpolo-pc-greta <ordipolo@gmx.fr>2025-04-09 13:32:47 +0200
commit73d49e47fe1f74a65c3f39a293b0f9fab5bfdbd0 (patch)
treeaa602f8e4296f00c8d3723b8546baca5f70cfafb
parent1937a2f49ebe920b79604cb5df3649f9f1dff738 (diff)
downloadcms-73d49e47fe1f74a65c3f39a293b0f9fab5bfdbd0.zip
simplification de l'après création d'une news, MAJ Config et fichier deploiement.txt
-rw-r--r--deploiement.txt88
-rw-r--r--public/css/main.css3
-rw-r--r--public/images/meeting_aquabaie.pngbin0 -> 456439 bytes
-rw-r--r--public/index.php7
-rw-r--r--public/js/tinymce.js23
-rw-r--r--src/view/NewBuilder.php12
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 @@
1déploiement 1déploiement
2 2
3=> procédure pour un hébergement "normal" avec un accès SSH,
4ne 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,
6pour 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/
9ou l'ajouter au PATH en éditant .bash_profile (facile avec filezilla): 9ou l'ajouter au PATH en éditant .bash_profile (facile avec filezilla):
10trouver la ligne PATH=$PATH:$HOME/bin 10trouver la ligne PATH=$PATH:$HOME/bin
11et y coller :$HOME/usr/local/php8.3/bin 11et 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;
19exec($commande, $sortie, $code_retour); 19exec($commande, $sortie, $code_retour);
20 20
21 21
22=> avec SSH
23
221/ se connecter au serveur en ssh et télécharger les fichiers: 241/ se connecter au serveur en ssh et télécharger les fichiers:
23cd /var/www 25cd dossier_parent_du_site
24git clone git@ordipolo.fr:nageurs 26git clone lien_git
25 27
262/ renommer le dossier du site pour apache 282/ renommer le dossier du site pour apache
27mv nageurs dossier_du_site 29mv nageurs nom_de_domaine
30
313/ selon l'hébergement, si apache utilise son propre utilisateur (www-data),
32changer les permissions parce qu'on veut utiliser composer et la console de doctrine avec cet utilisateur
33chown -R www-data:www-data dossier_du_site
28 34
293/ côté client, envoyer les fichier config.ini et bdd_nageurs.sql en FTP 35on ajoutera ensuite "sudo -u www-data" devant les commandes
30placer config.ini à la racine du site
31 36
32retour côté serveur en ssh 374/ si nécessaire, trouver PHP-cli!
38placer sur le site un fichier php contenant:
39<?php phpinfo();
33 40
344/ mieux vaut utiliser composer et la console doctrine sans être root, 41un fichier de config devrait être trouvé, du genre:
35changer les permissions: 42/usr/local/php8.4/etc/php.ini
36chown -R www-data www-data dossier_du_site 43
44l'exécutable est donc (à vérifier dans filezilla):
45/usr/local/php8.4/bin/php
46
47optionnel: l'ajouter au PATH en éditant .bash_profile (facile avec filezilla):
48trouver la ligne PATH=$PATH:$HOME/bin
49et y coller :$HOME/usr/local/php8.4/bin
37 50
385/ télécharger les dépendances PHP (dont doctrine) en lisant le composer.json: 515/ installer composer, si n'y est pas:
39sudo -u www-data php composer.phar update 52php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
53php composer-setup.php
40 54
416/ générer l'autoloader 55on appelera donc composer en faisant: php composer.phar
42composer dump-autoload -o
43 56
447/ se connecter à la BDD et créer la base: 576/ installer les dépendances
58sudo -u www-data php composer.phar install
59
60cette commande exécute du PHP écrit dans composer.json qui réalise la copie de fichiers dans /vendor vers /public/js
61si une erreur se présente, il doit y avoir un problème de permission avec /public/js/tinymce et /public/js/tinymce-langs
62
637/ générer l'autoloader
64php composer.phar dump-autoload -o
65
668/ se connecter à la BDD et créer la base:
45mysql/mariadb -u root -p 67mysql/mariadb -u root -p
46CREATE DATABASES nageurs CHARACTER SET utf8mb4; 68CREATE DATABASE nageurs CHARACTER SET utf8mb4;
47l'utilisateur doit avoir les droits SELECT, INSERT, UPDATE, DELETE, CREATE, DROP et ALTER 69
709/ droits de l'utilisateur sur la base de données
71l'utilisateur de la BDD doit avoir les droits SELECT, INSERT, UPDATE, DELETE, CREATE, DROP et ALTER
72
7310/ avec FTP, envoyer le fichier config.ini et le placer dans /config
74ce fichier contient les codes de la BDD
48 75
498/ créer les tables: 7611/ créer les tables avec composer:
50sudo -u www-data php bin/doctrine orm:schema-tool:create 77sudo -u www-data php bin/doctrine orm:schema-tool:create
51et remplir la base de données:
52mariadb -D nageurs -u root -p < bdd_nageurs.sql
53 78
549/ le 1er chargement d'une page est long, 7912/ éventuellement: remplir la base de données:
55le cache de symfony inclu fait ensuite son job 80=> phpmyadmin ou ligne de commande
81mariadb -D nageurs -u utilisateur_mysql -p < bdd_nageurs.sql
56 82
57sinon, regarder ici: 8313/ associer le domaine au dossier du site dans l'espace client de l'hébergeur
58https://www.doctrine-project.org/projects/doctrine-orm/en/3.3/reference/caching.html 84par 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}
80button .action_icon:hover 81button .action_icon:hover
81{ 82{
@@ -122,9 +123,9 @@ main button
122} 123}
123main button:hover 124main 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
130article a:hover 131article 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é
51. télécharger le script d'installation:
6php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
72. installation: php composer-setup.php
83. supprimer l'installateur: php -r "unlink('composer-setup.php');"
94. utilisation: php composer.phar */
10
11declare(strict_types=1); 4declare(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
178function submitArticle(id, page = '', clone = null) 169function 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{