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.tar.gz cms-73d49e47fe1f74a65c3f39a293b0f9fab5bfdbd0.tar.bz2 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{ |
