Appel aux classes Joomla! 4

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

  • RobertG
    a répondu
    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 !

    Laisser un commentaire:


  • RobertG
    a répondu
    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.

    Laisser un commentaire:


  • starter866
    a répondu
    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 ?

    Laisser un commentaire:


  • starter866
    a répondu
    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.

    Laisser un commentaire:


  • RobertG
    a répondu
    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

    Laisser un commentaire:


  • RobertG
    a répondu
    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...

    Laisser un commentaire:


  • RobertG
    a répondu
    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.

    Laisser un commentaire:


  • starter866
    a répondu
    J'ai mis ton code, mais je n'ai aucune erreur dans la console.

    Charge en boucle uniquement

    Laisser un commentaire:


  • RobertG
    a répondu
    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

    Laisser un commentaire:


  • starter866
    a répondu
    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 ?

    Laisser un commentaire:


  • RobertG
    a répondu
    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.

    Laisser un commentaire:


  • RobertG
    a répondu
    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 !

    Laisser un commentaire:


  • RobertG
    a répondu
    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

    Laisser un commentaire:


  • RobertG
    a répondu
    La console dit que send n'est pas une fonction, dans ce fichier : https://forum.joomla.fr/node/226682?...04#post1970904

    "HandleResponseGedcom" est la fonction js qui semble traiter le fichier, mais JavaScript et moi, on ne parle pas la même langue...
    Dernière édition par RobertG à 14/12/2017, 22h51

    Laisser un commentaire:


  • lefabdu51
    a répondu
    que dit l'onglet console de l inspecteur d éléments ?
    pour ton javascript, ce n est pas cette fonction qui coinces, sinon tu aurais comme message error for url : (message d erreur defini dans cette fonction).
    LA il parles d'un traitement impossible.
    Donc ce serait plus la fonction response qui serait en cause.
    La pour moi la recup est ok mais l import ko.
    PS : ca correspond a quoi ceci ?
    HandleResponseGedcom
    Dernière édition par lefabdu51 à 14/12/2017, 21h30

    Laisser un commentaire:

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X