LéZimages

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, février 17 2010

Transformations graphiques pour Webmail

Introduction

L’application squirrelmail est un ensemble de frames et de tableaux aux couleurs prédéfinies. La feuille de style concerne les différentes polices et leurs tailles que l’on peut choisir. En guise d’exemple, un morceau de la frame gauche est donnée ci-dessous :

  1. <body bgcolor="#f8f8ff" text="#1B2C68" link="#1B2C68" vlink="#1B2C68" alink="#1B2C68">

  2. <table align="left" border="0" cellspacing="0" cellpadding="0" width="99%">

  3. <tr>

  4. <td align="left">

  5. <table border="0" cellspacing="0" cellpadding="0">

  6. <tr>

  7. <td align="center">

  8. <font size="4"><b>Folders</b><br /></font>

  9. <small>

  10. <span style="white-space: nowrap;">Last&nbsp;Refresh:</span><br />

  11. <span style="white-space: nowrap;">Fri,&nbsp;10:15&nbsp;pm</span>

  12. </small>

  13. <br />

  14. <small style="white-space: nowrap;">(<a href="" target="left">Check mail</a>)</small>

  15. </td></tr></table>

  16. ...


En l’absence de feuilles de styles, il est difficile d’intervenir sur la charte graphique du webmail. La seule possibilté est de créer un thème en agissant sur les couleurs de tableaux, des liens et des polices.

Un thème LCS

La première étape consiste à transformer un fichier de thème de squirrelmail en y insérant les couleurs du LCS. Pour mémoire, les cinq couleurs de base du LCS sont :

  • Bleu foncé (#1B2C68) que l’on retrouve sur les boutons de la barre de navigation.
  • Bleu pale (#F8F8FF) qui constitue la couleur de fond d’écran
  • Orange (#FDB218) couleur dans le logo et le cahier de texte
  • Vert (#0D6A1E) aussi dans le logo et le cahier de texte
  • Violet (#9207C2) présente dans le logo et le cdt
On part du fichier default_theme.php dans le répertoire /squirrelmail/themes :

    global $color;
    $color[0]   = ’#dcdcdc’; // (light gray)     TitleBar
    $color[1]   = ’#800000’; // (red)
    $color[2]   = ’#cc0000’; // (light red)      Warning/Error Messages
    $color[3]   = ’#a0b8c8’; // (green-blue)     Left Bar Background
    $color[4]   = ’#ffffff’; // (white)          Normal Background
    $color[5]   = ’#ffffcc’; // (light yellow)   Table Headers
    $color[6]   = ’#000000’; // (black)          Text on left bar
    $color[7]   = ’#0000cc’; // (blue)           Links
    $color[8]   = ’#000000’; // (black)          Normal text
    $color[9]   = ’#ababab’; // (mid-gray)       Darker version of #0
    $color[10]  = ’#666666’; // (dark gray)      Darker version of #9
    $color[11]  = ’#770000’; // (dark red)       Special Folders color
    $color[12]  = ’#ededed’; // (light gray)     Alternate color for message list
    $color[13]  = ’#800000’; // (dark red)       Color for quoted text -- > 1 quote
    $color[14]  = ’#ff0000’; // (red)            Color for quoted text -- >> 2 or more
    $color[15]  = ’#002266’; // (dark blue)      Unselectable folders
    $color[16]  = ’#ff9933’; // (orange)         Highlight color

que l’on enregistre en lcs_theme.php et que l’on modifie ainsi:

    global $color;
    $color[0]   = ’#dcdcdc’; // (light gray)     TitleBar
    $color[1]   = ’#800000’; // (red)
    $color[2]   = ’#cc0000’; // (light red)      Warning/Error Messages
    $color[3]   = ’#f8f8ff’; // (green-blue)     Left Bar Background
    $color[4]   = ’#ffffff’; // (white)          Normal Background
    $color[5]   = ’#E7CD9C’; // (light yellow)   Table Headers
    $color[6]   = ’#1B2C68’; // (black)          Text on left bar
    $color[7]   = ’#0D6A1E’; // (vert)           Links
    $color[8]   = ’#1B2C68’; // (bleu foncé)          Normal text
    $color[9]   = ’#FDB218’; // (orange)       Darker version of #0
    $color[10]  = ’#666666’; // (dark gray)      Darker version of #9
    $color[11]  = ’#0D6A1E’; // (vert)       Special Folders color
    $color[12]  = ’#ededed’; // (light gray)     Alternate color for message list
    $color[13]  = ’#800000’; // (dark red)       Color for quoted text -- > 1 quote
    $color[14]  = ’#ff0000’; // (red)            Color for quoted text -- >> 2 or more
    $color[15]  = ’#002266’; // (dark blue)      Unselectable folders
    $color[16]  = ’#FDB218’; // (orange)         Highlight color

Appliquer le thème au Webmail

Lorsque les modifications sont réalisées, il faut modifier le fichier config.php dans le répertoire /squirrelmail/config/. Les thèmes se trouvent en fin de fichier. Il suffit d’ajouter les deux lignes suivantes :

    $theme[XX][’PATH’] = SM_PATH . ’themes/lcs_theme.php’;
    $theme[XX][’NAME’] = ’LCS’;


en remplaçant XX par le numéro du thème.

Pour que le thème LCS soit choisi par défaut, il faut remplacer dans le même fichier de config le numéro de thème à la ligne située juste avant la liste des thèmes.

$theme_default = XX;

Ci dessous, une capture d’écran du thème LCS :


theme-LCS.png

On peut supprimer la bordure entre les deux frames (gauche et droite).

Cela se fait dans le fichier /squirrelmail/src/webmail.php. En fin de fichier, on a la création des deux frames avec le code suivant:

Code des frames de squirrelmail

Il suffit de remplacer chaque frameborder = 1 par un frameborder = 0 et la bordure ne sera plus là comme le montre la capture suivante.

Thème LCS sans bordure de frame

Les plugins pour squirremail

Squirrelmail permet l’insertion dans le code de plugins. On en trouve un assez grand nombre sur le site officiel de squirrelmail. Après avoir parcouru la doc sur les plugins, voici ce que j’en ai compris et un plugin pour modifier légèrement l’apparence du webmail.

Un plugin se crée dans un répertoire du même nom que votre plugin. Ce répertoire contiendra au minimum 4 fichiers :

  • INSTALL qui explique la procédure d’installation du plugin qui n’est autre qu’un décompression d’une archive du répertoire.
  • README qui donne l’utilité du plugin, l’apport à squirrelmail.
  • version qui donne le numéro de version du plugin
  • setup.php qui contient les fonctions php de votre plugin et les points d’entrée dans le code squirrelmail.

C’est surtout ce dernier fichier qui nous intéressera. Pour que les fonctions développées dans votre plugin agissent, il faut indiquer à quel endroit du code vous devez intervenir. Les entrées dans squirrelmail se font par des balises du type "do_hook()". En regardant les différents fichiers de squirrelmail, on trouve deux ou trois points d’entrées de ce type.

L’initialisation du plugin, se fait comme suit :

  function squirrelmail_plugin_init_"nom_du_plugin"() {
    global $squirrelmail_plugin_hooks;
    $squirrelmail_plugin_hooks[’balise_d’entrée’][’nom_du_plugin’] = ’fonction_associée’;
  }

Prenons comme exemple, un plugin qui ajoute une image dans la frame gauche juste avant l’affichage du menu.

On appelle ce plugin "left_img". Dans le fichier /squirrelmail/src/left_main.php, le point d’entrée est "do_hook(’left_main_before’)".

Le code donnera :

  function squirrelmail_plugin_init_left_img() {
    global $squirrelmail_plugin_hooks;
    $squirrelmail_plugin_hooks[’left_main_before’][’left_img’] = ’left_img_add’;
  }

Ensuite, il faut écrire la fonction associée. Comme je vais juste ajouter une image, cela se ramène juste à écrire un echo d’image. Attention l’image est placé dans le dossier /images du plugin mais elle est appelée depuis le fichier /src/left_main.php !

function left_img_add() {
    echo ’<img src="../plugins/left_img/images/ecureuil.png" alt="un écureuil" style="margin: 0 auto; display: block;" title="un écureuil, fév. 2010" />’;
}

Notre premier plugin est fini, mais il reste à l’activer dans squirrelmail. C’est dans le fichier de config qui se trouve dans /squirrelmail/config/ qu’il se trouve. Il faut repérer la partie "plugin" est ajouter la ligne suivante :

$plugins[2] = ’left_img’;

La capture d’écran ci-dessous montre le résultat que l’on obtient.

Le thème LCS avec un plugin

A suivre

jeudi, février 26 2009

Logos LCS

Test de code

<?php

echo 'coucou';

?>


Fin

Logos SPIP