Appel aux classes Joomla! 4

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

  • #46
    C'est très curieux !
    Je suis passé aux tests sous PHP 7.1 et le comportement est le même que sous 7.0 : installation et création des tables sans problème.
    Par contre, à la désinstallation, si je renvoie en fin de fonction un "return true" ou un "return false", voire pas de return" du tout, tout est bien désinstallé (sauf les 5 tables préservée, mais aussi cette table "citations" qui résiste), mais la référence au composant dans la gestion des extensions reste présente. Si par contre je renvoie "return $retval', j'ai une erreur affichée "undefined variable" mais l'entrée dans la table des extensions est bien supprimée !

    J'ai hâte qu'Akeeba backup ait une version compatible 4, pour éviter un gros crash... et la toute dernière version de JDump n'est pas encore compatible 4.0 (jusqu'à prsent, comme je l'ai dit plus haut var_dump (ou print_r) ne m'ont strictement rien affiché lorsque j'avais de grosses erreurs.
    "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


    • #47
      Après plusieurs essais, effectivement, il reste les 5 tables définies dans le joaktree.script.php

      Code:
      // Do not drop tables, because they contain user settings
      // $update_queries[] = 'DROP TABLE IF EXISTS #__joaktree_admin_persons ';
      // $update_queries[] = 'DROP TABLE IF EXISTS #__joaktree_applications ';
      // $update_queries[] = 'DROP TABLE IF EXISTS #__joaktree_display_settings ';
      // $update_queries[] = 'DROP TABLE IF EXISTS #__joaktree_themes ';
      // $update_queries[] = 'DROP TABLE IF EXISTS #__joaktree_trees ';
      La table citations a étét bien effacée à chaque test.

      Dans la table extensions de joomla, le composant est bien supprimé ainsi que dans la table menu de joomla.

      Par contre en cas de réinstallation du composant (sans supprimer les tables restées manuellement) les fichiers sont bien installé mais pas les tables.

      D'ou ma question.

      Le fait que le script d'écriture des tables commence par

      Code:
      // Table joaktree_admin_persons
                  $update_queries[] =
                      'CREATE TABLE IF NOT EXISTS '
                     .'#__joaktree_admin_persons '
      et que cette table existe (puisque non supprimer lors de la désinstallation),

      ce peut il que cela bloque ici ?

      N'y aurait il pas une commande pour dire au script de passer à la suivant et ainsi de suite ?

      Commentaire


      • #48
        Dans la mesure où c'est avec la mention "IF NOT EXISTS", il n'y a pas de raison pour que les tables n'existant pas ne soient pas créées lorsque celle-ci est présente, et pourtant en effet, il y a un blocage quelque part lors d'une réinstallation. La table citations est créée, puis plus rien.

        Pour la table citations, j'ai été obligé de doubler sa ligne de suppression pour que ça fonctionne. Pourquoi ? mystère !

        En supprimant manuellement la table displays_settings, la réinstallation semble bien réinstaller toutes les tables, sauf la dernière, tree_persons : problème de version 4.0 ?
        Il faut que j'essaie l'installation/désinstallation de cette version de Joaktree sur une 3.8 ou une 3.9 pour voir, ne m'étant jamais essayé à cette procédure, mais seulement à l'installation et utilisation.
        "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


        • #49
          Ce que je veux dire, c'est que j'ai l'impression que comme certaines table existent, le script s'arréte.

          Commentaire


          • #50
            Tu as raison, à moitié seulement.
            En testant la désinstallation-réinstallation sur une 3.9 j'ai une erreur de duplicate entry sur la première ligne de la table display_settings :
            $update_queries[] = 'INSERT INTO #__joaktree_display_settings (code, level, ordering, published, access, accessLiving, altLiving ) VALUES ("ENGA", "relation", 1, 1, 1, 3, 0)';
            Cette erreur n'est pas signalée par la 4.0
            Pour gérer la réinstallation si ces tables sont conservées après désinstallation, il ne faut pas utiliser de "INSER INTO" tel quel mais peut-être passer par "INSERT IGNORE INTO". A tester... (ça fonctionne sur une version 3.9)
            Dernière édition par RobertG à 22/11/2017, 11h47
            "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


            • #51
              C'est bon ça fonctionne, aussi bien sur une première installation, ou après désinstallation

              Commentaire


              • #52
                Le plus facile est fait !
                "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


                • #53
                  Concernant les boutons "enregistrer" et " enregistrer et fermer" inopérant et en comparant (dans com_banners) le fichier view.html.php (J3) et HtmlView.php (J4) il y a pas mal de changement),

                  Commentaire


                  • #54
                    exemple:

                    Joomla3

                    Code:
                    defined('_JEXEC') or die;
                    JLoader::register('BannersHelper', JPATH_ADMINISTRATOR . '/components/com_banners/helpers/banners.php');
                    Code:
                    if (count($errors = $this->get('Errors')))
                            {
                                throw new Exception(implode("\n", $errors), 500);
                            }
                    joomla4

                    Code:
                    namespace Joomla\Component\Banners\Administrator\View\Banner;
                    use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
                    defined('_JEXEC') or die;
                    Code:
                    if (count($errors = $this->get('Errors')))
                            {
                                throw new \JViewGenericdataexception(implode("\n", $errors), 500);
                            }

                    Commentaire


                    • #55
                      Ce qui est pénible, c'est de ne pas avoir d'instructions sur par quoi remplacer ce qui est devenu obsolète et/ou qui doit être modifié.
                      Par exemple, pour les boutons, si je comprends bien, "annuler" est directement géré par Joomla! en utilisant 'application.cancel' et les boutons d'enregistrement et de sauvegarde par l'application, mais que j'utilise 'apply' et 'save' seuls ou précédés de application, component ou joaktree, ils restent inactifs.
                      si quelqu'un peut m'éclairer, je l'en remercie par avance.
                      "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


                      • #56
                        Joomla! Project Roadmap: what you need to know about the development of the CMS and the Framework.


                        Commentaire


                        • #57
                          J'ai déjà vu ces pages, mais pas trouvé quoi faire pour que les boutons d'enregistrement fonctionnent.
                          "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


                          • #58
                            J'ai beau tourner virer et me référer à d'autres composants, rien à faire, les boutons de sauvegarde sont toujours sans effet. Un "var_dump" dans la fonction "edit" du fichier "controllers/jt_applications.php" me dit bien que j'y passe lorsque j'ouvre le formulaire de création d'une nouvelle source GedCom, mais les boutons de validation ne renvoient manifestement pas à la fonction "save" du même fichier...
                            L'annulation fonctionne, pas l'enregistrement :
                            Code PHP:
                                        ToolBarHelper::title($isNew JText::_('JTAPPS_TITLE_NEW') : JText::_('JTAPPS_TITLE_EDIT'), 'application');
                                        
                            ToolbarHelper::saveGroup(
                                            [
                                                [
                            'apply''apply'],
                                                [
                            'save''save']
                                            ],
                                            
                            'btn-success'
                                        
                            );
                                        
                            ToolbarHelper::divider();
                                        
                            ToolbarHelper::cancel('application.cancel');
                                        
                            ToolbarHelper::divider(); 
                            "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


                            • #59
                              J'ai aussi essayé cela en récupérant les lignes de codes dans les composants banners ou contact.
                              Mais rien obtenu.

                              C'est les seul boutons qui ne fonctionnent pas dans les vues joaktree 'nouveau gedcom' ou 'nouveau arbre' ou 'nouveau theme'.

                              Commentaire


                              • #60
                                Quand je clique sur enregistrer, dans la console d'erreur de firefox, j'ai

                                Code:
                                TypeError: document.id is not a function[En savoir plus]index.php:322:64
                                et si je clique sur

                                Code:
                                index.php:322:64
                                J'ai

                                Code:
                                <script type="text/javascript">
                                    Joomla.submitbutton = function(task)
                                    {
                                        if (task == 'theme.cancel' || document.formvalidator.isValid(document.id('theme-form'))) {
                                            Joomla.submitform(task, document.getElementById('theme-form'));
                                        } else {
                                            alert('Formulaire invalide');
                                        }
                                    }
                                </script>

                                Commentaire

                                Annonce

                                Réduire
                                Aucune annonce pour le moment.

                                Partenaire de l'association

                                Réduire

                                Hébergeur Web PlanetHoster
                                Travaille ...
                                X