29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / eZ Publish / Extensions / eZ Pulish : eZ Geshi ou comment coloriser des exemples de codes





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

eZ Pulish : eZ Geshi ou comment coloriser des exemples de codes

Date de publication: le lundi 19 décembre 2011 à 23h37
Dernière modification: par Pascal BOYER le mercredi 21 décembre 2011 à 21h03
« Article précédent: eZ Publish : traduction de eZ Survey
» Article suivant: eZ Publish : bpce_backupbdd - sauvegarde automatique de la base de données

Table des matières

  1. eZ Geshi / ezsh : mettre les exemples de codes en couleur
  2. eZ Geshi : télécharger l'extension
  3. eZ Geshi : installer l'extension
  4. eZ Geshi : activer l'extension
  5. eZ Geshi : accorder les permissions au groupe Anonymous
  6. eZ Geshi : configurer l'extension
  7. eZ Geshi : problèmes rencontrés

Lorsque l'on écrit des articles techniques traitant d'informatique, il n'est pas rare de mettre des portions de codes en exemple. Et quoi de plus explicite qu'un code colorisé (en couleur) en fonction de son langage (PHP, Bash, HTML, Javascript, C++, Cobol, etc...) ?

Par défaut, il est impossible de coloriser du code placé dans la balise <literal> de l'éditeur Online Editor d'eZ Publish. En revanche, l'installation de l'extension eZ Geshi / ezsh de Gaetano Giunta comble cette lacune, et de belle manière.

eZ Geshi ou ezsh : Principe de fonctionnement de l'extension

Une fois installée et correctement configurée, l'extension eZ Geshi propose une très longue liste de classe CSS qu'il suffit d'associer à la balise <literal> de l'éditeur Online Editor d'eZ Publish:

Liste des classes CSS de l'extension eZ Geshi

Fig. 1: La liste des très nombreuses classes CSS proposées par défaut par eZ Geshi

Cette liste sera bien évidemment configurable afin de répondre au souhait ou besoin de chacun.

eZ Geshi : quelques exemples de codes colorisés

[ImageConverterSettings]
ImageConverters[]
ImageConverters[]=ImageMagick
ImageConverters[]=GD
 
[GD]
Name=GD
IsEnabled=false
# Which PHP handler to use for the conversion,
# ezimagegd means to use the ImageGD extension in PHP
Handler=eZImageGDFactory
 
[ImageMagick]
IsEnabled=true
ExecutablePath=/usr/bin/
Executable=convert

Code d'un fichier de configuration INI d'eZ Publish - Classe INI

<?php
/**
 * @copyright Copyright (C) 1999-2011 eZ Systems AS. All rights reserved.
 * @license http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2
 * @version  2011.11
 * @package kernel
 */
 
$Module = $Params['Module'];
$GroupID = false;
if ( isset( $Params["GroupID"] ) )
    $GroupID = $Params["GroupID"];
 
$http = eZHTTPTool::instance();
$http->setSessionVariable( 'FromGroupID', $GroupID );
if ( $http->hasPostVariable( "RemoveButton" ) )
{
    if ( $http->hasPostVariable( 'DeleteIDArray' ) )
    {
        $deleteIDArray = $http->postVariable( 'DeleteIDArray' );
        if ( $deleteIDArray !== null )
        {
            $http->setSessionVariable( 'DeleteClassIDArray', $deleteIDArray );
            $Module->redirectTo( $Module->functionURI( 'removeclass' ) . '/'  . $GroupID . '/' );
        }
    }
}

Code d'un fichier PHP d'eZ Publish - Classe PHP

getPageSize : function () {
 var d = document, w = window, iebody = d.compatMode && d.compatMode != 'BackCompat' 
  ? d.documentElement : d.body; 
 
 
 var b = d.body;
 var xScroll = (w.innerWidth && w.scrollMaxX) 
   ? w.innerWidth + w.scrollMaxX : Math.max(b.scrollWidth, b.offsetWidth),
  yScroll = (w.innerHeight && window.scrollMaxY) 
   ? w.innerHeight + w.scrollMaxY : Math.max(b.scrollHeight, b.offsetHeight),
  pageWidth = hs.ie ? iebody.scrollWidth :
   (d.documentElement.clientWidth || self.innerWidth),
       pageHeight = hs.ie ? Math.max(iebody.scrollHeight, iebody.clientHeight) : 
   (d.documentElement.clientHeight || self.innerHeight);
 
 var width = hs.ie ? iebody.clientWidth : 
   (d.documentElement.clientWidth || self.innerWidth),
  height = hs.ie ? iebody.clientHeight : self.innerHeight;
 
 return {
  pageWidth: Math.max(pageWidth, xScroll),
  pageHeight: Math.max(pageHeight, yScroll),
  width: width,
  height: height,  
  scrollLeft: hs.ie ? iebody.scrollLeft : pageXOffset,
  scrollTop: hs.ie ? iebody.scrollTop : pageYOffset
 }
},

Code Javascript - Classe Javascript

Commentaires