IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation système Discussion :

Tutoriel création d'un plugin pour glpi


Sujet :

Programmation système

  1. #1
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut Tutoriel création d'un plugin pour glpi
    Bonjour

    Je vous propose mon nouveau tutoriel sur la création d'un plugin pour glpi.




    http://viduc.developpez.com/tutoriel/glpi/


    N'hésitez pas à commenter ...
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  2. #2
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Viduc Voir le message
    Bonjour

    Je vous propose mon nouveau tutoriel sur la création d'un plugin pour glpi.




    http://viduc.developpez.com/tutoriel/glpi/


    N'hésitez pas à commenter ...

    Bonjour Viduc,

    Super Tuto, très bien expliqué.
    Cependant j'ai un leger problème.

    Lors de la configuration de ton plugin, le lien renvoi vers le config.form.php contenu dans le dossier form.
    Celui-ci m'affiche une page blanche. Pourtant tout le reste est OK (creation des tables, affichage du plugin)

    Saurais tu me dire pourquoi?

    Je pensais au debut que ceci etait du a mes modifications mais le problème persiste quand je mets le dossier que tu as zippé sans changement.

    Je suis en version 0.84.. Donc pas d eprobleme de ce coté la..
    Une idée? :/

  3. #3
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    Salut!

    ton problème vient peut être d'un souci de droit... il faut que ton user (www-data) est des droits d'écriture sur au moins le dossier Smarty... (templates_c pour être exact). Vérifie tes droits et dis moi si ça fonctionne...
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  4. #4
    Membre actif Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Points : 265
    Points
    265
    Par défaut Onglet dans la v0.84
    Hello ,

    J'ai un léger soucis, j'ai GLPI v0.84.5 et j'aurais aimé ajouter deux onglets à l'objet coeur "Contract" avec le plugin que j'ai commencé a développer.
    D'après ce tutoriel https://forge.indepnet.net/projects/plu … ePlugin084 et les connaissances que j'avais acquises avec la v0.83 je n'arrive pas à afficher le moindre onglet ...

    Voici la structure de mon plugin qui nous interesse :
    • front
      - lmc.form.php
    • inc
      - pluginlmc.class.php
    • setup.php


    Dans setup.php, je référence la classe PluginLmc ainsi :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    Plugin::registerClass('PluginLmc', array('addtabon' => array('Contract')));

    Dans pluginlmc.class.php j'ai le code suivant :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    class PluginLmc extends CommonDBTM {
     
    	// nom des onglets
    	function getTabNameForItem(CommonGLPI $item, $withtemplate=0) {
    		if ($item->getType() == 'Contract') {
    			$ong = array();
    			$ong[1] = 'Licences & Modules';
    			$ong[2] = 'Maintenance';
    			return $ong;
    		}
    		else {
    			return '';
    		}
    	}
     
    	// Bind des formulaires avec les onglets
    	static function displayTabContentForItem(CommonGLPI $item, $tabnum=1, $withtemplate=0) {
    		if ($item->getType() == 'Contract') {
    			$lmc_plugin = new self();
    			switch ($tabnum) {
    				case 1 : // mon premier onglet
    					$ID = $item->getField('id'); 
    					$Name = $item->getField('name');
    					// j'affiche le formulaire
    					//$lmc_plugin->showForm($ID, $Name);
    					break;
    				case 2 : // mon second onglet
    					$ID = $item->getField('id');
    					$Name = $item->getField('name');
    					// j'affiche le formulaire
    					//$lmc_plugin->showForm($ID, $Name);
    					break;
    			}
    		}     
    		return true;
    	}
     
    	//Définition des onglets
        function defineTabs($options=array()) {
    		$ong = array();
    		$this->addStandardTab('PluginLmc', $ong, $options);
    		return $ong;
        } 
    }

    Du coup, j'ai beau reinstaller et réactiver mon plugin, rien ne change, je n'ai toujours aucun nouvel onglet sur mes objets Contrat, et je ne vois pas d'ou viens l'erreur.

    Je n'ai aucune erreur dans les logs HTTPD également. Merci d'avance pour vos réponses

  5. #5
    Membre actif Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Points : 265
    Points
    265
    Par défaut Edit
    J'ai renommé mon fichier de classe pluginlmc.class.php en lmc.class.php et j'ai aussi renommé la classe qui s y trouve par "PluginLmclmc" . Par le même coup j'ai modifié la ligne suivante dans la fonction plugin_init_lmc() :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    Plugin::registerClass('PluginLmclmc', array('addtabon' => array('Contract')));

    Cela ne donne toujours rien, c'est vraiment la galère pour ajouter des onglets aux objets du coeur on dirait sur cette version 0.84 ... merci d'avance pour vos réponses

    EDIT : J'ai trouvé la solution, ce fût très chronophage mais c'est un caractère qui m'a bloqué tout ce temps. Il m'a suffit de renommer ma classe "PluginLmclmc" en "PluginLmcLmc" avec une majuscule, de renommer toutes les occurrences et ça a fonctionné. GLPI ne veut que des classes qui commencent par une majuscule apparemment, et à juste titre, car cela respecte la convention de nommage des classes. Mais de la a penser que la classe sans majuscule était ignorée sans erreurs dans les logs ou sur la console de débug . J'ai envisagé la reconversion avant de résoudre le soucis, ça soulage de gravir ce problème quasi indétectable.

  6. #6
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Salut!

    ton problème vient peut être d'un souci de droit... il faut que ton user (www-data) est des droits d'écriture sur au moins le dossier Smarty... (templates_c pour être exact). Vérifie tes droits et dis moi si ça fonctionne...
    Salut Viduc !

    Désolé pour cette reponse tardive, je me remet sur le sujet !
    La commande chown n'ets pas disponible sur Windows (j'ai fait une install sur Windows, je sais c'est moyen, mais bon)
    J'ai cependant créé l'utilisateur www-data sur mon serveur et lui ai mis full droit sur le dossier monplugin.
    Le resultat est le même.. Ca nemarche pas. As tu une autre idée d'ou pourrais provenir le blocage?

    Merci par avance

  7. #7
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    Salut Vespiras

    Content de voir que tu t'en es sortit...

    Dest93 je ne vois pas, je vais voir dès que j'ai un moment à re-tester mon zip voir si par hasard il n'y a pas une erreur.

    pour le www-data en faite il faut que ce soit le user qui lance le service web
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  8. #8
    Membre actif Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Points : 265
    Points
    265
    Par défaut
    Merci pour le tuto Viduc au fait

    Et Dest93, pour ton problème vérifie dans les logs de ton serveur Web si y a une erreur quelconque lorsque tu essayes d'accéder à ladite page.
    Et essaye un truc tout bête, mais qui est la base du debugging php : pour voir si c'est un problème de droit, ajoute tout en haut de la page config.form.php, juste en dessous de la balise php une fonction echo, genre :

    echo "on a les droits !";

    Comme ça, tu verras si on accède bien à la page et elle est vide pour une autre raison. Tiens nous au courant

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut conforme CSRF
    Bonjour,



    Pour m'entrainer, je viens d'installer le plugin "monplugin" et GLPI me répond "non conforme CSRF".

    Une idée de la modif à faire et sur quel fichier ?

    --

    Frédéric Zulian

  10. #10
    Futur Membre du Club Avatar de CDuv-Fr
    Profil pro
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    f1sxo, regarde le mode d'emploi "Protection CRSF - Conformité des plugins".

  11. #11
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    !!! ATTENTION !!!

    A partir de la version 0.84 de glpi, la vérification du CSRF est devenue obligatoire.
    Pour installer le plugin, il vous faut:
    Éditer le fichier /glpi/config/define.php et mettre la variable GLPI_USE_CSRF_CHECK à 0.
    Éditer le fichier /glpi/plugins/monplugin/setup.php et mettre $PLUGIN_HOOKS['csrf_compliant']['monplugin'] à true.
    Allez ensuite dans Configuration/plugins. Installer et activer le plugin (ou mise à jour).
    Éditer à nouveau le fichier /glpi/plugins/monplugin/setup.php et mettre $PLUGIN_HOOKS['csrf_compliant']['monplugin'] à false.
    Allez sur la page de config du plugin et enregistrer votre configuration.
    Éditer à nouveau le fichier /glpi/config/define.php et mettre la variable GLPI_USE_CSRF_CHECK à 1.
    Il faut laisser la variable à 0 sinon le plugin ne fonctionne pas

    Je modifierais le tuto sous peu pour intégrer ce problème
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Février 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Aide précieuse
    Merci beaucoup pour tout ce travail et ce tutoriel très bien fait ! ça m'a permit de créer un plugin qui permet de dupliquer un ticket. Mon seul problème, c'est que la fonction "SHOWFORM" qui affiche le ticket dupliqué affiche également les onglets du formulaire (suivis, documents....) et ça créer plein de bugs.
    Connaissez-vous, à tout hasard, les arguments à passer à "showform" (méthode de la classe Ticket) pour n'afficher que le formulaire principal dans mon plugin, sans les onglets ?
    La fonction actuelle est "showform(0)".

    Merci en tout cas pour votre aide sur les onglets

    Bien cordialement,

    David

  13. #13
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    Bonjour et merci pour votre message.

    Je prévois bientôt une mise à jour de ce tuto avec de nouvelles info...

    Pouvez vous mettre votre class qui contient cette fonction que je puisse voir de quoi ça a l'air...?
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  14. #14
    Membre actif Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Points : 265
    Points
    265
    Par défaut tâche automatique GLPI v0.84.5
    Salut,

    Bon je n'écrit pas ce message à la bonne période, y a plein de monde en vacances :p

    Dans ton tutoriel tu ne parles pas de la mise en place d'une tâche automatique GLPI. Or j'ai voulu en intégrer une, et elle fonctionne lorsque que je l’exécute manuellement (bouton Executer sur la page du cron), mais elle ne se lance pas d'elle-même.
    J'ai essayé de changer tout les paramètres de la tâche : fréquence, conservation des logs, mode CLI ou GLPI.

    En mode GLPI j'ai bien créé une tâche cron pour l'utilisateur apache, qui va requêter la page glpi/front/cron.php régulièrement afin de simuler de l'activité.

    Je suis connecté en super-admin sur GLPI lorsque la tâche est sensée se lancer.

    j'ai bien ma classe avec mes fonctions cronNomAction($task) et cronInfo($task) définies, puisque tout est affiché dans les détails de l'action automatique.
    Merci de votre aide

  15. #15
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    Hello!

    et bien bonne question, je n'ai jamais utilisé cette fonction donc je ne me suis pas penché sur le sujet...

    Je note pour info et je verrais si j'ai le temps de regarder... N'oublie pas le forum officielle de GLPI et le liste de diffusion pour les dev, tu peux y poser tes questions...
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 27
    Points : 33
    Points
    33
    Par défaut
    Bonjour, Viduc
    j'ai commencé à suivre ton tutoriel, mais je me heurte toute suite à une difficulté: sous le menu configuration, l'onglet plugin n'existe pas chez moi.

    PS: j'utilise la version 0.71.5

    merci

  17. #17
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Points : 4
    Points
    4
    Par défaut
    Bonjour Viduc,

    GLPI ne détecte pas mes dossiers php dans le fichier plugins. Pourtant à part le nom du plugin que j'ai modifié, j'ai tout repris mot à mot pour être sûr que ça fonctionne mais apparemment il y a un problème...
    J'utilise la version 0.80.7 de GLPI.

    J'espère que tu pourras m'aider

    Merci

  18. #18
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Points : 2 778
    Points
    2 778
    Billets dans le blog
    2
    Par défaut
    Salut!

    tu as bien renommé ton dossier de base au nom de ton projet? tu as bien mis les droits qu'il faut sur tes dossiers ? dans le doute ouvre tout en écriture sur tes dossiers pour tester
    Bien reçu, tous les messages. Ils disent qu’ils ont compris, qu’il n’y a plus le choix. Que l’esprit qui souffle, guidera leurs pas. Qu’arrivent les derniers temps où nous pourrons parler. Alors soyons désinvoltes, n’ayons l’air de rien

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Points : 4
    Points
    4
    Par défaut
    Merci de ton aide je verrai ça.
    Sinon on est obligé d'utiliser Smarty ou on peut passer par une autre alternative ?

Discussions similaires

  1. Réponses: 17
    Dernier message: 25/11/2020, 14h19
  2. Developpement d'un plugin pour glpi
    Par edybel dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 23/06/2014, 13h47
  3. [Spip] Création module ou plugin pour publication
    Par bicacna dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 23/08/2011, 15h53
  4. Création d'un plugin pour Eclipse
    Par Naeco dans le forum Eclipse Platform
    Réponses: 6
    Dernier message: 16/01/2007, 18h00
  5. Création d'un plugin pour navigateur web
    Par veuda dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 07/11/2005, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo