DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


Panneau latéral

Cette traduction est plus ancienne que la page originale et est peut-être dépassée. Voir ce qui a changé.
Traductions de cette page?:

Découvrir DokuWiki

Options avancées

Pour les entreprises

Notre Communautée


Suivez-nous sur Facebook, Twitter et les autres résaux sociaux.

Notre politique de confidentialité

fr:plugin:class

class plugin

Compatible avec DokuWiki

Pas d'informations de compatibilité disponible !

plugin Plugin simple pour ajouter une classe à un contenu

Dernière mise à jour
2008-12-15
Fournit
Syntax

Cette extension n'a pas été mise à jour par ses developpeurs depuis plus de deux ans. Elle pourrait ne plus être maintenue ou comporter des problèmes de compatibilité.

Similaire à box, boxes

étiquettes : boxes, notes

De Janusz

Description

Ce plugin tout simple permet d'ajouter une classe (CSS) à un contenu. Ça nous évite d'utiliser ce genre d'écriture :

<html></p><div class="myStyleClass"><p></html>
 
C'est mon contenu.
 
<html></p></div><p></html>

Usage

Utiliser simplement cette syntaxe et changer “myStyleClass” par votre classe.

<class myStyleClass>C'est mon contenu.</class>

Code source et installation

Créer un fichier /lib/plugins/class/syntax.php et copier le code PHP suivant :

<?php
/**
 * Plugin class : add a class to a content
 *
 * Syntax: <class myStyleClass>content</class>
 * 
 * @author     Janusz <janusz@ledruide.net>
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 */
 
if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'syntax.php');
 
class syntax_plugin_class extends DokuWiki_Syntax_Plugin {
 
   /**
    * Get an associative array with plugin info.
    */
    function getInfo(){
        return array(
            'author' => 'Janusz',
            'email'  => 'janusz@ledruide.net',
            'date'   => '2008-12-15',
            'name'   => 'class Plugin',
            'desc'   => 'Simple plugin to add a class to a content',
            'url'    => 'http://www.dokuwiki.org/plugin:class',
        );
    }
 
    function getType(){ return 'container'; }
    function getPType(){ return 'normal'; }
    function getAllowedTypes() { 
        return array('container','substition','protected','disabled','formatting','paragraphs');
    }
 
    // must return a number lower than returned by native 'code' mode (200)
    function getSort(){ return 158; }
 
 
    /**
     * Connect pattern to lexer
     */
    function connectTo($mode) {       
        $this->Lexer->addEntryPattern('<class.*?>(?=.*?</class>)',$mode,'plugin_class');
    }
    function postConnect() {
        $this->Lexer->addExitPattern('</class>','plugin_class');
    }
 
 
    /**
     * Handle the match
     */
    function handle($match, $state, $pos, &$handler){
        switch ($state) {
            case DOKU_LEXER_ENTER:
                $data = strtolower(trim(substr($match,6,-1)));
                return array($state, $data);
 
            case DOKU_LEXER_UNMATCHED : 
                return array($state, $match);
 
            case DOKU_LEXER_EXIT :
                return array($state, '');
 
        }       
        return false;
    }
 
 
   /**
     * output
     */
    function render($mode, &$renderer, $indata) {
        if($mode == 'xhtml'){
            list($state, $match) = $indata;
            switch ($state) {
 
            case DOKU_LEXER_ENTER :      
                $renderer->doc .= '</p><div class="'.htmlspecialchars($match).'"><p>';
                break;
 
              case DOKU_LEXER_UNMATCHED : 
                $renderer->doc .= $renderer->_xmlEntities($match);
                break;
 
              case DOKU_LEXER_EXIT :
                $renderer->doc .= "</p></div><p>";
                break;
            }
            return true;
        }
        return false;
    }
}
 
//Setup VIM: ex: et ts=4 enc=utf-8 :
?>

Versions

  • 2009-09-16 : Changement du code $match par htmlspecialchars($match) pour éviter l'entrée de code malicieux.
  • 2008-12-15 : Modification du getType() pour permettre l'implémentation du code HTML dans la balise.
  • 2008-12-08 : Première version.

Discussion

fr/plugin/class.txt · Dernière modification: 2009-09-16 11:11 par 217.128.78.18