Appel aux classes Joomla! 4

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

  • Pour compléter ma précédente réponse, ici le début du code de cette fonction qui, à la fin, renvoie aux fonctions importGedcom ou exportGedcom :
    Code:
    function HandleResponseGedcom(type, response) {
        var curmsg = document.getElementById('procmsg').innerHTML;
    
        try { var r = JSON.decode(response); }
        catch(err) {        
            document.getElementById('procmsg').innerHTML = curmsg + '<br />' + response;
            alert('An error occured while processing GedCom.');
        }    
        if ((r) && (r.status)) {
            if (r.msg != null) {
                document.getElementById('procmsg').innerHTML = curmsg + '<br />' + r.msg;
            }
    
            if (r.status == 'stop') {            
                document.getElementById('head_process').style.display  = 'none';
                document.getElementById('head_finished').style.display = 'block';
            }
    
            if (r.status == 'error') {
                document.getElementById('head_process').style.display  = 'none';
                document.getElementById('head_error').style.display    = 'block';
            }
    
            if (r.status != 'stop') {
                if (r.start) {
                    document.getElementById('start_' + r.id).value = r.start;
                }
                if (r.current) {
                    document.getElementById('current_' + r.id).value = r.current;
                }
    
                if (r.persons > 0) {
                    document.getElementById('l_persons_' + r.id).style.display = 'block';
                    document.getElementById('persons_' + r.id).value = r.persons;
                }
    
                if (r.families > 0) {
                    document.getElementById('l_families_' + r.id).style.display = 'block';
                    document.getElementById('families_' + r.id).value = r.families;
                }
    Comme je l'ai dit, et starter866 aussi, la console nous signale que "send" n'est pas une fonction dans "function importGedcom()", sans aucun message d'erreur au moment de la tentative d'import des données du fichier texte, ce qui pour moi voudrait dire qu'on est immédiatement éjecté de cette fonction JS d'import, expliquant l'absence de passage par la gestion "onfailure" et l'alerte qui devrait apparaître. D'ailleurs une alerte ou un message à faire afficher dans la console comme l'a proposé garstud, placé au début de la fonction importGedcom ne renvoie strictement rien.

    Complément : si dans function importGedcom() je mets une alerte au début, contrairement à ce que j'avais précédemment dit, le message s'affiche bien. Par contre, le même message dans HandleResponseGedcom ne s'affiche pas, ce qui confirme que le blocage se produit dans importGedcom et que ça ne passe pas à .HandleResponseGedcom
    Dernière édition par RobertG à 15/12/2017, 16h47
    "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


    • J'avance !
      Apr_ès avoir remplacé la fonction par :
      J'ai maintenant cette erreur :
      string(3) "new" {"id":7,"start":"17:16:24","current":"17:16:24","e nd":null,"cursor":0,"persons":0,"families":0,"sour ces":0,"repos":0,"notes":0,"docs":0,"unknown":0,"j app_ids":[],"status":"error","msg":"D\u00e9but du chargement des donn\u00e9es du fichier source Gedcom : id = 7
      Fichier Gedcom non trouv\u00e9 : (\/home\/www\/sitestests\/test4\/gedtmp\/exemple.ged)"}
      Le fichier n'est pas trouvé, alors qu'il est bien à "home\www\sitestests\test4\gedtmp\exemple.ged) ". Reste donc à trouver pourquoi !
      "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


      • Bon, pour le fichier pas trouvé, c'était ma faute : erreur de saisie d'un nom dans les paramètres...
        Mais maintenant qu'il trouve bien le fichier, impossible de savoir pourquoi il ne l'importe pas et continue à tourner en rond sans rien faite.
        Je suis donc maintenant dans la "function process($part)" du fichier "helpers/jt_gedcomfile2.php", et les "enqueueMessage" placés dans cette fonction ne s'affichent pas.
        "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


        • Tu as remplacé la fonction "send" par quoi ? je ne trouve rien dans ce sens.

          Code:
           les "enqueueMessage" placés dans cette fonction ne s'affichent pas
          .

          Donc la fonction ne serait pas exécutée ?

          Commentaire


          • Code:
            function importGedcom() {
            
                $.ajax({
                    url: 'index.php?option=com_joaktree&view=jt_import_gedcom&format=raw&tmpl=component',
                    type: 'get',
                    failure: function(xhr) {
                        alert('Error occured for url: ' + url);
                    },
                    success: function(response) {
                            HandleResponseGedcom('import', response);                
                    }
                });
                /*    var myRequest = new Request({
                    url: 'index.php?option=com_joaktree&view=jt_import_gedcom&format=raw&tmpl=component',
                    method: 'get',
                    onFailure: function(xhr) {
                        alert('Error occured for url: ' + url);
                    },
                    onComplete: function(response) {
                            HandleResponseGedcom('import', response);                
                    }
                }).send();*/
            }
            Les problèmes se produisent maintenant plus loin ! Lors de la lecture du GedCom exemple d'Heredis, les infos du premier personnage sont bien lues (mais pas encore enregistrées dans la base), mais quand on arrive à la ligne du deuxième personnage "0 @I2@ INDI", ça plante et pour le moment, je n'arrive pas à en trouver la raison.
            Peut-être est-ce dans HandleResponseGedcom ? Je me demande ce que reçoit au juste la fonction, j'ai l'impression qu'il peut y avoir des éléments polluants...
            En tout cas, c'est au niveau du JSON.decode que ça se passe, une erreur est renvoyée :
            try { var r = JSON.decode(response);}
            "JSON.decode is not a function" !!!
            Dernière édition par RobertG à 16/12/2017, 12h14
            "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


            • J'ai mis ton code, mais je n'ai aucune erreur dans la console.

              Charge en boucle uniquement

              Commentaire


              • Je pense que c'est normal, une erreur plus loin doit éjecter sans passer par l'import ni revenir à la fin de la fonction qui signalerait la fin du traitement.

                J'essaie de trouver par quoi remplacer "JSON.decode" qui est spécifique à Mootools par un équivalent JQuery.
                "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


                • Précisions. Pour le premier enregistrement, je récupère par lecture du GedCom ceci (c'est ainsi que Joaktree me liste la "response" passée à HandelResponseGedcom, mais ça ressemble à ce qu'un "var_dump" récupère...) :
                  array(8) {
                  [0]=>
                  array(4) {
                  ["object_id"]=>
                  string(2) "I1"
                  ["level"]=>
                  string(1) "1"
                  ["tag"]=>
                  string(4) "NAME"
                  ["value"]=>
                  string(13) "Louis/ABRIAL/"
                  }
                  [1]=>
                  array(4) {
                  ["object_id"]=>
                  string(2) "I1"
                  ["level"]=>
                  string(1) "2"
                  ["tag"]=>
                  string(4) "GIVN"
                  ["value"]=>
                  string(5) "Louis"
                  }
                  [2]=>
                  array(4) {
                  ["object_id"]=>
                  string(2) "I1"
                  ["level"]=>
                  string(1) "2"
                  ["tag"]=>
                  string(4) "SURN"
                  ["value"]=>
                  string(6) "ABRIAL"
                  }
                  [3]=>
                  array(4) {
                  ["object_id"]=>
                  string(2) "I1"
                  ["level"]=>
                  string(1) "1"
                  ["tag"]=>
                  string(3) "SEX"
                  ["value"]=>
                  string(1) "M"
                  }
                  [4]=>
                  array(4) {
                  ["object_id"]=>
                  string(2) "I1"
                  ["level"]=>
                  string(1) "1"
                  ["tag"]=>
                  string(4) "OCCU"
                  ["value"]=>
                  string(22) "Maire de Saint-Vallier"
                  }
                  [5]=>
                  array(4) {
                  ["object_id"]=>
                  string(2) "I1"
                  ["level"]=>
                  string(1) "1"
                  ["tag"]=>
                  string(4) "SIGN"
                  ["value"]=>
                  string(3) "YES"
                  }
                  [6]=>
                  array(4) {
                  ["object_id"]=>
                  string(2) "I1"
                  ["level"]=>
                  string(1) "1"
                  ["tag"]=>
                  string(4) "_SEC"
                  ["value"]=>
                  string(3) "YES"
                  }
                  [7]=>
                  array(4) {
                  ["object_id"]=>
                  string(2) "I1"
                  ["level"]=>
                  string(1) "1"
                  ["tag"]=>
                  string(4) "_FIL"
                  ["value"]=>
                  string(16) "LEGITIMATE_CHILD"
                  }
                  }
                  Et si je remplace "JSON.decode" qu'utilisait le code avec Mootools par JSON.parse de jQuery, j'ai cette erreur :
                  unexpected character at line 1 column 1 of the JSON data
                  Autre chose ! si je supprime un var_dump je ne sais plus où pour le moment, "response" revient vide...
                  "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


                  • Après moult recherches et essais avec Chrome à la place de Firefox, j'ai réussi à savoir que l'url appelée dans le JS génère une erreur (0 Call to a member function getError() on null), au niveau de la ligne "$items =" de "views/jt_import_gedcom/view.raw.php", si j'en crois le débogage
                    public function display($tpl = null)
                    {
                    $items = $this->get( 'Gedcom' );
                    Juste pour compléter, je n'ai pas d'erreur en version 3.9.0dev et PHP 7.2 (la version 4.0dev tourne aussi en 7.2)
                    Dernière édition par RobertG à 16/12/2017, 18h25
                    "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


                    • de ce que je comprends,
                      Code:
                      $items = $this->get( 'Gedcom' );
                      appelle la fonction getGedcom dans \administrator\components\com_joaktree\models\jt_i mport_gedcom.php.

                      Commentaire


                      • Une question.

                        On trouve dans ce fichier (jt_import_gedcom.php)

                        Code:
                        $query = $this->_db->getQuery(true);
                        et
                        Code:
                        $this->_db->setQuery( $query );
                        et dans les composants natif joomla4 (BanerModel.php par exemple)

                        Code:
                        $query = $db->getQuery(true)
                        et
                        Code:
                        $db->setQuery($query);
                        Es ce la même chose ?

                        Commentaire


                        • C'est à la fois la même chose et pas... J'aurais du mal à t'expliquer, $this ne pouvant pas être utilisé en toutes circonstances.
                          "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


                          • Pour l'instant, le JS ne semble plus poser de problème puisque ce cosole.log affiche bien "réponse" dans cette fonction, mais le contenu de "response" est vide" :
                            function HandleResponseGedcom(type, response) {

                            console.log(response + ' réponse');
                            Donc soit c'est vraiment vide, soit j'ai laissé un "return" quelque part... Je suis près de craquer !
                            "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


                            • Je ne te suis plus là.

                              Code:
                              soit j'ai laissé un "return" quelque part
                              Pourquoi ? tu en as supprimé ?

                              Commentaire


                              • Pour essayer de savoir où ça passe et où ça ne passe plus, j'avais ajouté des "return;" qui me permettaient de faire afficher des infos avec "var_dump", avec le risque de laisser continuer le code sans avoir récupéré les données. Mais en supprimant tous ces points d'arrêt, je n'ai plus du tout de passage dans le JS (aucun "alert" ou "console.log" ne s'affiche) et ça reste sur la page de chargement comme avant que je cherche où ça pouvait coincer
                                "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

                                Annonce

                                Réduire
                                Aucune annonce pour le moment.

                                Partenaire de l'association

                                Réduire

                                Hébergeur Web PlanetHoster
                                Travaille ...
                                X