Files
smarty/docs/fr/designers/language-custom-functions.xml

2669 lines
107 KiB
XML
Raw Normal View History

2004-03-28 15:18:13 +00:00
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<chapter id="language.custom.functions">
<title>Fonctions utilisateur</title>
<para>
Smarty est livr<76> avec plusieurs fonctions utilisateurs que vous pouvez
appeler dans vos templates.
</para>
<sect1 id="language.function.assign">
<title>assign</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>var</entry>
<entry>cha<EFBFBD>ne de caract<63>re</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Le nom de la variable assign<67>e</entry>
</row>
<row>
<entry>value</entry>
<entry>cha<EFBFBD>ne de caract<63>re</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>La valeur assign<67>e</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
Assign est utilis<69> pour d<>clarer ou modifier des variables de template.
</para>
<example>
<title>assign</title>
<programlisting>
{assign var="name" value="Bob"}
La valeur de $name est {$name}.
SORTIE:
La valeur de $name est Bob.</programlisting>
</example>
</sect1>
<sect1 id="language.function.counter">
<title>counter</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry>
<entry>cha<EFBFBD>ne de caract<63>re</entry>
<entry>Non</entry>
<entry><emphasis>default</emphasis></entry>
<entry>Le nom du compteur</entry>
</row>
<row>
<entry>start</entry>
<entry>num<EFBFBD>rique</entry>
<entry>Non</entry>
<entry><emphasis>1</emphasis></entry>
<entry>La valeur initiale du compteur</entry>
</row>
<row>
<entry>skip</entry>
<entry>num<EFBFBD>rique</entry>
<entry>Non</entry>
<entry><emphasis>1</emphasis></entry>
<entry>L'intervale du compteur</entry>
</row>
<row>
<entry>direction</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>up</emphasis></entry>
<entry>la direction du compteur (up/down) [compte / d<>compte]</entry>
</row>
<row>
<entry>print</entry>
<entry>bool<EFBFBD>en</entry>
<entry>Non</entry>
<entry><emphasis>true</emphasis></entry>
<entry>S'il faut afficher cette valeur ou non</entry>
</row>
<row>
<entry>assign</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>La variable dans laquelle la valeur du compteur
sera assign<67>e.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
counter affiche un compteur. counter retient la valeur
du compte <20> chaque it<69>ration. Vous pouvez adapter le nombre, l'intervale
et la direction du compteur, ainsi que d<>cider d'afficher ou non
les valeurs. Vous pouvez lancer plusieurs compteurs simultan<61>ment en
leur donnant des noms uniques. Si vous ne donnez pas de nom <20> un
compteur, 'default' sera utilis<69>.
</para>
<para>
Si vous donnez une valeur <20> l'attribut "assign", alors la sortie de la
fonction counter sera assign<67>e <20> la variable de template donn<6E>e plut<75>t
que d'<27>tre directement affich<63>e.
</para>
<example>
<title>counter</title>
<programlisting>
{* initialisation du compteur *}
{counter start=0 skip=2 print=false}
{counter}&lt;br&gt;
{counter}&lt;br&gt;
{counter}&lt;br&gt;
{counter}&lt;br&gt;
SORTIE:
2&lt;br&gt;
4&lt;br&gt;
6&lt;br&gt;
8&lt;br&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.cycle">
<title>cycle</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>default</emphasis></entry>
<entry>Le nom du cycle</entry>
</row>
<row>
<entry>values</entry>
<entry>divers</entry>
<entry>Oui</entry>
<entry><emphasis>N/A</emphasis></entry>
<entry>Les valeurs sur lesquelles boucler, soit une liste
s<>par<61>e par des virgules, (voir l'attribut delimiter),
soit un tableau de valeurs.</entry>
</row>
<row>
<entry>print</entry>
<entry>bool<EFBFBD>en</entry>
<entry>Non</entry>
<entry><emphasis>true</emphasis></entry>
<entry>S'il faut afficher ou non cette valeur</entry>
</row>
<row>
<entry>advance</entry>
<entry>bool<EFBFBD>en</entry>
<entry>Non</entry>
<entry><emphasis>true</emphasis></entry>
<entry>Oui ou non aller <20> la procha<68>ne valeur</entry>
</row>
<row>
<entry>delimiter</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>,</emphasis></entry>
<entry>Le d<>limiteur <20> utiliser dans la liste.</entry>
</row>
<row>
<entry>assign</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>La variable de template dans laquelle la sortie
sera assign<67>e</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
cycle est utilis<69> pour boucler sur un ensemble de valeurs. Tr<54>s pratique
pour alterner entre deux ou plusieurs couleurs dans un tableau,
ou plus g<>n<EFBFBD>ralement pour boucler sur les valeurs d'un tableau.
</para>
<para>
Vous pouvez d<>finir plusieurs "cycle" dans votre template, en leur
donnant des noms uniques (attribut name).
</para>
<para>
Vous pouvez emp<6D>cher la valeur courante de s'afficher en d<>finissant
l'attribut print <20> false. Ce proc<6F>d<EFBFBD> peut <20>tre utile pour discr<63>tement
passer outre une valeur de la liste.
</para>
<para>
L'attribut advance est utilis<69> pour r<>p<EFBFBD>ter une valeur. Lorsque
d<>finit <20> false, le prochain appel de cycle ram<61>nera la m<>me valeur.
</para>
<para>
Si vous d<>finissez l'attribut sp<73>cial "assign", la sortie de la fonction
cycle y sera assign<67>e plut<75>t que d'<27>tre directement affich<63>e.
</para>
<example>
<title>cycle</title>
<programlisting>
{section name=rows loop=$data}
&lt;tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}"&gt;
&lt;td&gt;{$data[rows]}&lt;/td&gt;
&lt;/tr&gt;
{/section}
SORTIE:
&lt;tr bgcolor="#eeeeee"&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr bgcolor="#d0d0d0"&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr bgcolor="#eeeeee"&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
</programlisting>
</example>
</sect1>
<sect1 id="language.function.debug">
<title>debug</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>output</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>html</emphasis></entry>
<entry>Type de sortie, html ou javascript</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
{debug} am<61>ne la console de d<>bogage sur la page. Fonctionne
quelle que soit la valeur du param<61>tre <link
linkend="chapter.debugging.console">debug</link> de Smarty.
Comme ce dernier est appel<65> lors de l'ex<65>cution, il n'est capable
d'afficher que les variables assign<67>es au template, et non
les templates en cours d'utilisation. Toutefois, vous voyez toutes
les variables disponibles pour le template courant.
</para>
</sect1>
<sect1 id="language.function.eval">
<title>eval</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>var</entry>
<entry>mixed</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>variable (ou cha<68>ne de caract<63>res) <20> <20>valuer</entry>
</row>
<row>
<entry>assign</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Le nom de la variable PHP dans laquelle la sortie
sera assign<67>e</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
eval <20>value une variable comme si cette derni<6E>re <20>tait un template.
Peut <20>tre utile pour embarquer des balises de templates ou des variables
de template dans des variables ou des balises/variables dans des
variables de fichiers de configuration.
</para>
<para>
Si vous d<>finissez l'attribut "assign", la sortie sera assign<67>e <20> la
variable de template d<>sign<67>e plut<75>t que d'<27>tre affich<63>e dans le
template.
</para>
<note>
<title>Note technique</title>
<para>
Les variables <20>valu<6C>es sont trait<69>es de la m<>me fa<66>on que les templates.
Elles suivent les m<>mes r<>gles de traitement et de s<>curit<69>, comme si
elles <20>taient r<>ellement des templates.
</para>
</note>
<note>
<title>Note technique</title>
<para>
Les variables <20>valu<6C>es sont compil<69>es <20> chaque invocation, et la version
compil<69>e n'est pas sauvegard<72>e ! Toutefois, si le cache est activ<69>,
la sortie sera plac<61>e en cache avec le reste du template.
</para>
</note>
<example>
<title>eval</title>
<programlisting>
setup.conf
----------
emphstart = &lt;b&gt;
emphend = &lt;/b&gt;
titre = Bienvenue sur la homepage de {$company} !
ErrorVille = Vous devez sp<73>cifier un nom de {#emphstart#}ville{#emphend#}.
ErrorDept = Vous devez sp<73>cifier un {#emphstart#}d<>partement{#emphend#}.
index.tpl
---------
{config_load file="setup.conf"}
{eval var=$foo}
{eval var=#titre#}
{eval var=#ErrorVille#}
{eval var=#ErrorDept# assign="state_error"}
{$state_error}
SORTIE:
Ceci est le contenu de foo.
Bienvenue sur la homepage de FictifLand.
Vous devez sp<73>cifier un nom de &lt;b&gt;ville&lt;/b&gt;.
Vous devez sp<73>cifier un &lt;b&gt;d<EFBFBD>partement&lt;/b&gt;.
</programlisting>
</example>
</sect1>
<sect1 id="language.function.fetch">
<title>fetch</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>file</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>le fichier, site http ou ftp <20> r<>cup<75>rer</entry>
</row>
<row>
<entry>assign</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>le nom de la variable PHP dans laquelle la sortie
sera assign<67>e plut<75>t que d'<27>tre directement affich<63>e.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
fetch est utilis<69> pour r<>cup<75>rer des fichiers depuis le syst<73>me de
fichier local, depuis un serveur http ou ftp, et en afficher le contenu.
Si le nom du fichier commence par "http://", la page internet sera
r<>cup<75>r<EFBFBD>e, puis affich<63>e. Si le nom du fichier commence par "ftp://",
le fichier sera r<>cup<75>r<EFBFBD> depuis le serveur ftp, et affich<63>.
Pour les fichiers du syst<73>me local, le chemin doit <20>tre absolu ou
relatif au chemin d'ex<65>cution du script PHP.
</para>
<para>
Vous pouvez sp<73>cifier l'attribut optionnel <emphasis>assign</emphasis>
qui d<>fini une variable de template dans laquelle la sortie
sera stock<63>e plut<75>t qude d'<27>tre affich<63>e (nouveau dans Smarty 1.5.0).
</para>
<note>
<title>Note technique</title>
<para>Ne supporte pas les redirections http. Assurez vous d'inclure les
slash de fin sur votre page web si n<>cessaire.
</para>
</note>
<note>
<title>Note technique</title>
<para>
Si la s<>curit<69> est activ<69>e, vous ne pourez r<>cup<75>rer les
fichiers du syst<73>me local que s'ils sont situ<74>s dans l'un des
r<>pertoires s<>curis<69> ($secure_dir).
</para>
</note>
<example>
<title>fetch</title>
<programlisting>
{* Inclus du javascript dans votre template *}
{fetch file="/export/httpd/www.domain.com/docs/navbar.js"}
{* r<>cup<75>re les informations m<>t<EFBFBD>o d'un autre site sur votre page *}
{fetch file="http://www.myweather.com/68502/"}
{* r<>cup<75>re les titres depuis un fichier ftp *}
{fetch file="ftp://user:password@ftp.domain.com/path/to/currentheadlines.txt"}
{* assigne le contenu r<>cup<75>r<EFBFBD> <20> une variable de template *}
{fetch file="http://www.myweather.com/68502/" assign="weather"}
{if $weather ne ""}
&lt;b&gt;{$weather}&lt;/b&gt;
{/if}</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.checkboxes">
<title>html_checkboxes</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>checkbox</emphasis></entry>
<entry>Nom de la liste de cases <20> cocher</entry>
</row>
<row>
<entry>values</entry>
<entry>array</entry>
<entry>Oui, <20> moins que vous n'utilisiez l'attribut
option</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Un tableau de valeurs pour les cases <20>
cocher</entry>
</row>
<row>
<entry>output</entry>
<entry>array</entry>
<entry>Oui, <20> moins que vous n'utilisiez l'attribut
option</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Un tableau de sortie pour les cases <20> cocher</entry>
</row>
<row>
<entry>checked</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Les <20>l<EFBFBD>ments coch<63>s de la liste</entry>
</row>
<row>
<entry>options</entry>
<entry>associative array</entry>
<entry>Oui, <20> moins que vous n'utilisiez values et
output</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Un tableau associatif de valeurs et
sorties</entry>
</row>
<row>
<entry>separator</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>cha<EFBFBD>ne de caract<63>re pour s<>parer chaque case
<20> cocher</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
html_checkboxes est une fonction utilisateur qui cr<63>e un groupe de
cases <20> cocher avec les donn<6E>es fournies. Elle prend en compte la liste
des <20>l<EFBFBD>ments s<>lectionn<6E>s par d<>faut. Les attributs requis sont
values et output, <20> moins que vous n'utilisiez options <20> la place.
La sortie g<>n<EFBFBD>r<EFBFBD>e est compatible XHTML.
</para>
<para>
Tous les param<61>tres qui ne sont pas list<73>s ci-dessus sont affich<63>s
en tant que paires nom/valeur dans chaque balise &lt;input&gt; cr<63>e.
</para>
<example>
<title>html_checkboxes</title>
<programlisting>
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty-&gt;assign('id_client', array(1000,1001,1002,1003));
$smarty-&gt;assign('cust_names', array('Joe Schmoe','Jack Smith','Jane
Johnson','Charlie Brown'));
$smarty-&gt;assign('client_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
{html_checkboxes values=$id_client checked=$client_id output=$nom_client separator="&lt;br /&gt;"}
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty-&gt;assign('cust_checkboxes', array(
1001 =&gt; 'Joe Schmoe',
1002 =&gt; 'Jack Smith',
1003 =&gt; 'Jane Johnson','Charlie Brown'));
$smarty-&gt;assign('client_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
{html_checkboxes name="id" options=$cust_checkboxes checked=$client_id separator="&lt;br /&gt;"}
SORTIE: (pour les deux exemples)
&lt;input type="checkbox" name="id[]" value="1000"&gt;Joe Schmoe&lt;br /&gt;
&lt;input type="checkbox" name="id[]" value="1001" checked="checked"&gt;&lt;br /&gt;
&lt;input type="checkbox" name="id[]" value="1002"&gt;Jane Johnson&lt;br /&gt;
&lt;input type="checkbox" name="id[]" value="1003"&gt;Charlie Brown&lt;br /&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.image">
<title>html_image</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>file</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>nom/chemin des images</entry>
</row>
<row>
<entry>border</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>0</emphasis></entry>
<entry>Bordure de l'image</entry>
</row>
<row>
<entry>height</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>Hauteur de l'image actuelle</emphasis></entry>
<entry>Hauteur de l'image <20> afficher</entry>
</row>
<row>
<entry>width</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>Longueur de l'image actuelle</emphasis></entry>
<entry>Longueur de l'image <20> afficher</entry>
</row>
<row>
<entry>basedir</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>non</entry>
<entry><emphasis>racine du serveur web</emphasis></entry>
<entry>r<EFBFBD>pertoire depuis lequel baser le calcul des
chemins relatifs</entry>
</row>
<row>
<entry>link</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>lien sur lequel l'image pointe</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
html_image est une fonction utilisateur qui g<>n<EFBFBD>re la balise
HTML pour une image. La hauteur et la longueur de l'image sont calcul<75>s
automatiquement depuis le fichier image si aucune n'est sp<73>cifi<66>e.
</para>
<para>
basedir est le r<>pertoire de base depuis lequel seront calcul<75>s les
chemins relatifs. Si non sp<73>cifi<66>, la racine du serveur web est utilis<69>
(variable d'environnement DOCUMENT_ROOT). Si la s<>curit<69> est activ<69>e,
l'image doit se situer dans un r<>pertoire s<>curis<69>.
</para>
<para>
link est la valeur href <20> laquelle lier l'image. Si link est d<>fini,
une balise &lt;a href="VALEURLINK"&gt;&lt;a&gt; est plac<61>e autour de
l'image.
</para>
<note>
<title>Note technique</title>
<para>
html_image requiert un acc<63>s au disque dur pour lire l'image et
calculer ses dimensions. Si vous n'utilisez pas un cache, il
est g<>n<EFBFBD>ralement pr<70>f<EFBFBD>rable d'<27>viter d'utiliser html_image
et de laisser les balises images statiques pour de meilleures
performances.
</para>
</note>
<example>
<title>html_image</title>
<programlisting>
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty-&gt;display('index.tpl');
index.tpl:
{image file="pumpkin.jpg"}
{image file="/path/from/docroot/pumpkin.jpg"}
{image file="../path/relative/to/currdir/pumpkin.jpg"}
SORTIE: (possible)
&lt;img src="pumpkin.jpg" border="0" width="44" height="68"&gt;
&lt;img src="/path/under/docroot/pumpkin.jpg" border="0" width="44" height="68"&gt;
&lt;img src="../path/relative/to/currdir/pumpkin.jpg" border="0" width="44" height="68"&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.options">
<title>html_options</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>values</entry>
<entry>array</entry>
<entry>Oui, <20> moins que vous n'utilisiez
l'attribut options</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>un tableau de valeurs pour les listes
d<>roulantes</entry>
</row>
<row>
<entry>output</entry>
<entry>array</entry>
<entry>Oui, <20> moins que vous n'utilisiez
l'attribut options</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Un tableau de libell<6C>s pour la liste
d<>roulante</entry>
</row>
<row>
<entry>selected</entry>
<entry>cha<EFBFBD>ne de caract<63>res/tableau</entry>
<entry>Non</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Les <20>l<EFBFBD>ments s<>lectionn<6E>s</entry>
</row>
<row>
<entry>options</entry>
<entry>Tableau associatif</entry>
<entry>Oui, <20> moins que vous n'utilisiez option
et values</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Un tableau associatif valeur / libell<6C></entry>
</row>
<row>
<entry>name</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Nom du goupe d'options</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
html_options est une fonction utilisateur qui cr<63>e un groupe d'options
avec les donn<6E>es fournies. Elle prend en charge les <20>l<EFBFBD>ments
s<>lectionn<6E>s par d<>faut. Les attributs requis sont values et output,
<09> moins que vous n'utilisiez options <20> la place.
</para>
<para>
Si la valeur donn<6E>e est un tableau, elle sera trait<69>e comme un
OPTGROUP html, et affich<63>e. La r<>cursivit<69> est support<72>e avec
OPTGROUP. La sortie est compatible XHTML.
</para>
<para>
Si l'attribut optionnel <emphasis>name</emphasis> est donn<6E>, les
balises &lt;select name="groupname"&gt;&lt;/select&gt; entoureront la
liste d'options.
</para>
<para>
Tous les param<61>tres qui ne sont pas dans la liste ci-dessus sont
affich<63>s en tant que paires nom / valeur. Ils sont ignor<6F>s si
le param<61>tre optionnel <emphasis>name</emphasis> n'est pas donn<6E>.
</para>
<example>
<title>html_options</title>
<programlisting>
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty-&gt;assign('id_client', array(1000,1001,1002,1003));
$smarty-&gt;assign('nom_client', array('Joe Schmoe','Jack Smith','Jane
Johnson','Charlie Brown'));
$smarty-&gt;assign('client_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
&lt;select name=client_id&gt;
{html_options values=$id_client selected=$client_id output=$nom_client}
&lt;/select&gt;
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty-&gt;assign('cust_options', array(
1001 =&gt; 'Joe Schmoe',
1002 =&gt; 'Jack Smith',
1003 =&gt; 'Jane Johnson',
1004 =&gt; 'Charlie Brown'));
$smarty-&gt;assign('client_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
&lt;select name=client_id&gt;
{html_options options=$cust_options selected=$client_id}
&lt;/select&gt;
SORTIE: (valable pour les deux exemples)
&lt;select name=client_id&gt;
&lt;option value="1000"&gt;Joe Schmoe&lt;/option&gt;
&lt;option value="1001" selected="selected"&gt;Jack Smith&lt;/option&gt;
&lt;option value="1002"&gt;Jane Johnson&lt;/option&gt;
&lt;option value="1003"&gt;Charlie Brown&lt;/option&gt;
&lt;/select&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.radios">
<title>html_radios</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>radio</emphasis></entry>
<entry>nom de la liste boutons radio</entry>
</row>
<row>
<entry>values</entry>
<entry>tableau</entry>
<entry>Oui, <20> moins que vous n'utilisiez l'attribut
options</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Le tableau des valeurs des boutons radio</entry>
</row>
<row>
<entry>output</entry>
<entry>tableau</entry>
<entry>Oui, <20> moins que vous n'utilisiez l'attribut
options</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Un tableau de libell<6C>s pour les boutons radio</entry>
</row>
<row>
<entry>checked</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>Les boutons radios s<>lectionn<6E>s</entry>
</row>
<row>
<entry>options</entry>
<entry>tableau associatif</entry>
<entry>Oui, <20> moins que vous n'utilisiez values
et outputs</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>un tableau associatif valeurs / libell<6C>s</entry>
</row>
<row>
<entry>separator</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>cha<EFBFBD>ne de s<>paration <20> placer entre les
boutons radio</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
html_radio est une fonction utilisateur qui cr<63>e des boutons radio
html <20> partir des donn<6E>es fournies. Elle prend en charge les <20>l<EFBFBD>ments
s<>lectionn<6E>s par d<>faut. Les attributs requis sont values et output,
<20> moins que vous n'utilisiez options <20> la place. La sortie g<>n<EFBFBD>r<EFBFBD>e est
compatible XHTML.
</para>
<para>
Tous les param<61>tres qui ne sont pas dans la liste ci dessus sont
affich<63>s en tant que paires nom / valeur dans chaque balise &lt;input&gt;
cr<63><72>e.
</para>
<example>
<title>html_radios</title>
<programlisting>
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty-&gt;assign('id_client', array(1000,1001,1002,1003));
$smarty-&gt;assign('nom_client', array('Joe Schmoe','Jack Smith','Jane
Johnson','Charlie Brown'));
$smarty-&gt;assign('client_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
{html_radios values=$id_client checked=$client_id output=$nom_client separator="&lt;br /&gt;"}
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty-&gt;assign('cust_radios', array(
1001 =&gt; 'Joe Schmoe',
1002 =&gt; 'Jack Smith',
1003 =&gt; 'Jane Johnson',
1004 =&gt; 'Charlie Brown'));
$smarty-&gt;assign('client_id', 1001);
$smarty-&gt;display('index.tpl');
index.tpl:
{html_radios name="id" options=$cust_radios checked=$client_id separator="&lt;br /&gt;"}
SORTIE: (both examples)
&lt;input type="radio" name="id[]" value="1000"&gt;Joe Schmoe&lt;br /&gt;
&lt;input type="radio" name="id[]" value="1001" checked="checked"&gt;&lt;br /&gt;
&lt;input type="radio" name="id[]" value="1002"&gt;Jane Johnson&lt;br /&gt;
&lt;input type="radio" name="id[]" value="1003"&gt;Charlie Brown&lt;br /&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.select.date">
<title>html_select_date</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>prefix</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>Date_</entry>
<entry>Avec quoi pr<70>fixer le nom de variable</entry>
</row>
<row>
<entry>time</entry>
<entry>timestamp/YYYY-MM-DD</entry>
<entry>Non</entry>
<entry>la date courante au format unix YYYY-MM-DD
format</entry>
<entry>la date / heure <20> utiliser</entry>
</row>
<row>
<entry>start_year</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>current year</entry>
<entry>La premi<6D>re ann<6E>e dans la liste d<>roulante, soit
le num<75>ro de l'ann<6E>e, soit un nombre relatif <20> l'ann<6E>e
courante (+/- N).</entry>
</row>
<row>
<entry>end_year</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>m<EFBFBD>me chose que start_year</entry>
<entry>La derni<6E>re ann<6E>e dans la liste d<>roulante, soit
le num<75>ro de l'ann<6E>e, soit un nombre relatif <20> l'ann<6E>e
courante (+/- N).</entry>
</row>
<row>
<entry>display_days</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry>true</entry>
<entry>Si l'on souhaite afficher les jours ou pas.</entry>
</row>
<row>
<entry>display_months</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry>true</entry>
<entry>Si l'on souhaite afficher les mois ou pas.</entry>
</row>
<row>
<entry>display_years</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry>true</entry>
<entry>Si l'on souhaite afficher les ann<6E>es ou pas.</entry>
</row>
<row>
<entry>month_format</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>%B</entry>
<entry>le format du mois (strftime)</entry>
</row>
<row>
<entry>day_format</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>%02d</entry>
<entry>Le format du jour (sprintf)</entry>
</row>
<row>
<entry>day_value_format</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>%d</entry>
<entry>le format de la valeur du jour (sprintf)</entry>
</row>
<row>
<entry>year_as_text</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry>false</entry>
<entry>S'il faut afficher l'ann<6E>e au format texte</entry>
</row>
<row>
<entry>reverse_years</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry>false</entry>
<entry>Affiche les ann<6E>es dans l'ordre inverse</entry>
</row>
<row>
<entry>field_array</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>
Si un nom est donn<6E>, la liste d<>roulante sera affich<63>e
de telle fa<66>on que les r<>sultats seront retourn<72>s <20> PHP
sous la forme nom[Day] (jour), nom[Year] (ann<6E>e),
nom[Month] (Mois).
</entry>
</row>
<row>
<entry>day_size</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute un attribut size <20> la liste
d<>roulante des jours.</entry>
</row>
<row>
<entry>month_size</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute un attribut size <20> la liste
d<>roulante des mois.</entry>
</row>
<row>
<entry>year_size</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute un attribut size <20> la liste
d<>roulante des ann<6E>es.</entry>
</row>
<row>
<entry>all_extra</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute des attributs suppl<70>mentaires <20>
toutes les balises select/input.</entry>
</row>
<row>
<entry>day_extra</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute des attributs suppl<70>mentaires aux balises
select/input du jour.</entry>
</row>
<row>
<entry>month_extra</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute des attributs suppl<70>mentaires aux balises
select/input du mois.</entry>
</row>
<row>
<entry>year_extra</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute des attributs suppl<70>mentaires aux balises
select/input de l'ann<6E>e.</entry>
</row>
<row>
<entry>field_order</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>MDY</entry>
<entry>L'ordre dans lequel afficher les
listes d<>roulantes.</entry>
</row>
<row>
<entry>field_separator</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>\n</entry>
<entry>la cha<68>ne de caract<63>res affich<63>e entre les
diff<66>rents champs.</entry>
</row>
<row>
<entry>month_value_format</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>%m</entry>
<entry>Le format strftime de la valeur des mois, par d<>faut %m
pour les num<75>ros.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
html_select_date est une fonction utilisateur qui cr<63>e des listes
d<>roulantes pour saisir la date. Elle peut afficher n'importe quel
jour, mois et ann<6E>e.
</para>
<example>
<title>html_select_date</title>
<programlisting>
{html_select_date}
SORTIE:
&lt;select name="Date_Month"&gt;
&lt;option value="1"&gt;January&lt;/option&gt;
&lt;option value="2"&gt;February&lt;/option&gt;
&lt;option value="3"&gt;March&lt;/option&gt;
&lt;option value="4"&gt;April&lt;/option&gt;
&lt;option value="5"&gt;May&lt;/option&gt;
&lt;option value="6"&gt;June&lt;/option&gt;
&lt;option value="7"&gt;July&lt;/option&gt;
&lt;option value="8"&gt;August&lt;/option&gt;
&lt;option value="9"&gt;September&lt;/option&gt;
&lt;option value="10"&gt;October&lt;/option&gt;
&lt;option value="11"&gt;November&lt;/option&gt;
&lt;option value="12" selected&gt;December&lt;/option&gt;
&lt;/select&gt;
&lt;select name="Date_Day"&gt;
&lt;option value="1"&gt;01&lt;/option&gt;
&lt;option value="2"&gt;02&lt;/option&gt;
&lt;option value="3"&gt;03&lt;/option&gt;
&lt;option value="4"&gt;04&lt;/option&gt;
&lt;option value="5"&gt;05&lt;/option&gt;
&lt;option value="6"&gt;06&lt;/option&gt;
&lt;option value="7"&gt;07&lt;/option&gt;
&lt;option value="8"&gt;08&lt;/option&gt;
&lt;option value="9"&gt;09&lt;/option&gt;
&lt;option value="10"&gt;10&lt;/option&gt;
&lt;option value="11"&gt;11&lt;/option&gt;
&lt;option value="12"&gt;12&lt;/option&gt;
&lt;option value="13" selected&gt;13&lt;/option&gt;
&lt;option value="14"&gt;14&lt;/option&gt;
&lt;option value="15"&gt;15&lt;/option&gt;
&lt;option value="16"&gt;16&lt;/option&gt;
&lt;option value="17"&gt;17&lt;/option&gt;
&lt;option value="18"&gt;18&lt;/option&gt;
&lt;option value="19"&gt;19&lt;/option&gt;
&lt;option value="20"&gt;20&lt;/option&gt;
&lt;option value="21"&gt;21&lt;/option&gt;
&lt;option value="22"&gt;22&lt;/option&gt;
&lt;option value="23"&gt;23&lt;/option&gt;
&lt;option value="24"&gt;24&lt;/option&gt;
&lt;option value="25"&gt;25&lt;/option&gt;
&lt;option value="26"&gt;26&lt;/option&gt;
&lt;option value="27"&gt;27&lt;/option&gt;
&lt;option value="28"&gt;28&lt;/option&gt;
&lt;option value="29"&gt;29&lt;/option&gt;
&lt;option value="30"&gt;30&lt;/option&gt;
&lt;option value="31"&gt;31&lt;/option&gt;
&lt;/select&gt;
&lt;select name="Date_Year"&gt;
&lt;option value="2001" selected&gt;2001&lt;/option&gt;
&lt;/select&gt;</programlisting>
</example>
<example>
<title>html_select_date</title>
<programlisting>
{* le d<>marage et la fin de l'ann<6E>e peuvent <20>tre relatif <20> l'ann<6E>e courante *}
{html_select_date prefix="StartDate" time=$time start_year="-5" end_year="+1" display_days=false}
SORTIE: (current year is 2000)
&lt;select name="StartDateMonth"&gt;
&lt;option value="1"&gt;January&lt;/option&gt;
&lt;option value="2"&gt;February&lt;/option&gt;
&lt;option value="3"&gt;March&lt;/option&gt;
&lt;option value="4"&gt;April&lt;/option&gt;
&lt;option value="5"&gt;May&lt;/option&gt;
&lt;option value="6"&gt;June&lt;/option&gt;
&lt;option value="7"&gt;July&lt;/option&gt;
&lt;option value="8"&gt;August&lt;/option&gt;
&lt;option value="9"&gt;September&lt;/option&gt;
&lt;option value="10"&gt;October&lt;/option&gt;
&lt;option value="11"&gt;November&lt;/option&gt;
&lt;option value="12" selected&gt;December&lt;/option&gt;
&lt;/select&gt;
&lt;select name="StartDateYear"&gt;
&lt;option value="1999"&gt;1995&lt;/option&gt;
&lt;option value="1999"&gt;1996&lt;/option&gt;
&lt;option value="1999"&gt;1997&lt;/option&gt;
&lt;option value="1999"&gt;1998&lt;/option&gt;
&lt;option value="1999"&gt;1999&lt;/option&gt;
&lt;option value="2000" selected&gt;2000&lt;/option&gt;
&lt;option value="2001"&gt;2001&lt;/option&gt;
&lt;/select&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.select.time">
<title>html_select_time</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>prefix</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>Time_</entry>
<entry>Par quoi pr<70>fixer la variable.</entry>
</row>
<row>
<entry>time</entry>
<entry>timestamp</entry>
<entry>Non</entry>
<entry>current time</entry>
<entry>Quel jour / heure utiliser.</entry>
</row>
<row>
<entry>display_hours</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry>true</entry>
<entry>S'il faut afficher l'heure.</entry>
</row>
<row>
<entry>display_minutes</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry>true</entry>
<entry>S'il faut afficher les minutes.</entry>
</row>
<row>
<entry>display_seconds</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry>true</entry>
<entry>S'il faut afficher les secondes.</entry>
</row>
<row>
<entry>display_meridian</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry>true</entry>
<entry>S'il faut afficher le m<>ridian (am/pm)</entry>
</row>
<row>
<entry>use_24_hours</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry>true</entry>
<entry>S'il faut utiliser l'horloge 24 heure.</entry>
</row>
<row>
<entry>minute_interval</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry>1</entry>
<entry>Intervalle des minutes dans la liste
d<>roulante</entry>
</row>
<row>
<entry>second_interval</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry>1</entry>
<entry>Intervalle des secondes dans la liste
d<>roulante</entry>
</row>
<row>
<entry>field_array</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>n/a</entry>
<entry>Nom du tableau dans lequel les valeures
seront stock<63>es.</entry>
</row>
<row>
<entry>all_extra</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute des attributs suppl<70>mentaires aux balises
select / input.</entry>
</row>
<row>
<entry>hour_extra</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute des attributs suppl<70>mentaires aux balises
select / input de l'heure.</entry>
</row>
<row>
<entry>minute_extra</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute des attributs suppl<70>mentaires aux balises
select / input des minutes.</entry>
</row>
<row>
<entry>second_extra</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute des attributs suppl<70>mentaires aux balises
select / input des secondes.</entry>
</row>
<row>
<entry>meridian_extra</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry>null</entry>
<entry>Ajoute des attributs suppl<70>mentaires aux balises
select / input du m<>ridian.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
html_select_time est une fonction utilisateur qui cr<63>e des listes
d<>roulantes pour saisir une heure. Elle prends en charge l'heure,
les minutes, les secondes et le m<>ridian.
</para>
<example>
<title>html_select_time</title>
<programlisting>
{html_select_time use_24_hours=true}
SORTIE:
&lt;select name="Time_Hour"&gt;
&lt;option value="00"&gt;00&lt;/option&gt;
&lt;option value="01"&gt;01&lt;/option&gt;
&lt;option value="02"&gt;02&lt;/option&gt;
&lt;option value="03"&gt;03&lt;/option&gt;
&lt;option value="04"&gt;04&lt;/option&gt;
&lt;option value="05"&gt;05&lt;/option&gt;
&lt;option value="06"&gt;06&lt;/option&gt;
&lt;option value="07"&gt;07&lt;/option&gt;
&lt;option value="08"&gt;08&lt;/option&gt;
&lt;option value="09" selected&gt;09&lt;/option&gt;
&lt;option value="10"&gt;10&lt;/option&gt;
&lt;option value="11"&gt;11&lt;/option&gt;
&lt;option value="12"&gt;12&lt;/option&gt;
&lt;option value="13"&gt;13&lt;/option&gt;
&lt;option value="14"&gt;14&lt;/option&gt;
&lt;option value="15"&gt;15&lt;/option&gt;
&lt;option value="16"&gt;16&lt;/option&gt;
&lt;option value="17"&gt;17&lt;/option&gt;
&lt;option value="18"&gt;18&lt;/option&gt;
&lt;option value="19"&gt;19&lt;/option&gt;
&lt;option value="20"&gt;20&lt;/option&gt;
&lt;option value="21"&gt;21&lt;/option&gt;
&lt;option value="22"&gt;22&lt;/option&gt;
&lt;option value="23"&gt;23&lt;/option&gt;
&lt;/select&gt;
&lt;select name="Time_Minute"&gt;
&lt;option value="00"&gt;00&lt;/option&gt;
&lt;option value="01"&gt;01&lt;/option&gt;
&lt;option value="02"&gt;02&lt;/option&gt;
&lt;option value="03"&gt;03&lt;/option&gt;
&lt;option value="04"&gt;04&lt;/option&gt;
&lt;option value="05"&gt;05&lt;/option&gt;
&lt;option value="06"&gt;06&lt;/option&gt;
&lt;option value="07"&gt;07&lt;/option&gt;
&lt;option value="08"&gt;08&lt;/option&gt;
&lt;option value="09"&gt;09&lt;/option&gt;
&lt;option value="10"&gt;10&lt;/option&gt;
&lt;option value="11"&gt;11&lt;/option&gt;
&lt;option value="12"&gt;12&lt;/option&gt;
&lt;option value="13"&gt;13&lt;/option&gt;
&lt;option value="14"&gt;14&lt;/option&gt;
&lt;option value="15"&gt;15&lt;/option&gt;
&lt;option value="16"&gt;16&lt;/option&gt;
&lt;option value="17"&gt;17&lt;/option&gt;
&lt;option value="18"&gt;18&lt;/option&gt;
&lt;option value="19"&gt;19&lt;/option&gt;
&lt;option value="20" selected&gt;20&lt;/option&gt;
&lt;option value="21"&gt;21&lt;/option&gt;
&lt;option value="22"&gt;22&lt;/option&gt;
&lt;option value="23"&gt;23&lt;/option&gt;
&lt;option value="24"&gt;24&lt;/option&gt;
&lt;option value="25"&gt;25&lt;/option&gt;
&lt;option value="26"&gt;26&lt;/option&gt;
&lt;option value="27"&gt;27&lt;/option&gt;
&lt;option value="28"&gt;28&lt;/option&gt;
&lt;option value="29"&gt;29&lt;/option&gt;
&lt;option value="30"&gt;30&lt;/option&gt;
&lt;option value="31"&gt;31&lt;/option&gt;
&lt;option value="32"&gt;32&lt;/option&gt;
&lt;option value="33"&gt;33&lt;/option&gt;
&lt;option value="34"&gt;34&lt;/option&gt;
&lt;option value="35"&gt;35&lt;/option&gt;
&lt;option value="36"&gt;36&lt;/option&gt;
&lt;option value="37"&gt;37&lt;/option&gt;
&lt;option value="38"&gt;38&lt;/option&gt;
&lt;option value="39"&gt;39&lt;/option&gt;
&lt;option value="40"&gt;40&lt;/option&gt;
&lt;option value="41"&gt;41&lt;/option&gt;
&lt;option value="42"&gt;42&lt;/option&gt;
&lt;option value="43"&gt;43&lt;/option&gt;
&lt;option value="44"&gt;44&lt;/option&gt;
&lt;option value="45"&gt;45&lt;/option&gt;
&lt;option value="46"&gt;46&lt;/option&gt;
&lt;option value="47"&gt;47&lt;/option&gt;
&lt;option value="48"&gt;48&lt;/option&gt;
&lt;option value="49"&gt;49&lt;/option&gt;
&lt;option value="50"&gt;50&lt;/option&gt;
&lt;option value="51"&gt;51&lt;/option&gt;
&lt;option value="52"&gt;52&lt;/option&gt;
&lt;option value="53"&gt;53&lt;/option&gt;
&lt;option value="54"&gt;54&lt;/option&gt;
&lt;option value="55"&gt;55&lt;/option&gt;
&lt;option value="56"&gt;56&lt;/option&gt;
&lt;option value="57"&gt;57&lt;/option&gt;
&lt;option value="58"&gt;58&lt;/option&gt;
&lt;option value="59"&gt;59&lt;/option&gt;
&lt;/select&gt;
&lt;select name="Time_Second"&gt;
&lt;option value="00"&gt;00&lt;/option&gt;
&lt;option value="01"&gt;01&lt;/option&gt;
&lt;option value="02"&gt;02&lt;/option&gt;
&lt;option value="03"&gt;03&lt;/option&gt;
&lt;option value="04"&gt;04&lt;/option&gt;
&lt;option value="05"&gt;05&lt;/option&gt;
&lt;option value="06"&gt;06&lt;/option&gt;
&lt;option value="07"&gt;07&lt;/option&gt;
&lt;option value="08"&gt;08&lt;/option&gt;
&lt;option value="09"&gt;09&lt;/option&gt;
&lt;option value="10"&gt;10&lt;/option&gt;
&lt;option value="11"&gt;11&lt;/option&gt;
&lt;option value="12"&gt;12&lt;/option&gt;
&lt;option value="13"&gt;13&lt;/option&gt;
&lt;option value="14"&gt;14&lt;/option&gt;
&lt;option value="15"&gt;15&lt;/option&gt;
&lt;option value="16"&gt;16&lt;/option&gt;
&lt;option value="17"&gt;17&lt;/option&gt;
&lt;option value="18"&gt;18&lt;/option&gt;
&lt;option value="19"&gt;19&lt;/option&gt;
&lt;option value="20"&gt;20&lt;/option&gt;
&lt;option value="21"&gt;21&lt;/option&gt;
&lt;option value="22"&gt;22&lt;/option&gt;
&lt;option value="23" selected&gt;23&lt;/option&gt;
&lt;option value="24"&gt;24&lt;/option&gt;
&lt;option value="25"&gt;25&lt;/option&gt;
&lt;option value="26"&gt;26&lt;/option&gt;
&lt;option value="27"&gt;27&lt;/option&gt;
&lt;option value="28"&gt;28&lt;/option&gt;
&lt;option value="29"&gt;29&lt;/option&gt;
&lt;option value="30"&gt;30&lt;/option&gt;
&lt;option value="31"&gt;31&lt;/option&gt;
&lt;option value="32"&gt;32&lt;/option&gt;
&lt;option value="33"&gt;33&lt;/option&gt;
&lt;option value="34"&gt;34&lt;/option&gt;
&lt;option value="35"&gt;35&lt;/option&gt;
&lt;option value="36"&gt;36&lt;/option&gt;
&lt;option value="37"&gt;37&lt;/option&gt;
&lt;option value="38"&gt;38&lt;/option&gt;
&lt;option value="39"&gt;39&lt;/option&gt;
&lt;option value="40"&gt;40&lt;/option&gt;
&lt;option value="41"&gt;41&lt;/option&gt;
&lt;option value="42"&gt;42&lt;/option&gt;
&lt;option value="43"&gt;43&lt;/option&gt;
&lt;option value="44"&gt;44&lt;/option&gt;
&lt;option value="45"&gt;45&lt;/option&gt;
&lt;option value="46"&gt;46&lt;/option&gt;
&lt;option value="47"&gt;47&lt;/option&gt;
&lt;option value="48"&gt;48&lt;/option&gt;
&lt;option value="49"&gt;49&lt;/option&gt;
&lt;option value="50"&gt;50&lt;/option&gt;
&lt;option value="51"&gt;51&lt;/option&gt;
&lt;option value="52"&gt;52&lt;/option&gt;
&lt;option value="53"&gt;53&lt;/option&gt;
&lt;option value="54"&gt;54&lt;/option&gt;
&lt;option value="55"&gt;55&lt;/option&gt;
&lt;option value="56"&gt;56&lt;/option&gt;
&lt;option value="57"&gt;57&lt;/option&gt;
&lt;option value="58"&gt;58&lt;/option&gt;
&lt;option value="59"&gt;59&lt;/option&gt;
&lt;/select&gt;
&lt;select name="Time_Meridian"&gt;
&lt;option value="am" selected&gt;AM&lt;/option&gt;
&lt;option value="pm"&gt;PM&lt;/option&gt;
&lt;/select&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.html.table">
<title>html_table</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>loop</entry>
<entry>array</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Tableau de donn<6E>es <20> parcourir</entry>
</row>
<row>
<entry>cols</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>3</emphasis></entry>
<entry>Nombre de colonnes du tableau</entry>
</row>
<row>
<entry>table_attr</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>border="1"</emphasis></entry>
<entry>attributs pour la balise table</entry>
</row>
<row>
<entry>tr_attr</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>attributs pour les balises tr (les tableaux sont
parcourus)</entry>
</row>
<row>
<entry>td_attr</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>empty</emphasis></entry>
<entry>attributs pour les balises td (les tableaux sont
parcourus)</entry>
</row>
<row>
<entry>trailpad</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>&amp;nbsp;</emphasis></entry>
<entry>valeur avec laquelle remplir les cellules
restantes de la derni<6E>re ligne (si il y en a)</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
<emphasis>html_table</emphasis> est une fonction utilisateur
qui transforme un tableau de donn<6E>es dans un tabeau HTML. L'attribut
<emphasis>cols</emphasis> d<>termine le nombre de colonne du tableau.
Les attributs <emphasis>table_attr</emphasis>, <emphasis>tr_attr</emphasis>
et <emphasis>td_attr</emphasis> d<>terminent les attributs donn<6E>s aux
balises table, tr et td. Si <emphasis>tr_attr</emphasis> ou
<emphasis>td_attr</emphasis> sont des tableaux, ils seront parcourus.
<emphasis>trailpad</emphasis> est la valeur avec laquelle remplir
les cellules restantes de la derni<6E>re ligne, s'il y en a une.
</para>
<example>
<title>html_table</title>
<programlisting>
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty-&gt;assign('data',array(1,2,3,4,5,6,7,8,9));
$smarty-&gt;assign('tr',array('bgcolor="#eeeeee"','bgcolor="#dddddd"'));
$smarty-&gt;display('index.tpl');
index.tpl:
{html_table loop=$data}
{html_table loop=$data cols=4 table_attr='border="0"'}
{html_table loop=$data cols=4 tr_attr=$tr}
SORTIE:
&lt;table border="1"&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;table border="0"&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;table border="1"&gt;
&lt;tr bgcolor="#eeeeee"&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr bgcolor="#dddddd"&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr bgcolor="#eeeeee"&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.math">
<title>math</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>equation</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>L'op<6F>ration <20> <20>x<EFBFBD>cuter</entry>
</row>
<row>
<entry>format</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Le format du r<>sultat (sprintf)</entry>
</row>
<row>
<entry>var</entry>
<entry>numeric</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Les variables de l'op<6F>ration</entry>
</row>
<row>
<entry>assign</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Variable de template dans laquelle la sortie
sera assign<67>e</entry>
</row>
<row>
<entry>[var ...]</entry>
<entry>numeric</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Valeurs des variables de l'op<6F>ration</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
math autorise les designers de templates <20> effectuer des op<6F>rations
dans le template. Toute valeur num<75>rique peut <20>tre utilis<69>e dans une
op<6F>ration, et le r<>sultat sera affich<63> <20> la place des balises
"equation". Les variables utilis<69>es dans l'op<6F>ration sont pass<73>es en
tant que param<61>tre, et peuvent <20>tre des variables de templates ou des
valeurs statiques. +, -, /, *, abs, ceil, cos,
exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt,
srans et tan sont tous des op<6F>rateurs valides. Voir la
documentation PHP pour plus d'informations sur ces fonctions
math<74>matiques.
</para>
<para>
Si vous sp<73>cifiez l'attribut assign, la sortie sera assign<67>e <20> la variable
donn<6E>e plut<75>t que d'<27>tre directement affich<63>e.
</para>
<note>
<title>Note technique</title>
<para>
math est une fonction co<63>teuse en terme de performances, du fait
qu'elle utilise la fonction PHP eval (). Effectuer les calculs
dans votre code PHP est beaucoup plus efficient, donc, chaque fois
que possible, effectuez vos calculs directement dans PHP et assignez
le r<>sultat au template. Evitez co<63>t que co<63>t les appels
r<>p<EFBFBD>titifs <20> la fonction math, comme on pourait le faire une
une boucle section.
</para>
</note>
<example>
<title>math</title>
<programlisting>
{* $height=4, $width=5 *}
{math equation="x + y" x=$height y=$width}
SORTIE:
9
{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *}
{math equation="height * width / division"
height=$row_height
width=$row_width
division=#col_div#}
SORTIE:
100
{* vous pouvez utiliser des parenth<74>ses *}
{math equation="(( x + y ) / z )" x=2 y=10 z=2}
SORTIE:
6
{* vous pouvez d<>finir un format sprintf pour l'affichage *}
{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
SORTIE:
9.44</programlisting>
</example>
</sect1>
<sect1 id="language.function.mailto">
<title>mailto</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>address</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>l'adresse email</entry>
</row>
<row>
<entry>text</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>le texte <20> afficher, par d<>faut l'adresse email</entry>
</row>
<row>
<entry>encode</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>none</emphasis></entry>
<entry>Comment encoder l'adresse email.
none, hex et javascript sont des valeurs correctes.</entry>
</row>
<row>
<entry>cc</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Les adresses email en copie (Cc).
S<>parez les entr<74>es par une virgule.</entry>
</row>
<row>
<entry>bcc</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Les adresses email en copie cach<63>es (Bcc).
S<>parez les entr<74>es par une virgule.</entry>
</row>
<row>
<entry>subject</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Sujet de l'email.</entry>
</row>
<row>
<entry>newsgroups</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>newsgroup ou poster le message.
S<>parez les entr<74>es par une virgule.</entry>
</row>
<row>
<entry>followupto</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Adresses ou transmettre le message.
S<>parez les entr<74>es par une virgule.
</entry>
</row>
<row>
<entry>extra</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Toute information que vous souhaitez passer au lien,
comme par exemple une classe css.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
mailto cr<63>e un lien mailto automatiquement encod<6F> (optionnel).
L'encodage rend la t<>che de r<>cup<75>ration des e-mails sur votre
site plus difficiles aux "web spiders".
</para>
<note>
<title>Note technique</title>
<para>
javascript n'est certainement pas la forme d'encodage la plus robuste.
Vous pouvez <20>galement utiliser un encodage hexad<61>cimal.
</para>
</note>
<example>
<title>mailto</title>
<programlisting>
{mailto address="me@domain.com"}
{mailto address="moi@domaine.com" text="send me some mail"}
{mailto address="moi@domaine.com" encode="javascript"}
{mailto address="moi@domaine.com" encode="hex"}
{mailto address="moi@domaine.com" subject="Hello to you!"}
{mailto address="moi@domaine.com" cc="you@domain.com,they@domain.com"}
{mailto address="moi@domaine.com" extra='class="email"'}
SORTIE:
&lt;a href="mailto:moi@domaine.com" &gt;moi@domaine.com&lt;/a&gt;
&lt;a href="mailto:moi@domaine.com" &gt;send me some mail&lt;/a&gt;
&lt;SCRIPT language="javascript"&gt;eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%6
9%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%
61%69%6e%2e%63%6f%6d%22%20%3e%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%3c%2f%61%3e
%27%29%3b'))&lt;/SCRIPT&gt;
&lt;a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d" &gt;&amp;#x6d;&amp;#x65;&amp;#x40;&amp;#x64;&amp;
#x6f;&amp;#x6d;&amp;#x61;&amp;#x69;&amp;#x6e;&amp;#x2e;&amp;#x63;&amp;#x6f;&amp;#x6d;&lt;/a&gt;
&lt;a href="mailto:moi@domaine.com?subject=Hello%20to%20you%21" &gt;moi@domaine.com&lt;/a&gt;
&lt;a href="mailto:moi@domaine.com?cc=you@domain.com%2Cthey@domain.com" &gt;moi@domaine.com&lt;/a&gt;
&lt;a href="mailto:moi@domaine.com" class="email"&gt;moi@domaine.com&lt;/a&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.popup.init">
<title>popup_init</title>
<para>
popup est une int<6E>gration de overLib, une librairie capable de r<>aliser
des fen<65>tres surgissantes. (nous parlerons de "popup").
Ce type de fen<65>tre est utilis<69> pour apporter des informations
contextuelles, comme des infobulles d'aides ou astuces.
popup_init doit <20>tre appel<65> une fois, en d<>but de page si vous comptez
utiliser la fonction <link linkend="language.function.popup">popup</link>.
overLib <20> <20>t<EFBFBD> <20>crit par Erik Bosrup. Le site d'overlib est situ<74> <20>
l'adresse http://www.bosrup.com/web/overlib/.
</para>
<para>
Comme dans Smarty 2.1.2, overLib n'est PAS fournie dans la distribution.
T<>l<EFBFBD>chargez overLib, d<>posez overlib.js dans votre arborescence web et
indiquez le chemin relatif <20> ce fichier dans l'attribut src de
popup_init.
</para>
<example>
<title>popup_init</title>
<programlisting>
{* popup_init doit <20>tre appel<65> une fois en d<>but de page. *}
{popup_init src="/javascripts/overlib.js"}</programlisting>
</example>
</sect1>
<sect1 id="language.function.popup">
<title>popup</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>text</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Oui</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>le texte/code html <20> afficher dans la popup</entry>
</row>
<row>
<entry>trigger</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>onMouseOver</emphasis></entry>
<entry>L'<27>v<EFBFBD>nement utilis<69> pour rendre la popup active,
onMouseOver ou onClick.</entry>
</row>
<row>
<entry>sticky</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>false</emphasis></entry>
<entry>Rends la popup active jusqu'a ce qu'elle soit
explicitement ferm<72>e.</entry>
</row>
<row>
<entry>caption</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>D<EFBFBD>fini le libell<6C> du titre</entry>
</row>
<row>
<entry>fgcolor</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>couleur interne de la popup</entry>
</row>
<row>
<entry>bgcolor</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>couleur de la bordure de la popup</entry>
</row>
<row>
<entry>textcolor</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>couleur du texte <20> l'int<6E>rieur de la
popup</entry>
</row>
<row>
<entry>capcolor</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>couleur du libell<6C> de la popup</entry>
</row>
<row>
<entry>closecolor</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>couleur du texte de fermeture</entry>
</row>
<row>
<entry>textfont</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>la police <20> utiliser dans le texte principal</entry>
</row>
<row>
<entry>captionfont</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>la police <20> utiliser dans le libell<6C></entry>
</row>
<row>
<entry>closefont</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>la police pour le texte de fermeture</entry>
</row>
<row>
<entry>textsize</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>taille de la police texte prinicpal</entry>
</row>
<row>
<entry>captionsize</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>taille de la police du libell<6C></entry>
</row>
<row>
<entry>closesize</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>taille de la police du bouton "fermer"</entry>
</row>
<row>
<entry>width</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Longeur de la popup</entry>
</row>
<row>
<entry>height</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Hauteur de la popup</entry>
</row>
<row>
<entry>left</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>false</emphasis></entry>
<entry>la popup va <20> gauche de la souris</entry>
</row>
<row>
<entry>right</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>false</emphasis></entry>
<entry>la popup va <20> droite de la souris</entry>
</row>
<row>
<entry>center</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>false</emphasis></entry>
<entry>la popup est centr<74>e par rapport <20> la
position de la souris</entry>
</row>
<row>
<entry>above</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>false</emphasis></entry>
<entry>la popup est au dessus de la souris. NOTE:
possible uniquement si la hauteur est d<>finie</entry>
</row>
<row>
<entry>below</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>false</emphasis></entry>
<entry>la popup apparait en dessous de la souris</entry>
</row>
<row>
<entry>border</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>rends la bordure de la popup plus <20>paisse ou plus
fine</entry>
</row>
<row>
<entry>offsetx</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>A quelle distance du curseur la popup apparaitra
, horizontalement.</entry>
</row>
<row>
<entry>offsety</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>A quelle distance du curseur la popup apparaitra
, verticalement.</entry>
</row>
<row>
<entry>fgbackground</entry>
<entry>url to image</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Une image <20> utiliser <20> la place de la couleur de
fonds dans la popup</entry>
</row>
<row>
<entry>bgbackground</entry>
<entry>url to image</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Image <20> utiliser <20> la place de la bordure de la
popup. NOTE: vous veillerez <20> d<>finir bgcolor <20> "" ou la
couleur apparaitra de m<>me. NOTE: Lorsque vous avez un
lien de fermeture, Netscape effectuera un nouveau rendu
des cellules du tableau, affichant mal les <20>l<EFBFBD>ments</entry>
</row>
<row>
<entry>closetext</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>d<EFBFBD>finit le texte de fermeture par autre chose
que "Close"</entry>
</row>
<row>
<entry>noclose</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>N'affiche pas le bouton "Close" pour les fen<65>tres
"collantes".
</entry>
</row>
<row>
<entry>status</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>d<EFBFBD>fini le texte de la barre de statut
du navigateur</entry>
</row>
<row>
<entry>autostatus</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>D<EFBFBD>fini le texte de la barre de statut au contenu
de la popup. NOTE: Ecrase l'attribut status.</entry>
</row>
<row>
<entry>autostatuscap</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>D<EFBFBD>fini le texte de la barre de statut au libell<6C>
de la popup. NOTE: Ecrase l'attribut status.</entry>
</row>
<row>
<entry>inarray</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>indique <20> overLib de lire le texte <20> cet index dans le
tableau ol_text, situ<74> dans overlib.js. Ce param<61>tre peut <20>tre
utilis<69> <20> la place de text.</entry>
</row>
<row>
<entry>caparray</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>indique <20> overlib de lire le libell<6C> depuis le
tableau ol_caps</entry>
</row>
<row>
<entry>capicon</entry>
<entry>url</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>affiche l'image sp<73>cifi<66>e avant le libell<6C> de la
popup</entry>
</row>
<row>
<entry>snapx</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Aligne la popup sur une grille horizontale</entry>
</row>
<row>
<entry>snapy</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Aligne la popup sur une grille verticale</entry>
</row>
<row>
<entry>fixx</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>v<EFBFBD>rrouille la popup <20> une position horizontale.
Note: remplace les autres param<61>tres de position
horizontale</entry>
</row>
<row>
<entry>fixy</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>v<EFBFBD>rouille la popup <20> une position verticale
Note: remplace les autres param<61>tres de position
verticale</entry>
</row>
<row>
<entry>background</entry>
<entry>url</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>d<EFBFBD>fini l'image <20> utiliser plut<75>t que le tableau
de fond</entry>
</row>
<row>
<entry>padx</entry>
<entry>integer,integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><EFBFBD>carte l'image de fond du reste des <20>l<EFBFBD>ments
avec un espace horizontal, pour le positionnement du texte.
Note: c'est un attribut <20> deux param<61>tres.</entry>
</row>
<row>
<entry>pady</entry>
<entry>integer,integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry><EFBFBD>carte l'image de fond du reste des <20>l<EFBFBD>ments
avec un espace vertical, pour le positionnement du texte.
Note: c'est un attribut <20> deux param<61>tres.</entry>
</row>
<row>
<entry>fullhtml</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>vous autorise <20> placer du code html en tant que
contenu de la popup. Le code html est attendu dans
l'attribut text.</entry>
</row>
<row>
<entry>frame</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>contr<EFBFBD>le la popup dans un cadre diff<66>rent.
Voir la documentation d'overlib pour plus de d<>tails
sur cette fonction.</entry>
</row>
<row>
<entry>timeout</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Appelle la fonction javascript sp<73>cifi<66>e et prends
sa valeur de retour comme texte devant <20>tre affich<63>
dans la popup.</entry>
</row>
<row>
<entry>delay</entry>
<entry>integer</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>la popup se comporte comme une infobulle.
Elle disparaitra au bout d'un certain d<>lai, en
millisecondes.</entry>
</row>
<row>
<entry>hauto</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>D<EFBFBD>termine automatiquement si la popup doit <20>tre
<20> gauche ou <20> droite de la souris</entry>
</row>
<row>
<entry>vauto</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>D<EFBFBD>termine automatiquement si la popup doit <20>tre
au-dessus ou au-dessous de la souris</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
popup est utilis<69> pour cr<63>er une fen<65>tre popup javascript.
</para>
<example>
<title>popup</title>
<programlisting>
{* popup_init doit <20>tre appel<65> en haut de votre page *}
{popup_init src="/javascripts/overlib.js"}
{* cr<63>ation d'un lien avec une popup qui apparait sur l'<27>v<EFBFBD>nement onMouseOver *}
&lt;A href="mypage.html" {popup text="Ce lien vous am<61>ne sur ma page!"}&gt;mypage&lt;/A&gt;
{* vous pouvez utiliser du html, des liens, etc dans vos popup *}
&lt;A href="mypage.html" {popup sticky=true caption="mypage contents"
text="&lt;UL&gt;&lt;LI&gt;links&lt;LI&gt;pages&lt;LI&gt;images&lt;/UL&gt;" snapx=10 snapy=10}&gt;mypage&lt;/A&gt;
SORTIE:
(allez sur le site officiel de Smarty pour des exemples.)</programlisting>
</example>
</sect1>
<sect1 id="language.function.textformat">
<title>textformat</title>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Nom attribut</entry>
<entry>Type</entry>
<entry>Requis</entry>
<entry>Defaut</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>style</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>style pr<70>d<EFBFBD>fini</entry>
</row>
<row>
<entry>indent</entry>
<entry>number</entry>
<entry>Non</entry>
<entry><emphasis>0</emphasis></entry>
<entry>Taille de l'indentation pour chaque
ligne</entry>
</row>
<row>
<entry>indent_first</entry>
<entry>number</entry>
<entry>Non</entry>
<entry><emphasis>0</emphasis></entry>
<entry>Taille de l'indentation de la
premi<6D>re ligne</entry>
</row>
<row>
<entry>indent_char</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>(single space)</emphasis></entry>
<entry>Le caract<63>re (ou la cha<68>ne) <20> utiliser pour
indenter</entry>
</row>
<row>
<entry>wrap</entry>
<entry>number</entry>
<entry>Non</entry>
<entry><emphasis>80</emphasis></entry>
<entry>A combien de caract<63>res doit on ajuster chaque
ligne</entry>
</row>
<row>
<entry>wrap_char</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>\n</emphasis></entry>
<entry>Le caract<63>re (ou cha<68>ne de caract<63>res) avec lequel
terminer les lignes</entry>
</row>
<row>
<entry>wrap_cut</entry>
<entry>boolean</entry>
<entry>Non</entry>
<entry><emphasis>false</emphasis></entry>
<entry>Si true, wrap r<>duira les lignes au caract<63>re exact
au lieu d'ajuster <20> la fin d'un mot</entry>
</row>
<row>
<entry>assign</entry>
<entry>cha<EFBFBD>ne de caract<63>res</entry>
<entry>Non</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Le nom de la variable PHP dans laquelle la
sortie sera assign<67>e</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
textformat est une fonction de bloc utilis<69>e pour formater du texte.
Elle nettoie la cha<68>ne de ses espaces et caract<63>res sp<73>ciaux, puis
formate les paragraphes en ajustant ces derniers <20> une certaine limite,
puis en indentant les lignes.
</para>
<para>
Vous pouvez soit utiliser un style pr<70>d<EFBFBD>fini, soit d<>finir explicitement
chaque attribut. Actuellement, seul le style pr<70>d<EFBFBD>fini "email" est
disponible.
</para>
<example>
<title>textformat</title>
<programlisting>
{textformat wrap=40}
This is foo.
This is foo.
This is foo.
This is foo.
This is foo.
This is foo.
This is bar.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
{/textformat}
SORTIE:
This is foo. This is foo. This is foo.
This is foo. This is foo. This is foo.
This is bar.
bar foo bar foo foo. bar foo bar foo
foo. bar foo bar foo foo. bar foo bar
foo foo. bar foo bar foo foo. bar foo
bar foo foo. bar foo bar foo foo.
{textformat wrap=40 indent=4}
This is foo.
This is foo.
This is foo.
This is foo.
This is foo.
This is foo.
This is bar.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
{/textformat}
SORTIE:
This is foo. This is foo. This is
foo. This is foo. This is foo. This
is foo.
This is bar.
bar foo bar foo foo. bar foo bar foo
foo. bar foo bar foo foo. bar foo
bar foo foo. bar foo bar foo foo.
bar foo bar foo foo. bar foo bar
foo foo.
{textformat wrap=40 indent=4 indent_first=4}
This is foo.
This is foo.
This is foo.
This is foo.
This is foo.
This is foo.
This is bar.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
{/textformat}
SORTIE:
This is foo. This is foo. This
is foo. This is foo. This is foo.
This is foo.
This is bar.
bar foo bar foo foo. bar foo bar
foo foo. bar foo bar foo foo. bar
foo bar foo foo. bar foo bar foo
foo. bar foo bar foo foo. bar foo
bar foo foo.
{textformat style="email"}
This is foo.
This is foo.
This is foo.
This is foo.
This is foo.
This is foo.
This is bar.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
bar foo bar foo foo.
{/textformat}
SORTIE:
This is foo. This is foo. This is foo. This is foo. This is foo. This is
foo.
This is bar.
bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo
bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo
foo.
</programlisting>
</example>
</sect1>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->