Installation des views d'un plugin

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

  • [RÉGLÉ] Installation des views d'un plugin

    Bonsoir,
    j'ai créé un petit plugin qui permet d'afficher un bouton dans l'interface d'édition d'un article.
    Il affiche une boîte modale qui récupère des infos saisies par l'utilisateur et les insère dans le texte de l'article.
    Le plugin fonctionne très bien par contre je n'ai pas trouvé le moyen de mettre mes fichiers de views automatiquement à l'installation du plugin (dans administrator/components/com_content->views) et je suis contraint de les y mettre manuellement.
    J'ai essayer plusieurs méthodes à partir du XML sans résultats.
    Faut-il programmer en dur lors de l'installation et créer un fichier d'instal pour cela?
    Voici l'organisation de mes fichiers :
    Cliquez sur l'image pour l'afficher en taille normale

Nom : fichiers.jpg 
Affichages : 1 
Taille : 18,5 Ko 
ID : 1824827
    Merci de votre aide.
    Bonne soirée
    Phil

  • #2
    Re : Installation des views d'un plugin

    Salut
    un fichier install.php pourrait être utile pour gérer l'installation et la copie des fichiers
    sinon un tag "fileset" pourrait fonctionner, à tester

    <fileset>
    <files folder="" target="components/com_content/views">
    <folder>views</folder>
    </files>
    </fileset>
    CEd
    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


    • #3
      Re : Installation des views d'un plugin

      Bonsoir,

      Un plugin met ses fichiers dans le dossier /plugins/son_type/nom_plugin

      Je ne pense pas que l'on puisse mettre des fichiers dans un dossier qui ne nous appartient pas.
      UP, le plugin universel à découvrir sur https//up.lomart.fr
      bgMax
      , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

      Commentaire


      • #4
        Re : Installation des views d'un plugin

        Bonsloir,
        j'ai fait plusieurs essais avec fileset mais cela ne fonctionne pas. Dommage.
        Un fichier install apparemment n'est possible que pour les composants.
        J'ai donc opté pour la déclaration d'un script dans le xml : <scriptfile>copyviews.php</scriptfile>
        J'ai donc créé un fichier copyviews.php dont voici le code (suivant le manifest https://docs.joomla.org/Manifest_files/fr) :
        <?php
        defined( '_JEXEC' ) or die( 'Restricted access' );
        jimport( 'joomla.filesystem.folder' );

        class plg_bouton_galleryInstallerScript
        {
        /**
        * Constructor
        *
        * @param JAdapterInstance $adapter The object responsible for running this script
        */
        public function __construct(JAdapterInstance $adapter);

        /**
        * Called before any type of action
        *
        * @param string $route Which action is happening (install|uninstall|discover_install|update)
        * @param JAdapterInstance $adapter The object responsible for running this script
        *
        * @return boolean True on success
        */
        public function preflight($route, JAdapterInstance $adapter);

        /**
        * Called after any type of action
        *
        * @param string $route Which action is happening (install|uninstall|discover_install|update)
        * @param JAdapterInstance $adapter The object responsible for running this script
        *
        * @return boolean True on success
        */
        public function postflight($route, JAdapterInstance $adapter);
        {
        $src = JPATH_ROOT . '/plugins/editors_xtd/gallery/views/monpluginviews';
        $dest = JPATH_ROOT . '/administrator/components/com_content/views/monplgviews';

        $message = '';
        $error = array();

        if (!JFolder::exists( $src))
        {
        $message .= '<div><b><span style="color:#CC0033">Dossier</span> ' . $src
        .' <span style="color:#CC0033">Copie des views impossible.</span></b> Copiez par ftp le contenu du dossier views manuellement dans "administrator/components/com_content/views".</div>';
        $error[] = 1;
        }
        else
        {
        move($src, $dest, $path = '', $use_streams = false);
        }

        }


        /**
        * Called on installation
        *
        * @param JAdapterInstance $adapter The object responsible for running this script
        *
        * @return boolean True on success
        */
        public function install(JAdapterInstance $adapter);
        /**
        * Called on update
        *
        * @param JAdapterInstance $adapter The object responsible for running this script
        *
        * @return boolean True on success
        */
        public function update(JAdapterInstance $adapter);

        /**
        * Called on uninstallation
        *
        * @param JAdapterInstance $adapter The object responsible for running this script
        */
        public function uninstall(JAdapterInstance $adapter);
        }
        ?>
        J'ai le protocole ftp activé sur le site.
        J'ai une erreur et je n'arrive pas à savoir ce qui la provoque : Internal server error.
        Peut-être est-ce lié à cette prescription qui ce trouve dans le manifest quee je ne comprends pas (quel groupe?): "Pour les plugins, il convient de nommer également le groupe (par exemple : plgsystemnomduplugin)."

        Commentaire


        • #5
          Re : Installation des views d'un plugin

          Bonjour,
          j'ai trouvé en partie la solution.
          Dans un premier temps je suis allé trop vite et mon fichier copyviews.php du post précédant avait quelques erreurs qui traînées.
          Maintenant le plugin s'installe correctement, copie les fichiers dans com_content et s'active en base de donnée.

          Par contre impossible d'utiliser la class car ne n'arrive pas à trouver le bon nom de classe. Dans le manifeste il est dit qu'il faut rajouter le groupe (c-a-d le type de plugin, en fait cela correspond au champ "folder" dans la base, dans mon cas editors-xtd) se qui ferait pour moi un nom tel que "plgeditorsxtdmonbouton".

          J'ai contourné le pb en créant une fonction mais je perds tous les avantages du postinstall et ne peux pas faire aussi une désinstallation et autres.

          Qui a une idée?

          Voici le code de copyviews.php :
          //class editorsxtdmonboutonInstallerScript
          //{
          /*public*/ function postflight($var)
          {
          $database = JFactory::getDBO();

          $src = __DIR__.'/monplgview/';
          $src2 = __DIR__.'/monplgview/tmpl/';
          $dest = JPATH_ADMINISTRATOR.'/components/com_content/views/monplgview/';
          $dest2 = JPATH_ADMINISTRATOR.'/components/com_content/views/monplgview/tmpl/';
          if(!file_exists($dest)){
          mkdir($dest);
          if(!file_exists($dest2)){
          mkdir($dest2);
          }
          }
          $success = 0;
          $success = copy($src.'view.html.php', $dest.'view.html.php');
          copy($src.'index.html', $dest.'index.html');
          if($success){
          $success = copy($src2.'default.php', $dest2.'default.php');
          copy($src2.'index.html', $dest2.'index.html');
          }
          if($success){
          $database->setQuery("SELECT extension_id, enabled FROM #__extensions WHERE type='plugin' AND element='monbouton' AND folder='editors-xtd' LIMIT 1 ");
          $rows = $database->loadObjectList();
          $plugin_id = 0;
          $plugin_enabled = 0;
          foreach($rows as $row){
          $plugin_id = $row->extension_id;
          $plugin_enabled = $row->enabled;
          }
          if($plugin_id){
          $database->setQuery( "UPDATE #__extensions SET enabled='1', access='1', ordering='-29000' WHERE extension_id='$plugin_id' ");
          $database->query();
          }else{
          $manifeste = '{"legacy":false,"name":"monbouton","type":"plugin ","creationDate":...}';
          $manifeste = addslashes($manifeste);
          $database->setQuery( "INSERT INTO #__extensions SET name='monbouton', type='plugin', element='monbouton', folder='editors-xtd', enabled='1', access='1', manifest_cache='$manifeste', ordering='-29000' ");
          $database->query();
          }
          }
          }
          //}
          postflight($var);

          Commentaire


          • #6
            Re : Installation des views d'un plugin

            j ene l'ai jamais fait avec un plugin, et encore moins un "editors-xtd", sachant qeu ce type de plugin est aussi appelé "button"
            fait des tests avec un plugin system, comme ça déjà tu es sur du nom. Une fois que ça marche tu peux voir si c'est plugbutton, ou plugEditors-xtd ou autre
            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


            • #7
              Re : Installation des views d'un plugin

              Bonsoir,
              merci pour tes orientations mais je suis dans une impasse. J'ai fait tous les essais possibles...
              Il y a cette méthode getScriptClassName dans libraries->cms->installer->adapter->plugin.php
              protected function getScriptClassName()
              {
              return 'Plg' . str_replace('-', '', $this->group) . $this->element . 'InstallerScript';
              }
              Mon nom de class correspond bien au schéma.
              J'ai essayé d'enregistrer (register) la class et de l'instancier mais sans succès.
              Il est fait nulle part appel à cette class lors de l'install ou je n'ai pas réussi aussi à trouver.

              Commentaire


              • #8
                Re : Installation des views d'un plugin

                J'ai trouvé le problème :
                Le nom de la class doit être construit non pas avec le "name" du plugin mais avec le nom du répertoire dans lequel il est.

                Dans mon cas le nom du répertoire était légèrement différent du name. Je pense que le plus simple est de donner au répertoire le même nom que "name".

                Cela fait :
                PlgEditorsXtdMonboutonInstallerScript

                Plg : pour plugin
                EditorsXtd : pour le type de plugin
                Monbouton : le nom de mon dossier contenant le plugin
                InstallerScript : le script d'installation

                J'ai mis des capitales pour délimiter les différents éléments constitutifs (un peu comme Zend). Je n'ai pas fait de tests avec le nom de class tout en bas de casse. Je n'ai pas recherché la méthode qui analyse le nom de la class mais il semble que cela ressemble en partie à un chemin.

                Si ça peut servir à quelqu'un...

                Commentaire

                Annonce

                Réduire
                1 sur 2 < >

                C'est [Réglé] et on n'en parle plus ?

                A quoi ça sert ?
                La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                Comment ajouter la mention [Réglé] à votre discussion ?
                1 - Aller sur votre discussion et éditer votre premier message :


                2 - Cliquer sur la liste déroulante Préfixe.

                3 - Choisir le préfixe [Réglé].


                4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                2 sur 2 < >

                Assistance au forum - Outil de publication d'infos de votre site

                Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                UTILISER À VOS PROPRES RISQUES :
                L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                Problèmes connus :
                FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                Installation :

                1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                Archive zip : https://github.com/AFUJ/FPA/zipball/master

                2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                et remplacer www. votresite .com par votre nom de domaine


                Exemples:
                Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                Télécharger le script fpa-fr.php dans: /public_html/
                Pour executer le script: http://www..com/fpa-fr.php

                Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                Télécharger le script fpa-fr.php dans: /public_html/cms/
                Pour executer le script: http://www..com/cms/fpa-fr.php

                En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                Voir plus
                Voir moins

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X