Migrationd'un module vers j4

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

  • [Problème] Migrationd'un module vers j4

    hello j'aurais besoins d'aide pour adapter mon module d'administration pour j4, j'avance doucement en essayant de comprendre les name space ...
    mais je galere
    dans ma fonction j'ai
    Code PHP:
    public static function getIconFromPlugins(Registry $paramsCMSApplication $application null)
        {
            
    $key     = (string) $params;
            
    $context = (string) $params->get('context''mod_quickicon');
            
    PluginHelper::importPlugin('quickicon');
                
    $arrays = (array) $application->triggerEvent(
                    
    'onGetIcons',
                    new 
    QuickIconsEvent('onGetIcons', ['context' => $context])
                );
                foreach (
    $arrays as $response)
                {
                    if (!
    \is_array($response))
                    {
                        continue;
                    }
                    foreach (
    $response as $icon)
                    {
                        
    $default = array(
                            
    'link'    => null,
                            
    'image'   => null,
                            
    'text'    => null,
                            
    'name'    => null,
                            
    'linkadd' => null,
                            
    'access'  => true,
                            
    'class'   => null,
                            
    'group'   => 'MOD_QUICKICON',
                        );
                        
    $icon array_merge($default$icon);
                        if (!
    \is_null($icon['link']) && !\is_null($icon['text']))
                        {
                            
    self::$buttons[$key][] = $icon;
                        }
                    }
                }
            return 
    self::$buttons[$key];
        } 
    dans module
    Code PHP:
    $systme_buttons   modDashboardHelper::getIconFromPlugins($params); 
    et dans le template j'ai
    Code PHP:
    <?php foreach ($systme_buttons as $sys_buttons) :?>
                <?php //echo '<pre>' ,print_r($sys_buttons),'</pre>';?>
                <?php foreach ($sys_buttons as $sys_button) :?>
                <li id="<?php echo $sys_button['id']; ?>" class="list-group-item">
                    <a href="<?php echo $sys_button['link']; ?>">
                        <span class="<?php echo $sys_button['icon_class']; ?>" aria-hidden="true"></span> <span
                            class="j-links-link"><?php echo $sys_button['text']; ?></span>
                    </a>
                    <span class="divider">|</span>
                </li>
                <?php endforeach; ?>
    j'ai essayer de m'inspiré du module quick icon de la j4 mais pense manquer des subtilités
    et les erreurs
    Code PHP:
     Call to a member function triggerEvent() on null                             Call stack                               #             Function             Location                               1             ()             JROOT\administrator\modules\mod_dashboard\helper.p hp:148                               2             modDashboardHelper::getIconFromPlugins()             JROOT\administrator\modules\mod_dashboard\mod_dash board.php:31                               3             include()             JROOT\libraries\src\Dispatcher\ModuleDispatcher.ph p:54                               4             Joomla\CMS\Dispatcher\ModuleDispatcher::Joomla\CMS \Dispatcher\{closure}()             JROOT\libraries\src\Dispatcher\ModuleDispatcher.ph p:57                               5             Joomla\CMS\Dispatcher\ModuleDispatcher->dispatch()             JROOT\libraries\src\Helper\ModuleHelper.php:293                               6             Joomla\CMS\Helper\ModuleHelper::renderRawModule()             JROOT\libraries\src\Helper\ModuleHelper.php:166                               7             Joomla\CMS\Helper\ModuleHelper::renderModule()             JROOT\administrator\components\com_cpanel\tmpl\cpa nel\default.php:62                               8             include()             JROOT\libraries\src\MVC\View\HtmlView.php:428                               9             Joomla\CMS\MVC\View\HtmlView->loadTemplate()             JROOT\libraries\src\MVC\View\HtmlView.php:218                               10             Joomla\CMS\MVC\View\HtmlView->display()             JROOT\administrator\components\com_cpanel\src\View \Cpanel\HtmlView.php:155                               11             Joomla\Component\Cpanel\Administrator\View\Cpanel\ HtmlView->display()             JROOT\libraries\src\MVC\Controller\BaseController. php:691                               12             Joomla\CMS\MVC\Controller\BaseController->display()             JROOT\administrator\components\com_cpanel\src\Cont roller\DisplayController.php:54                               13             Joomla\Component\Cpanel\Administrator\Controller\D isplayController->display()             JROOT\libraries\src\MVC\Controller\BaseController. php:729                               14             Joomla\CMS\MVC\Controller\BaseController->execute()             JROOT\libraries\src\Dispatcher\ComponentDispatcher .php:146                               15             Joomla\CMS\Dispatcher\ComponentDispatcher->dispatch()             JROOT\libraries\src\Component\ComponentHelper.php: 389                               16             Joomla\CMS\Component\ComponentHelper::renderCompon ent()             JROOT\libraries\src\Application\AdministratorAppli cation.php:136                               17             Joomla\CMS\Application\AdministratorApplication->dispatch()             JROOT\libraries\src\Application\AdministratorAppli cation.php:179                               18             Joomla\CMS\Application\AdministratorApplication->doExecute()             JROOT\libraries\src\Application\CMSApplication.php :231                               19             Joomla\CMS\Application\CMSApplication->execute()             JROOT\administrator\includes\app.php:63                               20             require_once()             JROOT\administrator\index.php:36 
    des idées ?
    Merci
    Société : http://www.com3elles.com
    Bénévole : http://www.flexicontent.org

  • #2
    Bonjour Yves,

    $application dans l'appel de ta fonction est vide.

    Essaie d'ajouter Factory::getApplication() soit dans ta fonction soit dans l'appel de la fonction :

    Code PHP:
    $systme_buttons   modDashboardHelper::getIconFromPlugins($params,Factory::getApplication()); 

    Pascal
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      Hello,

      Je plussoie sur la remarque de Pascal ...
      et je dirais meme : Pourquoi as-tu besoin de pousser le CMSapplication en parametre de ta fonction ?

      Si pas besoin, alors appelle ta fonction comme tu le fais deja :

      Code PHP:
      $systme_buttons   modDashboardHelper::getIconFromPlugins($params); 

      Puis modifie ta fonction dans le helper (ajoute les 2 lignes avec le commentaire //MODIF ) :
      Code PHP:
      <?php
      defined
      ('_JEXEC') or die;

      use 
      Joomla\CMS\Factory//MODIF : ajoute le use de la classe Factory

      ...

      public static function 
      getIconFromPlugins(Registry $params)
          {
              
      $key     = (string) $params;
              
      $context = (string) $params->get('context''mod_quickicon');
              
      $application Factory::getApplication(); //MODIF : recupere ton application courante
              
      PluginHelper::importPlugin('quickicon');
                  
      $arrays = (array) $application->triggerEvent(...
      ...
      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


      • #4
        ok je vais essayer d'avancer et pousser une pre-version sur github pour que vous voyez mieux le code
        Merci
        Société : http://www.com3elles.com
        Bénévole : http://www.flexicontent.org

        Commentaire


        • #5
          bon j'avance doucement, pour les quick icones j'ai plus d'erreur mais pas de contenu je vais avancé ....
          Par contre les repetable field vont disparaitre pour les subfield mais la migration ne semble pas ce faire ...
          vous avez des retours ?
          Société : http://www.com3elles.com
          Bénévole : http://www.flexicontent.org

          Commentaire


          • #6
            salut y.berges
            J'ai justement vu passer un tweet au sujet de la migration custom fields => subfields, où il y a un bug et on on demandait des testeurs...
            Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

            Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

            Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

            Commentaire


            • #7
              Envoyé par woluweb Voir le message
              salut y.berges
              J'ai justement vu passer un tweet au sujet de la migration custom fields => subfields, où il y a un bug et on on demandait des testeurs...
              tu parles de [j4] repetable / subfield migration and ux problem : https://github.com/joomla/joomla-cms/issues/30614
              ou [4.0] Repeatable Custom field : https://github.com/joomla/joomla-cms/issues/30556 ?

              Il semble qu'il y ait effectivement un problème sur l''outil de migration : [4.0] Repeatable Custom field : https://github.com/joomla/joomla-cms/pull/28319
              Dernière édition par pmleconte à 11/09/2020, 15h40
              woluweb aime ceci.
              If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

              Commentaire


              • #8
                yes ca va etre sympa a migré !!!
                Société : http://www.com3elles.com
                Bénévole : http://www.flexicontent.org

                Commentaire


                • #9
                  Bon j'avance j'avance .... maintenant je me retrouve un soucis de jquery ...
                  Code:
                  $iconlist = ' <button id="'. $this->id .'-wrapper" class="btn btn-secondary"/></button>';
                                         $iconlist .="
                                         <script>
                                         (function ($) {
                                         $('#". $this->id ."-wrapper').iconpicker({
                                         align: 'left',
                                         arrowClass: 'btn-success',
                                         arrowPrevIconClass: 'fa fa-arrow-left',
                                         arrowNextIconClass: 'fa fa-arrow-right',
                                         cols: 5,
                                         rows:5,
                                         footer: true,
                                         header: true,
                                         iconset: 'fontawesome',
                                         labelHeader: '" . JText::sprintf( 'MOD_DASHBOARD_ICONLINK_PAGESINDEX', '{0}', '{1}' ) . "',
                                         labelFooter: '" . JText::sprintf( 'MOD_DASHBOARD_ICONLINK_ICONSINDEX', '{0}', '{1}', '{2}' ) . "',
                                         placement: 'bottom',
                                         search: true,
                                         searchText: '". JText::_('MOD_DASHBOARD_ICONLINK_SEARCHTEXT') . "',
                                         selectedClass: 'btn-primary',
                                         unselectedClass: 'btn-default',
                                         iconClass: 'fontawesome',
                                         iconClassFix: 'fa fa-',
                                         icon:'" . $this->value . "'
                                         });
                                         var myfield = $('#" . $this->id . "-wrapper'),
                                         input = $('input', myfield);
                                         input.attr({'id': '" . $this->id . "', 'name': '" . $this->name . "'});
                                         input.val('" . $this->value . "');
                                         })(jQuery);
                                         </script>
                                        <script>
                                        (function ($) {
                                        $(document).on('subform-row-add', function(event, row){
                                                        $(row).prev().find('button.hasPicker').iconpicker( );
                                                        $(row).find('button.hasPicker').iconpicker();
                                            })
                                        })(jQuery);
                                        </script>
                                         ";
                  Me renvoi
                  Code:
                  Uncaught ReferenceError: jQuery is not defined
                  alors qu'en j3 ca roule ....
                  je n'arrive pas a savoir si jquery a etais enlever de l'admin ou pas ... moi je vois des ref dans le code ...
                  Merci pour vos retours
                  Société : http://www.com3elles.com
                  Bénévole : http://www.flexicontent.org

                  Commentaire


                  • #10
                    Bonjour Yves,

                    On avait remarqué il y a quelques temps l'absence du chargement de jQuery dans Joomla 4 : https://forum.joomla.fr/forum/joomla...se-charge-plus

                    Ton message arrive car tu appelles jQuery sans être sûr s'il a été chargé précédemment.

                    Essaie d'ajouter une commande JHTML::_('jquery.framework'); pour forcer le chargement avant la création de ton script.

                    Pascal
                    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

                    Commentaire


                    • #11
                      hello moi c'est yannick lol
                      je l'ai mis meme message d'erreur
                      Société : http://www.com3elles.com
                      Bénévole : http://www.flexicontent.org

                      Commentaire


                      • #12
                        Envoyé par y.berges Voir le message
                        hello moi c'est yannick lol
                        Je sais, mais, les doigts tapent trop vite ....en plus, je suis sur un problème avec un client flexicontent et ton nom/prénom y apparaissent...
                        Dernière édition par pmleconte à 17/09/2020, 14h32
                        If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

                        Commentaire


                        • #13
                          tu n'hésites pas si tu as des questions flexi c'est avec plaisir
                          Société : http://www.com3elles.com
                          Bénévole : http://www.flexicontent.org

                          Commentaire


                          • #14
                            Oh passage qqun a compris la différence entre les repetable de j3 et les subform de j4 garstud pmleconte
                            La v2 du module d'admin compatble avec j4 est en place ici
                            Module Dashboard features Joomla admin module is a lighter and flexible module admin for Joomla!. No need component or big framwork. All is in module, with font-icon. You can display it in cpanel p...

                            pour ceux qui peuvent aider ... ?
                            il me reste a refaire mon iconpicker (un champ joomla qui permet de choisir un icon font avec moteur de recherche) et remettre les quickicon ...
                            sinon tout le reste fonctionne
                            Société : http://www.com3elles.com
                            Bénévole : http://www.flexicontent.org

                            Commentaire


                            • #15
                              je pense que ton souci vient du fait que jQuery est maintenant chargé en fin de page. Il faut que ton script soit chargé APRES jQuery, donc en fin de page. Vérifie ce point
                              Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
                              http://www.template-creator.com Outil de création de templates
                              Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X