Appel aux classes Joomla! 4

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

  • #76
    Ce que j'ai trouvé ce matin

    Code:
    Apparently store() inserts a row [I]only[/I] if the primary key is not set (e.g parent_id is NULL).
    tu dis:

    Code:
    En mettant une valeur 0 par défaut à ce champ dans la structure de la table #__joaktree_applications,
    Dans quel fichier se fait cette modification ?
    Dernière édition par starter866 à 27/11/2017, 12h58

    Commentaire


    • #77
      Dans la structure de la table #__joaktree_applications champ "asset_id"
      "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


      • #78
        Ok. Ne doit on pas auusi modifier en conséquence le fichier oaktree.script.php ?

        Code:
        // Table joaktree_applications
                    $update_queries[] =
                        'CREATE TABLE IF NOT EXISTS '
                       .'#__joaktree_applications '
                       .'( id               tinyint(4)  unsigned  NOT NULL auto_increment '
                       .', asset_id         int(10)      unsigned NOT NULL '

        Commentaire


        • #79
          Oui, mais ce n'est utile que pour une installation neuve (il faudra voir comment gérer la modification lors d'une mise à jour), et il y aura peut-être d'autres changements à faire a niveau de la structure des tables.
          .', asset_id int(10) unsigned NOT NULL default 0'
          "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


          • #80
            Hier, j'ai vainement cherché où est récupéré le "return $this->_data" de la fonction getData du fichier jt_import_gedcom.php !
            Si j'ai bien compris, ces "data" étant les caractéristiques de la source (dont noms du dossier et du fichier GedCom à importer) doivent être décodés par une fonction en vue de l'import, mais on ne passe jamais par la fonction getGedcom du même fichier jt_import_gedcom.php ni celle de models/jt_applications.php !
            Impossible donc pour l'instant de savoir où le code tourne en boucle sans rien importer et sans générer d'erreur.
            "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


            • #81
              Toujours bloqué sur l'import, j'ai testé ça (ajout des enqueueMessage) dans la partie script de "views/jt_import_gedcom/tmpl/default.php"
              <script>
              window.addEventListener('domready', function() {
              <?php JFactory::getApplication()->enqueueMessage("import gedcom js"); ?>
              importGedcom();
              <?php JFactory::getApplication()->enqueueMessage("fin import gedcom js"); ?>
              });
              </script>
              et j'ai bien dans le pop-up de message
              import gedcom js
              fin import gedcom js
              Donc l'appel du script aboutit, si je ne me trompe.
              Sauf que je ne sais pas où est ce script (renommer "assets/js/joaktree_admin.js" ou la "function importgedCom" qui s'y trouve ne change strictement rien) ou la fonction qui en tient lieu dans un autre fichier...
              "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


              • #82
                Rien n'y fait, même en modifiant le code comme tu dis, rien, même pas les messages.

                Commentaire


                • #83
                  Bonsoir,
                  Attention Robert, tu jongles dangereusement la

                  Petite explication sur le monde barbare du développement Web :
                  On parle de site web en PHP, HTML et JS. Le code PHP est interprété par le serveur pour générer un code HTML/JS qui sera transmis au navigateur .... et la, seulement la, le navigateur interprétera le code HTML ... et le code JS ... si il est correctement appelé dans l'HTML !

                  J’espère que je ne suis pas trop confus. C'est important de bien avoir ce process toujours à l'esprit car avec Joomla, on est dans le cas d'un script PHP, qui génére du HTML, qui va permettre d’exécuter du Javascript .... Arghhhh le trio infernal !

                  Petit exemple pour imager : si tu poses le script JS ci-dessous dans un fichier TMPL PHP, de ton compo, ben vous aurez bien les messages PHP, mais pas la popup JS ! (sic)

                  Code:
                  <script>
                  function willNeverBeCalled() {
                      <?php JFactory::getApplication()->enqueueMessage("msg affiché par PHP, pas par cette fonction JS"); ?>
                      alert("popup jamais appelée");
                      <?php JFactory::getApplication()->enqueueMessage("msg2 affiché par PHP, pas par cette fonction JS"); ?>
                  });
                  </script>
                  P.S. en espérant que cette explication vous évitera d'aller vous pendre ou de jeter l'ordi par la fenêtre
                  Garstud Workshop - Concepteur, Développeur et Formateur Joomla - http://www.garstud.com
                  « Ce n’est pas parce que les choses sont difficiles que nous n’osons pas,
                  c’est parce que nous n’osons pas qu’elles sont difficiles. »
                  - Sénèque

                  Commentaire


                  • #84
                    Merci Marc !
                    Si je comprends bien, l'appel de PHP dans ce code "script" empêcherait le code JS d'être interprété ? ou que l'instruction PHP serai utilisée quoi qu'il en soit ?
                    Mais de toutes manières, ce code "enqueueMessage" n'était là que pour voir si ça passait par là, étant donné que je ne trouve pas la moindre trace de ce qui se passe après la récupération des données concernant la "source GedCom" afin d'y importer le contenu du fichier correspondant.
                    Mais en remplaçant ces "enqueueMessage" par des "alert" suite à tes remarques, je n'ai pas d'info, ce qui voudrait donc dire que cette partie de code est ignorée et que ce n'est pas la fonction JS d'importGedcom qui est en réalité appelée... et je suis actuellement totalement incapable de savoir à quelle fonction est renvoyé ce "return $_data" qui est la dernière info récupérée.
                    "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


                    • #85
                      Alors,en fait le code PHP ne bloque pas le JS, c'est juste que quand le serveur transforme le PHP en code HTML il traite les enqueueMsg pour préparer le code HTML qui affichera le message.
                      Les enqueueMsg c'est pratique pour afficher une info, mais cela fonctionne comme une file d'attente d'imprimante : tu en mets autant que tu veux dans ton code et ils vont etre affiché en haut de ta page, dans l'ordre d'appel, lors du prochain affichage de la page sur le navigateur.

                      Cela veut dire qu'utiliser un enqueueMsg pour pister du code JS ne sert a rien, car il ne sera pas executer a l'endroit ou tu l'as placé dans le code JS.
                      Par contre oui, les "alert(...)" ou les "console.log(...)", eux, sont bien executé a l'endroit ou tu les places dans le code JS ... car ce sont des instructions JS
                      Donc si tes alerts JS ne s'affichent pas, Ca veut dire que ce code JS n'est jamais appelé !
                      Garstud Workshop - Concepteur, Développeur et Formateur Joomla - http://www.garstud.com
                      « Ce n’est pas parce que les choses sont difficiles que nous n’osons pas,
                      c’est parce que nous n’osons pas qu’elles sont difficiles. »
                      - Sénèque

                      Commentaire


                      • #86
                        Concernant ton probleme d'appel JS, je pense qu'il y a juste un simple soucis sur l'appel de ta fonction.
                        Pour info avec Joomla, on a accès au framework JS "jQuery", il est simple et pratique, donc autant l'utiliser

                        Voici un code fonctionnel pour faire ce que tu veux en JS :

                        Code:
                        <script>
                        // window.addEventListener('domready', function() { ... remplacer cette ligne par :
                        [B]jQuery(document).ready(function(){[/B]
                            alert("Le chargement de ma page HTML est terminé dans le navigateur, jQuery me signale que le DOM est ready pour exec du JS");
                            console.log("je piste plus discretement mon code dans la console javascript de mon navigateur ;)");
                        });
                        </script>
                        Garstud Workshop - Concepteur, Développeur et Formateur Joomla - http://www.garstud.com
                        « Ce n’est pas parce que les choses sont difficiles que nous n’osons pas,
                        c’est parce que nous n’osons pas qu’elles sont difficiles. »
                        - Sénèque

                        Commentaire


                        • #87
                          Merci Marc !
                          Joaktree utilisait Mootools, ce qui m'a obligé à changer un certain nombre de lignes pour passer à Bootstrap.
                          Pour une des corrections (la création de la source GedCom que j'essaie maintenant d'utiliser pour y importer les données dans sa table), j'ai trouvé que c'était un fichier core de Joomla! qui traitait l'instruction, et je me demande si dans le problème actuel ce n'est pas pareil...
                          J'utilise en effet les enqueueMessage pour essayer de tracer l'ordre dans lequel est lu le code.

                          Ce qui est curieux, c'est que les fonctions "importGedcom" où on devrait passer ne sont pas utilisées, idem sur une version 3.9 alors que l'import y fonctionne correctement.
                          Moi qui ai été habitué pendant des années avec le développement Windows à pouvoir avancer dans le code ligne par ligne pour trouver les erreurs, je suis frustré avec PHP !

                          Pour revenir à ton conseil, si j'utilise :
                          <script>
                          // window.addEventListener('domready', function() { ... remplacer cette ligne par :
                          jQuery(document).ready(function(){
                          importGedcom();
                          alert("Le chargement de ma page HTML est terminé dans le navigateur, jQuery me signale que le DOM est ready pour exec du JS");
                          console.log("je piste plus discretement mon code dans la console javascript de mon navigateur ");
                          });
                          </script>
                          je n'ai pas de message d'alerte, mais si je mets
                          <script>
                          // window.addEventListener('domready', function() { ... remplacer cette ligne par :
                          jQuery(document).ready(function(){

                          alert("Le chargement de ma page HTML est terminé dans le navigateur, jQuery me signale que le DOM est ready pour exec du JS");
                          console.log("je piste plus discretement mon code dans la console javascript de mon navigateur ");
                          importGedcom();
                          });
                          </script>
                          j'ai bien le message avant l'affichage des infos de enqueueMessage, ce qui voudrait dire que la "function importGedcom()" qui est dans le fichier JS est ce qui plante.
                          "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


                          • #88
                            Code:
                            Sauf que je ne sais pas où est ce script (renommer "assets/js/joaktree_admin.js" ou la "function importgedCom" qui s'y trouve ne change strictement rien) ou la fonction qui en tient lieu dans un autre fichier...
                            Effectivement, ce fichier semble ignoré, puisqu'en le renommant, et en affichant les vues ou il est sensé être appelé n'engendre aucune erreur (importer ou exporter gedcom, etc)

                            Commentaire


                            • #89
                              Dans la console j'ai cette erreur:

                              Code:
                              TypeError: (new Request(...)).send is not a function
                              qui semble concerner ceci:

                              Code:
                              function importGedcom() {
                              
                                  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();
                              }

                              Commentaire


                              • #90
                                Ce qui veut dire qu'il faut réécrire ce fichier JS...
                                Dernière édition par RobertG à 02/12/2017, 09h33
                                "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