Création d'une page d'administration d'un plugin

Structure minimale

_admin.php

La page doit être déclarée dans le fichier _admin.php du plugin :

if (!defined('DC_CONTEXT_ADMIN')) {return;}
 
global $core;
 
# ajouter le plugin dans la liste des plugins du menu de l'administration
$_menu['Plugins']->addItem(
	# nom du lien (en anglais)
	__('Example'),
	# URL de base de la page d'administration
	'plugin.php?p=example',
	# URL de l'image utilisée comme icône
	'index.php?pf=example/icon.png',
	# expression régulière de l'URL de la page d'administration
	preg_match('/plugin.php\?p=example(&.*)?$/',
		$_SERVER['REQUEST_URI']),
	# persmissions nécessaires pour afficher le lien
	$core->auth->check('usage,contentadmin',$core->blog->id));

Important :

Dans le code ci-dessus, remplacez example par le nom du répertoire du plugin. L'icône doit mesurer environ 16×16 pixels, vous pouvez en trouver une dans le pack Silk Icons.

Un lien vers la page d'administration apparaît dans le sous-menu Extensions de la page d'administration :

Astuce :

Outre le fait que le plugin dispose de permissions générales dans le fichier _define.php, il peut être parfois nécessaire de restreindre l'accès à la page de configuration à quelques utilisateurs. Pour cela, il suffit d'ajouter en début de fichier après la ligne
if (!defined('DC_CONTEXT_ADMIN')) {return;}
if (!$core->auth->isSuperAdmin()) {return;}

Il est bien sur possible d'adapter ce code à la prise en compte de permission particulière avec la fonction check() de la classe dcAuth

index.php

Voici la structure de base du fichier index.php, notez que la balise <html> n'a aucun attribut, c'est Dotclear qui les ajoute lors de l'affichage.

<?php
# insérer du code PHP ici
?>
<html>
<head>
	<title><?php echo(__('Example')); ?></title>
</head>
<body>
 
	<h2><?php echo html::escapeHTML($core->blog->name).' &rsaquo; '.
		__('Example'); ?></h2>
 
	<?php echo(__('Hello World!')); ?>
 
</body>
</html>

Voici le résultat :

Télécharger un plugin exemple

Le plugin suivant montre quelques exemples d'utilisation de codes décrits dans cette documentation :

plugin-adminExample.zip

Personnaliser cette page

Wiki powered by Dokuwiki.