PeterRabbit

Membres
  • Compteur de contenus

    1 988
  • Inscription

  • Dernière visite

Tout ce qui a été posté par PeterRabbit

  1. PHP 7.2 Page Blanche

    @cybertaf @coco33920 Je profite de votre conversation pour me tuyauter : hier, j'ai eu le même message lorsque j'ai installé Apache et php 7.2 pour reproduire la configuration. J'ai mis ça sur le compte de mes déboires passés. Quelles extensions manque-t-il, puisque vous avez l'air de savoir et de vous comprendre à mi-mots ? Merci d'avance à l'un ou à l'autre.
  2. PHP 7.2 Page Blanche

    @coco33920 Moi, c'est pire : je ne suis jamais arrivé à faire fonctionner Apache ou Nginx sur ZorinOS (sur la base d'Ubuntu 16.04). Pourtant, ça devrait se faire facilement, vu le nombre de tutos qui courent le net. C'est pour ça que je me dis qu'un sous-répertoire chez un hébergeur, ce n'est pas mal du tout pour faire ses petits essais ... et que je peux affirmer que la 8.50 fonctionne.
  3. Mise à jour 8.4.9 publiée

    Ben voilà !
  4. Mise à jour 8.4.9 publiée

    Il suffisait de le préciser. Et c'est là que je me dis que j'ai fait mon temps.
  5. Mise à jour 8.4.9 publiée

    Voilà, c'est le genre de phrase que je ne comprends pas... Tu te retires de l'affaire (ce que j'aurais tendance à interpréter, vu l'aspect lapidaire) ou tu ne publies plus d'autres sous-versions en attendant la 9 ? Presque 40 ans de décryptage de copies pour en arriver là...
  6. Entête videos

    Merci à @creatifmen et à son œil de lynx qui m'ont remonté des points à corriger. En particulier, celui du "loop" qui ne fonctionnait pas quand il n'y avait qu'une vidéo : le code de Youtube est plus tordu que je ne le pensais. C'est réglé – enfin, je pense.
  7. [Résolu] - Dossier en dehors de l'arborescence Zwii ?

    Merci pour ce compte rendu détaillé, @Dagda ! Les visiteurs ne pourront pas se dire qu'on lance des idées qu'on laisse tomber ! J'ai encore un ou deux points à revoir – comme d'habitude, ce sont les détails de cosmétique qui posent le plus de difficultés -- mais tel quel, je pense que tu as ce qu'il fallait pour satisfaire tes besoins atypiques. En tout cas, j'ai beaucoup aimé "travailler" sur ce projet ! PS : Je ne fais pas dans le "teasing" systématique, mais je ne sais pas ce que deviendra ce travail. Vu son caractère très particulier, il ne justifie pas à mes yeux une intégration dans Zwii, un "plugin" suffirait. J'attendrai dans ce cas que @EBS01 ait finalisé la petite révolution qu'il nous promet pour l'écrire en conformité avec les nouvelles normes. Mais si vous êtes intéressé, n'hésitez pas à me contacter par MP, je vous enverrai les fichiers.
  8. Entête videos

    Mieux que ça, @pwepwe973 ! Avec @cybertaf pour l'interface dynamique, nous nous sommes mis à trois pour te faire une jolie bannière : elle affiche une playlist aléatoire qui peut contenir jusqu'à 8 vidéos ! PS : Je ne publierai pas ce travail tant que je n'aurai pas finalisé mon projet de trois types de bannières différents : il reste la bannière image responsive à intégrer. Mais si vous êtes intéressé, n'hésitez pas à me contacter par MP, je vous enverrai les fichiers et je les actualiserai au fur et à mesure des tests et des avancées.
  9. Atelier "plugins" #3

    ATELIER #3 La solution du problème... Pour @Thispy et ceux qui ont suivi dans l'ombre, il reste en effet un problème : comment éviter que la même ligne soit reproduite à chaque connexion, vu que le fichier "index.php" qui est en ligne contient votre script ? Et même dans le cas où le script ne trouverait rien à remplacer vu qu'il l'aurait déjà fait, ça fait désordre de laisser l'échafaudage quand on a fini de repeindre la maison... Bien sûr, on pourrait remplacer manuellement "index.php" par la version d'origine. Oui, mais bof... Non, nous allons demander à PHP de faire l'opération pour nous, en sous-main, au lancement de Zwii. Et pour ça, il faut réactiver ce que je vous ai montré dans le premier atelier : reproduire l'arborescence de Zwii. Mise en pratique Sur votre bureau, créez un nouveau répertoire que vous nommerez "Mon second plugin", par exemple. Placez-y votre fichier "index.php" modifié. Si vous n'avez pas fait vos devoirs – shame on you ! – placez-y celui-ci : index.php Dans ce répertoire, créez un dossier "site" à l'intérieur duquel vous créerez un dossier "tmp". Le dossier "tmp", comme son nom l'indique, est destiné à accueillir temporairement des fichiers. Placez à l'intérieur une copie du fichier "index.php" de la version de Zwii que vous avez téléchargée – la 8.45 ou une version plus récente, peu importe. Pour vous y reconnaître, renommez-le "index_distrib.php". Éditez votre "index.php" modifié et ajoutez cette ligne de code à la ligne 29 (c'est bien de sauter des lignes pour aérer le code) : rename("site/tmp/index_distrib.php", "index.php"); Elle va tout à la fois déplacer et renommer le fichier "index_distrib.php", ce qui remplacera l'index.php modifié par sa version d'origine. Vous me suivez ? Non ? La syntaxe est pourtant simple : renomme ("Fichier à déplacer avec son chemin", "Nouveau nom et nouveau chemin du fichier"); On vérifie ? Copiez le fichier "index.php" modifié et le dossier "site" à la racine de votre site. Acceptez le remplacement du fichier "index.php". Rafraîchissez votre page. C'est fait ! Si vous ne me croyez pas, éditez le fichier "index.php" de votre site et ouvrez le dossier "site/tmp". Il faut parfois actualiser l'affichage de Filezilla (F5), mais il est vide... Voilà, vous savez tout – en tout cas suffisamment pour pouvoir confectionner un "plugin" pour proposer une petite modification qui vous tiendrait à cœur... ou aller plus loin, pour intégrer un script que vous avez trouvé sur le net, par exemple. Ce pourrait être le sujet d'un atelier #4 si vous le souhaitez. Exercice : En utilisant le même principe, confectionnez le "plugin" qui désinstalle proprement la police "Display que vous venez d'installer avec le fichier index.php que je vous ai fourni et faites-le moi parvenir en MP. Ce n'est pas aussi compliqué que vous le pensez. Je récapitule : un "index.php" contenant un script qui utilise ce que nous avons vu dans les deux derniers ateliers – comme @Thispy veut pouvoir réfléchir, je n'en dirai pas davantage. un répertoire "site/tmp" contenant un "index.php" d'origine renommé "index_distrib" pour l'occasion... ... et le tour est joué.
  10. Atelier "plugins" #3

    Ou pas.
  11. ATELIER #2 Où les choses vont légèrement se compliquer... A la fin du premier atelier, je vous ai laissés sur une impression insatisfaisante : "Pourquoi nous enseigner quelque chose pour nous dire après que ce à quoi nous sommes laborieusement parvenus n'est pas la bonne méthode ? " – Pour préparer progressivement les compétences nécessaires à l'atelier #3 à venir... Mais pour l'instant nous n'en sommes qu'à l'atelier #2 : apprendre quelques rudiments de PHP pour réécrire ponctuellement les fichiers au lieu de les écraser, sans toucher au reste du code. Grâce à Google pour mes recherches et à l'incontournable volumineux manuel officiel de PHP, j'ai peu à peu appris à remplacer une ligne de code par une autre en utilisant ces quelques instructions : $file="core/layout/main.php"; $filecontent=file_get_contents($file); $replace=str_replace('<header', '<header class="img<?php echo rand(1, 6);?>"', $filecontent); file_put_contents($file, $replace); Ne vous laissez pas impressionner par le code de la troisième ligne, c'est juste pour vous donner un vrai exemple. Je vous commente les instructions : $file="core/layout/main.php"; On associe le fichier que l'on veut modifier à la variable $file. $filecontent=file_get_contents($file); On ouvre le fichier $file, on lit son contenu et on le place dans la variable $filecontent. $replace=str_replace('<header', '<header class="img<?php echo rand(1, 6);?>"', $filecontent); On remplace le code d'origine par le nouveau code dans $filecontent et on associe le contenu modifié à la variable $replace. La syntaxe de cette instruction est simple : str_replace('code à remplacer', 'modification à apporter', $filecontent); file_put_contents($file, $replace); On écrit le contenu modifié dans le fichier $file et on le referme. Et on répète cette opération autant de fois qu'il le faut en fonction du nombre de modifications à apporter et du nombre de fichiers concernés. NB : Il existe des techniques plus sophistiquées et plus condensées qui relèvent de ce qu'on appelle "codage" – merci à @EBS01 pour l'exemple qu'il me fournit très à propos ! Mais puisque celle-ci donne de bons résultats, pourquoi la compliquer, d'autant que le débutant s'y retrouvera plus facilement et qu'on peut faire du copier-coller à partir d'une maquette qu'on conservera dans un coin de son disque dur ? Mise en pratique Cette technique de remplacement peut être utilisée pour corriger un code. Nous aurions pu ainsi corriger le bug d'encodage de cette façon au lieu de remplacer les fichiers. Mais on peut aussi l'employer pour ajouter du code à certains endroits. C'est ce que nous allons voir. Je vous propose de partir du travail pratique que je vous avais demandé et que @Thispy m'a envoyé. Nous allons ajouter une police aux 27 dont dispose Zwii. Bien sûr, il suffirait d'expliquer comment faire, vu qu'il n'y a qu'une ligne à ajouter. Mais ce n'est pas notre propos et comme l'exemple est simple, il sera plus parlant. Une étude de l'arborescence de Zwii (cf ; "README.md") vous amènerait à constater la présence d'un répertoire "theme" parmi les "modules du cœur" de Zwii ("core/module") : vous vous doutez que c'est là que se définissent les différents paramètres qui entreront dans la composition de la feuille de style qui définit l'apparence de Zwii ("site/data/theme.css"). Rendez-vous dans ce répertoire et éditez le fichier "core/module/theme/theme.php". Il va s'agir d'ajouter la police "Display" par ordre alphabétique (@Thispy ) entre les polices "Dancing script" et "Droid sans". Procédons pas à pas : Créez un nouveau fichier texte sur votre bureau et copiez-collez le code que j'ai commenté : $file="core/layout/main.php"; $filecontent=file_get_contents($file); $replace=str_replace('<header', '<header class="img<?php echo rand(1, 6);?>"', $filecontent); file_put_contents($file, $replace); Copier-coller minimise les risques de "fautes d'orthographe" : si vous oubliez la moindre virgule, c'est fichu... Nous ne mettrons qu'une instruction par ligne pour que le code soit plus facile à lire et surtout à relire. Adaptons maintenant ces lignes à ce que nous voulons faire. Il suffit juste de changer le chemin et le nom du fichier (ligne 1) ainsi que le code à remplacer et la modification à apporter (ligne 3). Je vous montre, vous appliquerez ensuite : $file="core/module/theme/theme.php"; $filecontent=file_get_contents($file); $replace=str_replace(''Dancing+Script' => 'Dancing Script',', ''Dancing+Script' => 'Dancing Script', 'Display' => 'Display',', $filecontent); file_put_contents($file, $replace); La ligne 1 ne soulevant pas de questions, je vous explique le principe de la ligne 3. En fait, pour ajouter la police "Display" à cet endroit précis, on remplace la ligne de la police précédente ("Dancing script") par deux lignes : la ligne de la police "Dancing script" à laquelle on ajoute celle de la nouvelle police "Display", sans oublier le passage à la ligne entre les deux. J'ai aussi ajouté un espace au début de la nouvelle ligne pour respecter la présentation du code. Si j'ai été clair, vous avez compris qu'il faut chercher dans le script des repères précis pour s'en servir comme de points d'ancrage pour les modifications. C'est le principe des hooks (crochets) dans des CMS conçus pour recevoir de vrais plugins. On aurait d'ailleurs pu prendre appui sur la ligne suivante, celle de la police "Droid sans". Exercice : Réécrivez la ligne 3 pour faire ce que je viens de dire ! Voilà, votre script est prêt ! C'est bien joli tout ça, me direz-vous, mais comment faire pour l'exécuter ? On pourrait le placer dans un fichier spécifique, "display.php" par exemple, qu'on placerait sur le site et qu'on appellerait depuis son navigateur, mais je me suis dit que ce serait plus élégant de l'ajouter au fichier "index.php" à la racine du site de façon qu'il s'exécute juste avant que Zwii ne se lance. Mise en pratique Faites une copie du fichier "index.php" à la racine de la 8.45 que vous avez téléchargée pour cet atelier (on continue à travailler sur cette version) et placez-la sur votre bureau (elle s'appellera toujours "index.php"). Éditez-la. Copiez-collez vos quatre lignes de code au niveau de la ligne 22, juste après la vérification de la version de PHP. Faites-les précéder d'un petit commentaire. Vous avez le choix de la syntaxe : /* Ceci est un commentaire dans un fichier PHP ou dans une feuille de style css */ // Ceci est un commentaire dans un fichier PHP Comme ceci : <?php /** * This file is part of Zwii. * * For full copyright and license information, please see the LICENSE * file that was distributed with this source code. * * @author Rémi Jean <remi.jean@outlook.com> * @copyright Copyright (C) 2008-2018, Rémi Jean * @license GNU General Public License, version 3 * @link http://zwiicms.com/ */ /** * Vérification de la version de PHP */ if(version_compare(PHP_VERSION, '5.6.0', '<')) { exit('PHP 5.6+ required.'); } /* Installation de la police Display */ Vos quatre lignes de code [...] Enregistrez votre fichier et copiez-le à la racine de votre site d'essais. Validez le remplacement que vous propose Filezilla. Tatatan ! Le verdict va tomber : connectez-vous à votre site ou rafraîchissez la page d'accueil. En fait, c'est plutôt le couperet qui est tombé Parse error: syntax error, unexpected 'Dancing' (T_STRING) in /home/thgfrfo/public_html/8.45tp/index.php on line 25 Une erreur d'interprétation du code due à une faute de syntaxe a bloqué le lancement de Zwii. Ne vous fiez pas aux explications des messages d'erreur, elles n'identifient pas toujours/souvent la cause première du problème. Dans le cas présent, ce n'est pas le "Dancing" qui est responsable du blocage, mais une erreur d'interprétation du code due à un petit détail que je vais vous expliquer. J'en profite pour vous conseiller d'utiliser un éditeur à coloration syntaxique (NotePad++ sur Windows ou Linux, ou Geany sur Linux par exemple – désolé, je n'ai pas croqué la pomme... Ce qui aurait dû attirer votre regard, c'est que les parties de la ligne comprises entre des apostrophes sont en noir (sur Geany), couleur réservée aux instructions PHP. C'est donc là qu'est le problème. En effet, pour certains caractères, il faut expliquer à l'interpréteur PHP qu'il doit les considérer comme des caractères à écrire dans un fichier, et pas comme une partie d'une instruction à exécuter. Suis-je clair ? Pour cela, il faut les faire précéder d'un antislash (Alt Gr 8). En jargon, on appelle cela "échapper" un caractère. Parmi ces caractères, il y a justement l'apostrophe dont votre ligne 3 fait un grand usage. Vous allez donc "échapper" ces apostrophes, mais pas toutes ! Celles qui encadrent la ligne à remplacer ou les deux lignes de remplacement appartiennent au script ! Pour cette tâche, vous pouvez travailler indifféremment sur votre bureau ou en éditant le fichier en ligne. Faites précéder la première apostrophe 'Dancing d'un antislash, comme ceci : \'Dancing. Miracle, la suite se colore en orange... mais le problème se décale d'une apostrophe... Échappez donc une à une les 11 apostrophes restantes. Cette fois, la ligne a une couleur plus homogène et vous voyez bien les deux virgules qui structurent le code. $replace=str_replace('\'Dancing+Script\' => \'Dancing Script\',', '\'Dancing+Script\' => \'Dancing Script\', \'Display\' => \'Display\',', $filecontent); Au passage, ce travail de bénédictin vous a peut-être fait prendre conscience qu'il aurait été plus rapide d'échapper les apostrophes du code à remplacer, de copier ce code "échappé", puis d'ajouter la seconde ligne... Opérez le remplacement du fichier "index.php" de votre site, soit en le copiant à nouveau, soit en enregistrant les modifications avec Filezilla. Rafraîchissez la page. Ça marche, Zwii se lance ! Et si nous allions vérifier la bonne exécution de notre réécriture ? Éditez le fichier "core/module/theme/theme.php" de votre site. Bravo, la police "Display" apparaît à la ligne 44, entre "Dancing script" et "Droid Sans" ! Et mince ! Elle y est deux fois ! Eh oui, aussi bizarre que ça puisse paraître, même si votre erreur de syntaxe avait bloqué le lancement de Zwii, le script s'était pourtant exécuté et le remplacement avait été fait ! Vous voyez donc que notre technique n'est pas parfaite : si nous avions corrigé une ligne de code, à la seconde exécution le script n'aurait plus trouvé le texte à remplacer. Mais dans le cas présent, la ligne qui sert d'ancrage est toujours là, et on la multiplierait à chaque connexion au site. La solution au prochain épisode ? Nous avons bien travaillé. J'ai oublié de donner le travail à faire ! Envoyez-moi par MP un fichier "index.php" qui installe la police "Permanent Marker" en utiisant la technique que vous avez apprise. Indice : Zwii se fait livrer ses polices par Google Fonts.
  12. [A suivre] Atelier "plugins" #2

    C'est une belle chose que de savoir coder. Pour moi, c'est trop tard. J'attends le résultat avec impatience.
  13. Calendrier dans le module FORM

    @Iron Cimer ! Tu as regardé la documentation en suivant le lien ? On peut faire mieux.
  14. Calendrier dans le module FORM

    Comment tu sais que c'est différent ? Tu n'as pas vu mon code. Pour le reste, je n'avais même pas envisagé que ce dont tu parles existât : j'en suis juste à l'exportation .pdf.
  15. [A suivre] Atelier "plugins" #2

    Tu ne pourris pas mon atelier @EBS01 Jérôme : ses objectifs étaient très modestes. Comme je l'ai dit, je te suis reconnaissant des quelques lignes de code que tu as envoyées. Avec ce que tu proposes, il est vrai qu'on sortirait de la période "bricolage" : mes "plugins" n'ont jamais prétendu à autre chose. Mais après, il faudra aussi qu'il y ait des contributeurs pour coder...
  16. Calendrier dans le module FORM

    Format universel ? Il ne s'agit pas seulement de récupérer les données du datepicker ? J'ai regardé la 8.49a. Ce n'est pas tout à fait la même technique, mais le résultat doit être le même.
  17. [A suivre] Atelier "plugins" #2

    Oui, mais ce n'est pas le propos de ce modeste atelier. Ne brûlons pas les étapes ! Moi je veux bien, mais il faudrait pouvoir passer à la version 9 : ce que propose @EBS01, ce n'est ni plus ni moins que de revoir la conception de Zwii. Avec son concours, ce serait sans doute possible, mais il semble bien occupé lui aussi. Sans lui, autant oublier.
  18. [Module] group_adherent

    group_adherent Voir le fichier @JDLC souhaitait qu'on puisse, dans le cadre d'une association comprenant plusieurs dizaines, voire plusieurs centaines de membres, diffuser des comptes-rendus ou des photos aux seuls adhérents en leur communiquant un identifiant et un mot de passe uniques, ce qui permettrait de renouveler le mot de passe au début de chaque année d'exercice pour exclure les membres qui auraient quitté l'association. Le statut de "Membre" aurait pu convenir, mais le problème était que @JDLC craignait qu'un adhérent ne s'amuse à modifier le mot de passe général — il paraît que ce n'est pas rare... Le plugin ajoute donc une catégorie "Adhérent" au bas de la hiérarchie des membres enregistrés, avec des droits limités à la seule consultation de pages privées, sans possibilité d'éditer le profil ou de récupérer le mot de passe. Avertissement Le script d'installation inscrit les modifications nécessaires dans les trois fichiers "core/core.php", "core/module/user/user.php" et "core/module/user/view/add/add.php". Le module de désinstallation se chargera de les restituer dans leur état initial. Si vous avez personnalisé ces fichiers, faites-en une copie de sécurité. Installation Dézippez l'archive. Ouvrez le dossier "group_adherent_install". Si vous n'avez pas encore activé votre site ZwiCMS, copiez le contenu du dossier "group_adherent_install" (le fichier "index.php" et le dossier "site") avant de finaliser l'installation, vous ferez l'économie de l'édition de "siste/data/data.json". Acceptez le remplacement du fichier "index.php". Connectez-vous à votre site ou rafraîchissez la page. Ceux qui avaient déjà activé leur site doivent en actualiser les données, mais ce n'est pas très compliqué : Faites une copie de sécurité de "site/data/data.json". Éditez-le et recherchez "user" (avec les guillemets) avec CTRL F. Le "group" des utilisateurs commence là.. Ajoutez 1 à la valeur de chaque groupe d'utilisateurs inscrits en passant les membres de 1 à 2, les modérateurs de 2 à 3 et les administrateurs de 3 à 4. Enregistrez vos modifications. Vous pouvez maintenant inscrire vos nouveaux membres dans la nouvelle catégorie "Adhérent". Procédez de même pour la désinstallation avec le module "group_adherent_restaure" et en abaissant les droits des utilisateurs d'un point dans "data.json". Ce plugin est sans doute perfectible. N'hésitez pas à me faire part de vos remarques ou suggestions, en particulier si vous constatez qu'il ne fonctionne pas sur votre site malgré les tests en local et chez un hébergeur tatillon. Contributeur PeterRabbit Soumis 27/03/2018 Catégorie Modules  
  19. [Module] group_adherent

    Pas de problème : je rappelle qu'au début de mon premier atelier j'avais affirmé que j'avais moi aussi à apprendre. En tout cas @EBS01 m'a fourni l'atelier #4. Mais il faut d'abord faire le #3.
  20. Bug dans le code

    A part que le script s'est exécuté plusieurs fois, je ne vois pas d'explication. Mais je ne comprends pas pourquoi il se serait exécuté ne serait-ce que deux fois, puisque l' "index.php" qui contient le script est remplacé immédiatement après exécution par un "index.php" normal, avant même de lancer Zwii...
  21. Bug dans le code

    Tu as bien fait, @pwepwe973 , mais je ne dispose pas de suffisamment d'éléments pour pouvoir te donner une explication : il faudrait que tu répondes à ma question concernant l'appel de script au bas de "core/layout/main.php" --- et la modification de la première ligne. Sont-ils dupliqués eux aussi ?
  22. [Résolu] - Dossier en dehors de l'arborescence Zwii ?

    @cybertaf Feel free, tu as le code ci-dessus.
  23. Calendrier dans le module FORM

    @Iron @cybertaf Dans mon hyperactivité forcée, je l'ai fait à la demande de @mario pour le formulaire de programmation des sorties de son club de plongée Étourdi comme je suis, je n'avais pas constaté que Zwii embarque déjà un calendrier. Il faut dire qu'il n'a pas un nom très parlant : "flatpickr". Mais ce n'est pas grave, j'aime bien "DateTimePicker" qui exploite le jQuery déjà installé. De plus, je crois qu'il pourrait faire ce que tu souhaiterais : Mais ce n'est pas la seule chose que j'ai faite pour lui. Certaines avancées sont plutôt intéressantes et pourraient être intégrées, comme de vraies pages privées réservées à un groupe de membres particulier, la possibilité d'envoyer un formulaire à toutes les catégories de membres inscrits à la fois ou de mettre les destinataires en bcc. Je pensais le publier par petites tranches.
  24. Bug dans le code

    Merci @pwepwe973. Je ne m'explique toujours pas. Tu as aussi la duplication de lignes dans le pied de page ? Pour les "plugins", je suis tout à fait d'accord. Ceci dit, ceux que j'ai conçus pour la 8.10 fonctionnent ou fonctionneraient encore pour la plupart sur la 8.49. Le problème, c'est qu'il faut s'astreindre à les vérifier. C'est entre autres raisons pour ça que je les ai presque tous retirés du téléchargement.
  25. [A suivre] Atelier "plugins" #2

    Bien sûr que si : les quatre lignes peuvent être -- à notre niveau -- considérées comme un "script". Et, à les lire, elles fonctionnent... techniquement parlant. Relis ce que tu as écrit : il s'agit d'ajouter une police. Ne bois pas tout, j'arrive ! PS : Le forum et ces petits bricolages, c'est ce qui m'a aidé à aller au bout de ma carrière.