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
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
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? :/
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
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
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.
Salut Viduc !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...
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
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
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
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
f1sxo, regarde le mode d'emploi "Protection CRSF - Conformité des plugins".
!!! 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
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
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
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
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
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
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
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
Merci de ton aide je verrai ça.
Sinon on est obligé d'utiliser Smarty ou on peut passer par une autre alternative ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager