You are not logged in.
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
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
Bonjour, le voici : http://glpi-developer-documentation.rea … index.html
Merci pour votre réponse
Offline
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
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
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
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
Personne n'a une idée d’où cela peut venir ? Je sèche vraiment pour le coup ..
Merci d'avance
Offline
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
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
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
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
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
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