[plugin] Plugin de test, pour apprendre ou pour des essais

FrancisFrancis Member
novembre 2017 modifié dans Plugins
J'avais besoin d'un petit plugin tout simple et qui ne pose pas de problème, juste pour tester l'accès au plugin et la prise en compte des paramètres.
J'ai donc écrit un petit plugin appelé "test", à télécharger ici pour qui serait intéressé.

Il pourra servir à l'occasion :
- pour apprendre à créer un plugin, à partir d'un exemple simple
- ou pour faire des tests, comme le nom du plugin l'indique :)

Ce plugin renvoie ou affiche un texte, suivi des valeurs de 4 paramètres : param_a, param_b, param1 et param2.

Un autre paramètre indique s'il faut afficher le résultat ou renvoyer la chaîne de texte :
- paramètre "action"=>"echo" pour afficher le texte
- absence de ce paramètre "action" (ou n'importe quelle autre valeur pour ce paramètre) si le plugin doit simplement renvoyer la chaîne de caractères.

- Les deux paramètres param_a et param_b sont enregistrés dans data/configuration/plugins/test.xml.
Ils sont initialisés par le plugin lors de son activation et peuvent ensuite être modifiés dans la configuration du plugin.

- Les deux paramètres param1 et param2, ainsi que le paramètre facultatif "action", sont transmis au plugin par le callHook, dans le tableau de paramètres.

Pour appeler ce plugin et afficher le texte généré :
- soit :
[== PHP ==]
$texte = eval($plxShow->callHook('test', array('param1'=>'valeur1', 'param2'=>'valeur2')));
echo $texte;
- soit :
[== PHP ==]
eval($plxShow->callHook('test', array('action'=>'echo', 'param1'=>'valeur1', 'param2'=>'valeur2')));

Comme ça il y a les bases d'un plugin, avec :
- des paramètres enregistrés et générés lors l'activation (et modifiables dans la configuration)
- d'autres paramètres transmis au moment de l'appel du plugin
- et aussi les deux cas de figure de base : renvoi d'une chaîne de caractères ou affichage direct d'un contenu.

Depuis la version 1.1, possibilité d'appeler ce plugin de test avec un shortcode, à l'intérieur d'un article ou d'une page statique (le plugin shortcodes doit être installé et activé) :
[test param1="valeur1" param2="valeur2]

Téléchargement
Lien de téléchargement de la dernière version

Historique des versions

## Version 1.1 (30/10/2017) ##
[+] Ajout du shortcode associé, intégré dans le plugin (modification du fichier test.php et ajout du dossier spxshortcodes)

## Version 1.0 (06/05/2014) ##
Version initiale

Réponses

  • Jerry WhamJerry Wham Member
    mai 2014 modifié
    Merci Francis. Bonne idée.
    Je n'ai pas regardé le code, mais il serait peut-être intéressant de mettre un lien dans la doc du développeur ?
  • FrancisFrancis Member
    octobre 2017 modifié
    Version 1.1 avec shortcode inclus, pour pouvoir appeler ce plugin dans un article ou une page statique.

    Cela suppose d'avoir installé et activé le plugin shortcodes.

    Lien et historique dans le premier message.
  • Bonjour,

    Merci pour ce plugin qui facilite la prise en main.

    Dans les commentaires de test.php et du shortcode, il y a une erreur :
    $texte = eval($plxShow->callHook('test', array('param1'=>'valeur1', 'param2'=>'valeur2')));
    c'est plutôt :
    $texte = eval('return '.$plxShow->callHook('test', array('param1'=>'valeur1', 'param2'=>'valeur2')).';');
    et s'il y a des espaces :
    $texte = eval('return \''.$plxShow->callHook('test', array('param1'=>'valeur1', 'param2'=>'valeur2')).'\';');

    Et peut être ajouter un config.php dans le plugin :
    [== PHP ==]
    <?php
    /**
     * Plugin test
     **/
     
    	if(!defined('PLX_ROOT')) exit; 
    	
    	# Control du token du formulaire
    	plxToken::validateFormToken($_POST);
    	
    	function setv($var) {
    		global $plxPlugin;
    		if (!empty($_POST[$var]))
    			$plxPlugin->setParam($var, $_POST[$var], 'cdata');
    	}
    	
    	if(!empty($_POST)) {
    		setv('testRight');
    		setv('testName');
    		setv('testPos');
    		setv('testCaption');
    		$plxPlugin->saveParams();
    		header('Location: parametres_plugin.php?p=test');
    		exit;
    	}
    ?>
    
    <h2><?php $plxPlugin->lang('L_CONFIG_MENU_DESCRIPTION') ?></h2>
    
    <form action="parametres_plugin.php?p=test" method="post">
    	<fieldset>
    	
    		<p>
    			<label for="id_testRight"><?php echo $plxPlugin->getLang('L_CONFIG_TEST_RIGHTS') ?></label>
    			<?php $rights = array('PROFIL_ADMIN' => $plxPlugin->getLang('L_PROFIL_ADMIN'), 'PROFIL_MANAGER' => $plxPlugin->getLang('L_PROFIL_MANAGER'), 'PROFIL_MODERATOR' => $plxPlugin->getLang('L_PROFIL_MODERATOR'), 'PROFIL_EDITOR' => $plxPlugin->getLang('L_PROFIL_EDITOR'), 'PROFIL_WRITER' => $plxPlugin->getLang('L_PROFIL_WRITER'));
    			plxUtils::printSelect ( 'testRight', $rights, $selected = plxUtils::strCheck($plxPlugin->getParam('testRight'))) ?>
    		</p>
    		
    		<p>
    			<label for="id_testName"><?php echo $plxPlugin->getLang('L_CONFIG_TEST_NAME') ?></label>
    			<?php plxUtils::printInput('testName',plxUtils::strCheck($plxPlugin->getParam('testName')),'text','15-15') ?>
    		</p>
        
    		<p>
    			<label for="id_testPos"><?php echo $plxPlugin->getLang('L_CONFIG_TEST_POSITION') ?></label>
    			<?php plxUtils::printInput('testPos',plxUtils::strCheck($plxPlugin->getParam('testPos')),'text','2-2') ?>
    		</p>
        
    		<p>
    			<label for="id_testCaption"><?php echo $plxPlugin->getLang('L_CONFIG_TEST_CAPTION') ?></label>
    			<?php plxUtils::printInput('testCaption',plxUtils::strCheck($plxPlugin->getParam('testCaption')),'text','15-20') ?>
    		</p>
    	</fieldset>
    	<br />
    	<?php echo plxToken::getTokenPostMethod() ?>
    	<input type="submit" name="submit" value="<?php echo $plxPlugin->getLang('L_CONFIG_SAVE') ?>" />
    </form>
    

    et ajouter ceci dans test.php :
    [== PHP ==]
    # limite l'accès à l'écran d'administration du plugin
    $rights = array();
    for($i = 0; $i <= constant($this->getParam('testRight')); $i++) {
    	$rights[] = $i;
    }
    call_user_func_array(array($this,"setAdminProfil"), $rights);
    
    # Personnalisation de l'administration de test
    $this->setAdminMenu($this->getParam('testName'), $this->getParam('testPos'), $this->getParam('testCaption'));
    
  • Bonjour SieurVLD,

    Je suis heureux que ce petit plugin continue à rendre service, de mon côté je m'en suis resservi il y a quelque temps pour faire des essais.

    En tout cas, merci bien pour ces rectifications et pour ces propositions intéressantes.
    Je vais regarder tout ça en détail dès que je pourrai.
Connectez-vous ou Inscrivez-vous pour répondre.