GLPI v0.84.5 : changements dans le développement d’un plugin

Oyé oyé !

Ceci est une « extension » de mon article précédent http://www.fortisfio.com/?p=581 et il vient le compléter et ajouter des astuces. Toutefois, vous n’apprendrez pas à faire un plugin GLPI sur cet article, mais vous verrez les choses à adapter par rapport à la version 0.83.

Référencer des librairies JS et des fichiers CSS

Si vous souhaitez référencer plusieurs fichiers CSS et JS dans le contexte global de votre plugin GLPI, il faut adopter une syntaxe particulière dans le fichier setup.php :

– Pour du javascript :

$PLUGIN_HOOKS['add_javascript']['lmc'] = array('js/jquery-1.11.0.js', 'js/toastr.js');

– Pour du CSS :

$PLUGIN_HOOKS['add_css']['lmc'] = array('css/big-screen.css', 'css/medium-screen.css');

 Barebone RESTful WebServices pour la dynamisation des opérations

Vous pouvez tout à fait, après avoir intégré jQuery, créer des mini-webservices qui vont permettre de dynamiser des formulaires, faire des opérations en bases asynchrones et indépendante de votre navigation sur GLPI. On utilise le système classique que vous connaissez peut-être déjà .

On commence par créer selon la convention un répertoire ajax à la racine du plugin.

Dans ce répertoire il va falloir placer nos webservices php. Dans ces fichiers PHP, on va mettre ne place notre mécanisme de traitement asynchrone :

define('GLPI_ROOT', getAbsolutePath());
require (GLPI_ROOT."inc/includes.php");

require_once("../inc/config.class.php");
require_once("../inc/lmc.class.php");

// requete envoyée depuis config.form.php, appel de méthode correspondante
if(isset($_POST['action']))
{
	if($_POST['action'] == "load_template")
	{
		$config = new PluginLmcConfig();
		$response = $config->getReportConfig($_POST['id']);
	}
	else if($_POST['action'] == "load_keys")
	{
		$lmc = new PluginLmcLmc();
		$response = $lmc->getSerialKeys();
	}
	else if($_POST['action'] == "load_maintenance") 
        {
 		$lmc = new PluginLmcLmc();
		$response = $lmc->getMaintenanceContracts();
	} 
        else 
        {
		echo "erreur";
	}
	// fonction a appeler après le traitement
	echo $response;
}

function getAbsolutePath()
{
	return str_replace("plugins/lmc/ajax/lmc.ajax.php", "", $_SERVER['SCRIPT_FILENAME']);
}

Toutefois ici, je ne respecte pas la convention des routes des WebService classique. Si vous voulez faire quelque chose de formel, il vaut mieux se référer a la convention et utiliser les méthodes HTTP :

Ajouter : POST

Supprimer : DELETE

Récupérer : GET

Modifier : PUT

Avec la forme du lien qui ne change jamais, juste la méthode. Par exemple, si je veux ajouter un article, je fais une requête POST sur le lien /article. Si je veux le modifier, une requête PUT sur le lien /article. etc …

Laisser un commentaire