diff --git a/doc/LS.entities.xml b/doc/LS.entities.xml
new file mode 100644
index 00000000..05e1a73c
--- /dev/null
+++ b/doc/LS.entities.xml
@@ -0,0 +1,23 @@
+
+LdapSaisie">
+Net_LDAP2">
+Smarty">
+PHP">
+OpenLDAP">
+Courier">
+
+subDn">
+LSprofile">
+LSprofiles">
+LSobject">
+LSobjects">
+LSattribute">
+LSattributes">
+LSrelation">
+LSrelations">
+LSform">
+LSforms">
+LSformat">
+LSformats">
+LSaddon">
+LSaddons">
diff --git a/doc/LdapSaisie.docbook b/doc/LdapSaisie.docbook
new file mode 100644
index 00000000..0c27dacf
--- /dev/null
+++ b/doc/LdapSaisie.docbook
@@ -0,0 +1,49 @@
+
+
+ %LS-entities;
+
+
+ %conf-entities;
+
+ %conf-LSattribute-LSattr_html-entities;
+
+ %conf-LSattribute-LSattr_ldap-entities;
+
+ %conf-LSattribute-check_data-entities;
+
+ %conf-LSaddon-entities;
+
+
+
+
+]>
+
+
+
+
+ LdapSaisie
+
+
+ Benjamin
+ Renard
+
+
+ brenard@easter-eggs.com
+ benjamin.renard@zionetrix.net
+
+
+
+
+ LdapSaisie
+ Version 0.2
+
+
+&intro;
+
+&install;
+
+&conf;
+
diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 00000000..3ca61737
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,13 @@
+DOCBOOK_FILE=LdapSaisie.docbook
+
+all: validate export
+
+# Validation
+validate:
+ xmllint --valid --noout $(DOCBOOK_FILE)
+
+export:
+ cd exports; make all
+
+clean:
+ cd exports; make clean
diff --git a/doc/conf/LDAP_search_params.docbook b/doc/conf/LDAP_search_params.docbook
new file mode 100644
index 00000000..e96a3755
--- /dev/null
+++ b/doc/conf/LDAP_search_params.docbook
@@ -0,0 +1,57 @@
+
+Paramètres étendus des recherches dans l'annuaire
+Les paramètres des recherches sont ceux supportés par &netldap;. Ces
+paramètres sont passés sous la forme d'un tableau associatif. Les paramètres
+supportés sont détaillés ci-dessous :
+
+
+
+
+
+ Nom
+ Description
+ Valeur par défaut
+
+
+
+
+ scope
+
+ Définition de l'étendue de la recherche :
+
+ base - Sur une entrée seulement
+ one - Sur les entrées imédiatement contenu par le basedn de la recherche
+ sub - Sur l'arbre entier
+
+
+ sub
+
+
+ sizelimit
+ Le nombre maximum d'entrées retournées par la recherche.
+ 0 (illimité)
+
+
+ timelimit
+ Le délai d'attente maximum de la réponse du serveur en secondes.
+ 0 (illimité)
+
+
+ attrsonly
+ Si vrai, seuls les noms des atttributs seront
+ retournés.
+ false
+
+
+ attributes
+ Tableau contenant les noms des attributs que les entrées retournées
+ peuvent contenir et que l'on souhaite récupérer.
+ array()(tous)
+
+
+
+
+Pour plus d'information sur le sujet, vous pouvez consulter la
+documentation officiel du projet &netldap;.
+
+
diff --git a/doc/conf/LSaddon.docbook b/doc/conf/LSaddon.docbook
new file mode 100644
index 00000000..93cbad79
--- /dev/null
+++ b/doc/conf/LSaddon.docbook
@@ -0,0 +1,11 @@
+
+
+ Configuration des LSaddons
+
+ Cette partie décrit la manière de configurer les différents &LSaddons;
+ actuellement supportés par &LdapSaisie;. FIXME
+
+
+ &conf-LSaddon_maildir;
+
+
diff --git a/doc/conf/LSaddon/LSaddon.entities.xml b/doc/conf/LSaddon/LSaddon.entities.xml
new file mode 100644
index 00000000..73773cbb
--- /dev/null
+++ b/doc/conf/LSaddon/LSaddon.entities.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/doc/conf/LSaddon/LSaddon_maildir.docbook b/doc/conf/LSaddon/LSaddon_maildir.docbook
new file mode 100644
index 00000000..1a09f7b2
--- /dev/null
+++ b/doc/conf/LSaddon/LSaddon_maildir.docbook
@@ -0,0 +1,5 @@
+
+ LSaddon_maildir
+ Cet &LSaddon; est utilisé pour gérer la manipulation distante de maildir.
+ FIXME
+
diff --git a/doc/conf/LSattribute.docbook b/doc/conf/LSattribute.docbook
new file mode 100644
index 00000000..5125ac41
--- /dev/null
+++ b/doc/conf/LSattribute.docbook
@@ -0,0 +1,237 @@
+
+ Configuration des attributs
+ Cette section décrit les options de configuration des attributs des
+ &LSobjects;. Les attributs sont définis dans le tableau associatif
+ attrs de la configuration des &LSobjects;. Dans ce tableau,
+ les clé les noms des attributs et les valeurs liés sont la configuration des
+ attributs.
+
+ Contrairement à ce qui existe dans le standard LDAP, les
+ noms des attributs sont sensibles à la casse. Il faut que le nom des attributs
+ dans &LdapSaisie; soient scrupuleusement les mêmes que ceux retourné par
+ &netldap;
+
+
+Structure...
+ array (
+ /* ----------- start -----------*/
+ 'attr1' => array (
+ 'label' => _('[label de l'attr1'),
+ 'help_info' => _('[Message d'aide sur l'attribut attr1'),
+ 'ldap_type' => 'ldaptype1',
+ 'ldap_options' => array(
+ // Options LDAP liées au type LDAP de l'attribut
+ ),
+ 'html_type' => 'htmltype1',
+ 'html_options' => array(
+ // Options HTML liées au type HTML de l'attribut
+ ),
+ 'multiple' => 0,
+ 'required' => 1,
+ 'default_value' => 'valeur1',
+ 'check_data' => array (
+ // Régle de vérification syntaxique des données saisies
+ ),
+ 'validation' => array (
+ // Règle de vérification d'intégrité des données saisies
+ ),
+ 'rights' => array(
+ 'LSprofile1' => 'droit1',
+ 'LSprofile2' => 'droit2',
+ ...
+ ),
+ 'view' => 1,
+ 'form' => array (
+ 'create' => 1,
+ 'modify' => 0,
+ ...
+ ),
+ 'dependAttrs' => array(
+ // Attributs en dépendance
+ ),
+ 'generate_function' => 'fonction1'
+ ),
+ /* ----------- end -----------*/
+ ...
+);]]>
+...
+
+
+
+
+Paramètres de configuration
+
+
+ label
+
+ Le label de l'attribut.
+
+
+
+
+
+ help_info
+
+ Message d'aide qui sera affiché dans une bulle d'aide à côté du
+ nom de l'attribut dans les formulaires.
+
+
+
+
+ ldap_type
+
+ Le type LDAP de l'attribut.
+ Voir la section concernée.
+
+
+
+
+ ldap_options
+
+ Tableau associatif contenant les paramètres de configuration du
+ type LDAP de l'attribut.
+ Voir la section concernée.
+
+
+
+
+ html_type
+
+ Le type HTML de l'attribut.
+ Voir la section concernée.
+
+
+
+
+ html_options
+
+ Tableau associatif contenant les paramètres de configuration du
+ type HTML de l'attribut.
+ Voir la section concernée.
+
+
+
+
+ multiple
+
+ Booléen définissant si cet attribut peut stocker plusieurs valeurs.
+ Valeurs possibles : 0 ou 1
+ Valeur par défaut : 0
+
+
+
+
+ required
+
+ Booléen définissant si cet attribut doit obligatoirement être
+ défini.
+ Valeurs possibles : 0 ou 1
+ Valeur par défaut : 0
+
+
+
+
+ default_value
+
+ Valeur par défaut de l'attribut.
+ Valeurs possibles : 0 ou 1
+
+
+
+
+ check_data
+
+ Tableau associatif contenant les règles de vérification syntaxique
+ des données de l'attribut.Voir
+ la section concernée.
+
+
+
+
+ validation
+
+ Tableau associatif contenant les règles de vérification d'intégrité
+ des données de l'attribut.Voir
+ la section concernée.
+
+
+
+
+ rights
+
+ Tableau associatif dont les clés sont les noms des &LSprofiles; ayant
+ des droits sur cet attribut et les valeurs associées sont les droits
+ correspondants. La valeur des droits d'un &LSprofile; peut être
+ r pour le droit de lecture ou w pour
+ le droit de lecture-écriture. Par défaut, un &LSprofile; n'a aucun droit.
+
+
+
+
+ view
+
+ Booléen définissant si l'attribut est, ou non, affiché lors de la
+ visualisation des objets du type courant.
+ Valeurs possibles : 0 ou 1
+ Valeur par défaut : 0
+
+
+
+
+ form
+
+ Tableau associatif dont les clés sont les noms des &LSforms; et les
+ valeurs associées la définition de l'affichage dans ce &LSform;. Si cette
+ valeur vaut 0, alors l'attribut sera lecture-seule et si
+ cette valeur vaut 1, cet attribut sera affiché en
+ lecture-écriture.
+
+
+
+
+ dependAttrs
+
+ Tableau associatif listant les attributs dépendants de celui-ci.
+ Les attributs listés ici seront regénérés lors de chaque modification
+ de l'attribut courant. Cette génération sera effectué avec la fonction
+ définie dans le paramètre generate_function de
+ l'attribut.
+
+
+
+
+ generate_function
+
+ Nom de la fonction permettant de générer la valeur de l'attribut.
+ Cette fonction sera éxecutée, en passant en premier paramètre, l'objet
+ &LSobject; courant.
+
+
+
+
+ before_modify
+
+ Nom de la fonction qui sera exécutée avant toutes modifications de
+ la valeur de l'attribut.Voir la
+ section concernée
+
+
+
+
+ after_modify
+
+ Nom de la fonction qui sera exécutée après toutes modifications de
+ la valeur de l'attribut.Voir la
+ section concernée
+
+
+
+
+ &conf-LSattribute-LSattr_ldap;
+ &conf-LSattribute-LSattr_html;
+
+ &conf-LSattribute-check-data;
+ &conf-LSattribute-validation;
+ &conf-LSattribute-triggers;
+
+
diff --git a/doc/conf/LSattribute/LSattr_html.docbook b/doc/conf/LSattribute/LSattr_html.docbook
new file mode 100644
index 00000000..33ec2f15
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html.docbook
@@ -0,0 +1,22 @@
+
+ Configuration des attributs HTML
+ Cette section décrit les options propres à chacun des types d'attributs HTML
+ supportés par &LdapSaisie;.
+
+ &conf-LSattr_html_boolean;
+ &conf-LSattr_html_date;
+ &conf-LSattr_html_image;
+ &conf-LSattr_html_mail;
+ &conf-LSattr_html_maildir;
+ &conf-LSattr_html_mailQuota;
+ &conf-LSattr_html_password;
+ &conf-LSattr_html_rss;
+ &conf-LSattr_html_select_list;
+ &conf-LSattr_html_select_object;
+ &conf-LSattr_html_ssh_key;
+ &conf-LSattr_html_text;
+ &conf-LSattr_html_textarea;
+ &conf-LSattr_html_url;
+ &conf-LSattr_html_xmpp;
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html.entities.xml b/doc/conf/LSattribute/LSattr_html/LSattr_html.entities.xml
new file mode 100644
index 00000000..6339df2b
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html.entities.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_boolean.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_boolean.docbook
new file mode 100644
index 00000000..9b0cf155
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_boolean.docbook
@@ -0,0 +1,14 @@
+
+ LSattr_html_boolean
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ un booléen. Pour le moment, les attributs à valeurs multiples ne sont pas gérés.
+ La valeur retournée est l'une des chaînes de caractères suivantes :
+
+ yes pour Vrai
+ no pour Faux
+
+ Pour maîtriser les valeurs stockées dans l'annuaire, il faut
+ coupler ce type d'attribut HTML avec le type d'attribut LDAP
+ boolean
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_date.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_date.docbook
new file mode 100644
index 00000000..236e9162
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_date.docbook
@@ -0,0 +1,40 @@
+
+ LSattr_html_date
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une date.
+
+
+Structure...
+ array (
+ 'firstDayOfWeek' => '[Le rang du premier jour de la semaine]',
+ 'format' => '[Format d'affichage de la date]',
+),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ firstDayOfWeek
+
+ Un entier correspondant au rang du premier jour de la semaine :
+ de 0 à 6, 0 correspondant à Dimanche et 6 à Lundi.
+ La valeur par défaut est 0, donc Dimanche.
+
+
+
+
+ format
+
+ Format d'affichage de la date dans le champ de saisie. Ce format
+ est composé à partir des motifs clés suivants : FIXME
+ La valeur par défaut est %d/%m/%Y, %T.
+ Exemple : 23/04/2009, 23:03:04
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_image.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_image.docbook
new file mode 100644
index 00000000..02f71207
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_image.docbook
@@ -0,0 +1,6 @@
+
+ LSattr_html_image
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une image. Pour le moment, les attributs à valeurs multiples ne sont pas gérés.
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_mail.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_mail.docbook
new file mode 100644
index 00000000..631b2371
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_mail.docbook
@@ -0,0 +1,10 @@
+
+ LSattr_html_mail
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une adresse e-mail. Il propose directement dans l'interface, la possibilité
+ d'envoyer des mails à l'adresse saisie.
+ Ce type d'attribut HTML est dérivé du type
+ text. Il profite donc de toutes
+ les fonctionnalités d'un champ de ce type (autogénération, ...).
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_mailQuota.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_mailQuota.docbook
new file mode 100644
index 00000000..74fca6bf
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_mailQuota.docbook
@@ -0,0 +1,7 @@
+
+ LSattr_html_mailQuota
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ le quota d'une boite mail. Le format de la valeur générée correspondant au format
+ attendu par le serveur de mail &courier;. Exemple : 50000000S
+ correspond à un quota de 50Mio.
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_maildir.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_maildir.docbook
new file mode 100644
index 00000000..2b8fa322
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_maildir.docbook
@@ -0,0 +1,82 @@
+
+ LSattr_html_maildir
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ le chemin d'une maildir. Typiquement, ce type attribut HTML est utile dans
+ le cas de l'attribut mailbox utilisé par maildrop pour
+ stocker le chemin des boites mails. Ce type d'attribut offre la possibilité de
+ gérér un niveau de l'attribut et à travers les déclencheurs gérés par &LdapSaisie;
+ la création, la modification et ou la suppression de la boite mails. Le &LSaddon;
+ boolean est utilisé pour manipuler
+ la boite mail à distance.
+
+
+ Actuellement, cet &LSaddon; ne gérant que l'accès via FTP au
+ serveur distant, l'API d'accès via FTP est attaquée directement.
+
+
+Structure...
+ array (
+ 'LSform' => array (
+ '[LSform1]' => [booléen],
+ '[LSform2]' => [booléen],
+ ...
+ ),
+ 'remoteRootPathRegex' => "[Expression régulière pour matcher le dossier à créer]",
+ 'archiveNameFormat' => "[LSformat du chemin/nom du fichier une fois archiver]"
+ ),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ LSform
+
+ Tableau associatif obligatoire contenant en valeur clé le nom des
+ &LSforms; dans lesquels la fonctionnalité de modification de la boite mail
+ sera présente. Les valeurs attachées sont des booléens définissant si la
+ modification est active par défaut.
+
+
+
+
+ remoteRootPathRegex
+
+ Expression régulière facultative dont le but est de
+ matcher dans la valeur complète du chemin distant de la
+ maildir, le chemin de la maildir
+ à créer une fois connecté sur le serveur.
+ Exemple : Si le chemin complet de la maildir est
+ /home/vmail/user, mais que l'utilisateur FTP lorsqu'il
+ se connecte arrive directement dans /home/vmail, et faut
+ définir le paramètre remoteRootPathRegex de la manière
+ suivante :
+ ^\/home\/vmail\/([^\/]*)\/+$
+
+
+
+
+
+ archiveNameFormat
+
+ &LSformat; du nom du dossier de la maildir une
+ fois archivée. Si ce format est défini, le dossier ne sera pas supprimé mais
+ déplacé ou rénommé. Le format sera construit avec pour seul mot clé, le nom
+ de l'ancien dossier. Exemple : Si le dossier de la maildir est
+ /home/vmail/user et le paramètre
+ archiveNameFormat vaut %{old}.bckp,
+ le dossier sera renommé en /home/vmail/user.bckp.
+ Ce format est interprété après application de la routine
+ liée au paramètre remoteRootPathRegex. Ainsi, dans
+ l'exemple précédent, si le paramètre remoteRootPathRegex
+ tronquait uniquement le nom du dossier final, c'est à dire user,
+ le format une fois interprété donnerai user.bckp.
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook
new file mode 100644
index 00000000..fd58d68e
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook
@@ -0,0 +1,157 @@
+
+ LSattr_html_password
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ un mot de passe.
+
+
+Structure...
+ array(
+ 'generationTool' => [booleen],
+ 'autoGenerate' => [booleen],
+ 'lenght' => [nombre de caractères],
+ 'chars' => array ( // Caractères que peut contenir le mot de passe
+ array( // Liste caractère avec un nombre mininum d'apparition supérieur à 1
+ 'nb' => [nb caractères],
+ 'chars' => '[liste de caractères possibles]'
+ ),
+ '[autre liste de caractères possible]', // Liste caractère avec un nombre
+ // d'apparitions égal à 1
+ ...
+ ),
+ 'verify' => [booléen], // Activation de l'outil de vérification du mot de passe
+ 'mail' => array( // Configuration de l'envoi du mot de passe par mail
+ 'subject' => "[LSformat du sujet du mail]",
+ 'msg' => "[LSformat du message du mail]",
+ 'mail_attr' => 'mail', // Attribut mail de l'objet
+ 'send' => 1, // Activation par défaut de l'envoi du mot de passe
+ 'ask' => 1, // Laisser le choix à l'utilisateur
+ 'canEdit' => 1 // Activation de l'édition du LSformat du message par l'utilisateur
+ )
+),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ generationTool
+
+ Booléen définissant si l'outil de génération de mot de passe est
+ activé.
+
+
+
+
+ autoGenerate
+
+ Active la génération automatique du mot de passe lorsque l'attribut
+ n'a encore aucune valeur de définie. Il faut également que l'outil de
+ génération soit activé (generationTool).
+
+
+
+
+ lenght
+
+ Nombre de caractères que devront contenir les mots de passe générés.
+
+
+
+
+
+ chars
+
+ Tableau contenant une liste de listes de caractères possibles pour
+ composer le mot de passe. Dans chacune de ces listes, au moins un caractère
+ sera utilisé dans le nouveau mot de passe. Il est possible de définir un
+ nombre supérieur de caractères d'une liste devant apparaître dans les mots de
+ passe générés en spécifiant un tableau associatif dont la clé nb
+ associra le nombre entier de caractères et la clé chars
+ la liste de caractères. Une liste de caractères est un chaîne.
+
+
+
+
+ verify
+
+ Booléen définissant si l'outil de vérification du mot de passe est
+ activé. Si celui-ci est activé, l'utilisateur pourra entrer un mot de passe
+ dans le champ et cliquer sur un bouton qui lancera une procédure de
+ vérification du mot de passe via un test de connexion à l'annuaire.
+
+
+
+
+ mail
+
+ Paramètres de configuration de l'envoi par mail du mot de passe à
+ l'utilisateur. Lorsque cet outil est activé, lors de la modification/création
+ du mot de passe, l'utilisateur pourra recevoir un mail lui spécifiant son
+ nouveau mot de passe.
+
+
+ Paramêtres de configuration
+
+
+ send
+
+ Booléen définissant si l'envoi du mot de passe est activé par
+ défaut.
+
+
+
+
+ ask
+
+ Booléen définissant si on laisse le choix à l'utilisateur
+ d'activer ou non l'envoi du mot de passe par mail.
+
+
+
+
+ canEdit
+
+ Booléen définissant si on laisse la possibilité à l'utilisateur
+ d'éditer le &LSformat; du message et du sujet.
+
+
+
+
+ subject
+
+ &LSformat; du sujet du mail. Ce format sera composé avec la
+ valeur du nouveau mot de passe de l'utilisateur.
+
+
+
+
+ msg
+
+ &LSformat; du message du mail. Ce format sera composé avec la
+ valeur du nouveau mot de passe de l'utilisateur.
+
+
+
+
+ mail_attr
+
+ Le nom de l'attribut listant les mails possibles de
+ l'utilisateur. Par défaut, la première valeur de l'attribut sera
+ utilisée comme adresse mail destinatrice.
+ Si canEdit est activé, l'utilisateur pourra
+ choisir l'adresse mail destinatrice parmi la liste des valeurs de
+ l'attribut.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_rss.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_rss.docbook
new file mode 100644
index 00000000..5580c502
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_rss.docbook
@@ -0,0 +1,10 @@
+
+ LSattr_html_rss
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ l'URL d'un flux RSS. Il propose directement dans l'interface, la possibilité
+ d'accèder au flux RSS.
+ Ce type d'attribut HTML est dérivé du type
+ text. Il profite donc de toutes
+ les fonctionnalités d'un champ de ce type (autogénération, ...).
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_select_list.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_select_list.docbook
new file mode 100644
index 00000000..dc8e1d4e
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_select_list.docbook
@@ -0,0 +1,100 @@
+
+ LSattr_html_select_list
+ Ce type est utilisé pour la gestion des attributs dont les valeurs font
+ partie d'une liste statique ou dynamique. Il est possible de lister des valeurs
+ statiques et également des références à d'autres &LSobjects;. La référence à
+ un objet correspond à une valeur clé, référente à un objet précis, qui peut être
+ soit la valeur d'un de ses attributs, soit son DN.
+
+
+Structure...
+ array (
+ 'possible_values' => array (
+ '[LSformat de la valeur clé]' => '[LSformat du nom d'affichage]',
+ ...
+ 'OTHER_OBJECT' => array (
+ 'object_type' => '[Type d'LSobject]',
+ 'display_name_format' => '[LSformat du nom d'affichage des LSobjects]',
+ 'value_attribute' => '[Nom de l'attribut clé]',
+ 'filter' => '[Filtre de recherche des LSobject]',
+ 'scope' => '[Scope de la recherche]',
+ 'basedn' => '[Basedn de la recherche]'
+ )
+ )
+),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ possible_values
+
+ Tableau associatif obligatoire contenant en valeur clé le &LSformat;
+ des valeurs clés prisent par l'attribut et en valeurs associées, le &LSformat;
+ des noms d'affichage de ces valeurs. Ces &LSformats; sont composés à partir des
+ valeurs de l'objet courant (attributs, dn, ...).
+
+ Si la valeur clé est égale à OTHER_OBJECT, une liste
+ d'&LSobject; sera insérée dans la liste des valeurs possibles. La valeur
+ associée est alors un tableau associatif dont les valeurs clés sont les noms
+ des paramètres de configuration de la recherche de ces &LSobjects; et les
+ valeurs associées, les valeurs des paramètres.
+
+
+
+ object_type
+
+ Nom du type d'&LSobject; en référence.
+
+
+
+
+
+
+ display_name_format
+
+ &LSformat; du nom d'affichage des objets lors de leur sélection.
+
+
+
+
+
+
+ value_attribute
+
+ Nom de l'attribut des &LSobjects; en référence servant de valeur
+ clé et permettant de les identifier (Exemple : dn ou
+ uid).
+
+
+
+
+
+
+ filter
+
+ Filtre falcultatif de la recherche des LSobjets. Il sera dans tous
+ les cas agrémenté des valeurs des objectclass du type
+ d'&LSobject;.
+
+
+
+
+
+
+ filter
+
+ Basedn falcultatif de la recherche des LSobjets.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook
new file mode 100644
index 00000000..9847fba6
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook
@@ -0,0 +1,67 @@
+
+ LSattr_html_select_object
+ Ce type est utilisé pour la gestion des attributs dont les valeurs sont
+ des références à d'autres &LSobjects;. Chaque référence à un objet correspond
+ à une valeur prise par l'attribut. Les valeurs clés référant à un &LSobject;
+ sont soit la valeur d'un de leurs attributs, soit leur DN.
+
+
+Structure...
+ array (
+ selectable_object => array (
+ 'object_type' => '[Type d'LSobject selectionnable]',
+ 'display_name_format' => '[LSformat du nom d'affichage des LSobjects]',
+ 'value_attribute' => '[Nom de l'attribut clé des LSobjects]'
+ )
+),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ selectable_object
+
+ Tableau associatif obligatoire contenant en valeur clé le nom des
+ paramètres de configuration et dont les valeurs attachées sont les valeurs
+ des paramètres.
+
+
+
+
+ object_type
+
+ Nom du type d'&LSobject; en référence.
+
+
+
+
+
+
+ display_name_format
+
+ &LSformat; du nom d'affichage des objets lors de leur sélection.
+
+
+
+
+
+
+ value_attribute
+
+ Nom de l'attribut des &LSobjects; en référence servant de valeur
+ clé et permettant de les identifier (Exemple : dn ou
+ uid).
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_ssh_key.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_ssh_key.docbook
new file mode 100644
index 00000000..14773555
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_ssh_key.docbook
@@ -0,0 +1,6 @@
+
+ LSattr_html_ssh_key
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une clef publique SSH. Il permet dans l'interface, d'avoir un affichage adapté
+ à ce type de donnée.
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_text.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_text.docbook
new file mode 100644
index 00000000..378eecab
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_text.docbook
@@ -0,0 +1,96 @@
+
+ LSattr_html_text
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une chaîne de caractères devant être affichée dans un champ
+ input HTML de type text.
+
+
+Structure...
+ array(
+ 'generate_value_format' => '[LSformat pour la génération de la valeur]',
+ 'autoGenerateOnCreate' => [booléen],
+ 'autoGenerateOnModify' => [booléen],
+ 'withoutAccent' => [booleen],
+ 'replaceSpaces' => "[chaîne de remplacement]",
+ 'upperCase' => [booleen],
+ 'lowerCase' => [booleen]
+),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ generate_value_format
+
+ &LSformat; de la valeur utilisée pour la génération automatique de
+ celle-ci à partir des informations saisies dans le formulaire. Les valeurs
+ clefs du format sont les noms des attributs de l'objet. Seuls les attributs
+ affichés au moins en lecture seule dans le formulaire peuvent être utilisés
+ dans le format. Une seule valeur par attribut sera utilisée pour la
+ génération : celle du premier champ (dans l'ordre d'apparition dans le
+ formulaire).
+ Seuls les éléments du formulaire de type HTML
+ input, select ou
+ textarea peuvent être utilisés.
+
+
+
+
+ autoGenerateOnCreate
+
+ Activation de la génération automatique lorsque celui-ci est
+ vide au moment du chargement du formulaire.
+ La valeur par défaut est False.
+
+
+
+
+ autoGenerateOnModify
+
+ Activation de la génération automatique lors de chaque
+ modification de la valeur des champs du formulaire lié.
+ La valeur par défaut est False.
+
+
+
+
+ withoutAccent
+
+ Activation de la suppression des accents dans la chaîne de
+ caractères générée automatiquement.
+ La valeur par défaut est False.
+
+
+
+
+ withoutAccent
+
+ Activation du remplacement des accents dans la chaîne de
+ caractères générée automatiquement. La valeur de remplacement est celle du
+ paramètre.
+ La valeur par défaut est False.
+
+
+
+
+ upperCase
+
+ Activation de la mise en majuscule de la valeur générée
+ automatiquement.
+ La valeur par défaut est False.
+
+
+
+
+ lowerCase
+
+ Activation de la mise en minuscule de la valeur générée
+ automatiquement.
+ La valeur par défaut est False.
+
+
+
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_textarea.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_textarea.docbook
new file mode 100644
index 00000000..b67de460
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_textarea.docbook
@@ -0,0 +1,7 @@
+
+ LSattr_html_textarea
+ Ce type est utilisé pour la gestion des attributs dont la valeur est une
+ chaine de caractères trop longue pour être saisie dans un champs HTML
+ imput de type text et est plus adapté
+ à un champ HTML textarea.
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_url.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_url.docbook
new file mode 100644
index 00000000..05e61c3b
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_url.docbook
@@ -0,0 +1,11 @@
+
+ LSattr_html_url
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une URL. Il propose directement dans l'interface, la possibilité d'accèder au
+ site ou encore de l'ajouter dans ses favoris (lorsque le navigateur le
+ supporte).
+ Ce type d'attribut HTML est dérivé du type
+ text. Il profite donc de toutes
+ les fonctionnalités d'un champ de ce type (autogénération, ...).
+
+
diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_xmpp.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_xmpp.docbook
new file mode 100644
index 00000000..9a8d2115
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_xmpp.docbook
@@ -0,0 +1,14 @@
+
+ LSattr_html_xmpp
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une adresse XMPP. Il propose directement dans l'interface, la possibilité
+ de lancer une fenêtre de dialogue avec l'interlocuteur de son client XMPP
+ préféré .
+ Cette fonctionnalité n'est supporté uniquement par les
+ navigateurs web supportant les URI de type xmpp://~~.
+
+ Ce type d'attribut HTML est dérivé du type
+ text. Il profite donc de toutes
+ les fonctionnalités d'un champ de ce type (autogénération, ...).
+
+
diff --git a/doc/conf/LSattribute/LSattr_ldap.docbook b/doc/conf/LSattribute/LSattr_ldap.docbook
new file mode 100644
index 00000000..948656d1
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_ldap.docbook
@@ -0,0 +1,12 @@
+
+ Configuration des attributs LDAP
+ Cette section décrit les options propres à chacun des types d'attributs LDAP
+ supportés par &LdapSaisie;.
+
+ &conf-LSattr_ldap_ascii;
+ &conf-LSattr_ldap_boolean;
+ &conf-LSattr_ldap_date;
+ &conf-LSattr_ldap_image;
+ &conf-LSattr_ldap_numeric;
+ &conf-LSattr_ldap_password;
+
diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml
new file mode 100644
index 00000000..95bb5288
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_ascii.docbook b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_ascii.docbook
new file mode 100644
index 00000000..1a144ff1
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_ascii.docbook
@@ -0,0 +1,6 @@
+
+ LSattr_ldap_ascii
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une chaine de caractère. Ce type est le type par défaut.
+
+
diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_boolean.docbook b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_boolean.docbook
new file mode 100644
index 00000000..8d96e145
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_boolean.docbook
@@ -0,0 +1,37 @@
+
+ LSattr_ldap_boolean
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une booléen. On attend ici par booléen, tout attribut ne pouvant prendre que deux
+ valeurs pré-définies correspond pour l'un à Oui et l'autre
+ à Non
+
+
+ Structure...
+ array (
+ 'true_value' => '[valeur correspondant à Vrai]',
+ 'false_value' => '[valeur correspondant à Faux]'
+),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ true_value
+
+ La valeur de l'attribut correspondant à Vrai.
+
+
+
+
+ false_value
+
+ La valeur de l'attribut correspondant à Faux.
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_date.docbook b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_date.docbook
new file mode 100644
index 00000000..faaef03c
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_date.docbook
@@ -0,0 +1,47 @@
+
+ LSattr_ldap_date
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une date.
+
+
+ Structure...
+ array (
+ 'timestamp' => [Booléen], // Si la date est stockée au format timestamp
+ 'format' => '[Format de stockage]' // Default : "%Y%m%d%H%M%SZ"
+),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ timestamp
+
+ Booléen définissant si la date est stockée sous la forme d'un
+ timestamp Unix (nombre de secondes depuis le 1er janvier 1970 à 00:00:00
+ UTC).
+ Si timestamp est vrai, &LdapSaisie; ne tient
+ pas compte du paramètre format.
+
+
+
+
+ format
+
+ Format de stockage de la date dans l'annuaire. Ce format est composé à
+ partir des motifs clés gérés par la fonction strftime()
+ de &php;. Pour plus d'information, consulter
+ la documentation officielle.
+ La valeur par défaut est %Y%m%d%H%M%SZ,
+ correspondant au format de stockage par défaut dans &openldap;. Exemple :
+ 20091206230506Z
+
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_image.docbook b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_image.docbook
new file mode 100644
index 00000000..ce9dcced
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_image.docbook
@@ -0,0 +1,7 @@
+
+ LSattr_ldap_image
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ une image. Pour le moment, aucun traitement particulier n'est appliqué pour le
+ stockage.
+
+
diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_numeric.docbook b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_numeric.docbook
new file mode 100644
index 00000000..91284d09
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_numeric.docbook
@@ -0,0 +1,7 @@
+
+ LSattr_ldap_numeric
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ un nombre. Pour le moment, aucun traitement particulier est n'appliqué pour le
+ stockage.
+
+
diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_password.docbook b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_password.docbook
new file mode 100644
index 00000000..2a7dd85f
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_password.docbook
@@ -0,0 +1,55 @@
+
+ LSattr_ldap_password
+ Ce type est utilisé pour la gestion des attributs dont la valeur est
+ un mot de passe.
+
+
+ Structure...
+ array (
+ 'encode' => '[Type d'encodage du mot de passe]',
+ 'no_random_crypt_salt' => '[Booléen]' // Désactivation de l'utilisation d'une salt aléatoire
+),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ encode
+
+ Nom du type d'encodage du mot de passe utilisé. Les types d'encodages
+ supportés sont les suivants :
+
+ md5crypt
+ crypt
+ ext_des
+ blowfish
+ sha
+ ssha
+ smd5
+ md5
+ clear
+
+ Valeur par défaut : md5crypt
+ Si le type d'encodage est inconnu, ou qu'il n'est pas
+ supporté par le serveur web, un message d'erreur alertera l'utilisateur et le
+ mot de passe sera stocké en clair.
+
+
+
+
+
+ no_random_crypt_salt
+
+ Désactivation de l'utilisation d'une salt générée aléatoirement au
+ profit de l'utilisation des deux premiers caractères du mot de passe.
+ Ce paramètre impacte uniquement le type de cryptage crypt.
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check-data.docbook b/doc/conf/LSattribute/check-data.docbook
new file mode 100644
index 00000000..52be7c7e
--- /dev/null
+++ b/doc/conf/LSattribute/check-data.docbook
@@ -0,0 +1,66 @@
+
+ Configuration des règles de vérification syntaxique
+ Cette section décrit la manière de configuer des règles de vérification
+ syntaxique sur les données des attributs. Ces règles seront utilisées pour vérifier
+ que les valeurs saisies par un utilisateur dans un formulaire sont correctes.
+
+
+Structure...
+ array (
+ '[regle1]' => array(
+ 'msg' => _("[Message d'erreur]"),
+ 'params' => array(
+ // Paramètres de la règle
+ )
+ ),
+ ...
+),]]>
+...
+
+
+Le paramètre check_data est un tableau associatif
+dont les clés sont les noms des règles de vérification syntaxique actives et les
+valeurs associées sont des tableaux associatifs contenant les paramètres des
+règles.
+
+
+Paramètres de configuration
+
+
+ msg
+
+ Le message d'erreur à afficher lors que la règle n'est pas respectée.
+
+
+
+
+ params
+
+ Tableau associatif contenant les paramètres de la règle. Les
+ paramètres possibles sont propres à chaque type de règle. Les clès sont les
+ noms des paramètres et les valeurs associés, les valeurs des paramètres.
+
+
+
+
+
+&conf-LSattribute-check-data-alphanumeric;
+&conf-LSattribute-check-data-date;
+&conf-LSattribute-check-data-email;
+&conf-LSattribute-check-data-filesize;
+&conf-LSattribute-check-data-imagefile;
+&conf-LSattribute-check-data-imagesize;
+&conf-LSattribute-check-data-lettersonly;
+&conf-LSattribute-check-data-maxlength;
+&conf-LSattribute-check-data-minlength;
+&conf-LSattribute-check-data-mimetype;
+&conf-LSattribute-check-data-nonzero;
+&conf-LSattribute-check-data-nopunctuation;
+&conf-LSattribute-check-data-numeric;
+&conf-LSattribute-check-data-password;
+&conf-LSattribute-check-data-rangelength;
+&conf-LSattribute-check-data-regex;
+&conf-LSattribute-check-data-required;
+&conf-LSattribute-check-data-telephonenumber;
+
+
diff --git a/doc/conf/LSattribute/check_data/LSattribute-check_data.entities.xml b/doc/conf/LSattribute/check_data/LSattribute-check_data.entities.xml
new file mode 100644
index 00000000..74bad917
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/LSattribute-check_data.entities.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/alphanumeric.docbook b/doc/conf/LSattribute/check_data/alphanumeric.docbook
new file mode 100644
index 00000000..b8ac6e4a
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/alphanumeric.docbook
@@ -0,0 +1,6 @@
+
+ alphanumeric
+ Cette règle vérifie que la valeur est une chaîne de caractères composée
+ uniquement de lettres non-accuentées, en minuscule ou en majuscule et/ou de
+ chiffres.
+
diff --git a/doc/conf/LSattribute/check_data/date.docbook b/doc/conf/LSattribute/check_data/date.docbook
new file mode 100644
index 00000000..8d8a3314
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/date.docbook
@@ -0,0 +1,21 @@
+
+ date
+ Cette règle vérifie que la valeur saisie est bien une date et qu'elle
+ respecte un format précis.
+
+
+Paramètres de configuration
+
+
+ format
+
+ Format de la date à respecter. Ce format doit être compatible avec la
+ fonction strftime() de &php;.
+ Voir la documentation de la
+ fonction
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/email.docbook b/doc/conf/LSattribute/check_data/email.docbook
new file mode 100644
index 00000000..05c70b0c
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/email.docbook
@@ -0,0 +1,29 @@
+
+ email
+ Cette règle vérifie que la valeur saisie est bien une adresse e-mail. Il
+ est possible de vérifier si elle appartient bien à un domaine en particulier ou
+ encore de vérifier si le domaine existe et qu'il possède un serveur de mail(MX).
+
+
+Paramètres de configuration
+
+
+ domain
+
+ Nom de domaine obligatoire. Ce paramètre peut être une simple chaine
+ correspondant au domaine ou un tableau listant plusieurs domaines
+ possibles.
+
+
+
+
+ checkDomain
+
+ Booléen définissant si le domaine de l'adresse mail doit être
+ validé.
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/filesize.docbook b/doc/conf/LSattribute/check_data/filesize.docbook
new file mode 100644
index 00000000..2a17620d
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/filesize.docbook
@@ -0,0 +1,25 @@
+
+ filesize
+ Cette règle vérifie que la valeur est un fichier dont la taille en octets
+ respecte les limites passées en paramètre.
+
+
+Paramètres de configuration
+
+
+ minSize
+
+ Taille minimum.
+
+
+
+
+ maxSize
+
+ Taille maximum.
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/imagefile.docbook b/doc/conf/LSattribute/check_data/imagefile.docbook
new file mode 100644
index 00000000..a42ee961
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/imagefile.docbook
@@ -0,0 +1,12 @@
+
+ imagefile
+ Cette règle vérifie que la valeur est bien un fichier et que le type mime
+ de celui-ci est bien une image. Cette règle utilise la règle mimetype en spécifiant
+ si l'utilisateur ne le fait pas que le type mime doit respecter la regex suivante :
+ /image\/.*/
+
+ Cette règle est une simple interface à la règle mimetype,
+ il est donc possible de passer d'autres paramètres propres à ce type.
+
+
+
diff --git a/doc/conf/LSattribute/check_data/imagesize.docbook b/doc/conf/LSattribute/check_data/imagesize.docbook
new file mode 100644
index 00000000..36c305a1
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/imagesize.docbook
@@ -0,0 +1,39 @@
+
+ imagesize
+ Cette règle vérifie que la valeur est une image dont la taille en pixels
+ respecte les limites passées en paramètre.
+
+
+Paramètres de configuration
+
+
+ minWidth
+
+ Largeur minimum.
+
+
+
+
+ maxWitdh
+
+ Largeur maximum.
+
+
+
+
+ minHeight
+
+ Hauteur minimum.
+
+
+
+
+ maxHeight
+
+ Hauteur maximum.
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/lettersonly.docbook b/doc/conf/LSattribute/check_data/lettersonly.docbook
new file mode 100644
index 00000000..37e885c4
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/lettersonly.docbook
@@ -0,0 +1,5 @@
+
+ lettersonly
+ Cette règle vérifie que la valeur est une chaîne de caractères composée
+ uniquement de lettres non-accuentées, en minuscule ou en majuscule.
+
diff --git a/doc/conf/LSattribute/check_data/maxlength.docbook b/doc/conf/LSattribute/check_data/maxlength.docbook
new file mode 100644
index 00000000..016e14d3
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/maxlength.docbook
@@ -0,0 +1,18 @@
+
+ maxlength
+ Cette règle vérifie que la valeur saisie est une chaine de caractères
+ dont la longueur est inférieur ou égale à la valeur passées en paramètre.
+
+
+Paramêtres de configuration
+
+
+ limit
+
+ Limite supérieur (ou égale) de la longueur de la chaîne de caratères.
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/mimetype.docbook b/doc/conf/LSattribute/check_data/mimetype.docbook
new file mode 100644
index 00000000..c5e0aef1
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/mimetype.docbook
@@ -0,0 +1,27 @@
+
+ mimetype
+ Cette règle vérifie que la valeur est bien un fichier et que le type mime
+ de celui-ci est correct. Il est possible de vérifier si le type mime fait partie
+ d'une liste ou encore s'il valide une expression régulière.
+
+
+Paramêtres de configuration
+
+
+ mimeType
+
+ Type mime obligatoire. Ce paramètre peut être une simple chaine
+ correspondant au type mime ou un tableau listant plusieurs possibilités.
+
+
+
+
+ mimeTypeRegEx
+
+ Expression régulière que doit respecter le type mime.
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/minlength.docbook b/doc/conf/LSattribute/check_data/minlength.docbook
new file mode 100644
index 00000000..c6997ef1
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/minlength.docbook
@@ -0,0 +1,18 @@
+
+ minlength
+ Cette règle vérifie que la valeur saisie est une chaine de caractères
+ dont la longueur est supérieur ou égale à la valeur passée en paramètre.
+
+
+Paramètres de configuration
+
+
+ limit
+
+ Limite inférieure (ou égale) de la longueur de la chaîne de caratères.
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/nonzero.docbook b/doc/conf/LSattribute/check_data/nonzero.docbook
new file mode 100644
index 00000000..16f835dd
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/nonzero.docbook
@@ -0,0 +1,4 @@
+
+ nonzero
+ Cette régle vérifie que la valeur est une valeur numérique non nulle.
+
diff --git a/doc/conf/LSattribute/check_data/nopunctuation.docbook b/doc/conf/LSattribute/check_data/nopunctuation.docbook
new file mode 100644
index 00000000..73df5676
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/nopunctuation.docbook
@@ -0,0 +1,6 @@
+
+ nopunctuation
+ Cette régle vérifie que la valeur est une chaîne de caractères ne contenant
+ pas de signe de ponctuation. Les caractères suivants sont actuellement exclus :
+ < ~ [ ] { }]]>
+
diff --git a/doc/conf/LSattribute/check_data/numeric.docbook b/doc/conf/LSattribute/check_data/numeric.docbook
new file mode 100644
index 00000000..e9ddb85e
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/numeric.docbook
@@ -0,0 +1,4 @@
+
+ numeric
+ Cette régle vérifie que la valeur est une valeur numérique.
+
diff --git a/doc/conf/LSattribute/check_data/password.docbook b/doc/conf/LSattribute/check_data/password.docbook
new file mode 100644
index 00000000..cffccf1a
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/password.docbook
@@ -0,0 +1,41 @@
+
+ password
+ Cette règle vérifie que la valeur est un mot de passe respectant la politique
+ de sécurité définie par les paramètres de la règle.
+
+
+Paramètres de configuration
+
+
+ minlength
+
+ Longueur minimale du mot de passe.
+
+
+
+
+ maxlength
+
+ Longueur maximale du mot de passe.
+
+
+
+
+ prohibitedValues
+
+ Tableau de valeurs interdites.
+
+
+
+
+ regex
+
+ Expression(s) régulière(s) que doit respecter le mot de passe. Ce
+ paramètre peut être une expression régulière ou un tableau d'expressions
+ régulières.
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/rangelength.docbook b/doc/conf/LSattribute/check_data/rangelength.docbook
new file mode 100644
index 00000000..a7c053f1
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/rangelength.docbook
@@ -0,0 +1,19 @@
+
+ rangelength
+ Cette règle vérifie que la valeur saisie est une chaine de caractères
+ dont la longueur est comprise entre deux valeurs passées en paramètre.
+
+
+Paramètre de configuration
+
+
+ limits
+
+ Tableau contenant deux valeurs, la première étant la limite inférieure
+ ou égale et la seconde la limite supérieure ou égale.
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/regex.docbook b/doc/conf/LSattribute/check_data/regex.docbook
new file mode 100644
index 00000000..517b6919
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/regex.docbook
@@ -0,0 +1,18 @@
+
+ regex
+ Cette règle vérifie que la valeur saisie respecte bien l'expression
+ régulière passée en paramètre.
+
+
+Paramètres de configuration
+
+
+ regex
+
+ L'expression régulière devant être respectée.
+
+
+
+
+
+
diff --git a/doc/conf/LSattribute/check_data/required.docbook b/doc/conf/LSattribute/check_data/required.docbook
new file mode 100644
index 00000000..efc636b5
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/required.docbook
@@ -0,0 +1,5 @@
+
+ required
+ Cette régle vérifie que la valeur n'est pas une chaîne de caractères de
+ longueur nulle.
+
diff --git a/doc/conf/LSattribute/check_data/telephonenumber.docbook b/doc/conf/LSattribute/check_data/telephonenumber.docbook
new file mode 100644
index 00000000..63163f0d
--- /dev/null
+++ b/doc/conf/LSattribute/check_data/telephonenumber.docbook
@@ -0,0 +1,6 @@
+
+ telephonenumber
+ Cette régle vérifie que la valeur est un numéro de téléphone français.
+ Celui-ci doit respecter l'expression regulière suivante :
+ /^(01|02|03|04|05|06|08|09)[0-9]{8}$/
+
diff --git a/doc/conf/LSattribute/triggers.docbook b/doc/conf/LSattribute/triggers.docbook
new file mode 100644
index 00000000..07694390
--- /dev/null
+++ b/doc/conf/LSattribute/triggers.docbook
@@ -0,0 +1,101 @@
+
+ Déclencheurs
+ Cette section décrit la manière de paramétrer des déclencheurs afin que
+ &LdapSaisie; exécute durant ses processus, et à des moments bien précis des
+ traitements d'un &LSattribute;, des fonctions que vous pourrez développer vous
+ même. De plus, le résultat de l'exécution de vos fonctions pourra influer
+ sur le déroulement des processus.
+
+ Actuellement, les évènements suivant sont gérés :
+
+
+
+
+
+ Nom
+ Description
+ Bloquant
+
+
+
+
+ before_create
+ Avant la création du LSobject, lorsque l'attribut a au
+ moins une valeur.
+ Oui
+
+
+ after_create
+ Après la création du LSobject, lorsque l'attribut a au
+ moins une valeur.
+ Non
+
+
+ before_modify
+ Avant la modification de la valeur de l'attribut.
+ Oui
+
+
+ after_modify
+ Après la modification de la valeur de l'attribut.
+ Non
+
+
+ before_delete
+ Avant la suppression du LSobject contenant l'attribut.
+ Oui
+
+
+ after_delete
+ Après la suppression du LSobject contenant l'attribut.
+ Non
+
+
+
+
+Si un événement est dit bloquant, lors de
+l'exécution des actions liées, si une des fonctions retourne false
+, le processus s'arrêtera.
+
+
+ Configuration
+ La configuration des déclencheurs se fait dans la définition des
+ &LSattributes;. Par exemple, pour définir les fonctions à exécuter après la
+ modification de la valeur de l'attribut mail du type de
+ &LSobject; LSeepeople, c'est à dire lors de leur évenement
+ after_modify, il faut définir la variable suivante :
+
+ Cette variable peut contenir soit une chaine de caractères correspondant au
+ nom de la fonction à exécuter, soit un tableau de chaînes de caractères
+ correspondant aux noms des fonctions à exécuter.
+
+
+ Ecriture d'une fonction
+ Une fonction exécuté par un déclencheur d'un LSattribute se déclare de
+ la manière suivante :
+
+Cette fonction doit prendre pour seul paramètre, le LSobject contenant le
+LSattribute sur lequel l'évenement survient et doit retourner soit
+True si tout s'est bien passé, soit False
+en cas de problème. Dans le cas d'un événement bloquant, si la fonction retourne
+False, le processus est arrêté.
+
+
diff --git a/doc/conf/LSattribute/validation.docbook b/doc/conf/LSattribute/validation.docbook
new file mode 100644
index 00000000..b827c008
--- /dev/null
+++ b/doc/conf/LSattribute/validation.docbook
@@ -0,0 +1,137 @@
+
+ Configuration des règles de vérification d'intégrité
+ Cette section décrit la manière de configurer des règles de vérification
+ d'intégrité sur les données des attributs. Il est possible de valider la valeur
+ de l'attribut par l'intermédiraire de la vérification de résultat d'une
+ recherche paramètrable dans l'annuaire ou encore d'appeler une fonction de
+ votre choix pour effectuer la vérification voulue.
+
+
+ Validation par l'analyse du résultat d'une recherche dans l'annuaire
+ Une telle règle permet de vérifier si les valeurs des attributs n'entrent
+ pas en conflit avec d'autres objets de l'annuaire. Ce test peut également
+ permetre de vérifier si les valeurs devant faire référence à d'autres objets
+ de l'annuaire sont correctes.
+
+
+Structure...
+ array (
+ ...
+ array(
+ 'msg' => _("[LSformat du message d'erreur]"),
+ 'filter' => '[LSformat du filtre de la recherche]',
+ 'object_type' => '[Type d'LSobject recherché]',
+ 'basedn' => '[BaseDn de la recherche]',
+ 'scope' => '[Scope de la recherche]',
+ 'result' => '[Résultat positif de la recherche]'
+ ),
+ ...
+),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ msg
+
+ &LSformat; du message d'erreur à afficher lorsque la validation
+ échoue. Ce format est construit avec les valeurs du &LSobject;.
+
+
+
+
+ filter
+
+ &LSformat; du filtre de la recherche. Ce format peut être construit
+ avec toutes les valeurs du LSobject (attributs, DN, ...) et également avec
+ la valeur à valider en utilisant pour mot clé %{val}
+ .
+
+
+
+
+ object_type
+
+ Le nom du type d'LSobject recherché. Si un type est spécifié, le
+ filtre de la recherche sera une combinaison de celui du paramètre
+ filter et du filtre composé à partir des objectClass
+ du type d'&LSobject;. Paramètre facultatif.
+
+
+
+
+ basedn
+
+ Le basedn de la recherche. Paramètre
+ facultatif.
+
+
+
+
+ scope
+
+ Le scope de la recherche. Paramètre
+ facultatif.
+
+
+
+
+ result
+
+ Le résultat de la recherche : si result vaut
+ zéro, la recherche ne devra retourner aucun objet pour que la validation soit
+ réussie. Sinon, la recherche devra retourner au moins un objet.
+
+
+
+
+
+
+
+
+ Validation par l'exécution d'une fonction
+ Il est possible d'effectuer la validation de l'attribut par l'exécution
+ d'une fonction de votre choix. Il lui sera passé en paramètre le LSobject
+ complet. Si la fonction ne retourne pas true, la
+ validation échouera.
+
+
+Structure...
+ array (
+ ..
+ array(
+ 'msg' => _("[LSformat du message d'erreur]"),
+ 'function' => '[Nom de la fonction de validation]'
+ ),
+ ...
+),]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ msg
+
+ &LSformat; du message d'erreur à afficher lorsque la validation
+ échoue. Ce format est construit avec les valeurs du &LSobject;.
+
+
+
+
+ function
+
+ Le nom de la fonction à exécuter. Si cette fonction n'existe pas,
+ un message d'erreur sera affiché et la validation échouera.
+
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSformat.docbook b/doc/conf/LSformat.docbook
new file mode 100644
index 00000000..3a8ec608
--- /dev/null
+++ b/doc/conf/LSformat.docbook
@@ -0,0 +1,36 @@
+
+Format paramétrable
+Un format paramétrable est une chaîne de caractères
+contenant des mots clés formés comme dans l'exemple suivant :
+%{[nom du mot clé][:A][:B]}
+Le nom du mot clé peut contenir des lettres de "a" à "z", de "A" à "Z" et des
+chiffres de 0 à 9. Ces mots clés seront remplacés par les valeurs passées en
+paramètres et liées au contexte d'utilisation. Les paramètres :A et
+:B permettent d'extraire une partie de la chaîne complète
+avant la substitution.
+
+Le paramètre A correspond, lorsque
+B n'est pas défini, au nombre maximum de caractères à
+extraire de la chaîne de substitution. A doit être un entier
+dont le signe influ, comme expliqué ci-dessous :
+
+
+ Si A est positif, les A
+ premiers caractères de la chaîne de substitution seront extraits.
+
+
+
+ Si A est négatif, les |A|
+ derniers caractères de la chaîne de substitution seront extraits.
+
+
+Lorsque le paramètre B est défini,
+A correspond au rang du premier caractère à partir duquel la
+chaîne de substitution sera découpée et B le nombre maximum
+de caractères à extraire. Le signe de B influera comme expliqué
+dans le premier cas.
+
+Lorsque qu'une seule valeur clé est disponible pour la
+substitution, le nom du mot clé n'importe pas. Tous les mots clés trouvés dans
+le format seront remplacés par cette seule valeur.
+
diff --git a/doc/conf/LSobject.docbook b/doc/conf/LSobject.docbook
new file mode 100644
index 00000000..7275a010
--- /dev/null
+++ b/doc/conf/LSobject.docbook
@@ -0,0 +1,225 @@
+
+
+ Configuration LSobject
+
+ Cette partie décrit la manière de configurer les différents types de LSobjets
+ manipulés par &LdapSaisie;.
+
+
+ La configuration des &LSobjects; est stockée dans le dossier
+ /conf/LSobjects. Dans ce dossier, on retrouve un fichier par type
+ d'&LSobject;, nommé de la manière suivante :
+ config.LSobjects.[nom du type d'LSobject].php
+
+ Ce fichier contient la déclaration de la configuration du type d'&LSobject;
+ qui est stocké dans la variable globale
+ $GLOBALS['LSobjects']['[nom du type d'LSobject]'].
+
+
+
+ Structure...
+ array(
+ 'objetclass1',
+ 'objetclass2',
+ ...
+ ),
+ 'rdn' => 'attr1',
+
+ 'container_dn' => 'ou=people',
+ 'container_auto_create' => array(
+ // Information des configurations pour la création du conteneur du type d'LSobjet
+ // lors de la création nouveau subDn
+ ),
+
+ 'before_modify' => 'function1',
+ 'after_modify' => 'function2',
+ 'after_create' => 'function3',
+ 'after_delete' => 'function4',
+
+ 'label' => _('objet1'),
+
+ 'display_name_format' => '[format]',
+ 'orderby' => 'displayName', // Valeurs possibles : 'displayName' ou 'subDn'
+
+ // LSrelation
+ 'LSrelation' => array(
+ // Configuration des LSrelations entre ce type d'objet et les autres
+ ),
+
+ // LSform
+ 'LSform' => array (
+ // Configuration des formulaires de l'objet
+ ), // fin LSform
+
+ // Attributs
+ 'attrs' => array (
+ // Configuration des attributs du type d'LSobjet
+ )
+);]]>
+...
+
+
+
+Paramètres de configuration
+
+
+ objectclass
+
+ La liste des objectclass des objets.
+
+
+
+
+ rdn
+
+ Nom de l'attribut correspondant au RDN des
+ objets LDAP.
+
+
+
+
+ container_dn
+
+ Elément pour construire le basedn de stockage
+ de ce type d'objet. Par exemple, si le basedn de
+ l'annuaire est o=ls et que les objets
+ utilisateurs sont stockés dans la branche de l'annuaire
+ ou=people,o=ls, alors container_dn
+ devra valoir ou=people.
+ Lorsque l'annuaire possède des &subDn;, les objets seront cherchés
+ dans le basedn résultant de la concaténation du paramètre
+ container_dn, d'une virgule et du
+ basedn correspondant au &subDn; courant.
+
+
+
+
+ container_auto_create
+
+ Tableau associatif contenant les paramètres de configuration
+ nécessaires à la création des container_dn dans les
+ nouveaux objets utilisés comme &subDn;.
+ Voir la section
+ concernée.
+
+
+
+
+ before_modify
+
+ Chaîne de caractères correspondant au nom d'une fonction qui sera
+ exécutée avant la modification d'un objet.
+ Voir la section concernée.
+
+
+
+
+
+ after_modify
+
+ Chaîne de caractères correspondant au nom d'une fonction qui sera
+ exécutée après la modification d'un objet.
+ Voir la section concernée.
+
+
+
+
+
+ after_create
+
+ Chaîne de caractères correspondant au nom d'une fonction qui sera
+ exécutée après la création d'un objet.
+ Voir la section concernée.
+
+
+
+
+
+ after_delete
+
+ Chaîne de caractères correspondant au nom d'une fonction qui sera
+ exécutée après la suppression d'un objet.
+ Voir la section concernée.
+
+
+
+
+
+ label
+
+ Nom générique au pluriel qualifiant le type d'objet. Exemple :
+ Utilisateurs.
+ Si vous utilisez la fonctionnalité d'internationalisation, il faut
+ utiliser ici la fonction de gettext pour que le
+ texte soit traduit si vous n'êtes pas dans la langue de référence. Exemple :
+ _('Utilisateurs')
+
+
+
+
+ display_name_format
+
+ Format paramètrable du nom
+ des objets composés à partir des valeurs d'affichage des attributs de l'objet.
+
+
+
+
+
+ orderby
+
+ Paramétrage du tri par défaut des objets lors de l'affiche du
+ résultat d'une recherche.
+ Valeurs possibles : displayName ou subDn
+ (Paramètre facultatif)
+
+
+
+
+ LSrelation
+
+ Tableau associatif contenant les paramètres de configuration
+ des &LSrelations;. Voir la section
+ concernée.
+
+
+
+
+ LSform
+
+ Tableau associatif contenant les paramètres de configuration
+ des &LSforms; des &LSobjects;. Voir
+ la section concernée.
+
+
+
+
+ LSsearch
+
+ Tableau associatif contenant les paramètres de configuration
+ des recherches de &LSobject; de ce type dans l'annuaire.
+ Voir la section concernée.
+
+
+
+
+
+ attrs
+
+ Tableau associatif contenant les paramètres de configuration
+ des attributs des objets. Voir
+ la section concernée.
+
+
+
+
+
+ &conf-LSattribute;
+ &conf-LSobject-container_auto_create;
+ &conf-LSobject-triggers;
+ &conf-LSobject-LSrelation;
+ &conf-LSobject-LSform;
+ &conf-LSobject-LSsearch;
+
+
diff --git a/doc/conf/LSobject/LSform.docbook b/doc/conf/LSobject/LSform.docbook
new file mode 100644
index 00000000..c53828e3
--- /dev/null
+++ b/doc/conf/LSobject/LSform.docbook
@@ -0,0 +1,128 @@
+
+ LSform
+ Cette section décrit la manière de paramétrer les formulaires d'&LdapSaisie;
+ pour un type &LSobject; donné. Pour chaque type d'&LSobject;, il faut configurer
+ plusieurs formulaires correspondant aux vues gérées par &LdapSaisie; (création,
+ modification, ...). Les formulaires se configurent par plusieurs biais :
+
+
+
+
+Via la configuration des attributs : La configuration des attributs
+détermine la présence ou non des attributs dans les formulaires. Elle permet
+également de définir si on souhaite bloquer leur présence en lecture seulement.
+
+
+
+
+Via les droits de l'utilisateur connecté sur les attributs de l'objet
+à éditer : en fonction des droits de l'utilisateur sur un attribut, celui-ci
+apparaîtra en lecture-écriture ou en lecture uniquement voir pas du tout.
+
+
+
+
+Via la configuration au niveau de chaque type d'&LSobject; : il y est
+possible de définir le comportement globale du formulaire comme la validation
+via Ajax ou encore la disposition logique des attributs dans le formulaire.
+
+
+Structure
+ [booléen],
+ 'layout' => array (
+ // Configuration de la disposition logique des attributs
+ )
+);]]>
+
+
+
+Paramètres de configuration
+
+
+ ajaxSubmit
+
+ Booléen définissant si le formulaire sera envoyé via une requête
+ Ajax plutôt qu'à travers un rafraîchissement de la page. Par défaut :
+ VRAI.
+
+
+
+
+ layout
+
+ Tableau contenant la configuration de l'affichage du formulaire :
+ il est possible de définir la disposition des attributs dans le formulaire
+ en les regroupant dans des onglets et en les faisant apparaître dans un
+ ordre logique.Voir la section
+ concernée.
+
+
+
+
+
+
+
+
+
+
+
+Configuration de l'affichage
+
+La configuration des layout se situe dans la
+configuration des &LSobjects;, dans la variable layout
+($GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['layout']).
+Cette variable est un tableau associatif dont la clé est l'identifiant de l'onglet
+et dont la valeur associée est la configuration de l'onglet.
+
+Structure
+ array(
+ 'label' => '[label de l'onglet]',
+ 'img' => 1, // Valeur possible 1 ou 0
+ 'args' => array (
+ 'arg1',
+ 'arg2',
+ ...
+ )
+ ),
+ ...
+);]]>
+
+
+
+Paramètres de configuration
+
+
+ label
+
+ Le label de l'onglet.
+
+
+
+
+ img
+
+ Affiche ou non l'image d'un éventuel attribut de type HTML
+ LSattr_html_image.
+
+
+
+
+ args
+
+ Tableau associatif contenant une liste ordonnée des attributs qui
+ apparaîtront dans l'onglet.
+
+
+
+
+
+Lorsqu'un layout est défini, celui-ci
+est "suivi à la lettre" pour l'affichage du &LSform;.
+Ainsi, si un attribut est défini dans la configuration de l'objet comme présent
+dans le &LSform; courant, mais que celui-ci n'est pas présent dans le
+layout, il ne sera pas du tout affiché.
+
+
+
diff --git a/doc/conf/LSobject/LSrelation.docbook b/doc/conf/LSobject/LSrelation.docbook
new file mode 100644
index 00000000..50970d7b
--- /dev/null
+++ b/doc/conf/LSobject/LSrelation.docbook
@@ -0,0 +1,113 @@
+
+ LSrelation
+ Cette section décrit la manière de configurer les relations entre les
+ &LSobjects; appelées &LSrelation;.
+
+
+Structure
+ array(
+ 'label' => _('[label de la relation]'),
+ 'emptyText' => _("[texte affiché si aucune relation avec d'autres objets
+ n'existe pour l'objet courant]"),
+ 'LSobject' => '[le type d'LSobjet en relation]',
+ 'list_function' => '[méthode1]',
+ 'getkeyvalue_function' => '[methode2]',
+ 'update_function' => '[methode3]',
+ 'remove_function' => '[methode4]',
+ 'rename_function' => '[methode5]',
+ 'rights' => array(
+ 'LSprofile1' => 'r',
+ 'LSprofile2' => 'w',
+ ...
+ )
+ )
+);]]>
+
+
+
+Paramètres de configuration
+
+
+ label
+
+ Le label de la relation.
+
+
+
+
+ emptyText
+
+ Le texte à afficher pour décrire le fait que l'objet courant n'a
+ aucune relation d'établie avec d'autres &LSobjects;. Exemple (au sujet d'un
+ utilisateur) : N'appartient à aucun groupe.
+
+
+
+
+ LSobject
+
+ Le type d'&LSobject; en relation avec le type courant.
+
+
+
+
+ list_function
+
+ La méthode de la classe du type d'&LSobject; en relation, permettant
+ de lister les objets de ce type en relation avec l'objet courant.
+
+
+
+
+ getkeyvalue_function
+
+ La méthode de la classe du type d'&LSobject; en relation, permettant
+ d'obtenir la valeur clé à stocker pour établir la relation entre l'objet
+ courant et d'autres objets du type concerné.
+
+
+
+
+ update_function
+
+ La méthode de la classe du type d'&LSobject; en relation, permettant
+ de mettre à jour les relations existantes entre l'objet courant et les objets
+ du type concerné. Cette liste d'objets en relation est établie par
+ l'utilisateur à travers l'interface.
+
+
+
+
+ remove_function
+
+ La méthode de la classe du type d'&LSobject; en relation permettant
+ de supprimer une relation existante entre l'objet courant et un objet du
+ type concerné.
+
+
+
+
+ rename_function
+
+ La méthode de la classe du type d'&LSobject; en relation permettant
+ d'effectuer les actions nécessaires lorsque l'objet courant est renommé dans
+ le but de maintenir les valeurs clés permettant d'établir les relations entre
+ l'objet courant et les objets en relation avec lui.
+
+
+
+
+ rights
+
+ Tableau associatif dont les clés sont les noms des &LSprofiles; ayant
+ des droits sur cette relation et dont les valeurs associées sont les droits
+ correspondants. La valeur des droits d'un &LSprofile; peut être
+ r pour le droit de lecture ou w pour
+ le droit de lecture-écriture.Par défaut, un &LSprofile; n'a aucun droit.
+
+
+
+
+
+
diff --git a/doc/conf/LSobject/LSsearch.docbook b/doc/conf/LSobject/LSsearch.docbook
new file mode 100644
index 00000000..700bfc35
--- /dev/null
+++ b/doc/conf/LSobject/LSsearch.docbook
@@ -0,0 +1,47 @@
+
+ LSsearch
+ Cette section décrit la manière de paramétrer les recherches dans
+ l'annuaire pour un type d'&LSobject; donné.
+
+La configuration des LSsearch se situe dans la
+configuration des &LSobjects;, dans la variable LSsearch
+($GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSsearch']).
+
+Structure
+ array(
+ 'attr1',
+ 'attr2',
+ ...
+ ),
+ ...
+);]]>
+
+
+
+Paramètres de configuration
+
+
+ attrs
+
+ Tableau listant les attributs pouvant être utilisés dans les filtres
+ de recherche LDAP employés par &LdapSaisie;. Lorsqu'un motif de recherche est
+ passé par l'utilisateur, &LdapSaisie; composera un filtre LDAP à partir de
+ cette liste.
+ Lors d'une recherche non-approximative, le filtre de recherche sera
+ composé de la manière suivante :
+ (|(attr1=*motif*)(attr2=*motif*)...)
+ Lors d'une recherche approximative, le filtre de recherche sera
+ composé de la manière suivante :
+ (|(attr1=~motif)(attr2~=motif)...)
+ Ces filtres, une fois composés, sont insérés dans un autre,
+ filtrant en plus sur les ObjectClass du type
+ d'&LSobject; de la manière suivante :
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSobject/container_auto_create.docbook b/doc/conf/LSobject/container_auto_create.docbook
new file mode 100644
index 00000000..28cf7f4b
--- /dev/null
+++ b/doc/conf/LSobject/container_auto_create.docbook
@@ -0,0 +1,52 @@
+
+ Création automatique du conteneur des LSobjets dans un subDn
+ Cette section décrit la manière de configurer la création automatique
+ des conteneurs des LSobjets. Si le basedn correspondant
+ à la branche de stockage des &LSobjects; n'existe pas, &LdapSaisie; tentera de
+ le créer à partir de la configuration de la variable
+ $GLOBALS['LSobjects']['[nom du type d'LSobject]']['container_auto_create'].
+
+
+Structure
+ array(
+ 'objectclass1',
+ 'objectclass2',
+ ...
+ ),
+ 'attrs' => array(
+ 'attr1' => 'val1',
+ 'attr2' => array(
+ 'val2',
+ 'val3',
+ ...
+ ),
+ ...
+ )
+);]]>
+
+
+
+Paramètres de configuration
+
+
+ objectclass
+
+ La liste des objectclass de l'objet conteneur.
+
+
+
+
+ attrs
+
+ Un tableau associatif dont les clés sont les noms des attributs de
+ l'objet conteneur à définir et dont les valeurs associées sont la/les valeur(s)
+ de ces attributs.
+
+
+
+
+
+
+
+
diff --git a/doc/conf/LSobject/triggers.docbook b/doc/conf/LSobject/triggers.docbook
new file mode 100644
index 00000000..be776b84
--- /dev/null
+++ b/doc/conf/LSobject/triggers.docbook
@@ -0,0 +1,109 @@
+
+ Déclencheurs
+ Cette section décrit la manière de paramétrer des déclencheurs afin que
+ &LdapSaisie; exécute durant ses processus, et à des moments bien précis des
+ traitements d'un &LSobject;, des fonctions que vous pourrez développer vous
+ même. De plus, le résultat de l'exécution de vos fonctions pourra influer
+ sur le déroulement des processus.
+
+ Actuellement, les évenements suivant sont gérés :
+
+
+
+
+
+ Nom
+ Description
+ Bloquant
+
+
+
+
+ before_create
+ Avant la création du LSobject.
+ Oui
+
+
+ after_create
+ Après la création du LSobject.
+ Non
+
+
+ before_modify
+ Avant la modification du LSobject
+ Oui
+
+
+ after_modify
+ Après la modification du LSobject
+ Non
+
+
+ before_rename
+ Avant de renommer le LSobject
+ Oui
+
+
+ after_rename
+ Après avoir renommé le LSobject
+ Non
+
+
+ before_delete
+ Avant la suppression du LSobject
+ Oui
+
+
+ after_delete
+ Après la suppression du LSobject
+ Non
+
+
+
+
+Si un événement est dit bloquant, lors de
+l'exécution des actions liées, si une des fonctions retourne false
+, le processus s'arrêtera.
+
+
+ Configuration
+ La configuration des déclencheurs se fait dans la définition des types
+ d'&LSobjects;. Par exemple, pour définir les fonctions à exécuter après la
+ modification des LSobjects de type LSeepeople, c'est à
+ dire lors de leur évènement after_modify, il faut définir
+ la variable suivante :
+
+ Cette variable peut contenir soit une chaine de caractères correspondant au
+ nom de la fonction à exécuter, soit un tableau de chaînes de caractères
+ correspondant aux noms des fonctions à exécuter.
+
+
+ Ecriture d'une fonction
+ Une fonction exécuté par un déclencheur d'un LSobject se déclare de la
+ manière suivante :
+
+Cette fonction doit prendre pour seul paramètre, le LSobject sur lequel l'évènement
+survient et doit retourner soit True si tout s'est bien passé,
+soit False en cas de problème. Dans le cas d'un événement
+bloquant, si la fonction retourne False, le processus est
+arrêté.
+
+
+
diff --git a/doc/conf/LSprofile.docbook b/doc/conf/LSprofile.docbook
new file mode 100644
index 00000000..152f9077
--- /dev/null
+++ b/doc/conf/LSprofile.docbook
@@ -0,0 +1,234 @@
+
+
+
+ Profils d'utilisateurs
+
+ Cette section décrit la manière dont sont définis les profils d'utilisateurs
+ se connectant à l'interface appelés LSprofile. Il est
+ possible de définir autant de profils d'utilisateurs que l'on souhaite. Pour
+ chaque profil d'utilisateur, il faudra définir dans quelles parties de
+ l'annuaire ce profil existe (Exemple : les admistrateurs de groupes existent
+ uniquement dans la branche de l'annuaire stockant les groupes). Enfin pour
+ chaque partie de l'annuaire, il faudra définir la manière d'identifier si
+ l'utilisateur qui se connecte appartient à ce profil.
+
+
+ Structure...
+ array (
+ [nom d'un LSprofile] => array (
+ [basedn] => [dn utilisateur],
+ [autre basedn] => array (
+ [dn d'un utilisateur] => NULL,
+ [autre dn] => array ( // via un listage de l'attribut d'un objet
+ 'attr' => [nom de l'attribut clé de l'objet],
+ 'attr_value' => [format de la valeur de l'attribut clé],
+ 'LSobject' => [nom du type LSobject de l'objet]
+ )
+ ),
+ 'LSobjects' => array ( // via une liste d'objet sur lequel l'utilisateur a des pouvoirs
+ [nom du LSobject] => array (
+ 'attr' => [nom de l'attribut clé],
+ 'attr_value' => [format de la valeur de l'attribut clé],
+ // ou
+ 'filter' => [format du filtre de recherche],
+
+ 'basedn' => [basedn de recherche],
+ 'params' => [configuration de la recherche]
+ ),
+ ...
+ )
+ ),
+ ...
+),]]>
+...
+
+
+
+Le paramètre LSprofiles est un tableau associatif contenant,
+en valeur clé, le nom d'un LSprofile et en valeur associée,
+la configuration nécessaire pour déterminer si l'utilisateur connecté appartient
+à ce LSprofile pour tout ou partie de l'annuaire.
+
+
+
+Dans chaque configuration de LSprofile, il est possible
+d'identifier l'appartenance ou non de l'utilisateur connecté de deux manières :
+
+
+
+
+
+
+Pour une branche de l'annuaire donnée (basedn) :
+en listant les utilisateurs appartenant à ce LSprofile pour
+tous les objets de la branche. Il sera possible de lister les utilisateurs dont
+on connait le DN ou de lister les utilisateurs appartenant
+à une liste stockée dans l'annuaire (par exemple la liste des membres d'un
+groupe).
+
+
+
+
+
+
+Liste des DNs d'utilisateurs :
+
+ Structure...
+ array (
+ [nom du LSprofile] => array (
+ [basedn] => [dn utilisateur],
+ // ou si plusieurs DNs
+ [autre basedn] => array (
+ [dn d'un utilisateur] => NULL,
+ [dn d'un utilisateur 2] => NULL
+ ),
+ ...
+ ),
+ ...
+),]]>
+...
+
+Explication : Pour un LSprofile et un
+basedn donnés, on définit l'utilisateur appartenant au
+LSprofile en donnant son DN. Si on
+souhaite lister plusieurs utilisateurs, on utilise un tableau associatif dans
+lequel les clés sont les DNs des utilisateurs et les valeurs
+associées sont toutes NULL.
+
+
+
+
+
+Liste d'utilisateurs stockée dans l'annuaire :
+
+ Structure...
+ array (
+ [nom du LSprofile] => array (
+ [basedn] => array (
+ [DN d'un object] => array (
+ 'attr' => [nom de l'attribut clé de l'objet],
+ 'attr_value' => [format de la valeur de l'attribut clé],
+ 'LSobject' => [nom du type LSobject de l'objet]
+ )
+ ),
+ ...
+),]]>
+...
+
+Explication : Pour un LSprofile et un
+basedn donnés, on liste les utilisateurs du
+LSprofile référencés dans l'attribut attr
+de l'object de type LSobject et selon le format de valeur
+décrit dans attr_value.
+
+
+
+
+
+
+
+
+
+
+
+Pour un type de LSobject donné : en listant
+les objets pour lesquels l'utilisateur aura les droits du LSprofile. Il sera
+possible, à travers une recherche paramétrable dans l'annuaire, de lister les
+objets pour lesquels l'utilisateur appartiendra au
+LSprofile.
+
+ Structure...
+ array (
+ [nom d'un LSprofile] => array (
+ 'LSobjects' => array ( // via un liste d'objet pour lequel l'utilisateur
+ // appartient au LSprofile
+ [nom du LSobject] => array (
+ 'attr' => [nom de l'attribut clé],
+ 'attr_value' => [format de la valeur de l'attribut clé],
+ // or
+ 'filter' => [format du filtre de recherche],
+
+ 'basedn' => [basedn de recherche],
+ 'params' => [configuration de la recherche]
+ ),
+ ...
+ )
+ ),
+ ...
+),]]>
+...
+
+Explications : Dans la configuration d'un LSprofile,
+la valeur clé LSprofile signifie qu'on est dans un cas de la
+délégation de droits sur des types d'LSobject. Dans ce tableau associatif, il
+est possible de définir un ou plusieurs types de LSobject pour lesquels on délègue
+des droits. Dans ce tableau la valeur clé est le nom du LSobject et la valeur
+associée est un tableau contenant la configuration permettant de dire quels sont
+les LSobjets de ce type concernés par la délégation.
+Cette configuration contient les paramètres d'une recherche dans l'annuaire
+en considérant que l'utilisateur connecté aura les droits du LSprofile sur les
+objets retournés. Les paramètres de la recherche sont :
+
+
+
+
+ attr
+
+ Nom de l'attribut des LSobjets contenant une valeur clé qui
+ permettra d'identifier l'utilisateur comme ayant droit.
+
+
+
+
+ attr_value
+
+ Le format de la valeur clé prise par l'attribut attr.
+ Ce format est composé à partir des données de l'objet de l'utilisateur
+ connecté. Voir le paragraphe Format
+ paramètrable pour plus d'informations sur l'écriture du format.
+
+
+
+
+ filter
+
+ Ce paramètre remplace les paramètres attr et
+ attr_value. Il est possible ici d'écrire directement le
+ format paramètrable du filtre recherche dans l'annuaire. Ce filtre sera
+ automatiquement agrémenté des conditions sur l'attribut objectclass.
+ Voir le paragraphe Format paramètrable
+ pour plus d'informations sur l'écriture du format.
+
+
+
+
+ basedn
+
+ C'est le basedn de la recherche. Il est possible
+ ainsi de la limiter sur les LSojects d'une branche précise de l'annuaire.
+ (Paramètre facultatif)
+
+
+
+
+ params
+
+ C'est un tableau associatif contenant les paramètres étendus de la
+ recherche. Voir le paragraphe
+ Paramètres étendus des recherches dans l'annuaire pour plus de détails.
+ (Paramètre facultatif)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/conf/conf.docbook b/doc/conf/conf.docbook
new file mode 100644
index 00000000..83b1a91c
--- /dev/null
+++ b/doc/conf/conf.docbook
@@ -0,0 +1,22 @@
+
+
+Configuration
+
+
+ La configuration du projet est située principalement dans le dossier 'conf/'.
+ Les exceptions seront détaillées par la suite.
+
+
+
+ Toute la configuration du projet se fait par l'intermédiaire de
+ fichiers définissant des variables &php; dont les valeurs sont utilisées par
+ le programme. Ceci signifie que la syntaxe de ces fichiers doit être valide
+ avec l'interpréteur &php; utilisé.
+
+
+&conf-globale;
+
+&conf-LSobject;
+&conf-LSaddon;
+
+
diff --git a/doc/conf/conf.entities.xml b/doc/conf/conf.entities.xml
new file mode 100644
index 00000000..51c23111
--- /dev/null
+++ b/doc/conf/conf.entities.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/conf/globale.docbook b/doc/conf/globale.docbook
new file mode 100644
index 00000000..f60c1c7c
--- /dev/null
+++ b/doc/conf/globale.docbook
@@ -0,0 +1,134 @@
+
+
+ Configuration globale
+
+ La plus grande partie de la configuration globale se trouve dans le fichier
+ config.inc.php.
+
+
+
+ Structure
+]]>
+
+
+
+Variables globales
+
+
+
+
+
+ NetLDAP2
+
+ Chemin vers la librairie PEAR &netldap;.
+
+
+
+
+
+
+
+
+ Smarty
+
+ Chemin vers le moteur de template &smarty;.
+
+
+
+
+
+
+
+
+ lang
+
+ Paramètre utilisé pour l'internationalisation.
+
+
+
+
+
+
+
+
+ cacheLSprofiles
+
+ Activation/Désactivation de la mise en cache des profils des
+ utilisateurs connectés (&LSprofiles;).
+ Valeurs possibles : True ou False
+ Valeur recommandée : True
+ Ce paramètre a une action globale mais non prioritaire
+ sur le comportement de l'application.
+
+
+
+
+
+ cacheSubDn
+
+ Activation/Désactivation de la mise en cache des niveaux de
+ connexion (&subDn;) dans l'annuaire.
+ Valeurs possibles : True ou False
+ Valeur recommandée : True
+
+ Ce paramètre a une action globale mais non prioritaire
+ sur le comportement de l'application.
+
+
+
+
+
+ cacheSearch
+
+ Activation/Désactivation de la mise en cache du résultat des
+ recherches dans l'annuaire.
+ Valeurs possibles : True ou
+ False
+ Valeur recommandée : True
+
+ Ce paramètre a une action globale mais non prioritaire
+ sur le comportement de l'application.
+
+
+
+
+
+ keepLSsessionActive
+
+ Activation/Désactivation du maintient de la LSsession active.
+ Valeurs possibles : True ou
+ False
+
+ Ce paramètre a une action globale mais non prioritaire
+ sur le comportement de l'application.
+
+
+
+
+
+ ldap_servers
+
+ Configuration des serveurs LDAP.
+ Voir section concernée.
+
+
+
+
+
+&conf-srv-ldap;
+
+
+
+&conf-LSformat;
+&conf-LDAP_search_params;
+
+
diff --git a/doc/conf/recoverPassword.docbook b/doc/conf/recoverPassword.docbook
new file mode 100644
index 00000000..c72724af
--- /dev/null
+++ b/doc/conf/recoverPassword.docbook
@@ -0,0 +1,81 @@
+
+
+
+ Récupération de mot de passe
+
+ Cette section décrit la manière de configurer la récupération de mot de
+ passe par les utilisateurs. Le mécanisme de récupération de mot de passe
+ fonctionne en deux parties :
+
+
+
+
+
+Dans un premier lieu, l'utilisateur ayant perdu son mot de passe accède
+à l'interface de récupération à partir de la page de connexion. L'interface lui
+demande de saisir son identifiant et éventuellement de sélectionner le serveur
+LDAP concerné. Une fois ces informations saisies, une recherche de l'utilisateur
+est effectuée dans l'annuaire et si celui-ci est trouvé, la valeur de l'attribut
+recoveryHashAttr de l'objet est alors redéfinie avec une valeur
+aléatoire.
+Un mail est ensuite envoyé à l'utilisateur en utilisant la première valeur
+de l'attribut mailAttr comme adresse. Ce mail est formé à
+partir des paramètres du tableau associatif recoveryHashMail.
+Celui-ci doit contenir le sujet du mail dans subject et le
+corps du message dans msg. Ces deux informations sont des
+formats paramètrables composés avec, comme valeur clé,
+l'URL de retour à laquelle l'utilisateur devra se rendre pour accèder à la
+seconde étape de la récupération de son mot de passe.
+
+
+
+
+
+L'utilisateur doit donc se rendre sur l'interface par l'intermédiaire
+de l'URL qui lui aura été fournie dans le mail de l'étape précédente. Cette URL
+contient la valeur de l'attribut recoveryHashAttr précédement
+définie. A partir de cette information, une recherche est effectuée dans l'annuaire
+pour retrouver l'utilisateur correspondant.
+Si l'utilisateur est retrouvé, un nouveau mot de passe lui est généré en
+utilisant les paramètres de configuration éventuellement définis dans la
+configuration HTML de l'attribut "mot de passe". Pour avoir plus d'information
+sur ces paramètres, consulter la documentation du type d'attribut HTML
+LSattr_html_password.
+L'attribut recoveryHashAttr est quant à lui
+supprimé.
+Ensuite, un mail est composé à partir des paramètres du tableau associatif
+newPasswordMail et est envoyé à l'utilisateur. Ce tableau
+doit contenir le sujet du mail dans subject et le corps du
+message dans msg. Ces deux informations sont des
+formats paramètrables composés avec, comme valeur clé, le
+nouveau mot de passe de l'utilisateur.
+
+
+
+
+
+
+
+
+
+
+ Structure...
+ array(
+ 'mailAttr' => '[attribut mail]',
+ 'recoveryHashAttr' => '[attribut hash]',
+ 'recoveryEmailSender' => '[adresse mail utilisée par LdapSaisie pour l'envoi des mails]',
+ 'recoveryHashMail' => array( // 1er mail : avec l'URL pour l'accès à la 2nde partie
+ 'subject' => '[sujet du mail]',
+ 'msg' => "[message contenant le mot clé %{url}]"
+ ),
+ 'newPasswordMail' => array( // 2nd mail : avec le mot de passe
+ 'subject' => '[sujet du mail]',
+ 'msg' => "[message contenant le mot clé %{mdp}]"
+ )
+),]]>
+...
+
+
+
+
+
diff --git a/doc/conf/srv-ldap.docbook b/doc/conf/srv-ldap.docbook
new file mode 100644
index 00000000..80f75af1
--- /dev/null
+++ b/doc/conf/srv-ldap.docbook
@@ -0,0 +1,189 @@
+
+
+ Configuration des serveurs LDAP
+
+Cette section décrit le tableau de configuration des différents serveurs
+LDAP utilisés par l'application. Ce tableau contient lui même un tableau par
+serveur LDAP.
+
+
+ Structure...
+ array(
+ array (
+ 'name' => [nom de l'annuaire],
+ 'ldap_config'=> array(
+ // Définition des paramètres de connexion à l'annuaire
+ ),
+ 'LSprofiles' => array (
+ // Définition des LSprofiles
+ ),
+ 'cacheLSprofiles' => [boolean],
+ 'cacheSearch' => [boolean],
+ 'authObjectType' => [LSobject],
+ 'authObjectTypeAttrPwd' => [attribut],
+ 'LSaccess' => array (
+ [Type LSobject 1],
+ [Type LSobject 2],
+ ...
+ ),
+ 'subDn' => array(
+ // Définition des sous-niveaux de l'annuaire
+ ),
+ 'subDnLabel' => [nom des sous-niveaux],
+ 'recoverPassword' => array(
+ // Définition des paramètres de configuration de la récupération de mot de passe
+ ),
+ 'emailSender' => [email],
+ 'keepLSsessionActive' => [booléen]
+ )
+ ...
+);]]>
+...
+
+
+
+
+Paramètres de configuration
+
+
+ name
+
+ Le nom d'affichage de ce serveur Ldap
+ (utilisé lorsque plusieurs serveur LDAP sont déclarés).
+
+
+
+
+
+ ldap_config
+
+ Informations de connexion au serveur LDAP. Ces informations sont
+ structurées selon les attentes de la librairie &netldap;.
+
+ Plus d'informations
+
+
+
+
+
+
+ LSprofiles
+
+ Définition des profils d'utilisateurs se connectant à l'annuaire.
+ Voir la section concernée.
+
+
+
+
+
+
+ cacheLSprofiles
+
+ Activation/Désactivation de la mise en cache des &LSprofiles; des
+ utilisateurs connectés à ce serveur.
+
+
+
+
+
+ cacheSearch
+
+ Activation/Désactivation de la mise en cache du résultat des
+ recherches sur ce serveur.
+
+
+
+
+
+ authObjectType
+
+ Nom du type d'&LSobject; pouvant être utilisé pour authentifier un
+ utilisateur se connectant à l'interface.
+
+
+
+
+
+ authObjectTypeAttrPwd
+
+ Nom de l'attribut "mot de passe" du type d'&LSobject; utilisé pour
+ l'authentification des utilisateurs se connectant à l'interface.
+
+
+
+
+
+ LSaccess
+
+ Définition des types d'&LSobjects; devant apparaître dans le menu de
+ l'interface.
+ Ce paramètre n'est utilisé que pour les annuaires n'ayant
+ pas de sous-niveaux (&subDn;).
+
+
+
+
+
+ subDn
+
+ Définition des sous-niveaux de connexion à l'annuaire.
+ Voir section concernée.
+ Ce paramètre remplace le paramètre
+ LSaccess dans le cas d'un annuaire
+ multi-niveaux.
+
+
+
+
+
+ subDnLabel
+
+ Définition du label utilisé pour qualifier les sous-niveaux de
+ connexion.
+ Ce paramètre est utile uniquement dans le cas d'un annuaire
+ multi-niveaux.
+
+
+
+
+
+ recoverPassword
+
+ Définition des paramètres de la récupération de mot de passe.
+ Voir la section concernée.
+
+
+
+
+
+ emailSender
+
+ Adresse mail utilisée par &LdapSaisie; pour envoyer des e-mails en
+ relation avec cet annuaire. Cette adresse est celle utilisée par défaut.
+ L'adresse utilisée peut également être configurée dans le contexte de
+ configuration du module devant envoyer des e-mails.
+
+
+
+
+ keepLSsessionActive
+
+ Activation/Désactivation du maintient de la LSsession active.
+ Valeurs possibles : True ou
+ False
+
+
+
+
+
+
+
+&conf-LSprofile;
+
+&conf-subDn;
+
+&conf-recoverPassword;
+
+
diff --git a/doc/conf/subDn.docbook b/doc/conf/subDn.docbook
new file mode 100644
index 00000000..276a5e06
--- /dev/null
+++ b/doc/conf/subDn.docbook
@@ -0,0 +1,97 @@
+
+
+
+ Sous-niveaux de connexion
+
+ Cette section décrit la manière de définir des sous-niveaux de connexion
+ à l'annuaire (subDn). Le concept de sous-niveau de
+ connexion sert à déclarer les niveaux logiques de l'annuaire. Par exemple, dans un
+ annuaire dans lequel sont stockés des objets concernant plusieurs organisations
+ et que celles-ci se distinguent grâce à la présence d'une séparation dans
+ l'arbre, il sera alors possible de définir des sous-niveaux de connexion pour
+ chacune des organisations.
+
+
+ Exemple d'arborescence d'annuaire utilisant le concept de
+ sous-niveaux correspondant à des sociétés
+|- o=ls
+| |- ou=companies
+| | |- ou=company1
+| | | |- ou=people
+| | | |- ou=groups
+| | |- ou=company2
+| | | |- ou=people
+| | | |- ou=groups
+| |- ou=people
+| |- ou=groups
+
+
+
+Explications : Il est possible dans cet exemple de définir des
+sous-niveaux de connexion correspondants aux sociétés. Dans chacune de ces
+sociétés, on retrouve les OU correspondant au type
+d'LSobjets. Lors de la connexion à l'interface, l'utilisateur
+devra choisir dans quel sous-niveau de l'annuaire il souhaite se connecter. Une
+fois connecté, l'utilisateur manipulera uniquement les objets du sous-niveau de
+l'annuaire dans lequel il se trouve. Il lui sera également possible de changer
+de sous-niveau de connexion à travers l'interface : une liste déroulante est
+disponible pour cela dans le menu.
+
+
+Il existe deux manières de déclarer des sous-niveaux de connexion à l'annuaire :
+
+
+
+
+En déclarant manuellement un subDn de l'annuaire
+et en lui donnant un nom.
+
+
+
+
+
+En listant les LSobjets d'un type précis et en
+utilisant leurs données pour constituer le nom des sous-niveaux. Cette liste est
+constituée en effectuant une recherche dans l'annuaire. Il est possible de définir
+un basedn particulier pour cette recherche.
+
+
+
+
+
+Pour chacune de ces méthodes on définira également les types
+d'LSobjets qui sont présents dans cette branche de
+l'annuaire.
+
+
+
+ Structure...
+ array(
+ // Déclaration manuelle
+ '[Nom du sous-niveau]' => array(
+ 'dn' => '[basedn du sous-niveau]',
+ 'LSobjects' => array( // Liste des types d'LSobjets présents dans le sous-niveau
+ [LSobject1],
+ [LSobject2],
+ ...
+ )
+ ),
+ // Liste de LSobjets
+ 'LSobject' => array(
+ '[type d'LSobject]' => array( // le type d'LSobjet à lister
+ 'basedn' => '[basedn]', // Le basedn de la recherche
+ 'displayValue' => '[format]', // Format du nom des sous-niveaux
+ 'LSobjects' => array( // Liste des types d'LSobjets présents dans les sous-niveaux
+ [LSobject1],
+ [LSobject2],
+ ...
+ )
+ )
+ )
+),]]>
+...
+
+
+
+
+
diff --git a/doc/exports/Makefile b/doc/exports/Makefile
new file mode 100644
index 00000000..3c81608f
--- /dev/null
+++ b/doc/exports/Makefile
@@ -0,0 +1,23 @@
+DOCBOOK_FILE=../LdapSaisie.docbook
+
+all: html pdf
+
+# HTML
+html: html/LdapSaisie.html
+
+html/LdapSaisie.html:
+ cd html; make html
+
+clean_html:
+ cd html; make clean
+
+# PDF
+pdf: pdf/LdapSaisie.pdf
+
+pdf/LdapSaisie.pdf:
+ cd pdf; make pdf
+
+clean_pdf:
+ cd pdf; make clean
+
+clean: clean_html clean_pdf
diff --git a/doc/exports/html/Makefile b/doc/exports/html/Makefile
new file mode 100644
index 00000000..8629159d
--- /dev/null
+++ b/doc/exports/html/Makefile
@@ -0,0 +1,23 @@
+DOCBOOK_FILE=../../LdapSaisie.docbook
+XSL_FILE=../../styles/LS.xsl
+XSL_MULTI_FILE=../../styles/LS-multi.xsl
+XSL_HELP_FILE=../../styles/LS-help.xsl
+
+XSLTPROC=xsltproc
+
+all: html
+
+html: all-in-one/LdapSaisie.html online/index.html help/index.html
+
+all-in-one/LdapSaisie.html: $(DOCBOOK_FILE)
+ $(XSLTPROC) --output all-in-one/LdapSaisie.html $(XSL_FILE) $(DOCBOOK_FILE)
+
+online/index.html: $(DOCBOOK_FILE)
+ cd online; $(XSLTPROC) -stringparam chunker.output.indent yes \
+ ../$(XSL_MULTI_FILE) ../$(DOCBOOK_FILE)
+
+help/index.html: $(DOCBOOK_FILE)
+ cd help; $(XSLTPROC) ../$(XSL_HELP_FILE) ../$(DOCBOOK_FILE)
+
+clean:
+ rm -f all-in-one/LdapSaisie.html online/* help/*
diff --git a/doc/exports/pdf/Makefile b/doc/exports/pdf/Makefile
new file mode 100644
index 00000000..d2a720ce
--- /dev/null
+++ b/doc/exports/pdf/Makefile
@@ -0,0 +1,13 @@
+DOCBOOK_FILE=../../LdapSaisie.docbook
+JW=jw
+PDF_FILE=LdapSaisie.pdf
+
+all: pdf
+
+pdf: LdapSaisie.pdf
+
+LdapSaisie.pdf: $(DOCBOOK_FILE)
+ SP_ENCODING=XML $(JW) -f docbook -b pdf "$(DOCBOOK_FILE)"
+
+clean:
+ rm -f $(PDF_FILE)
diff --git a/doc/images/important.png b/doc/images/important.png
new file mode 100644
index 00000000..dc8c8a45
Binary files /dev/null and b/doc/images/important.png differ
diff --git a/doc/images/note.png b/doc/images/note.png
new file mode 100644
index 00000000..df1e0a92
Binary files /dev/null and b/doc/images/note.png differ
diff --git a/doc/images/tip.png b/doc/images/tip.png
new file mode 100644
index 00000000..2000f208
Binary files /dev/null and b/doc/images/tip.png differ
diff --git a/doc/images/warning.png b/doc/images/warning.png
new file mode 100644
index 00000000..3c8a37df
Binary files /dev/null and b/doc/images/warning.png differ
diff --git a/doc/install/arbo.docbook b/doc/install/arbo.docbook
new file mode 100644
index 00000000..ad4c0983
--- /dev/null
+++ b/doc/install/arbo.docbook
@@ -0,0 +1,128 @@
+
+
+ Arborescence du projet
+
+
+ Racine
+
+
+ conf/
+
+ Contient les fichiers de configuration.
+
+
+
+
+
+ LSobjects/
+
+ Configuration des LSobjets.
+
+
+
+
+ LSaddons/
+
+ Configuration des LSaddons.
+
+
+
+
+
+
+
+
+
+
+
+
+ includes/
+
+
+ Contient les fichiers des ressources.
+
+
+
+
+
+ addons/
+
+ Les addons au projet.
+
+
+
+
+ class/
+
+ Les fichiers de définition des classes &php;.
+
+
+
+
+ js/
+
+ Les fichiers Javascript.
+
+
+
+
+ libs/
+
+ Les librairies utilisées.
+
+
+
+
+
+
+
+
+
+
+
+ l10n/
+
+ Les fichiers d'internationalisation.
+
+
+
+
+ lsexample/
+
+ Les fichiers relatifs à l'annuaire d'exemple.
+
+
+
+
+ templates/
+
+ Les fichiers template de l'interface.
+ Il y a un sous-dossier par template.
+
+
+
+
+ css/
+
+ Les fichiers css de l'interface. Il y a un sous-dossier par
+ template CSS.
+
+
+
+
+ images/
+
+ Les images de l'interface. Il y a un sous-dossier par template
+ d'image.
+
+
+
+
+ tmp/
+
+ Les fichiers temporaires (y compris le cache des templates).
+
+
+
+
+
diff --git a/doc/install/install.docbook b/doc/install/install.docbook
new file mode 100644
index 00000000..ff41a96c
--- /dev/null
+++ b/doc/install/install.docbook
@@ -0,0 +1,117 @@
+
+
+
+Installation
+
+
+ Pré-requis
+
+ &php; 5 avec magic_quotes_gpc à off
+ Le support LDAP dans &php; (paquet php5-ldap dans Debian)
+ Le support mhash dans &php; (paquet php5-mash dans Debian)
+ &netldap;
+ &smarty;
+ L'utisateur exécutant le serveur web doit avoir les droits d'écriture sur le dossier 'tmp'.
+
+ La librairie &netldap; oblige le fait que la racine DSE de
+ l'annuaire soit lisible en anonyme sinon la connexion à l'annuaire échouera
+ systématiquement.
+
+
+
+ Téléchargement
+ Il n'existe pas encore de version stable publiée. Vous pouvez obtenir le
+ code source soit en le rapatriant à partir du serveur Subversion, soit en téléchargeant
+ le dernier snapshot nocturne de l'arbre Subversion.
+
+
+
+ A partir de Subversion
+ Le dépôt Subversion peut être récupéré anonymement en utilisant la
+ commande suivante :
+
+ svn checkout svn://labs.libre-entreprise.org/svnroot/ldapsaisie
+
+ La racine web de l'application se trouvera alors dans le dossier
+ /ldapsaisie/trunk/.
+
+
+
+
+ A partir des snapshot
+ Toutes les nuits, un snapshot de l'arbre Subversion est réalisé et est
+ téléchargeable au format tar.gz à l'adresse suivante :
+
+ http://labs.libre-entreprise.org/snapshots.php?group_id=118
+
+
+
+
+
+&install-arbo;
+
+
+ Les étapes de l'installation
+ Cette section décrit rapidement les différentes étapes de l'installation
+ de LdapSaisie.
+
+
+ Téléchargement et décompression si nécessaire.
+ Plus de détails
+
+ Configuration globale : Cette partie est principalement
+ contenue dans le fichier conf/config.inc.php.Il s'agit en
+ particulier de configurer la connexion à votre annuaire. Pour plus de détails,
+ reportez-vous à la section concernée.
+
+ Il est possible de passer l'application en mode debug
+ ce qui peut être utile par la suite.
+
+
+ Configuration des types de &LSobjects; : Chaque type d'objet
+ manipulé par LdapSaisie doit correspondre avec un type de LSobject.
+
+
+
+ Création du fichier de classe : Ce fichier contient la
+ déclaration de la classe PHP correspondant au type de LSobject. Cette classe
+ étend la classe LSldapObject qui contient pour ainsi dire
+ toute les méthodes et proprités nécessaires pour les types de LSobject simples
+ (sans &LSrelation;). Les fichiers des classes sont contenus dans le dossier
+ /includes/class/ et portent les noms composés de la
+ manière suivante :
+ class.LSobjects.[nom du type d'LSobject].php
+ Le plus simple pour cette étape est de recopier un des fichiers d'exemple et
+ de l'adapter en changeant le nom du type d'objet dans l'ensemble du fichier.
+ Pour cela, le fichier de classe du type LSeepeople est
+ le plus simple car il ne contient que le strict minimum.
+
+ Configurer vos LSobject : Cette partie est certainement la
+ plus longue et consiste à déclarer l'ensemble des informations relatives aux
+ types des objets LDAP manipulés. Les fichiers d'exemples fournis vous seront
+ certainement d'une aide précieuse. Pour plus de détails, reportez-vous à
+ la section concernée.
+
+
+ Configurer si nécessaire les relations entre les objets
+ appelés &LSrelations;. Cette opération consiste dans un premier temps à écrire
+ les méthodes PHP nécessaires pour gérer ces relations : pour cela regardez le
+ fichier de classe du type LSeegroup. Il faudra ensuite
+ déclarer ces relations dans la configuration des types d'LSobjects : Pour plus
+ de détails, reportez-vous à la
+ section concernée.
+
+
+
+
+
+
+ Personnaliser l'interface : Il est possible de personnaliser
+ à votre goût l'interface en écrivant votre template ou en modifiant simplement
+ les fichiers CSS. Une partie de cette documentation concernera bientôt cette
+ problématique. Patience...
+
+
+
+
+
diff --git a/doc/intro/intro.docbook b/doc/intro/intro.docbook
new file mode 100644
index 00000000..e85f7614
--- /dev/null
+++ b/doc/intro/intro.docbook
@@ -0,0 +1,97 @@
+
+Introduction
+LdapSaisie est une application web d'administration d'annuaire LDAP développée
+en PHP/Javascript. Cette application a pour but d'abstraire la complexité d'un
+annuaire par l'intermédiraire d'une interface d'administration simple et intuitive.
+L'application a été concue avec pour objectif premier une modularité maximum, ce
+qui permet l'extention ou l'adaptation facile de l'application par l'intermédiaire
+de modules, d'extentions et de greffons. Cette application peut être utilisée pour
+administrer le système d'information basé sur l'annuaire LDAP et également en
+paralèlle pour permettre aux utilisateurs d'avoir accès aux données les concernants
+et éventuellement de les modifier.
+
+
+Fonctionnalités
+De part sa modularité, &LdapSaisie; est facilement extensible. Cependant,
+voici une liste non-exhaustive de ses fonctionnalités :
+
+Gestion d'annuaire simple et multi-branches
+Gestion d'un nombre illimité de types d'objets
+Gestion d'un nombre illimité de populations se connectant à
+l'interface
+Gestion fine des droits des utilisateurs, permettant la
+maitrise des droits d'accès sur les objets de l'annuaire et leurs atributs, tout
+en permettant la délégation de droits.
+
+Gestion d'un grand nombre de types d'attributs :
+
+
+ Texte (court ou long)
+ Date (format paramétrable)
+ Booléen (valeurs paramétrables)
+ Image/Photo
+ Mot de passe (génération de mot passe avec gestion d'une
+ politique fine)
+ Adresse mail
+ Flux RSS
+ Lien web (URL)
+ Adresse XMPP
+ Maildir
+ Quota de mails
+ Clef publique SSH
+ Liste déroulante à choix simple ou multiple
+ Relation à d'autres objets de l'annuaire/ Exemple : membres
+ d'un groupe, parrain d'un utilisateur, ... (valeur clé paramétrable)
+
+
+ Chaque type d'attribut à des fonctionnalités qui lui sont propres
+ et qui rendent plus facile et agréable l'utilisation de l'interface (génération
+ automatique de mot de passe, génération des valeurs d'un champ à partir
+ d'autres, ...).
+
+
+
+Gestion d'un grand nombre de règles de vérification des valeurs
+ des attributs :
+
+
+ Alpha-numérique
+ Lettres uniquement
+ Longeur maximale/minimale d'une chaine de caractères
+ Valeur différente de zéro
+ Pas de signe de ponctuation
+ Valeur numérique
+ Comparaison de valeur
+ Date
+ Adresse mail
+ Poids d'une image
+ Taille d'une image
+ Type de fichiers images
+ Politique de mot de passe (longueur/caractères
+ autorisés/caractères obligatoires)
+
+
+
+
+Gestion simplifiée des relations entre les objets de
+l'annuaire
+Interface facilement personnalisable grâce à l'utilisation
+d'un système de template.
+Possibilité de postionner des déclencheurs permettant
+d'exécuter vos propres scripts, fonctions ou méthodes au moments précis ou
+l'utilisateur créé, modifie ou supprime un objet ou un de ses attributs.
+Ces déclencheurs, en fonction de leur positionnement, peuvent influencer le
+comportement de l'application en empêchant par exemple, la validation des données
+d'un formulaire.
+Gestion fine de l'affichage des attributs en fonction de l'écran
+(=vue) sur lequel se trouve l'utilisateur.
+Gestion des dépendances entre attributs, permettant par exemple
+de regénérer automatiquement la valeur d'un attribut caché lors de la modification
+d'un autre.
+Possibilité de gérer des attributs entièrement cachés, dont les
+valeurs seront modifiées lors de la modification d'attribut en
+dépendance.
+
+
+
+
diff --git a/doc/styles/LS-help.xsl b/doc/styles/LS-help.xsl
new file mode 100644
index 00000000..e1060541
--- /dev/null
+++ b/doc/styles/LS-help.xsl
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+../../../images/
+.png
+
+
+5
+
+
diff --git a/doc/styles/LS-multi.xsl b/doc/styles/LS-multi.xsl
new file mode 100644
index 00000000..c6ee8251
--- /dev/null
+++ b/doc/styles/LS-multi.xsl
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+../../../images/
+.png
+
+
+5
+
+
diff --git a/doc/styles/LS.css b/doc/styles/LS.css
new file mode 100644
index 00000000..286780b5
--- /dev/null
+++ b/doc/styles/LS.css
@@ -0,0 +1,147 @@
+body {
+ font-family: sans-serif;
+}
+
+hr {
+ border: none;
+ border-bottom: 1px solid;
+}
+
+/*
+ * Title
+ */
+h2.title, h3.title, h4.title, h5.title, h6.title{
+ color: #000;
+ font-weight: bold;
+ border-bottom: 1px solid;
+}
+
+h2.title {
+ font-size: 24px;
+}
+
+h3.title {
+ font-size: 20px;
+}
+
+h4.title {
+ font-size: 16px;
+}
+
+h5.title, h6.title {
+ font-size: 14px;
+}
+
+h5.title {
+ margin-left: 2em;
+}
+
+/*
+ * Menu
+ */
+div.toc a {
+ text-decoration: none;
+}
+
+/*
+ * Code
+ */
+pre.programlisting {
+ border-style: solid;
+ border-color: #60B7D4;
+ -moz-border-radius: 6px;
+ border-width: 1px 1px 1px 6px;
+ opacity: 0.7;
+ background-color: #D4E8EE;
+ padding: 0.5em;
+ width: 90%;
+ margin: auto;
+ color: #111;
+}
+
+em.citetitle {
+ -moz-border-radius: 6px;
+ background-color: #60B7D4;
+ font-family: sans-serif;
+ font-size: 1em;
+ font-style: normal;
+ padding: 5px;
+ margin: 0.2em;
+ margin-top: -1em;
+ display: block;
+ width: 50%;
+ -moz-border-radius: 6px;
+}
+
+/*
+ * Warning / Important / Note
+ */
+div.warning, div.important, div.note {
+ margin: 10px;
+ padding: 10px;
+ -moz-border-radius: 20px;
+}
+
+div.warning table, div.important table, div.note table {
+ color: #fff;
+ border: none;
+}
+
+div.warning table th, div.important table th, div.note table th {
+ background-color: transparent;
+ font-size: 1.2em;
+}
+
+div.warning a, div.important a, div.note a {
+ color: #fff;
+ font-weight: bold;
+}
+
+/*
+ * Warning
+ */
+div.warning {
+ background-color: #FF3B3B;
+}
+
+
+/*
+ * Important
+ */
+div.important {
+ background-color: #366CEB;
+}
+
+/*
+ * Note
+ */
+div.note {
+ background-color: #4D4D4D;
+}
+
+/*
+ * Tableau
+ */
+table {
+ border: 1px solid #000;
+ border-collapse: collapse;
+}
+
+td {
+ padding: 0.3em;
+}
+
+th {
+ background-color: #D4E8EE;
+ font-weight: bold;
+}
+
+div.navheader th {
+ background-color: transparent;
+}
+
+span.term {
+ font-family: courier;
+ font-size: 1.1em;
+ margin: 5px;
+}
diff --git a/doc/styles/LS.xsl b/doc/styles/LS.xsl
new file mode 100644
index 00000000..83aa89fb
--- /dev/null
+++ b/doc/styles/LS.xsl
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+../../../images/
+.png
+
+
+5
+