You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2017-11-13 17:15:18

oxy180
Member
Registered: 2017-09-08
Posts: 32

Aide création plugin

Bonjour à tous, étant débutant dans le domaine de GLPI, je me suis lancé dans la création d'un plugin permettant d'afficher une vue graphique des ordinateurs présents dans la base de données. Pour commencer je souhaite ajouter une ligne dans la liste déroulante "Parc" ou bien "Outils" j'ai suivi la documentation officielle qui me demandait d'ajouter ces quelques lignes

function plugin_vuephysiqueplugin_getDropdown() {
		return ['Pluginvuephysiqueobjettest' => Pluginvuephysiqueobjettest::getTypeName(2)];
}

Cependant lorsque j'installe et active mon plugin rien ne se passe. Quelqu'un pourrait-il m'assister dans l'écriture de ce plugin ?

Je vous remercie d'avance.

Offline

#2 2017-11-13 19:33:59

btry
Moderator
Registered: 2015-10-01
Posts: 588

Re: Aide création plugin

Bonjour

Pouvez vous partager le lien vers la documentation que vous avez suivie ?


No support with MP - Always run an upgrade task on a testing instance before running it on production! Always backup before any upgrade task!

Offline

#3 2017-11-14 10:59:56

oxy180
Member
Registered: 2017-09-08
Posts: 32

Re: Aide création plugin

Bonjour, le voici : http://glpi-developer-documentation.rea … index.html

Merci pour votre réponse

Offline

#4 2017-11-14 11:51:31

btry
Moderator
Registered: 2015-10-01
Posts: 588

Re: Aide création plugin

Bonjour

Merci pour le lien, ça confirme ce que je pensais. Vosu avez utilisé la section "Add an object in dropdowns". Les dropdowns n'ont rien à voir avec les menus déroulants. En français, cela correspond aux intitulés. Votre objet figure donc certainement dans la page du menu "Configuration > Intitulés".

Je n'ai plus trop en tête les infos pour ajouter des entrées dans les menus déroulants. Je vous invite à prendre exemple sur le plugin Formcreator.

Dans setup.php vous t rouverez une ligne comme celle ci:

$PLUGIN_HOOKS['menu_toadd']['formcreator']['admin'] = 'PluginFormcreatorForm';

Elle permet d'ajouter une entrée au menu "Administration"

PluginFormcreatorForm est une classe qui possède une méthode getMenuContent(). Reprenez le code de cette méthode.

Un autre exemple plus complexe existe dans le plugin Flyve MDM, et si vous voulez ajouter une entrée dans les matériels gérés par GLPI (assets en anglais), vous trouverez peut être l'exemple de l'ancien plugin Simcards le plus proche de ce que vous voulez.

Formcreator: https://github.com/pluginsglpi/formcreator
Simcards (l'exemple à privilégier pour vous) : https://github.com/pluginsGLPI/simcard
Flyve MDM : https://github.com/flyve-mdm/flyve-mdm-glpi-plugin

Dans tous les cas le principe est le même: une ligne dans setup.php comme montré plus haut, et une méthode getMenuContent dans la classe spécifiée.

Last edited by btry (2017-11-14 11:59:15)


No support with MP - Always run an upgrade task on a testing instance before running it on production! Always backup before any upgrade task!

Offline

#5 2017-11-14 13:49:43

oxy180
Member
Registered: 2017-09-08
Posts: 32

Re: Aide création plugin

D'accord, oui je prenais déjà exemple de FormCreator, je vais essayer et vous donnerai des nouvelles. En tout cas merci pour votre aide

Offline

#6 2017-11-14 15:25:40

oxy180
Member
Registered: 2017-09-08
Posts: 32

Re: Aide création plugin

j'ai tenté quelque chose, mais lorsque j'active mon plugin sur GLPI, et bien ce dernier ne fonctionne plus, il ne renvoie qu'une page blanche et je dois supprimer mon plugin du dossier pour pouvoir réutiliser GLPI. Donc j'imagine bien que je fais quelque chose de mal mais je ne sais pas quoi...

 function plugin_init_vuephysique() {
   global $PLUGIN_HOOKS;

   $PLUGIN_HOOKS['csrf_compliant']['vuephysique'] = true;
   
   $plugin = new Plugin();
   if ($plugin->isInstalled('vuephysique') && $plugin->isActivated('vuephysique')) {
   

   $PLUGIN_HOOKS['menu_toadd']['vuephysique'] = array('assets' => 'PluginVuePhysique');
   }
}

voici ma fonction dans le setup

et voici ma fonction getmenucontent :

static function getMenuContent() {
   	global $CFG_GLPI;
   		
   	$menu = array();
      $menu['title'] = self::getTypeName(2);
      $menu['page']  = self::getSearchURL(false);
      $menu['links']['search'] = self::getSearchURL(false);
      
      return $menu;
   }

Merci d'avance pour votre aide

Offline

#7 2017-11-15 11:41:33

oxy180
Member
Registered: 2017-09-08
Posts: 32

Re: Aide création plugin

Du coup c'est bien la ligne :

$PLUGIN_HOOKS["menu_toadd"]['vuephysique'] = array('plugins'  => 'PluginVuePhysique');

qui fait planter mon GLPI, mais je ne vois aucune raison apparente. Quelqu'un pourrait-il m'éclairer svp ?

Merci d'avance

Offline

#8 2017-11-15 16:16:46

oxy180
Member
Registered: 2017-09-08
Posts: 32

Re: Aide création plugin

Personne n'a une idée d’où cela peut venir ? Je sèche vraiment pour le coup ..

Merci d'avance

Offline

#9 2017-11-15 17:04:45

btry
Moderator
Registered: 2015-10-01
Posts: 588

Re: Aide création plugin

Bonjuor

Si vous avez une page blanche, c'est très probablement une erreur HTTP 500. Le détail de l'erreur se trouve dans les journaux du serveur HTTP (erros.log pour Apache).

Votre plugin porte un nom composé de plusieurs mots. Partout dans le code où vous avez VuePhysique changez pour Vuephysique (le P passe en minuscule). Je pense que votre souci est là  car GLPI  va chercher des chores relatives à un plugin nommé Vue (tout court).

Utilisez ceci:

$PLUGIN_HOOKS["menu_toadd"]['vuephysique'] = array('plugins'  => 'PluginVuephysique');

Je pense que ça fonctionnera mieux.

De plus votre classe ne doit pas s'appeller PluginVuePhysique mais PluginVuephysiqueMaClasse (avec MaClasse un nom à votre convenance)

Toutes les classes de votre plugin doivent avoir pour préfixe PluginVuephysique. Cela implique qu'il y a quelque chose pour prolonger le préfixe.

Last edited by btry (2017-11-15 17:08:23)


No support with MP - Always run an upgrade task on a testing instance before running it on production! Always backup before any upgrade task!

Offline

#10 2017-11-16 11:00:06

oxy180
Member
Registered: 2017-09-08
Posts: 32

Re: Aide création plugin

Bonjour, malheureusement j'avais déjà effectué ces corrections et rien n'a changé, voici le code de ma fonction init

function plugin_init_vuephysique() {
   global $PLUGIN_HOOKS;

   $plugin = new Plugin();
   $PLUGIN_HOOKS['csrf_compliant']['vuephysique'] = true;
   
   if ($plugin->isInstalled('vuephysique') && $plugin->isActivated('vuephysique')) {
		$PLUGIN_HOOKS["menu_toadd"]['vuephysique'] = array('plugins'  => 'PluginVuePhysiqueClasse');
   }

Et j'ai changé de nombreuses fois ma classe censé ajouter un onglet mais rien n'y fait c'est cette ligne qui me fait planter pour une raison X :

 $PLUGIN_HOOKS["menu_toadd"]['vuephysique'] = array('plugins'  => 'PluginVuePhysiqueClasse'); 

Je suis vraiment perdu en ce moment, je m'arrache les cheveux car je ne sais pas d’où cela peut venir ..

Merci d'avance pour votre aide

Offline

#11 2017-11-16 11:06:13

btry
Moderator
Registered: 2015-10-01
Posts: 588

Re: Aide création plugin

Vous avez toujours un P majuscule dans

 $PLUGIN_HOOKS["menu_toadd"]['vuephysique'] = array('plugins'  => 'PluginVuePhysiqueClasse'); 

Ecrivez plutot

 $PLUGIN_HOOKS["menu_toadd"]['vuephysique'] = array('plugins'  => 'PluginVuephysiqueClasse'); 

et renommez la classe PluginVuePhysiqueClasse en PluginVuephysiqueClasse


No support with MP - Always run an upgrade task on a testing instance before running it on production! Always backup before any upgrade task!

Offline

#12 2017-11-16 15:50:56

oxy180
Member
Registered: 2017-09-08
Posts: 32

Re: Aide création plugin

Bonjour, merci de votre réponse mais cela n'a pas résolu le problème.. Toujours une page blanche après l'activation du plugin

Offline

#13 2017-11-16 15:57:29

btry
Moderator
Registered: 2015-10-01
Posts: 588

Re: Aide création plugin

Publiez le code complet, donnez le lien du dépôt.

En attendant une réponse à la lecture du code complet, vérifiez avec les outils développeur du navigateur si vous avez une erreur HTTP 500. Si oui, alors regardez les logs du serveur HTTP, qui fournira un backtrace.


No support with MP - Always run an upgrade task on a testing instance before running it on production! Always backup before any upgrade task!

Offline

#14 2018-01-08 17:20:31

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,273

Re: Aide création plugin

Bon là en regardant votre post, vous devez avoir un fichier dans le dossier inc de votre plugin qui s'appelle classe.class.php et qui doit contenir les functions getMenuContent et getTypeName.
De plus le lien va chercher la fonction à afficher dans le fichier classe.php du sossier front de votre plugin.

Le nom de votre class n'est pas du tout judicieux.


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

Board footer

Powered by FluxBB