Joaktree de nouveau...

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Joaktree de nouveau...

    Bonjour,

    Il y a un bon moment que je ne m'étais plus occupé de Joaktree faute de pouvoir l'adapter à Joomla! 4, et je me suis lancé ce matin dans des tests sur la dernière version de Joomla! 3.9.23 sous PHP 8, mon but étant que cette extension sans équivalent aille le plus loin possible avec Joomla! 3.10.

    Installation neuve de Joomla!, installation de la version de Joaktree du 25 mars 2020, tout semble aller en attendant les notices, warning et deprecated auxquels je m'attends.


    Même en régressant en PHP 7.2, lorsque je veux créer une nouvelle source GedCom, les boutons d'enregistrement sont inactifs, avec dans la console le message "Uncaught TypeError: document.GetElementById is not a function"
    Le code JS en cause est le suivant dans la page :
    <script type="text/javascript">
    Joomla.submitbutton = function(task)
    {
    if (task == 'application.cancel' || document.formvalidator.isValid(document.GetElement ById('application-form'))) {
    alert('');
    Joomla.submitform(task, document.getElementById('application-form'));
    } else {
    alert('');
    }
    }
    </script>
    Il provient de
    Je ne comprends pas pourquoi j'ai cette erreur. Elle ne se produit pas sur le site (J! 3.9.23, PHP 7.4) où je travaillais précédemment et où il y a déjà des données, mais pas non plus une fois que j'ai tout réinitialisé.

    J'ai vu sur l'exemple Helloword un autre code pour la validation
    https://docs.joomla.org/J3.xevelop...ubmitbutton.js
    Dois-je en venir là ?

    En attendant, je vais repartir de zéro, au cas où j'aurais fait une erreur après l'installation...

    Merci de votre aide !
    Robert
    Dernière édition par RobertG à 18/12/2020, 16h02
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

  • #2
    Fausse alerte !

    J'ai utilisé l'extension de création de pack de Folcomedia pour en créer un à partir du site où Joaktree ne me pose pas de problème.
    J'ai réinstallé Joomla! et ce pack, l'erreur JS a disparu.
    J'ai pu importer un GedCom exemple d'Heredis qui est mon logiciel de généalogie.

    Reste maintenant qu'il y a pas mal de messages à propos de tableaux revenant vides, de warnings, etc.
    Exemple :
    Warning: Trying to access array offset on value of type null in /home/www/***********/joak8/administrator/components/com_joaktree/controllers/jt_maps.php on line 40
    Même si ce n'est pas bloquant, je vais essayer de corriger.

    Et si quelqu'un avait les compétences, le temps et le courage de tenter de migrer cette extension en compatibilité J! 4, je lui laisserai volontiers prendre la main.
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

    Commentaire


    • #3
      Ça me fait penser à Sisyphe et son rocher : tu crois être proche du but et ça repart pour un tour .
      Après Joomla 4 (ou en même temps pour employer une formule à la mode) il y a php 8
      Lorsque l'on se cogne la tête contre un pot et que cela sonne creux, ça n'est pas forcément le pot qui est vide.
      Confucius

      Commentaire


      • #4
        Pour l'instant, il semble que ça fonctionne correctement sous PHP 8 en masquant les erreurs.
        J'ai fait un premier test aussi avec J! 3.10 et PHP 8, même fonctionnement apparemment correct.
        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

        Commentaire


        • #5
          Est-ce ce joaktree : https://github.com/joaktree/J3.x. Le gars a quand même abandonné le développement depuis plus de sept ans; cela fait long.

          Tiens, as-tu déjà contacté le gars pour le demander s'il a connaissance d'une personne qui aurait repris le flambeau. Idem, as-tu posté sur le forum joomla.org pour poser la même question concernant la reprise ?

          Christophe (cavo789)
          Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
          Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

          Commentaire


          • #6
            J'ai eu d'autres discussions sur ce forum depuis que Joomla! 4 a été proposé pour tests en alpha, et sûrement aussi d'autres antérieures, raison du titre de cette discussion.
            J'ai été en relation avec l'auteur initial qui m'avait encouragé, je lui ai fourni il y a presque 3 ans je crois mes modifications pour que Joaktree fonctionne aussi correctement que possible en version 3 de Joomla!, il avait envisagé de reprendre le développement, mais je n'ai plus eu de nouvelles.
            Un autre utilisateur néerlandais m'a demandé le code pour reprendre le développement, mais (un peu comme moi) n'était apparemment intéressé par les corrections de ce dont il avait besoin. Je n'ai plus eu de nouvelles et manifestement, il ne semblait pas décidé, n'étant pas plus codeur que moi, à tenter l'aventure Joomla! 4

            Pour le moment donc, j'essaie de faire en sorte que cette extension, qui n'a aucun équivalent sous Joomla!, puisse durer le plus longtemps possible sous Joomla! 3 au moins pour ses fonctionnalités de base, celles que j'utilise par exemple sur https://joak8.par-robertg.fr qui est ce nouveau site ou https://joaktree.par-robertg.fr (les deux sont à cet instant en PHP 8, Joomla! 3.9.23
            "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
            MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

            Commentaire


            • #7
              Bonjour,

              Il semblerait que tout fonctionne sous PHP 8 actuellement. Les modules et plugins que j'avais laissés de côté depuis un moment ont aujourd'hui été vérifiés et modifiés, et ne semblent plus poser de problème. Cette toute dernière version est sur https://joak8.par-robertg.fr/ Joomla! 3.9.23, PHP 8 FPM.

              Le seul problème que je rencontre est l'incapacité d'afficher les images associées aux individus, provenant de la généalogie d'origine, bien qu'apparemment j'aie paramétré ce nouveau site de la même manière que joaktree.par-robertg.fr !
              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

              Commentaire


              • #8
                Hum ! un "wrong request" apparaît maintenant quand je publie le module "many years ago". Je l'avais eu et ça avait disparu. Je ne comprends pas pourquoi ça revient. Pas plus d'information, le message ne semble pas venir de Joomla! (rien d'autre dans le code source).
                "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                Commentaire


                • #9
                  Bonjour,

                  Cette erreur "wrong request" ne se produit pas en version 7.4 de PHP (à confirmer, quand même), le module signalant seulement qu'il n'y a pas de données à afficher.
                  Mais il semble qu'elle ne renvoie pas de données alors qu'il devrait y en avoir, ce qui pourrait vouloir dire que si l'erreur est automatiquement "oubliée" en PHP 7, elle ne passe pas en 8...
                  Reste donc à trouver ce qui la provoque. La requête étant très complexe, ça ne va pas être simple.
                  "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                  MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                  Commentaire


                  • #10
                    J'ai dit une bêtise, le module éphéméride (many years ago) renvoie bien des résultats en PHP 7.4 comme on peut le voir sur https://joak8.rg-conseil.fr
                    La requête devrait donc être correcte.
                    Tout semble fonctionnel sur ce site.
                    Je réutilise les mêmes fichiers après les avoir zippés et importés sur joak8.par-robertg.fr : dès que je passe en PHP8, "wrong request" réapparaît si le module est activé. C'est le seul élément de l'ensemble Joaktree qui bloque...
                    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                    Commentaire


                    • #11
                      J'ai eu un faux espoir, probablement en mélangeant les sites et en ne regardant pas celui qui était en PHP8
                      J'ai cloné le site pour le tester en local sur WampServer : même erreur que ce soit en MySQLi ou en MySQL PDO
                      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                      Commentaire


                      • #12
                        Bonjour,

                        Un éclair (de génie ? ), alors que j'étais persuadé que c'était une erreur serveur mais aucun résultat sur Internet concernait le message, j'ai exploré le code de Joaktree et trouvé les endroits où l'auteur initial avait casé ces messages.
                        Pour le moment, je trouve une erreur dans cette fonction
                        Code PHP:
                         static function getDay() {
                        static 
                        $day;

                        if (!isset(
                        $day)) {
                        //Filter
                        $app JFactory::getApplication('site');
                        $tmp1 $app->getUserStateFromRequest('com_joaktree.tmya.day' 'day''''int' );
                        if (isset(
                        $tmp1)) {
                        $tmp2 = (int) $tmp1;

                        if ((
                        $tmp2 == $tmp1) && ($tmp2 >= 0) && ($tmp2 <= 31)) {
                        $day $tmp2;
                        } else {
                        // somehing is wrong
                        die('wrong request);
                        }
                        } else {
                        // Day is not part of request
                        $day = 0;
                        }
                        }

                        return $day;

                        Si je fais aussi afficher la valeur de $tmp1 et $tmp2, la première est vide, la seconde à "0". Idem pour la fonction suivante getMonth()
                        Il me suffit de remplacer le message d'erreur par l'affectation de la valeur 0 ou gérer le fait que $tmp1 revient vide pour que l'erreur disparaisse, mais je ne comprends pas pourquoi $tmp1 = $app->getUserStateFromRequest('com_joaktree.tmya.day' , 'day', '', 'int' ); renvoie une valeur vide sous PHP 8 et pas sous 7.4...

                        Problème réglé pour le moment, en attendant d'en rencontrer d'autres comme le craint lesoutier.
                        Je vais continuer à tester; et si quelqu'un veut tester aussi, je vais faire un pack d'installation avec cette nouvelle version 1.5.4
                        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                        Commentaire


                        • #13
                          ça fait peur

                          La ligne "$app->getUserStateFromRequest('com_joaktree.tmya.day' , 'day', '', 'int' );" est donc supposée retourner un integer. Le développeur stocke cela dans une variable $toto ($tmp est juste si peu explicite).

                          Puis il converti $toto vers $nestor en forçant une conversion vers un nombre mais euh?, $toto était déjà un nombre.

                          Vite réécrit, code PHP 7:

                          Code:
                           
                          function getDay() : int {
                              $app = JFactory::getApplication('site');
                              $day = $app->getUserStateFromRequest('com_joaktree.tmya.day' , 'day', '', 'int' ) ?? 0;
                              if ($day > 31) {
                                  die("Hey dude, bad day today? Please specify a day number between 1 and 31");
                              }
                              return $day;
                          }
                          Christophe (cavo789)
                          Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                          Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                          Commentaire


                          • #14
                            Merci Christophe,

                            Le code original a été fait pour 1.5 je crois, puis pour 2.5, donc ça ne date pas d'hier.
                            Je ne sais même pas à quoi servent cette fonction et celle du mois, car même avec ce retour vide, on a bien les bons résultats, en tout cas pour le module qui plantait et dans lequel on peut sélectionner côté site, selon les paramétrages dans l'administration, soit un jour, soit un mois pour afficher les anciens événements.
                            La question est : pourquoi cette valeur revient-elle vide en PHP 8 et pas en PHP 7 ?
                            "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                            MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                            Commentaire


                            • #15
                              >Le code original a été fait pour 1.5 je crois, puis pour 2.5, donc ça ne date pas d'hier.
                              Oui mais c'est une excuse pour la version de PHP mais pas la qualité du code

                              Note que, je ne sais pas si ton code est comme ça mais l'instruction die() est incorrecte; il manque un single quote à la fin.

                              Ton code plus haut

                              Code:
                              die('wrong request);
                              Essaie le code ci-dessous qui va donc afficher le contenu des variables; tu seras vite fixé.

                              Code:
                              die(sprintf('wrong request [$tmp1=%s] [$tmp2=%s]',$tmp1,$tmp2));
                              Christophe (cavo789)
                              Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X