Appel aux classes Joomla! 4

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

  • Code:
    appelle la fonction getGedcom dans \administrator\components\com_joaktree\models\jt_i mport_gedcom.php.
    J'ai l'impréssion que c'est cette fonction qui bloque.

    Code:
    public function getGedcom() {
            $canDo    = JoaktreeHelper::getActions();
            $procObject = $this->getProcessObject();
    
            if (($canDo->get('core.create')) && ($canDo->get('core.edit'))) {    
    
                switch ($procObject->status) {
                    case 'new':
                        $procObject->start = strftime('%H:%M:%S');
                        $procObject->msg = JText::sprintf('JTPROCESS_START_MSG', $procObject->id);
    devrait afficher l'heure de debut du traitement et le message de la boite de dialogue

    Cliquez sur l'image pour l'afficher en taille normale

Nom : 1.PNG 
Affichages : 255 
Taille : 98,7 Ko 
ID : 1972090

    Commentaire


    • Bonsoir,
      Pour les convertions en jQuery, n'utilisé que le $ si vous êtes dans une fonction anonyme, sinon il faut utiliser jQuery
      Tu as un exemple ici http://sametmax.com/la-fonction-anon...ript-function/ pour isoler les valeur et inclure le $.
      Pour l'ajax le $.get est plus simple que le $.ajax mais la structure est différente.
      Mais idéalement, il faudrait ajouter un namespace pour ton composant en javascript. par exemple pour mon composant com_vmbepro, j'utilise un namespace vmbepro, com_virtuemart utilise virtuemart, mais bon cela exige pas mal de modif dans ton code javascript.
      http://www.st42.fr : Astuce et téléchargement d’extension Joomla! et virtuemart
      http://shop.st42.fr Catalogue extentions gratuit et Pro pour Virtuemart et Joomla

      Commentaire


      • Merci de ces conseils !
        Le problème est que le code est celui de Niels van Dantzig et qu'il m'est très difficile de suivre le cheminement pour trouver où on est éjecté sans message.
        Avec des points d'arrêt (de simples break ou return), j'ai bien mes messages alert ou console.log dans importGedcom du JS, avec des données vides arrivant dans la fonction JS de traitement HandleResponseGedcom, vides peut-être à cause de ces arrêts, mais dès que je désactive ces points je n'ai plus rien dans la console, comme si quelque chose vidait tout, et je ne sais donc pas si les données parviennent aux fonctions JS.
        Je voulais utiliser JDump, pour avoir peut-être plus d'infos malgré le blocage d'affichage mais il n'est pas encore compatible J! 4 (comme il a été mis à jour il y a un mois environ, j'espérais...) et je n'ai pas regardé ce qui serait à modifier dans son code.

        Pour revenir au code cité par starter866, si je place un arrêt juste après ce code, pour voir ce que renvoie $procObject->status, j'ai bien "new", et l'affichage devrait se faire mais ne se fait pas, ce qui veut dire qu'il y a éjection peu après. Mais où ?
        "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, j'ai mis en pause l'adaptation de Jokatree et essayé de rendre JDump 1.2.22 compatible avec la version 4 et PHP 7.2 (des tas de JRequest à changer).
          Apparemment, plus d'erreur ni sur le plugin n sur le composant, sauf un warning sur ce "count" : "Warning: count(): Parameter must be an array or an object that implements Countable in /home/www/sitestests/test4/plugins/system/dump/dump.php on line 45"
          La ligne en cause est la dernière :
          Code:
              function onAfterRender() {
                 $mainframe = JFactory::getApplication(); //$option = JRequest::getCmd('option');
                 $option = JFactory::getApplication()->input->get('option');
          
                  if($option == 'com_dump'){
                      return;
                  }
          
                  // settings from config.xml
                  $dumpConfig = JComponentHelper::getParams( 'com_dump' );
                  $autopopup  = $dumpConfig->get( 'autopopup', 1 );
          
                  $userstate = $mainframe->getUserState( 'dump.nodes' );
                  $cnt_dumps  = count( $userstate );
          Je ne comprends pas pourquoi apparaît ce warning.
          "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


          • Commentaire


            • Merci, mais en fait, quand on ouvre le plugin pour le paramétrer (simplement l'activer), "$userstate " revient null, d'où l'erreur. En gérant cela, plus de warning.
              Il faudra que je voie ensuite à l'usage.
              Et surtout, j'espère que ça me permettra d'avoir un suivi de l'avancement du code.
              "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


              • En tentant d'importer un gedcom, la console m'indique
                Code:
                [LEFT][FONT="Consolas"]HTTP500: ERREUR DE SERVEUR. Le serveur ne peut pas exécuter la requête, car il a rencontré une condition inattendue. (XHR)GET - administrator/index.php?option=com_joaktree&view=jt_import_gedcom&format=raw&tmpl=component[/FONT][/LEFT]
                et si j'appelle dans le navigateur
                administrator/index.php?option=com_joaktree&view=jt_import_gedco m&format=raw&tmpl=component

                J'obtiens
                Code:
                [LEFT][FONT=Arial]0 Call to undefined method Joomla\Database\Mysqli\MysqliDriver::query()[/FONT][/LEFT]
                Code:
                [LEFT][FONT="Consolas"][SIZE=12px][/SIZE][/FONT][/LEFT]

                Commentaire


                • Après une longue pause, je reviens sur mes tests qui plantent au niveau du JavaScript, et je ne trouve pas de solution.
                  Dans le fichier d'import l'appel est correct :
                  Code:
                  jQuery(document).ready(function(){
                      console.log("DOM est ready pour exec du JS (views/jt_import_gedcom/tmpl/default)");
                      try {importGedcom();}
                      catch (err) {
                          console.log('An error occured while importGedcom');
                      }
                      console.log("traitement terminé (views/jt_import_gedcom/tmpl/default)");
                  });
                  Dans le JS, j'ai
                  Code:
                  function importGedcom() {
                              console.log('function importGedCom');
                  
                      $.ajax({
                          url: 'index.php?option=com_joaktree&view=jt_import_gedcom&format=raw&tmpl=component',
                          type: 'get',
                          fail: function(xhr) {
                              alert('Error occured for url: ' + url);
                          },
                          success: function(response) {
                                  console.log('data : ' + response);
                                  HandleResponseGedcom('import', response);
                                  console.log('suite import');                
                          }
                      });
                  }
                  Quand je lance l'import, j'ai immédiatement
                  DOM est ready pour exec du JS (views/jt_import_gedcom/tmpl/default)
                  function importGedCom
                  traitement terminé (views/jt_import_gedcom/tmpl/default)
                  Donc on passe bien dans la fonction jQuery, mais elle n'intercepte pas d'erreur. Le plantage survient donc dans la partie $.ajax où on ne passe ni dans fail, ni dans success, et je ne trouve pas où se produit l'erreur.

                  Si j'appelle "index.php?option=com_joaktree&view=jt_import_ gedc om&format=raw&tmpl=component", j'ai cette réponse dont j'imagine (à tort ou à raison) que c'est faute de données qu'elle apparaît :
                  0 Call to a member function getError() on null
                  A moins que ce soit le fichier d'import qui ne transmette rien à la fonction JS. Pourtant, il me semble que j'avais testé cette récupération des infos dans le fichier GedCom...

                  J'oubliais : j'ai vidé les logs d'accès et d'erreur sur le serveur, puis tenté un nouvel import, mais le serveur n'écrit rien dans ces fichiers à ce moment !
                  Dernière édition par RobertG à 18/02/2018, 16h59
                  "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


                  • Bonjour RoberG

                    Si j'appelle "index.php?option=com_joaktree&view=jt_import_ gedc om&format=raw&tmpl=component", j'ai cette réponse dont j'imagine (à tort ou à raison) que c'est faute de données qu'elle apparaît :

                    0 Call to a member function getError() on null


                    Dans la console de firefox:

                    TypeError: i.src.match(...) is null
                    [En savoir plus]
                    core.min.js:1:9337
                    Dans celle d'IE:
                    SCRIPT5007: SCRIPT5007:
                    Unable to get property '0' of undefined or null reference
                    core.min.js (1,9335)

                    Commentaire


                    • Bonjour, hello,

                      I'm sorry that I cannot write you in French. I am looking for a solution for the Joaktree extension. I understood that the original developer stopped the development some time ago but that RobertG resumed the development. Is this correct and is it possible to obtain a version of Joaktree that runs on php 7.2 (or 7.1) and Joomla 3.9 (and hopefully J.4 in the future)?

                      Kind regard,

                      Frits Jongbloets
                      (yes, another Joomler called Frits from the Netherlands)

                      Commentaire


                      • Hello Frits,
                        You actually can download that version here https://www.joomxtensions.com/images...r_20180410.zip
                        It works on 3.8 and 3.9, probably also 3.10 versions of Joomla!, and PHP 7.2.
                        But It can’t no more geocode locations with Google (it could not with OpenStreetmap for a while), because I think Google changed recently the address for geocoding and transform locations to latitude and longitude. I didn’t find how to solve this problem.
                        Joaktree doesn’t work with Joomla! 4 alpha because a JavaScript to import from a GedCom file or export data fails now.
                        So actually you can import your GedCom in Joomla! 3 but not geocode the locations and not use maps, and I think Joaktree will never work on Joomla! 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


                        • Hi RobertG, bonjour,

                          Thanks for your help. I've downloaded the extension and installed it on a develop copy of the site that runs on php 7. It seems to work fine, yet I've asked the owner of the site to take a closer look at it before we put it on the live site (I have a web development agency and this is the site of a customer).

                          As far as I know we do not use Google maps so that won't be a problem. I heard that Google have been changing their api recently but I'm afraid that I cannot help you to solve any issues.

                          And as for Joomla 4, well, we'll see. I think we are lucky to have it running on php 7.


                          Kind regards, Frits




                          Commentaire


                          • Bonjour,

                            Je déterre ce sujet à propos des antislash dans le code.

                            Sans arriver au bout pour le moment, probable problème avec JS que je ne maîtrise pas, je me suis essayé à mettre à niveau le code d'une grosse extension vers J5 (plugin de compatibilité désactivé), donc en utilisant systématiquement Factory à la place de JFactory, Text à la place de JText, etc. et parfois, il me fallait enlever l'antislash pour faire disparaître une erreur,
                            D'ailleurs, dans le code d'origine, on retrouve parfois \JFactory, parfois JFactory, idem pour les autres classes, l'antislash n'est pas systématique...

                            En revanche, j'ai remarqué que l'extension avait sa propre classe Form où celle de Joomla était appelée par \JForm. La seule méthode qui a pu supprimer une erreur sur ce fichier a été d'une part d'appeler la classe Joomla Form sans antislash et d'autre part de renommer celle de l'extension.

                            Il faudra que j'essaie avec une extension moins importante, car pour le moment, je n'arrive pas à comprendre pourquoi j'ai parfois été contraint de supprimer ces antislash, avant de le faire systématiquement.
                            "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