<liclass="level1"><divclass="li"><ahref="#using_notification_system">Utiliser le système de notification</a></div>
<ulclass="toc">
<liclass="level2"><divclass="li"><ahref="#notification_format">Format des notifications</a></div></li>
<liclass="level2"><divclass="li"><ahref="#create_new_notifications_with_notifications_explorer">Créer de nouvelles notifications avec l'explorateur des notifications</a></div></li>
<liclass="level2"><divclass="li"><ahref="#notifications_trough_soap">Notifications via SOAP</a></div>
<ulclass="toc">
<liclass="level3"><divclass="li"><ahref="#insertion_example_in_perl">Exemple d'insertion en Perl</a></div></li>
<liclass="level3"><divclass="li"><ahref="#deletion_example_in_perl">Exemple d'effacement en Perl</a></div></li>
</ul>
</li>
<liclass="level2"><divclass="li"><ahref="#test_notification">Tester les notifications</a></div></li>
</ul></li>
</ul>
</div>
</div><!-- TOC END -->
<h1class="sectionedit1"id="notifications_system">Systèmes de notification</h1>
<divclass="level1">
<p>
Depuis la version 0.9.4, LemonLDAP::NG peut être utilisé pour notifier des messages aux utilisateurs : si un utilisateur a un message, celui-ci est affiché lorsqu'il accède au portail. Si le message contient des cases à cocher, l'utilisateur doit toutes les cocher, sinon il ne peut obtenir de cookie de session.
</p>
<p>
Depuis la version 1.1.0, un explorateur de notifications est disponible dans le manager, et les notifications peuvent être faites pour tous les utilisateurs, avec possibilité d'affichage conditionnel. Lorsque l'utilisateur accepte la notification, la référence est stockée dans ses données de session persistentes.
Il suffit d'activer les notifications dans le manager (Paramètres généraux > Paramètres avancés > Notifications > Activation) ou dans lemonldap-ng.ini :
Par défaut, les notifications sont stockées dans la même base de données que la configuration :
</p>
<ul>
<liclass="level1"><divclass="li"> si “File” est utilisé et que “dirName” vaut /usr/local/lemonldap-ng/conf/, les notifications seront stockées dans /usr/local/lemonldap-ng/notifications/</div>
</li>
<liclass="level1"><divclass="li"> si “CDBI” ou “RDBI” est utilisé, les notifications sont stockées dans la même base de données que la configuration et la table est nommée “notifications”.</div>
</li>
<liclass="level1"><divclass="li"> si “LDAP” est utilisé, les notifications sont stockées dans la même arborescence que la configuration et la branche est nommée “notifications”.</div>
</li>
</ul>
<p>
On peut changer les paramètres par défaut en utilisant les paramètres “notificationStorage” et “notificationStorageOptions” avec la même syntaxe que les paramètres de stockage de la configuration. pour ce faire dans le manager, aller dans Paramètres généraux > Paramètres avancés > Notifications.
</p>
</div>
<h4id="file">File</h4>
<divclass="level4">
<p>
Les paramètres pour le backend File sont les mêmes que ceux du <ahref="fileconfbackend.html"class="wikilink1"title="documentation:2.0:fileconfbackend">backend de configuration File</a>.
</p>
<divclass="noteimportant">Il faut créer soi-même le répertoire et y donner un accès en écriture pour l'utilisateur Apache. Par exemple :
</div><divclass="notetip">Le séparateur par défaut des noms de fichiers est <code>_</code>, ce qui peut poser problème si on enregistre des notifications pour des utilsateur ayant un caractère <code>_</code> dans leur nom de connexion. On peut changer ce séparateur en changeant la valeur de l'option <code>fileNameSeparator</code> par exemple <code>@</code>.
</div>
<p>
Pour résumer les options disponibles :
</p>
<ul>
<liclass="level1"><divclass="li"><strong>dirName</strong> : répertoire dans lequel sont stockées les notifications.</div>
</li>
<liclass="level1"><divclass="li"><strong>fileNameSeparator</strong> : séparateur de nom de fichier.</div>
</li>
</ul>
</div>
<h4id="dbi">DBI</h4>
<divclass="level4">
<p>
Les paramètres pour le backend <abbrtitle="Database Interface">DBI</abbr> sont les mêmes que ceux du <ahref="sqlconfbackend.html"class="wikilink1"title="documentation:2.0:sqlconfbackend">backend de configuration DBI</a>.
</p>
<divclass="noteimportant">Il faut créer soi-même la table :
<liclass="level1"><divclass="li"><strong>table</strong> : nom de la table des notifications.</div>
</li>
</ul>
</div>
<h4id="ldap">LDAP</h4>
<divclass="level4">
<p>
Les paramètres pour le backend LDAP sont les mêmes que ceux du <ahref="ldapconfbackend.html"class="wikilink1"title="documentation:2.0:ldapconfbackend">backend de configuration LDAP</a>.
</p>
<divclass="noteimportant">Il faut toutefois créer manuellement la branche
</div>
<p>
Pour résumer les options disponibles :
</p>
<ul>
<liclass="level1"><divclass="li"><strong>ldapServer</strong> : <abbrtitle="Uniform Resource Locator">URL</abbr> du serveur LDAP.</div>
Le module de notifications utilise une carte blanche pour gérer les notifications destinées à tous les utilisateurs. The default value of this wildcard is <code>allusers</code>, but you can change it if <code>allusers</code> is a known identifier in your system.
Pour le changer, aller dans Paramètres généraux > Paramètres avancés > Notifications > Carte blanche pour tous les utilisateurs, et mettre par exemple <code>alluserscustom</code>.
</p>
<p>
Ainsi, créer une notification pour <code>alluserscustom</code> affichera la notification à tous les utilisateurs.
La transformation entre le texte XML d'une notification et l'affichage HTML est faite par XSLT. Le fichier XSLT par défaut est portal/skins/common/notification.xsl. On peut créer son propre fichier XSLT et le stocker à un autre endroit, par exemple /etc/lemonldap-ng. Configure ensuite le nouveau fichier XSLT dans le manager, aller dans Paramètres généraux > Paramètres avancés > Notifications > Fichier XSLT personnalisé et mettre par exemple <code>/etc/lemonldap-ng/notification.xsl</code>.
<liclass="level3"><divclass="li"> date : date de création (format AAAA-MM-JJ)</div>
</li>
<liclass="level3"><divclass="li"> ref : une référence qui peut être utilisée plus tard pour connaître ce qui a été notifié et quand</div>
</li>
<liclass="level3"><divclass="li"> uid : le nom de connexion de l'utilisateur (il doit correspondre à l'attribut utilisé dans le paramètre whatToTrace, uid par défaut), ou la carte blanche (par défaut : <code>allusers</code>) si la notification doit être affichée à tous les utilisateurs.</div>
<liclass="level3"><divclass="li"><title> : titre à afficher : sera inséré dans la page <abbrtitle="HyperText Markup Language">HTML</abbr> encadré dans <h2 class=“notifText”>…</h2></div>
</li>
<liclass="level3"><divclass="li"><subtitle> : sous-titre : sera inséré dans la page <abbrtitle="HyperText Markup Language">HTML</abbr> encadré dans <h2 class=“notifText”>…</h2></div>
</li>
<liclass="level3"><divclass="li"><text> : paragraphe à afficher : sera inséré dans la page <abbrtitle="HyperText Markup Language">HTML</abbr> encadré dans <p class=“notifText”>…</p></div>
</li>
<liclass="level3"><divclass="li"><check> : paragraphe à afficher avec une case à cocher : sera inséré dans la page <abbrtitle="HyperText Markup Language">HTML</abbr> encadré dans <p class=“notifCheck”><input type=“checkbox” />…</p></div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<divclass="noteimportant">Tous les autres éléments seront supprimés y compris les balises <abbrtitle="HyperText Markup Language">HTML</abbr> telles <b>.
</div><divclass="notetip">Un document XML de notification peut contenir plusieurs messages de notification.
<spanclass="sc3"><spanclass="re1"><title<spanclass="re2">></span></span></span>Vous avez de nouvelles autorisations<spanclass="sc3"><spanclass="re1"></title<spanclass="re2">></span></span></span>
<spanclass="sc3"><spanclass="re1"><text<spanclass="re2">></span></span></span>Vous êtes autorisé à accéder à appli-1<spanclass="sc3"><spanclass="re1"></text<spanclass="re2">></span></span></span>
<spanclass="sc3"><spanclass="re1"><text<spanclass="re2">></span></span></span>Vous êtes autorisé à accéder à appli-2<spanclass="sc3"><spanclass="re1"></text<spanclass="re2">></span></span></span>
<spanclass="sc3"><spanclass="re1"><check<spanclass="re2">></span></span></span>Je reconnais savoir que je peux accéder à appli-1 <spanclass="sc3"><spanclass="re1"></check<spanclass="re2">></span></span></span>
<spanclass="sc3"><spanclass="re1"><check<spanclass="re2">></span></span></span>Je reconnais savoir que je peux accéder à appli-2 <spanclass="sc3"><spanclass="re1"></check<spanclass="re2">></span></span></span>
<spanclass="sc3"><spanclass="re1"><title<spanclass="re2">></span></span></span>Ceci est votre premier accès à ce système<spanclass="sc3"><spanclass="re1"></title<spanclass="re2">></span></span></span>
<spanclass="sc3"><spanclass="re1"><text<spanclass="re2">></span></span></span>Soyez sage et ne le cassez pas.<spanclass="sc3"><spanclass="re1"></text<spanclass="re2">></span></span></span>
<spanclass="sc3"><spanclass="re1"><check<spanclass="re2">></span></span></span>Bien sûr, je ne suis pas méchant !<spanclass="sc3"><spanclass="re1"></check<spanclass="re2">></span></span></span>
<h3class="sectionedit9"id="create_new_notifications_with_notifications_explorer">Créer de nouvelles notifications avec l'explorateur des notifications</h3>
<divclass="level3">
<p>
Dans le manager, cliquer sur l'<code>explorateur des notifications</code> et ensuite sur le bouton <code>Créer</code>.
<h3class="sectionedit10"id="notifications_trough_soap">Notifications via SOAP</h3>
<divclass="level3">
<p>
Les nouvelles notifications peuvent être insérées en utilisant des requêtes SOAP (décrites dans le fichier WSDL généré par l'utilitaire buildPortalWSDL). Pour activer SOAP sur le portal :
<ahref="http://perldoc.perl.org/functions/print.html"><spanclass="kw3">print</span></a><spanclass="st0">"$res notification(s) have been inserted<spanclass="es0">\n</span>"</span><spanclass="sy0">;</span>
<spanclass="br0">}</span></pre>
<p>
On peut également effacer certaines notifications avec SOAP, si SOAP est activé :
</p>
</div>
<h4id="deletion_example_in_perl">Exemple d'effacement en Perl</h4>
<ahref="http://perldoc.perl.org/functions/print.html"><spanclass="kw3">print</span></a><spanclass="st0">"$res notification(s) have been deleted<spanclass="es0">\n</span>"</span><spanclass="sy0">;</span>