<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://wiki.ovidentia.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Patricia</id>
		<title>OviWiki - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.ovidentia.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Patricia"/>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php/Sp%C3%A9cial:Contributions/Patricia"/>
		<updated>2026-04-18T15:54:32Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3020</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3020"/>
				<updated>2008-01-08T15:35:34Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Les modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne seront plus modifiables en dehors du noyau, tout le travail de personnalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion seront possibles :&lt;br /&gt;
&lt;br /&gt;
Le mode groupware : tous les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personnalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourront être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé, un nouveau point d'entrée devra être défini dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications seront chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum) ainsi que la personnalisation de l'ovml chargé en bas de page.&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécification n'est nécessaire.&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nommé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargements de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécessaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificités du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web créées dans Ovidentia pour le mode groupware seront toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut, $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte. Un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu à cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'Ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple, une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteurs pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'Ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, il sera impossible de reproduire un skin à l'identique, chaque application Ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffit plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tous les fichiers template d'un skin en équivalent ovml pour le mode fullpage.&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des applications sont utilisées (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent à fonctionner à l'identique, ils devront fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3019</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3019"/>
				<updated>2008-01-08T15:35:07Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Mode opératoire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne seront plus modifiables en dehors du noyau, tout le travail de personnalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion seront possibles :&lt;br /&gt;
&lt;br /&gt;
Le mode groupware : tous les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personnalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourront être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé, un nouveau point d'entrée devra être défini dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications seront chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum) ainsi que la personnalisation de l'ovml chargé en bas de page.&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécification n'est nécessaire.&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nommé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargements de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécessaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificités du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web créées dans Ovidentia pour le mode groupware seront toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut, $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte. Un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu à cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'Ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple, une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteurs pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'Ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, il sera impossible de reproduire un skin à l'identique, chaque application Ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffit plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tous les fichiers template d'un skin en équivalent ovml pour le mode fullpage.&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des applications sont utilisées (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3018</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3018"/>
				<updated>2008-01-08T15:34:36Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Contraintes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne seront plus modifiables en dehors du noyau, tout le travail de personnalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion seront possibles :&lt;br /&gt;
&lt;br /&gt;
Le mode groupware : tous les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personnalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourront être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé, un nouveau point d'entrée devra être défini dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications seront chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum) ainsi que la personnalisation de l'ovml chargé en bas de page.&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécification n'est nécessaire.&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nommé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargements de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécessaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificités du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web créées dans Ovidentia pour le mode groupware seront toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut, $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte. Un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu à cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'Ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple, une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteurs pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'Ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, il sera impossible de reproduire un skin à l'identique, chaque application Ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffit plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tout les fichier template d'un skin en équivalent ovml pour le mode fullpage&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des application sont utilisée (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3017</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3017"/>
				<updated>2008-01-08T15:33:56Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Gestion des skins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne seront plus modifiables en dehors du noyau, tout le travail de personnalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion seront possibles :&lt;br /&gt;
&lt;br /&gt;
Le mode groupware : tous les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personnalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourront être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé, un nouveau point d'entrée devra être défini dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications seront chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum) ainsi que la personnalisation de l'ovml chargé en bas de page.&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécification n'est nécessaire.&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nommé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargements de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécessaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificités du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web créées dans Ovidentia pour le mode groupware seront toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut, $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte. Un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu à cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'Ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple, une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteurs pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'Ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas il sera impossible de reproduire un skin à l'identique, chaque application ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffi plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tout les fichier template d'un skin en équivalent ovml pour le mode fullpage&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des application sont utilisée (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3016</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3016"/>
				<updated>2008-01-08T15:33:32Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Gestion dynamiques des sections */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne seront plus modifiables en dehors du noyau, tout le travail de personnalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion seront possibles :&lt;br /&gt;
&lt;br /&gt;
Le mode groupware : tous les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personnalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourront être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé, un nouveau point d'entrée devra être défini dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications seront chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum) ainsi que la personnalisation de l'ovml chargé en bas de page.&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécification n'est nécessaire.&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nommé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargements de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécessaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificités du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web créées dans Ovidentia pour le mode groupware seront toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut, $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte. Un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu à cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'Ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple, une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteurs pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas il sera impossible de reproduire un skin à l'identique, chaque application ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffi plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tout les fichier template d'un skin en équivalent ovml pour le mode fullpage&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des application sont utilisée (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3015</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3015"/>
				<updated>2008-01-08T15:32:47Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Spécificitées du mode groupware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne seront plus modifiables en dehors du noyau, tout le travail de personnalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion seront possibles :&lt;br /&gt;
&lt;br /&gt;
Le mode groupware : tous les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personnalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourront être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé, un nouveau point d'entrée devra être défini dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications seront chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum) ainsi que la personnalisation de l'ovml chargé en bas de page.&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécification n'est nécessaire.&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nommé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargements de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécessaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificités du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web créées dans Ovidentia pour le mode groupware seront toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut, $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte. Un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu à cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'Ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteur pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas il sera impossible de reproduire un skin à l'identique, chaque application ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffi plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tout les fichier template d'un skin en équivalent ovml pour le mode fullpage&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des application sont utilisée (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3014</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3014"/>
				<updated>2008-01-08T15:31:32Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Fichier de configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne seront plus modifiables en dehors du noyau, tout le travail de personnalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion seront possibles :&lt;br /&gt;
&lt;br /&gt;
Le mode groupware : tous les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personnalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourront être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé, un nouveau point d'entrée devra être défini dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications seront chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum) ainsi que la personnalisation de l'ovml chargé en bas de page.&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécification n'est nécessaire.&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nommé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargements de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécessaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificitées du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web crées dans ovidentia pour le mode groupware serons toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte, un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu a cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteur pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas il sera impossible de reproduire un skin à l'identique, chaque application ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffi plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tout les fichier template d'un skin en équivalent ovml pour le mode fullpage&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des application sont utilisée (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3013</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3013"/>
				<updated>2008-01-08T15:30:30Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Feuilles de style */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne seront plus modifiables en dehors du noyau, tout le travail de personnalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion seront possibles :&lt;br /&gt;
&lt;br /&gt;
Le mode groupware : tous les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personnalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourront être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé, un nouveau point d'entrée devra être défini dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications seront chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum) ainsi que la personnalisation de l'ovml chargé en bas de page.&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécification n'est nécessaire.&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nomé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargement de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécéssaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificitées du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web crées dans ovidentia pour le mode groupware serons toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte, un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu a cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteur pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas il sera impossible de reproduire un skin à l'identique, chaque application ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffi plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tout les fichier template d'un skin en équivalent ovml pour le mode fullpage&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des application sont utilisée (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3012</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3012"/>
				<updated>2008-01-08T15:28:51Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Templates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne seront plus modifiables en dehors du noyau, tout le travail de personnalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion seront possibles :&lt;br /&gt;
&lt;br /&gt;
Le mode groupware : tous les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personnalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourront être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé, un nouveau point d'entrée devra être défini dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications serons chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum).&lt;br /&gt;
Ainsi que la personnalisation de l'ovml chargé en bas de page&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécifications nécessaires.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nomé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargement de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécéssaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificitées du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web crées dans ovidentia pour le mode groupware serons toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte, un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu a cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteur pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas il sera impossible de reproduire un skin à l'identique, chaque application ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffi plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tout les fichier template d'un skin en équivalent ovml pour le mode fullpage&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des application sont utilisée (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3011</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3011"/>
				<updated>2008-01-08T15:28:05Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Templates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne seront plus modifiables en dehors du noyau, tout le travail de personnalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion seront possibles&lt;br /&gt;
Le mode groupware : tous les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personnalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourront être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé, un nouveau point d'entrée devra être défini dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications serons chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum).&lt;br /&gt;
Ainsi que la personnalisation de l'ovml chargé en bas de page&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécifications nécessaires.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nomé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargement de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécéssaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificitées du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web crées dans ovidentia pour le mode groupware serons toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte, un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu a cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteur pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas il sera impossible de reproduire un skin à l'identique, chaque application ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffi plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tout les fichier template d'un skin en équivalent ovml pour le mode fullpage&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des application sont utilisée (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3010</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3010"/>
				<updated>2008-01-08T15:10:38Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* OVML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (à confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (à confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne serons plus modifiables en dehors du noyau, tout le travail de personalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion serons possibles&lt;br /&gt;
le mode groupware : tout les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourrons être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé un nouveau point d'entré devra être définit dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications serons chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum).&lt;br /&gt;
Ainsi que la personnalisation de l'ovml chargé en bas de page&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécifications nécessaires.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nomé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargement de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécéssaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificitées du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web crées dans ovidentia pour le mode groupware serons toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte, un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu a cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteur pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas il sera impossible de reproduire un skin à l'identique, chaque application ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffi plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tout les fichier template d'un skin en équivalent ovml pour le mode fullpage&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des application sont utilisée (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3009</id>
		<title>Gestion des skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestion_des_skins&amp;diff=3009"/>
				<updated>2008-01-08T15:09:25Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Gestion de la navigation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Améliorations nécessaires avant modification des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Gestion de la navigation ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra fournir son lien pour accéder au travers du gestionnaire d'événement. La position du lien dans l'arbre pourra être modifiée avec le module sitemap. Afin de garder la compatibilité avec les anciennes versions, l'arbre du site reprendra la structure des sections.&lt;br /&gt;
&lt;br /&gt;
* Administration&lt;br /&gt;
** Groupes&lt;br /&gt;
** Addon1&lt;br /&gt;
* Utilisateur&lt;br /&gt;
** Congés&lt;br /&gt;
** Addon1&lt;br /&gt;
** Gestionnaire de fichier&lt;br /&gt;
** Catégories de thèmes d'article&lt;br /&gt;
*** Catégorie 1&lt;br /&gt;
**** Thème 1&lt;br /&gt;
&lt;br /&gt;
nouvel événement :&lt;br /&gt;
&lt;br /&gt;
bab_eventBeforeSiteMapCreated&lt;br /&gt;
&lt;br /&gt;
exemple d'ajout d'un lien dans l'arbre du site :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function bab_onSiteMapItems($event) {&lt;br /&gt;
// $event est une instance de bab_eventBeforeSiteMapCreated&lt;br /&gt;
$item = $event-&amp;gt;createItem('topic1');&lt;br /&gt;
$item-&amp;gt;setPosition(array('topcat','cat1','cat2'));&lt;br /&gt;
$item-&amp;gt;setLabel($topicname);&lt;br /&gt;
$item-&amp;gt;setDescription($topicdescription);&lt;br /&gt;
$item-&amp;gt;setLink($topicurl, 0);&lt;br /&gt;
$item-&amp;gt;setLanguage('fr');&lt;br /&gt;
$event-&amp;gt;addItem($item);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createItem : créer un object &amp;quot;élément de l'arbre du site&amp;quot; le paramètre est le nom de l'élément qui sera utilisé pour le positionnement dans l'arbre, il doit être unique.&lt;br /&gt;
&lt;br /&gt;
setPosition : le paramètre de cette fonction est un tableau qui contient le nom des éléments parents dans l'ordre de l'arborescence.&lt;br /&gt;
&lt;br /&gt;
setLabel : Permet de définir le libelé du lien&lt;br /&gt;
&lt;br /&gt;
setDescription : permet de définir une description (attribut title du lien)&lt;br /&gt;
&lt;br /&gt;
setLink : permet de définir l'url du lien, un second paramètre optionnel permettra de définir la méthode d'ouverture du lien (nouvelle fenêtre).&lt;br /&gt;
&lt;br /&gt;
setLanguage : pour que l'élément soit pris en compte dans le filtre de langue d'ovidentia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gestion du cache :&lt;br /&gt;
&lt;br /&gt;
tout l'arbre du site sera mémorisé avec tous les noeuds possibles, une fonction devra être appelée en cas de modification pour provoquer le rafraîchissement de l'arbre.&lt;br /&gt;
le stockage des informations de l'arbre du site sera réparti sur 5 tables :&lt;br /&gt;
&lt;br /&gt;
*Structure de l'arbre : bab_sitemap&lt;br /&gt;
**id_node&lt;br /&gt;
**id_parent&lt;br /&gt;
**left&lt;br /&gt;
**right&lt;br /&gt;
**id_function&lt;br /&gt;
*table de liaison entre la fonction et le profil : bab_sitemap_function_profile&lt;br /&gt;
**id_function&lt;br /&gt;
**id_profile&lt;br /&gt;
*table des fonctions utilisées : bab_sitemap_functions&lt;br /&gt;
**id_function&lt;br /&gt;
**langage&lt;br /&gt;
**name&lt;br /&gt;
**url&lt;br /&gt;
**description&lt;br /&gt;
**onclick&lt;br /&gt;
*table des profils : bab_sitemap_profiles&lt;br /&gt;
**id_profile&lt;br /&gt;
**uid (clef unique faite avec la liste des fonctions du profil)&lt;br /&gt;
*Une colonne profil dans la table des utilisateurs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un profil est un ensemble de noeuds de l'arbre disponible pour 1 ou plusieurs utilisateurs. Si plusieurs utilisateur ont le même arbre, ils ont le même profil. &lt;br /&gt;
&lt;br /&gt;
Si une fonction est intégrée plusieurs fois dans l'arbre, le profil et la table de liaison restent identiques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression des arbres de tous les utilisateurs :&lt;br /&gt;
&lt;br /&gt;
*ajout d'un thème d'article&lt;br /&gt;
*modification des droits d'accès ACL&lt;br /&gt;
*Activation/désactivation d'un module&lt;br /&gt;
*modification de la langue du site&lt;br /&gt;
*Modification du skin du site&lt;br /&gt;
*Déplacement d'un thème&lt;br /&gt;
*Déplacement d'une catégorie&lt;br /&gt;
*Modification de l'état visible/invisible d'un répertoire partagé&lt;br /&gt;
*Suppression d'un répertoire partagé&lt;br /&gt;
*Suppression d'un thème&lt;br /&gt;
*Suppression d'une catégorie&lt;br /&gt;
*Suppression d'un forum&lt;br /&gt;
*Modification de l'état actif/inactif d'un forum&lt;br /&gt;
&lt;br /&gt;
Liste des actions qui déclenchent la suppression de l'arbre d'un utilisateur :&lt;br /&gt;
&lt;br /&gt;
*modification de la langue de l'utilisateur&lt;br /&gt;
*modification du skin de l'utilisateur&lt;br /&gt;
*l'utilisateur est ajouté dans un groupe&lt;br /&gt;
*l'utilisateur est supprimé d'un groupe&lt;br /&gt;
*la liste des instances d'approbation est recalculée&lt;br /&gt;
*Ajout de l'utilisateur dans le personnel des congés&lt;br /&gt;
*Suppression de l'utilisateur du personnel de congés&lt;br /&gt;
&lt;br /&gt;
=== OVML ===&lt;br /&gt;
&lt;br /&gt;
*Gestion des inclusions&lt;br /&gt;
*Contener pour obtenir la liste des sections ordonnées avec un filtre pour les 2 colonnes de sections (sections personnalisés)&lt;br /&gt;
*Contener pour lister les éléments nouveau sur le portail&lt;br /&gt;
*Contener pour afficher un calendrier avec les événements d'agenda du mois en cours&lt;br /&gt;
*Contener pour afficher un niveau de l'arbre du site&lt;br /&gt;
*Variable pour l'email de l'administrateur&lt;br /&gt;
*Permettre la récupération des thèmes d'articles avec une variable qui définit si il y a des articles en attente d'approbation (a confirmer)&lt;br /&gt;
*Dans le contener de la liste des forums, il faut une variable avec le nombre de contributions en attente (a confirmer)&lt;br /&gt;
*Contener pour le contenu du menu ovidentia groupware&lt;br /&gt;
*Pour chaque article, avoir une url de modification si l'utilisateur a les droits de modification&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nouvelle gestion des skins ==&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Les templates ne serons plus modifiables en dehors du noyau, tout le travail de personalisation devra être fait en ovml.&lt;br /&gt;
2 modes de gestion serons possibles&lt;br /&gt;
le mode groupware : tout les templates sont gérés par le noyau et le skin peut lui appliquer une feuille de style non prioritaire&lt;br /&gt;
Le mode fullpage : La page entière est un fichier ovml, tout est personalisable mais les applications d'ovidentia ne peuvent pas être affichées dedans, seules les fonctionnalités fournies par ovml pourrons être exploitées dans ce mode.&lt;br /&gt;
&lt;br /&gt;
Si le mode fullpage est utilisé un nouveau point d'entré devra être définit dans le site, équivalent d'un « echo=1 » sur les pages ovml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Feuilles de style ===&lt;br /&gt;
&lt;br /&gt;
En mode groupware, le skin pourra affecter une feuille de style à la page web, celle-ci sera chargée en premier, les feuilles de styles du noyau chargées de l'affichage des applications serons chargées après.&lt;br /&gt;
La personalisation graphique du groupware se limitera aux propriétés « background » et « color » sur certaines classes définies dans une documentation (4 ou 5 classes maximum).&lt;br /&gt;
Ainsi que la personnalisation de l'ovml chargé en bas de page&lt;br /&gt;
&lt;br /&gt;
Pour le mode fullpage, aucune spécifications nécessaires.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fichier de configuration ===&lt;br /&gt;
&lt;br /&gt;
Informations du fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name = &amp;quot;superskin&amp;quot;&lt;br /&gt;
version = &amp;quot;1.0&amp;quot;&lt;br /&gt;
ov_version = &amp;quot;5.9.0&amp;quot;&lt;br /&gt;
thumbnail = &amp;quot;images/preview.jpg&amp;quot;&lt;br /&gt;
ovml_groupware = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
ovml_groupware_home = &amp;quot;ovml/groupware.html&amp;quot;&lt;br /&gt;
css_groupware = &amp;quot;styles/customgroupware.css&amp;quot;&lt;br /&gt;
ovml_fullpage = &amp;quot;ovml/fullpage.html&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration du skin devra être placé à la racine du répertoire du skin et devra être obligatoirement nomé « skin.ini »&lt;br /&gt;
&lt;br /&gt;
*name : nom du skin visible par l'interface d'ovidentia&lt;br /&gt;
*version : version du skin pour permettre les chargement de nouvelles versions par zip&lt;br /&gt;
*ov_version : version minimale d'ovidentia nécéssaire&lt;br /&gt;
*thumbnail : image miniature du skin qui sera affichée dans l'interface d'ovidentia&lt;br /&gt;
*ovml_groupware : permet de charger un fichier ovml sur l'interface groupware en bas de page&lt;br /&gt;
*ovml_groupware_home : le fichier ovml qui sera chargé lors de l'affichage de la page d'accueil du groupware&lt;br /&gt;
*css_groupware : feuille de style du skin chargée en premier dans l'interface groupware&lt;br /&gt;
*ovml_fullpage :&lt;br /&gt;
&lt;br /&gt;
=== Spécificitées du mode groupware ===&lt;br /&gt;
&lt;br /&gt;
Les applications web crées dans ovidentia pour le mode groupware serons toujours dans un élément en position absolue.&lt;br /&gt;
&lt;br /&gt;
Par défaut $babBody-&amp;gt;babecho permettra de mettre une application dans la partie contenue, la position absolue permettra de contrôler la position exacte, un élément placé en top:0 et left:0 se vera positionné dans le cadre prévu a cet effet par la feuille de style « groupware » définie dans le noyau.&lt;br /&gt;
&lt;br /&gt;
Un menu déroulant qui reprend l'arbre du site sera disponible dans le mode groupware pour les fonctionnalités d'ovidentia&lt;br /&gt;
&lt;br /&gt;
=== Gestion dynamiques des sections ===&lt;br /&gt;
&lt;br /&gt;
Le nouveau système de section sera utilisé par les applications pour générer des sections contextuelles. Par exemple une section de calendrier dans l'agenda ou une section de liste de thème dans l'affichage des articles.&lt;br /&gt;
&lt;br /&gt;
Une Api php permettra au developpeur d'ajouter ces propres sections et aussi de désactiver les sections utilisteur pour une page donnée(forcer le mode pleine page).&lt;br /&gt;
&lt;br /&gt;
=== Gestion des skins ===&lt;br /&gt;
&lt;br /&gt;
Une interface dans Ovidentia sera prévue pour gérer les skins de la même façon que les modules d'ovidentia, la liste des skins disponibles affichera l'image configurée dans « thumbnail » du fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
=== Contraintes ===&lt;br /&gt;
&lt;br /&gt;
Dans certains cas il sera impossible de reproduire un skin à l'identique, chaque application ovidentia pourra être affichée en suivant les contraintes du mode « groupware ». Si le niveau de personnalisation du mode groupware ne suffi plus pour une application, il faudra enrichir l'api ovml pour que l'application cernée fournisse le même niveau de fonctionnalité pour le mode « fullpage »&lt;br /&gt;
&lt;br /&gt;
=== Mode opératoire ===&lt;br /&gt;
&lt;br /&gt;
Convertir tout les fichier template d'un skin en équivalent ovml pour le mode fullpage&lt;br /&gt;
Créer la feuille de style pour le mode groupware si des application sont utilisée (intranet extranet)&lt;br /&gt;
&lt;br /&gt;
=== Les modules ===&lt;br /&gt;
&lt;br /&gt;
Les modules continuent a fonctionner à l'identique, ils devrons fournir leur api ovml pour être utilisés dans le mode fullpage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Gestionnaire_de_fichiers&amp;diff=3006</id>
		<title>Gestionnaire de fichiers</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Gestionnaire_de_fichiers&amp;diff=3006"/>
				<updated>2008-01-08T15:03:37Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* AutoAddFile de manière global actif/non actif&lt;br /&gt;
* AutoAddFile actif/non actif pour un répertoire&lt;br /&gt;
* Ajouter une interface permettant de sélectionner des répertoires à auto ajoutée au gestionnaire de fichiers&lt;br /&gt;
* Permettre d'éditer plusieurs éléments&lt;br /&gt;
* Lors de l'édition de plusieurs éléments, faire en sorte que l'affichage soit en page ou en liste&lt;br /&gt;
* Lors de l'édition de plusieurs éléments, permettre de choisir un éléments puis d'appliquer les mêmes modifications aux autres&lt;br /&gt;
* Permettre d'établir des liens symboliques sur des répertoires et des fichiers (attention aux droits) &lt;br /&gt;
* Edit in place&lt;br /&gt;
* Avoir un rail de navigation comme celui de vista&lt;br /&gt;
* Mettre en arbre la vue côté administration&lt;br /&gt;
* Mettre l'interface côté utilisateur comme le gestionnaire de vista avec la possibilité d'afficher/cacher la TreeView&lt;br /&gt;
* Possibilité d'afficher les éléments en thumbnail&lt;br /&gt;
* Mettre tous les dossiers en base de données&lt;br /&gt;
* Renforcer le code des SET (datamapper)&lt;br /&gt;
* Lister les actions possibles afin d'établir une liste d'icône&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Communication_entre_les_modules&amp;diff=3005</id>
		<title>Communication entre les modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Communication_entre_les_modules&amp;diff=3005"/>
				<updated>2008-01-08T15:01:47Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Fonctions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dépendances entre les modules au moment de l'installation ==&lt;br /&gt;
&lt;br /&gt;
Lors de l'installation d'un module, des dépendances peuvent êtres utilisées, le nom des modules dépendants doivent être ajoutés dans le fichier addonini.php avec le numéro de version minimum nécessaire dans la section &amp;quot;addons&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
exemple avec le module ivdashboard qui nécessite le module client :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[general]&lt;br /&gt;
name=&amp;quot;ivdashboard&amp;quot;&lt;br /&gt;
version=6.09&lt;br /&gt;
description=&amp;quot;Gestion de projets INVIVO&amp;quot;&lt;br /&gt;
db_prefix=&amp;quot;ivd_&amp;quot;&lt;br /&gt;
ov_version=5.6.2&lt;br /&gt;
php_version=4.1.2&lt;br /&gt;
mysql_version=3.23&lt;br /&gt;
&lt;br /&gt;
[addons]&lt;br /&gt;
clients=2.8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gestionnaire d'événements et fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
Pour que les différents modules puissent partager des fonctions, les développeurs pourront utiliser le [[API du gestionnaire d'événement|gestionnaire d'événements]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Com addons.svg]]&lt;br /&gt;
&lt;br /&gt;
== API des fonctionalités ==&lt;br /&gt;
&lt;br /&gt;
'''Attention, cette API sera disponible à partir de ovidentia 6.6.0'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proposer des fonctionnalités ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra être nommée selon un &amp;quot;chemin&amp;quot;, par exemple &amp;quot;convertHtml/toPdf/openOffice&amp;quot;, les caractères _ sont interdis dans le chemin.&lt;br /&gt;
&lt;br /&gt;
Une fonction du noyau d'ovidentia permettra d'enregistrer un fichier php en tant que fonctionnalité, le fichier devra contenir une classe PHP nommée en utilisant la même arborescence, par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class convertHtml_toPdf_openOffice extends bab_functionality {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
le _ remplace le / dans le nom de la classe&lt;br /&gt;
l'objet devra être hérité de bab_functionality.&lt;br /&gt;
&lt;br /&gt;
Au moment de l'installation ou du programme de reprise, il faut enregistrer la fonctionnalité dans ovidentia, exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].'utilit/functionalityincl.php';&lt;br /&gt;
&lt;br /&gt;
$func = new bab_functionalities();&lt;br /&gt;
$func-&amp;gt;register(&amp;quot;convertHtml/toPdf/openOffice&amp;quot;, $GLOBALS['babAddonUrl'].'convert.php');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans Ovidentia, un fichier &amp;quot;link.inc&amp;quot; sera créé dans un arbre de répertoire avec pour contenu du code php pour inclure le fichier passé en 2ème paramètre. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Héritage de fonctionnalités ====&lt;br /&gt;
&lt;br /&gt;
Il est possible de créer une fonctionnalité qui hérite et utilise l'interface d'une autre fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple : le module &amp;quot;convert&amp;quot; propose une fonctionnalité pour convertir du html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class convertHtml extends bab_functionality {&lt;br /&gt;
	function getDescription() {&lt;br /&gt;
		return 'convertir du html vers un autre format';&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getFunctionalityCallableMethods() {&lt;br /&gt;
		return array(&lt;br /&gt;
			'process'&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function process($html) {&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans un autre module &amp;quot;convertToPdf&amp;quot;, on propose de convertir du html en pdf en utilisant openOffice. Pour que la fonctionnalité soit acceptée par le programme d'installation, l'objet doit contenir au moins les méthodes du parent. La liste des méthodes sera comparée en utilisant &amp;quot;getFunctionalityCallableMethods&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bab_functionality::includefile('convertHtml');&lt;br /&gt;
&lt;br /&gt;
class convertHtml_toPdf_openOffice extends convertHtml {&lt;br /&gt;
	function getDescription() {&lt;br /&gt;
		return 'convertir du html en pdf';&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getFunctionalityCallableMethods() {&lt;br /&gt;
		return array(&lt;br /&gt;
			'process'&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function process($html) {&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Utiliser une fonctionnalité ===&lt;br /&gt;
&lt;br /&gt;
La fonction du noyau  bab_functionality::get('convertHtml/toPdf/openOffice'); effectuera une inclusion du fichier &amp;quot;convertHtml/toPdf/openOffice/link.inc&amp;quot; ensuite l'objet convertHtml_toPdf_openOffice sera instancié.&lt;br /&gt;
&lt;br /&gt;
Les niveaux supérieurs de l'arborescence seront complétés avec une copie du fichier link.inc si aucun fichier de lien n'est présent.&lt;br /&gt;
&lt;br /&gt;
Un formulaire sera disponible pour d'administrateur afin de changer les fichiers interfaces des niveaux supérieurs pour redéfinir les fonctions par défaut dans le cas de sous-répertoires multiples.&lt;br /&gt;
&lt;br /&gt;
Pour simplifier l'exécution des fonctions d'interface, le contexte du module ne sera pas recréé avant que la fonction soit appelée. Par conséquent, les variables globales de l'environnement du module ne devront pas être utilisées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fonctions ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bab_functionality::getFunctionalities($path) : obtenir les sous-répertoires d'une fonctionnalité&lt;br /&gt;
&lt;br /&gt;
bab_functionality::get($path) : obtenir l'instance de l'objet&lt;br /&gt;
&lt;br /&gt;
bab_functionality::includefile($path) : inclure le fichier de la fonctionnalité afin d'effectuer un héritage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Communication_entre_les_modules&amp;diff=3004</id>
		<title>Communication entre les modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Communication_entre_les_modules&amp;diff=3004"/>
				<updated>2008-01-08T15:01:03Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Utiliser une fonctionnalité */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dépendances entre les modules au moment de l'installation ==&lt;br /&gt;
&lt;br /&gt;
Lors de l'installation d'un module, des dépendances peuvent êtres utilisées, le nom des modules dépendants doivent être ajoutés dans le fichier addonini.php avec le numéro de version minimum nécessaire dans la section &amp;quot;addons&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
exemple avec le module ivdashboard qui nécessite le module client :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[general]&lt;br /&gt;
name=&amp;quot;ivdashboard&amp;quot;&lt;br /&gt;
version=6.09&lt;br /&gt;
description=&amp;quot;Gestion de projets INVIVO&amp;quot;&lt;br /&gt;
db_prefix=&amp;quot;ivd_&amp;quot;&lt;br /&gt;
ov_version=5.6.2&lt;br /&gt;
php_version=4.1.2&lt;br /&gt;
mysql_version=3.23&lt;br /&gt;
&lt;br /&gt;
[addons]&lt;br /&gt;
clients=2.8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gestionnaire d'événements et fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
Pour que les différents modules puissent partager des fonctions, les développeurs pourront utiliser le [[API du gestionnaire d'événement|gestionnaire d'événements]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Com addons.svg]]&lt;br /&gt;
&lt;br /&gt;
== API des fonctionalités ==&lt;br /&gt;
&lt;br /&gt;
'''Attention, cette API sera disponible à partir de ovidentia 6.6.0'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proposer des fonctionnalités ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra être nommée selon un &amp;quot;chemin&amp;quot;, par exemple &amp;quot;convertHtml/toPdf/openOffice&amp;quot;, les caractères _ sont interdis dans le chemin.&lt;br /&gt;
&lt;br /&gt;
Une fonction du noyau d'ovidentia permettra d'enregistrer un fichier php en tant que fonctionnalité, le fichier devra contenir une classe PHP nommée en utilisant la même arborescence, par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class convertHtml_toPdf_openOffice extends bab_functionality {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
le _ remplace le / dans le nom de la classe&lt;br /&gt;
l'objet devra être hérité de bab_functionality.&lt;br /&gt;
&lt;br /&gt;
Au moment de l'installation ou du programme de reprise, il faut enregistrer la fonctionnalité dans ovidentia, exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].'utilit/functionalityincl.php';&lt;br /&gt;
&lt;br /&gt;
$func = new bab_functionalities();&lt;br /&gt;
$func-&amp;gt;register(&amp;quot;convertHtml/toPdf/openOffice&amp;quot;, $GLOBALS['babAddonUrl'].'convert.php');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans Ovidentia, un fichier &amp;quot;link.inc&amp;quot; sera créé dans un arbre de répertoire avec pour contenu du code php pour inclure le fichier passé en 2ème paramètre. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Héritage de fonctionnalités ====&lt;br /&gt;
&lt;br /&gt;
Il est possible de créer une fonctionnalité qui hérite et utilise l'interface d'une autre fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple : le module &amp;quot;convert&amp;quot; propose une fonctionnalité pour convertir du html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class convertHtml extends bab_functionality {&lt;br /&gt;
	function getDescription() {&lt;br /&gt;
		return 'convertir du html vers un autre format';&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getFunctionalityCallableMethods() {&lt;br /&gt;
		return array(&lt;br /&gt;
			'process'&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function process($html) {&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans un autre module &amp;quot;convertToPdf&amp;quot;, on propose de convertir du html en pdf en utilisant openOffice. Pour que la fonctionnalité soit acceptée par le programme d'installation, l'objet doit contenir au moins les méthodes du parent. La liste des méthodes sera comparée en utilisant &amp;quot;getFunctionalityCallableMethods&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bab_functionality::includefile('convertHtml');&lt;br /&gt;
&lt;br /&gt;
class convertHtml_toPdf_openOffice extends convertHtml {&lt;br /&gt;
	function getDescription() {&lt;br /&gt;
		return 'convertir du html en pdf';&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getFunctionalityCallableMethods() {&lt;br /&gt;
		return array(&lt;br /&gt;
			'process'&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function process($html) {&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Utiliser une fonctionnalité ===&lt;br /&gt;
&lt;br /&gt;
La fonction du noyau  bab_functionality::get('convertHtml/toPdf/openOffice'); effectuera une inclusion du fichier &amp;quot;convertHtml/toPdf/openOffice/link.inc&amp;quot; ensuite l'objet convertHtml_toPdf_openOffice sera instancié.&lt;br /&gt;
&lt;br /&gt;
Les niveaux supérieurs de l'arborescence seront complétés avec une copie du fichier link.inc si aucun fichier de lien n'est présent.&lt;br /&gt;
&lt;br /&gt;
Un formulaire sera disponible pour d'administrateur afin de changer les fichiers interfaces des niveaux supérieurs pour redéfinir les fonctions par défaut dans le cas de sous-répertoires multiples.&lt;br /&gt;
&lt;br /&gt;
Pour simplifier l'exécution des fonctions d'interface, le contexte du module ne sera pas recréé avant que la fonction soit appelée. Par conséquent, les variables globales de l'environnement du module ne devront pas être utilisées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fonctions ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bab_functionality::getFunctionalities($path) : obtenir les sous répertoires d'une fonctionnalité&lt;br /&gt;
&lt;br /&gt;
bab_functionality::get($path) : obtenir l'instance de l'objet&lt;br /&gt;
&lt;br /&gt;
bab_functionality::includefile($path) : inclure le fichier de la fonctionnalité afin d'effectuer un héritage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Communication_entre_les_modules&amp;diff=3003</id>
		<title>Communication entre les modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Communication_entre_les_modules&amp;diff=3003"/>
				<updated>2008-01-08T14:58:31Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Proposer des fonctionnalités */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dépendances entre les modules au moment de l'installation ==&lt;br /&gt;
&lt;br /&gt;
Lors de l'installation d'un module, des dépendances peuvent êtres utilisées, le nom des modules dépendants doivent être ajoutés dans le fichier addonini.php avec le numéro de version minimum nécessaire dans la section &amp;quot;addons&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
exemple avec le module ivdashboard qui nécessite le module client :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[general]&lt;br /&gt;
name=&amp;quot;ivdashboard&amp;quot;&lt;br /&gt;
version=6.09&lt;br /&gt;
description=&amp;quot;Gestion de projets INVIVO&amp;quot;&lt;br /&gt;
db_prefix=&amp;quot;ivd_&amp;quot;&lt;br /&gt;
ov_version=5.6.2&lt;br /&gt;
php_version=4.1.2&lt;br /&gt;
mysql_version=3.23&lt;br /&gt;
&lt;br /&gt;
[addons]&lt;br /&gt;
clients=2.8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gestionnaire d'événements et fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
Pour que les différents modules puissent partager des fonctions, les développeurs pourront utiliser le [[API du gestionnaire d'événement|gestionnaire d'événements]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Com addons.svg]]&lt;br /&gt;
&lt;br /&gt;
== API des fonctionalités ==&lt;br /&gt;
&lt;br /&gt;
'''Attention, cette API sera disponible à partir de ovidentia 6.6.0'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proposer des fonctionnalités ===&lt;br /&gt;
&lt;br /&gt;
Chaque fonctionnalité devra être nommée selon un &amp;quot;chemin&amp;quot;, par exemple &amp;quot;convertHtml/toPdf/openOffice&amp;quot;, les caractères _ sont interdis dans le chemin.&lt;br /&gt;
&lt;br /&gt;
Une fonction du noyau d'ovidentia permettra d'enregistrer un fichier php en tant que fonctionnalité, le fichier devra contenir une classe PHP nommée en utilisant la même arborescence, par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class convertHtml_toPdf_openOffice extends bab_functionality {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
le _ remplace le / dans le nom de la classe&lt;br /&gt;
l'objet devra être hérité de bab_functionality.&lt;br /&gt;
&lt;br /&gt;
Au moment de l'installation ou du programme de reprise, il faut enregistrer la fonctionnalité dans ovidentia, exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].'utilit/functionalityincl.php';&lt;br /&gt;
&lt;br /&gt;
$func = new bab_functionalities();&lt;br /&gt;
$func-&amp;gt;register(&amp;quot;convertHtml/toPdf/openOffice&amp;quot;, $GLOBALS['babAddonUrl'].'convert.php');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans Ovidentia, un fichier &amp;quot;link.inc&amp;quot; sera créé dans un arbre de répertoire avec pour contenu du code php pour inclure le fichier passé en 2ème paramètre. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Héritage de fonctionnalités ====&lt;br /&gt;
&lt;br /&gt;
Il est possible de créer une fonctionnalité qui hérite et utilise l'interface d'une autre fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple : le module &amp;quot;convert&amp;quot; propose une fonctionnalité pour convertir du html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class convertHtml extends bab_functionality {&lt;br /&gt;
	function getDescription() {&lt;br /&gt;
		return 'convertir du html vers un autre format';&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getFunctionalityCallableMethods() {&lt;br /&gt;
		return array(&lt;br /&gt;
			'process'&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function process($html) {&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans un autre module &amp;quot;convertToPdf&amp;quot;, on propose de convertir du html en pdf en utilisant openOffice. Pour que la fonctionnalité soit acceptée par le programme d'installation, l'objet doit contenir au moins les méthodes du parent. La liste des méthodes sera comparée en utilisant &amp;quot;getFunctionalityCallableMethods&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bab_functionality::includefile('convertHtml');&lt;br /&gt;
&lt;br /&gt;
class convertHtml_toPdf_openOffice extends convertHtml {&lt;br /&gt;
	function getDescription() {&lt;br /&gt;
		return 'convertir du html en pdf';&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getFunctionalityCallableMethods() {&lt;br /&gt;
		return array(&lt;br /&gt;
			'process'&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function process($html) {&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Utiliser une fonctionnalité ===&lt;br /&gt;
&lt;br /&gt;
La fonction du noyau  bab_functionality::get('convertHtml/toPdf/openOffice'); effectuera une inclusion du fichier &amp;quot;convertHtml/toPdf/openOffice/link.inc&amp;quot; ensuite l'objet convertHtml_toPdf_openOffice sera instancié.&lt;br /&gt;
&lt;br /&gt;
Les niveaux supérieurs de l'arborescence serons complété avec une copie du fichier link.inc si aucun fichier de lien n'est présent.&lt;br /&gt;
&lt;br /&gt;
Un formulaire sera disponible pour d'administrateur afin de changer les fichiers interface des niveau supérieurs pour redéfinir les fonctions par défaut dans le cas de sous répertoires multiples.&lt;br /&gt;
&lt;br /&gt;
Pour simplifier l'exécution des fonctions d'interface, le contexte du module ne sera pas recréé avant que la fonction soit appelée, par conséquent, l'utilisation des variables globales de l'environnement du module ne devrons pas être utilisées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fonctions ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bab_functionality::getFunctionalities($path) : obtenir les sous répertoires d'une fonctionnalité&lt;br /&gt;
&lt;br /&gt;
bab_functionality::get($path) : obtenir l'instance de l'objet&lt;br /&gt;
&lt;br /&gt;
bab_functionality::includefile($path) : inclure le fichier de la fonctionnalité afin d'effectuer un héritage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Communication_entre_les_modules&amp;diff=3002</id>
		<title>Communication entre les modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Communication_entre_les_modules&amp;diff=3002"/>
				<updated>2008-01-08T14:55:52Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Gestionnaire d'événements et fonctionnalités */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dépendances entre les modules au moment de l'installation ==&lt;br /&gt;
&lt;br /&gt;
Lors de l'installation d'un module, des dépendances peuvent êtres utilisées, le nom des modules dépendants doivent être ajoutés dans le fichier addonini.php avec le numéro de version minimum nécessaire dans la section &amp;quot;addons&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
exemple avec le module ivdashboard qui nécessite le module client :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[general]&lt;br /&gt;
name=&amp;quot;ivdashboard&amp;quot;&lt;br /&gt;
version=6.09&lt;br /&gt;
description=&amp;quot;Gestion de projets INVIVO&amp;quot;&lt;br /&gt;
db_prefix=&amp;quot;ivd_&amp;quot;&lt;br /&gt;
ov_version=5.6.2&lt;br /&gt;
php_version=4.1.2&lt;br /&gt;
mysql_version=3.23&lt;br /&gt;
&lt;br /&gt;
[addons]&lt;br /&gt;
clients=2.8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gestionnaire d'événements et fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
Pour que les différents modules puissent partager des fonctions, les développeurs pourront utiliser le [[API du gestionnaire d'événement|gestionnaire d'événements]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Com addons.svg]]&lt;br /&gt;
&lt;br /&gt;
== API des fonctionalités ==&lt;br /&gt;
&lt;br /&gt;
'''Attention, cette API sera disponible à partir de ovidentia 6.6.0'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Proposer des fonctionnalités ===&lt;br /&gt;
&lt;br /&gt;
chaque fonctionnalité devra être nommée selon un &amp;quot;chemin&amp;quot;, par exemple &amp;quot;convertHtml/toPdf/openOffice&amp;quot;, les caractères _ sont interdis dans le chemin&lt;br /&gt;
&lt;br /&gt;
une fonction du noyau d'ovidentia permettra d'enregistrer un fichier php en tant que fonctionnalité, le fichier devra contenir une classe PHP nommée en utilisant la même arborescence, par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class convertHtml_toPdf_openOffice extends bab_functionality {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
le _ remplace le / dans le nom de la classe&lt;br /&gt;
l'objet devra être hérité de bab_functionality.&lt;br /&gt;
&lt;br /&gt;
au moment de l'installation ou du programme de reprise, il faut enregistrer la fonctionnalité dans ovidentia, exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].'utilit/functionalityincl.php';&lt;br /&gt;
&lt;br /&gt;
$func = new bab_functionalities();&lt;br /&gt;
$func-&amp;gt;register(&amp;quot;convertHtml/toPdf/openOffice&amp;quot;, $GLOBALS['babAddonUrl'].'convert.php');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans Ovidentia, un fichier &amp;quot;link.inc&amp;quot; sera créer dans un arbre de répertoire avec pour contenu du code php pour inclure le fichier passé en 2ème paramètre. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Héritage de fonctionnalités ====&lt;br /&gt;
&lt;br /&gt;
Il est possible de créer un fonctionnalité qui hérite et utilise l'interface d'une autre fonctionnalité&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple : le module &amp;quot;convert&amp;quot; propose une fonctionnalité pour convertir du html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class convertHtml extends bab_functionality {&lt;br /&gt;
	function getDescription() {&lt;br /&gt;
		return 'convertir du html vers un autre format';&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getFunctionalityCallableMethods() {&lt;br /&gt;
		return array(&lt;br /&gt;
			'process'&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function process($html) {&lt;br /&gt;
		return NULL;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans un autre module &amp;quot;convertToPdf&amp;quot;, on propose de convertir du html en pdf en utilisant openOffice, pour que la fonctionnalité soit acceptée par le programme d'installation, l'objet doit contenir au moins les méthodes du parent, la liste des méthode sera comparée en utilisant &amp;quot;getFunctionalityCallableMethods&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bab_functionality::includefile('convertHtml');&lt;br /&gt;
&lt;br /&gt;
class convertHtml_toPdf_openOffice extends convertHtml {&lt;br /&gt;
	function getDescription() {&lt;br /&gt;
		return 'convertir du html en pdf';&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getFunctionalityCallableMethods() {&lt;br /&gt;
		return array(&lt;br /&gt;
			'process'&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function process($html) {&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Utiliser une fonctionnalité ===&lt;br /&gt;
&lt;br /&gt;
La fonction du noyau  bab_functionality::get('convertHtml/toPdf/openOffice'); effectuera une inclusion du fichier &amp;quot;convertHtml/toPdf/openOffice/link.inc&amp;quot; ensuite l'objet convertHtml_toPdf_openOffice sera instancié.&lt;br /&gt;
&lt;br /&gt;
Les niveaux supérieurs de l'arborescence serons complété avec une copie du fichier link.inc si aucun fichier de lien n'est présent.&lt;br /&gt;
&lt;br /&gt;
Un formulaire sera disponible pour d'administrateur afin de changer les fichiers interface des niveau supérieurs pour redéfinir les fonctions par défaut dans le cas de sous répertoires multiples.&lt;br /&gt;
&lt;br /&gt;
Pour simplifier l'exécution des fonctions d'interface, le contexte du module ne sera pas recréé avant que la fonction soit appelée, par conséquent, l'utilisation des variables globales de l'environnement du module ne devrons pas être utilisées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fonctions ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bab_functionality::getFunctionalities($path) : obtenir les sous répertoires d'une fonctionnalité&lt;br /&gt;
&lt;br /&gt;
bab_functionality::get($path) : obtenir l'instance de l'objet&lt;br /&gt;
&lt;br /&gt;
bab_functionality::includefile($path) : inclure le fichier de la fonctionnalité afin d'effectuer un héritage&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Plugins_OpenSearch&amp;diff=3001</id>
		<title>Plugins OpenSearch</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Plugins_OpenSearch&amp;diff=3001"/>
				<updated>2008-01-08T14:54:24Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Fichier de description OpenSearch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les dernières générations de navigateurs (Firefox 2 et Internet Explorer 7) disposent d'une barre de recherche intégrée qui permet à l'utilisateur d'accéder rapidement à un certain nombre de moteurs de recherche (Google, Yahoo, Wikipedia...) La liste des moteurs proposée par ces navigateurs n'est pas figée et il est possible pour l'utilisateur d'en ajouter de nouveaux.&lt;br /&gt;
[[Image:searchbar-firefox.jpg|frame|Zone de recherche dans Firefox]]&lt;br /&gt;
Pour être intégrable, un moteur de recherche doit être compatible avec certains standards. [http://opensearch.org/ OpenSearch] définit, entre autres, un format de description de moteur de recherche permettant aux navigateurs d'obtenir les informations nécessaires à leur intégration dans la barre de recherche.&lt;br /&gt;
&lt;br /&gt;
Il est possible de définir un plugin pour accéder au moteur d'Ovidentia.&lt;br /&gt;
&lt;br /&gt;
==Fichier de description OpenSearch==&lt;br /&gt;
&lt;br /&gt;
Afin de permettre au navigateur de savoir comment dialoguer avec notre moteur de recherche, il est nécessaire de lui fournir une description de celui-ci.&lt;br /&gt;
OpenSearch définit un fichier de description au format XML contenant toutes les informations nécessaires.&lt;br /&gt;
&lt;br /&gt;
Pour Ovidentia, nous nous servirons de l'OvML pour générer le fichier XML. OvML nous permettra d'insérer des éléments dépendants de l'installation d'Ovidentia sur le site (url de base, nom du skin...) et nous n'aurons donc pas besoin de modifier le fichier en cas de changement de paramétrage du site.&lt;br /&gt;
&lt;br /&gt;
Le fichier OvML, que nous appellerons par exemple '''ovisearch.xml''' sera placé dans le répertoire ovml du ''skin'' (skins/''nom_du_skin''/ovml). Son contenu sera le suivant :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;OpenSearchDescription xmlns=&amp;quot;http://a9.com/-/spec/opensearch/1.1/&amp;quot;&lt;br /&gt;
                       xmlns:moz=&amp;quot;http://www.mozilla.org/2006/browser/search/&amp;quot;&amp;gt;&lt;br /&gt;
    '''&amp;lt;OFPutVar name=&amp;quot;babSkinPath&amp;quot;&amp;gt;&amp;lt;OFPutVar name=&amp;quot;babUrl&amp;quot;&amp;gt;'''&lt;br /&gt;
    &amp;lt;ShortName&amp;gt;Ovidentia&amp;lt;/ShortName&amp;gt;&lt;br /&gt;
    &amp;lt;Description&amp;gt;Recherche Ovidentia&amp;lt;/Description&amp;gt;&lt;br /&gt;
    &amp;lt;InputEncoding&amp;gt;ISO-8859-15&amp;lt;/InputEncoding&amp;gt;&lt;br /&gt;
    &amp;lt;Image width=&amp;quot;16&amp;quot; height=&amp;quot;16&amp;quot; type=&amp;quot;image/vnd.microsoft.icon&amp;quot;&amp;gt;&lt;br /&gt;
        '''&amp;lt;OVbabSkinPath&amp;gt;'''images/Puces/favicon.ico&lt;br /&gt;
    &amp;lt;/Image&amp;gt;&lt;br /&gt;
    &amp;lt;Url type=&amp;quot;text/html&amp;quot;&lt;br /&gt;
         method=&amp;quot;get&amp;quot;&lt;br /&gt;
         template=&amp;quot;'''&amp;lt;OVbabUrl&amp;gt;'''index.php?tg=search&amp;amp;amp;pat=abcdefgh&amp;amp;amp;idx=find&amp;amp;amp;what={searchTerms}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/Url&amp;gt;&lt;br /&gt;
    &amp;lt;moz:SearchForm&amp;gt;'''&amp;lt;OVbabUrl&amp;gt;'''index.php?tg=search&amp;amp;amp;pat=abcdefgh&amp;lt;/moz:SearchForm&amp;gt;&lt;br /&gt;
 &amp;lt;/OpenSearchDescription&amp;gt;&lt;br /&gt;
Les spécifications détaillées (en anglais) du format de fichier de description sont accessibles à cette page : [http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document OpenSearch description document]&lt;br /&gt;
&lt;br /&gt;
==Découverte automatique du moteur==&lt;br /&gt;
&lt;br /&gt;
Une fois le fichier de description en place, il est possible d'indiquer au navigateur que notre site dispose d'un moteur de recherche compatible avec le standard OpenSearch. Le navigateur avertira ainsi l'utilisateur qu'un moteur de recherche est disponible sur le site et lui permettra de l'ajouter automatiquement à la liste de sa barre de recherche.&lt;br /&gt;
Pour cela, il suffit d'ajouter dans la section &amp;lt;head&amp;gt; du template page.html du skin la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;link rel=&amp;quot;search&amp;quot;&lt;br /&gt;
       type=&amp;quot;application/opensearchdescription+xml&amp;quot;&lt;br /&gt;
       title=&amp;quot;Recherche Ovidentia&amp;quot;&lt;br /&gt;
       href=&amp;quot;'''{ babUrl }'''index.php?tg=oml&amp;amp;amp;file='''ovisearch.xml'''&amp;amp;amp;echo=1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Références==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://opensearch.org/ Documentation OpenSearch] (en anglais)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://developer.mozilla.org/en/docs/Creating_OpenSearch_plugins_for_Firefox Documentation sur le Mozilla Developer Center] (en anglais)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Eclipse&amp;diff=2993</id>
		<title>Eclipse</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Eclipse&amp;diff=2993"/>
				<updated>2008-01-08T14:38:16Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Récupération du noyau d'Ovidentia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Installation d'Eclipse PDT==&lt;br /&gt;
La version [http://www.eclipse.org/pdt/ PDT] (PHP Development Tools) d'Eclipse contient la plupart des outils nécessaires au développement d'applications PHP et en particulier d'Ovidentia.&lt;br /&gt;
&lt;br /&gt;
Cette version d'Eclipse est disponible sur la [http://download.eclipse.org/tools/pdt/downloads/ page de téléchargement du projet PDT] :&lt;br /&gt;
* choisir le lien de la dernière version ''Release Build'',&lt;br /&gt;
* télécharger la version ''all-in-one'' pour la plateforme voulue (unix, windows ou macosx),&lt;br /&gt;
* décompresser l'archive,&lt;br /&gt;
* lancer le fichier exécutable eclipse dans le répertoire qui vient d'être créé.&lt;br /&gt;
&lt;br /&gt;
==Récupération du noyau d'Ovidentia==&lt;br /&gt;
Nous allons créer un projet ovidentia qui contiendra la dernière version CVS du noyau d'Ovidentia.&lt;br /&gt;
&lt;br /&gt;
1. Dans le menu, sélectionner '''File &amp;gt; New &amp;gt; Project...'''&lt;br /&gt;
&lt;br /&gt;
2. Dans la liste, sélectionner '''CVS &amp;gt; Projects from CVS'''&lt;br /&gt;
&lt;br /&gt;
puis '''Next &amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
[[Image:EclipsePDT New Project CVS.jpg|center|border|400px]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Sélectionner '''Create a new repository location'''&lt;br /&gt;
&lt;br /&gt;
puis '''Next &amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Cette étape va nous permettre de définir l'accès au dépôt CVS d'Ovidentia. Cette configuration pourra être utilisée par la suite pour d'autres projets.&lt;br /&gt;
&lt;br /&gt;
[[Image:EclipsePDT Checkout from CVS.jpg|center|border|400px]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Saisir les informations concernant le dépôt CVS :&amp;lt;br /&amp;gt;&lt;br /&gt;
''Host'': '''cvs.ovidentia.org'''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Repository path'': '''/home/src/public'''&amp;lt;br /&amp;gt;&lt;br /&gt;
''User'': '''anonymous'''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Password'':&amp;lt;br /&amp;gt;&lt;br /&gt;
''Connection type'': '''pserver''' et '''Use default port'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
puis '''Next &amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Nous configurons ici un simple accès anonyme à CVS qui nous permettra d'accéder au noyau et aux modules publics. Un accès anonyme ne donne cependant pas la possibilité de faire de ''commit''.&lt;br /&gt;
Si vous disposez d'un compte sur le serveur CVS, il faut utiliser les paramètres suivants :&lt;br /&gt;
&lt;br /&gt;
''Host'': '''cvs.ovidentia.org'''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Repository path'': '''/home/src/public'''&amp;lt;br /&amp;gt;&lt;br /&gt;
''User'': '''mon_login'''&amp;lt;br /&amp;gt;&lt;br /&gt;
''Password'':&amp;lt;br /&amp;gt;&lt;br /&gt;
''Connection type'': '''extssh''' et '''Use default port'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:EclipsePDT Checkout from CVS 1.jpg|center|border|400px]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Sélectionner '''Check out as project configured using the New Project Wizard'''&lt;br /&gt;
&lt;br /&gt;
puis '''Next &amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Cette étape va nous permettre de définir le type de projet que nous créons (projet PHP).&lt;br /&gt;
&lt;br /&gt;
[[Image:EclipsePDT Check Out As.jpg|center|border|400px]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Sélectionner '''HEAD''' dans la liste&lt;br /&gt;
&lt;br /&gt;
puis '''Finish'''&lt;br /&gt;
&lt;br /&gt;
HEAD est la branche en cours de développement du noyau.&lt;br /&gt;
&lt;br /&gt;
[[Image:EclipsePDT Check Out As 1.jpg|center|border|400px]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Sélectionner '''PHP Project''' dans la liste&lt;br /&gt;
&lt;br /&gt;
puis '''Next &amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Cette étape permet de spécifier à Eclipse que le projet est un projet PHP. Tous les outils seront donc configurés en conséquence lorsque l'on travaillera sur ce projet.&lt;br /&gt;
&lt;br /&gt;
[[Image:EclipsePDT New Project PHP.jpg|center|border|400px]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Saisir le nom du projet dans la case '''Project Name''', par exemple '''ovidentia_head'''.&lt;br /&gt;
&lt;br /&gt;
puis '''Finish'''&lt;br /&gt;
&lt;br /&gt;
[[Image:EclipsePDT PHP Project .jpg|center|border|400px]]&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Indexation&amp;diff=2992</id>
		<title>Indexation</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Indexation&amp;diff=2992"/>
				<updated>2008-01-08T14:33:10Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Indexation planifiée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Utiliser l'indexation dans un module ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Indexation planifiée ==&lt;br /&gt;
&lt;br /&gt;
Rajouter &amp;amp;prepare=1 dans les url d'indexation.&lt;br /&gt;
&lt;br /&gt;
Le script génère un fichier .bat pour l'execution. &lt;br /&gt;
&lt;br /&gt;
Les appels du système vers ovidentia se font par défaut au travers de wget, il est possible de modifier l'outil utilisé, exemple avec curl, ligne à ajouter dans config.php :&lt;br /&gt;
&lt;br /&gt;
 define('BAB_SWISHE_WGET_URL', 'curl %s &amp;gt; /dev/null 2&amp;gt;&amp;amp;1');&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_Addon_-_OVML&amp;diff=2991</id>
		<title>API Addon - OVML</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_Addon_-_OVML&amp;diff=2991"/>
				<updated>2008-01-08T14:31:45Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Utilisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
L'API addon-OvML permet à un addon d'accéder à tous les containers OVML.&lt;br /&gt;
Il est ainsi possible à un addon de lister les catégories, les thèmes d'articles, les articles,&lt;br /&gt;
les contributions d'un forum etc ...&lt;br /&gt;
&lt;br /&gt;
Tous les fonctionnalités offertes par l'OVML sont ainsi disponibles à un addon.&lt;br /&gt;
&lt;br /&gt;
== Utilisation ==&lt;br /&gt;
Afin d'utiliser cette API, l'addon doit inclure le fichier '''''ovmlapi.php''''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $babInstallPath.'utilit/ovmlapi.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L'interraction de l'addon avec cette API se fait par l'intermédiaire de la classe '''''bab_ovmlAPI''''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $babInstallPath.'utilit/ovmlapi.php';&lt;br /&gt;
&lt;br /&gt;
function list_topics()&lt;br /&gt;
{&lt;br /&gt;
	global $babBody;&lt;br /&gt;
&lt;br /&gt;
	class list_topics_class&lt;br /&gt;
		{&lt;br /&gt;
		function list_topics_class()&lt;br /&gt;
			{&lt;br /&gt;
			$this-&amp;gt;tpl = new bab_ovmlAPI();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L'instanciation de cette classe créée un context global pour l'OVML.&lt;br /&gt;
Il est possible de passer des variables à ce context en utilisant le paramètre '''''$args''''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $babInstallPath.'utilit/ovmlapi.php';&lt;br /&gt;
&lt;br /&gt;
function list_topics()&lt;br /&gt;
{&lt;br /&gt;
	global $babBody;&lt;br /&gt;
&lt;br /&gt;
	class list_topics_class&lt;br /&gt;
		{&lt;br /&gt;
		function list_topics_class()&lt;br /&gt;
			{&lt;br /&gt;
			$args['babHtmlEntities'] = 1;&lt;br /&gt;
			$args['topics'] = bab_gp('topicid');&lt;br /&gt;
			$this-&amp;gt;tpl = new bab_ovmlAPI($args);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L'instantiation d'un container OVML se fait par la méthode '''''getContainer''''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $babInstallPath.'utilit/ovmlapi.php';&lt;br /&gt;
&lt;br /&gt;
function list_topics()&lt;br /&gt;
{&lt;br /&gt;
	global $babBody;&lt;br /&gt;
&lt;br /&gt;
	class list_topics_class&lt;br /&gt;
		{&lt;br /&gt;
		function list_topics_class()&lt;br /&gt;
			{&lt;br /&gt;
			$this-&amp;gt;tpl = new bab_ovmlAPI();&lt;br /&gt;
			$args['topicid'] = 12;&lt;br /&gt;
			$args['archive']='No';&lt;br /&gt;
			$args['topicorder']='Yes';&lt;br /&gt;
			$this-&amp;gt;cont = $this-&amp;gt;tpl-&amp;gt;getContainer('ArticleTopics', $args);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans ce qui précède, on instancie le container OCArticleTopics et on lui passe&lt;br /&gt;
les paramètres ''topicid'', ''archive'' et ''topicorder''.&lt;br /&gt;
&lt;br /&gt;
On peut ajouter des paramètres au context courant et en récupérer en utilisant les&lt;br /&gt;
deux méthodes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$vars[] = array('name'=&amp;gt;'count', 'value' =&amp;gt; $count);&lt;br /&gt;
$vars[] = array('name'=&amp;gt;'index', 'value' =&amp;gt; 0);&lt;br /&gt;
$this-&amp;gt;tpl-&amp;gt;putVar($vars);&lt;br /&gt;
$title = $this-&amp;gt;tpl-&amp;gt;getVar('ArticleTitle');&lt;br /&gt;
$author = $this-&amp;gt;tpl-&amp;gt;getVar('ArticleAuthor', array('author'=&amp;gt;'%F %L'))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode ''''getContainer'''' retourne un objet implémentant la méthode ''''getnext''''&lt;br /&gt;
permettant de récupérer les résultats du containers.&lt;br /&gt;
La méthode ''''getnext'''' retourne ''false'' quand il n'y a plus de résulat et ''true'' dans le cas &lt;br /&gt;
contraire.&lt;br /&gt;
Quand la méthode retourne false, elle détruit automatiquement son context.&lt;br /&gt;
Sinon, vous avez la possibilité de détruire le context en appelant la méthode :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$this-&amp;gt;cont = $this-&amp;gt;tpl-&amp;gt;getContainer('ArticleTopics', $args);&lt;br /&gt;
$thsi-&amp;gt;cont-&amp;gt;destroyContext();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L'appel à ''''destroyContext'''' détruit le context courant et supprime les variables. &lt;br /&gt;
&lt;br /&gt;
Normalement, à chaque appel à la methode ''''getnext'''', le système créé les variables du container&lt;br /&gt;
dans l'objet implémentant la méthode ''''getnext'''':&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $babInstallPath.'utilit/ovmlapi.php';&lt;br /&gt;
&lt;br /&gt;
function list_articles()&lt;br /&gt;
{&lt;br /&gt;
	global $babBody;&lt;br /&gt;
&lt;br /&gt;
	class list_articles_class&lt;br /&gt;
		{&lt;br /&gt;
		function list_articles_class()&lt;br /&gt;
			{&lt;br /&gt;
			$this-&amp;gt;tpl = new bab_ovmlAPI();&lt;br /&gt;
			$args['topicid'] = 12;&lt;br /&gt;
			$args['archive']='No';&lt;br /&gt;
			$args['topicorder']='Yes';&lt;br /&gt;
			$this-&amp;gt;cont = $this-&amp;gt;tpl-&amp;gt;getContainer('ArticleTopics', $args);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
		function getnextarticle()&lt;br /&gt;
			{&lt;br /&gt;
			if( $this-&amp;gt;cont-&amp;gt;getnext() )&lt;br /&gt;
				{&lt;br /&gt;
				$this-&amp;gt;title =  $this-&amp;gt;cont-&amp;gt;ArticleTitle;&lt;br /&gt;
				return true;&lt;br /&gt;
				}&lt;br /&gt;
			else&lt;br /&gt;
				{&lt;br /&gt;
				return false;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		&lt;br /&gt;
		}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si l'on souhaite créer ces variables dans un autre objet, on peut passer cet objet à chaque&lt;br /&gt;
appel à la fonction ''''getnext'''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $babInstallPath.'utilit/ovmlapi.php';&lt;br /&gt;
&lt;br /&gt;
function list_articles()&lt;br /&gt;
{&lt;br /&gt;
	global $babBody;&lt;br /&gt;
&lt;br /&gt;
	class list_articles_class&lt;br /&gt;
		{&lt;br /&gt;
		function list_articles_class()&lt;br /&gt;
			{&lt;br /&gt;
			$this-&amp;gt;tpl = new bab_ovmlAPI();&lt;br /&gt;
			$args['topicid'] = 12;&lt;br /&gt;
			$args['archive']='No';&lt;br /&gt;
			$args['topicorder']='Yes';&lt;br /&gt;
			$this-&amp;gt;cont = $this-&amp;gt;tpl-&amp;gt;getContainer('ArticleTopics', $args);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
		function getnextarticle()&lt;br /&gt;
			{&lt;br /&gt;
			if( $this-&amp;gt;cont-&amp;gt;getnext($this) )&lt;br /&gt;
				{&lt;br /&gt;
				echo $this-&amp;gt;ArticleTitle;&lt;br /&gt;
				return true;&lt;br /&gt;
				}&lt;br /&gt;
			else&lt;br /&gt;
				{&lt;br /&gt;
				return false;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		&lt;br /&gt;
		}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_editeur&amp;diff=2990</id>
		<title>API editeur</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_editeur&amp;diff=2990"/>
				<updated>2008-01-08T14:28:04Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* API pour créer un module éditeur */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Fonctions à remplacer==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_editor($content, $editname, $formname, $heightpx=300, $what=3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cette fonction retourne du html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_editor_record(&amp;amp;$str)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette fonction est appelée au moment de la récupération des données soumises par l'éditeur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_replace_ref(&amp;amp;$str)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cette fonction est appelée au moment de l'affichage du texte enregistré par l'éditeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==API pour implémenter un éditeur==&lt;br /&gt;
&lt;br /&gt;
syntaxe utilisée dans le nom des fonctions :&lt;br /&gt;
&lt;br /&gt;
* Editor : le html de l'éditeur&lt;br /&gt;
* Content : le contenu à stoquer dans la base&lt;br /&gt;
* Html : le contenu transformé en html pour l'affichage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le HTML nécessaire à l'éditeur, un objet sera utilisé.  &lt;br /&gt;
Pour afficher l'éditeur au moment de la modification d'un texte :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;utilit/editorincl.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$editor = new bab_contentEditor($uid);&lt;br /&gt;
$editor-&amp;gt;setRequestFieldName('textarea_name');&lt;br /&gt;
$editor-&amp;gt;setContent($content);&lt;br /&gt;
$editor-&amp;gt;setParameters(array('height' =&amp;gt; 300));&lt;br /&gt;
$editor_html = $editor-&amp;gt;getEditor();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
setRequestFieldName est optionnel, il permet de définir le nom du champ posté, si la méthode n'est pas appelée, $uid est utilisé comme nom dans le html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Avant d'enregistrer dans la base :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$editor = new bab_contentEditor($uid);&lt;br /&gt;
$editor-&amp;gt;setRequestFieldName('textarea_name');&lt;br /&gt;
$content = $editor-&amp;gt;getContent();&lt;br /&gt;
$format = $editor-&amp;gt;getFormat();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour afficher du contenu qui a été enregistré avec l'éditeur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$editor = new bab_contentEditor($uid);&lt;br /&gt;
$editor-&amp;gt;setContent($content);&lt;br /&gt;
$html = $editor-&amp;gt;getHtml();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour chaque éditeur, un enregistrement doit être ajouté sur cet événement :&lt;br /&gt;
'''bab_eventEditors'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;utilit/eventincl.php&amp;quot;;&lt;br /&gt;
bab_addEventListener('bab_eventEditors', 'xxx_getEditorDetails', 'xxx.php');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il faut prévoir une fonction qui permet d'identifier l'éditeur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function xxx_getEditorDetails($event) {&lt;br /&gt;
    $event-&amp;gt;addEditor($uid, 'Editor label', 'Editor description');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour les fonctions externes qui insèrent du html dans l'éditeur, chaque fonction doit s'inscrire sur cet événement :&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorContentToHtml''' cet événement sera appelé au moment de l'affichage de la popup avec les listes des fonctions qui permettent d'insérer du html dans l'éditeur. S'enregistrer sur cet événement permet d'ajouter des fonctions comme l'insertion d'un fichier du gestionnaire de fichier ou une fiche annuaire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
si $babBody n'est pas utilisé pour l'affichage des pages, il faut inclure manuellement des fichiers :&lt;br /&gt;
&lt;br /&gt;
 $babBody-&amp;gt;addJavascriptFile($GLOBALS['babInstallPath'].'scripts/bab_dialog.js');&lt;br /&gt;
 $babBody-&amp;gt;addJavascriptFile($GLOBALS['babInstallPath'].'scripts/text_toolbar.js');&lt;br /&gt;
 $babBody-&amp;gt;addStyleSheet('text_toolbar.css');&lt;br /&gt;
&lt;br /&gt;
==API pour créer un module éditeur==&lt;br /&gt;
&lt;br /&gt;
Des événements seront définis pour permettre de fournir un éditeur à partir d'un module :&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorContentToEditor''' permet de créer le template HTML de l'éditeur, cet événement sera appelé par $editor-&amp;gt;getEditor()&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorRequestToContent''' cet événement sera appelé par $editor-&amp;gt;getContent()&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorContentToHtml''' cet événement sera appelé par $editor-&amp;gt;getHtml()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Création d'un module ovidentia qui propose un éditeur WYSIWYG===&lt;br /&gt;
&lt;br /&gt;
Les modules peuvent fournir un éditeur pour les formulaires de modification du contenu du noyau et des autres modules, il faut obligatoirement traiter les 3 événements de la gestion des éditeurs afin que la gestion du html soit sécurisée. &lt;br /&gt;
&lt;br /&gt;
Il est possible d'effectuer des action spécifiques en fonction du paramètre &amp;quot;uid&amp;quot; de l'éditeur. Cette fonctionnalité est optionnelle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====pré requis pour qu'un éditeur soit compatible avec ovidentia====&lt;br /&gt;
&lt;br /&gt;
* Ajout d'un bouton personnalisé qui appelle du javascript (ouverture d'une popup ovidentia)&lt;br /&gt;
* Possibilité de récupérer le html sélectionné par API au moment du click sur le bouton&lt;br /&gt;
* Possibilité d'insérer du html à la place de la sélection par API&lt;br /&gt;
* Le code récupéré doit être transformable en XHTML 1.0 transitional&lt;br /&gt;
* la hauteur de la textarea doit être paramétrable en pixel&lt;br /&gt;
&lt;br /&gt;
====Gestion des éditeurs====&lt;br /&gt;
&lt;br /&gt;
Lors de l'installation du module, il faut enregistrer les événements de notification pour que le module soit prévenu lors des actions effectuées sur les différentes implémentations de l'éditeur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;utilit/eventincl.php&amp;quot;;&lt;br /&gt;
bab_addEventListener('bab_eventEditorContentToHtml', 'fcke_contentToHtml', 'addon/fckeditor/events.php', 'fckeditor');&lt;br /&gt;
bab_addEventListener('bab_eventEditorRequestToContent', 'fcke_requestToContent', 'addon/fckeditor/events.php', 'fckeditor');&lt;br /&gt;
bab_addEventListener('bab_eventEditorContentToHtml', 'fcke_contentToHtml', 'addon/fckeditor/events.php', 'fckeditor');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de chaque appel d'une fonction événementielle, un paramètre sera envoyé contenant les informations de l'éditeur ; c'est l'objet bab_editor qui sera inclu dans l'objet de l'événement déclenché. Le module aura accès à ces informations :&lt;br /&gt;
&lt;br /&gt;
événement bab_eventEditorContentToHtml :&lt;br /&gt;
&lt;br /&gt;
* uid : identifiant unique de l'éditeur en chaine de caractère, par exemple : &amp;quot;bab_article_head&amp;quot; pour l'introduction d'un article&lt;br /&gt;
* request_field_name : nom du champ html&lt;br /&gt;
* height : la hauteur demandée pour la case d'édition en pixel&lt;br /&gt;
* content : contenu à modifier&lt;br /&gt;
&lt;br /&gt;
la variable output_editor devra être renseignée lors de cette action&lt;br /&gt;
&lt;br /&gt;
événement bab_eventEditorRequestToContent :&lt;br /&gt;
&lt;br /&gt;
* uid&lt;br /&gt;
* request_field_name : nom du champ html&lt;br /&gt;
&lt;br /&gt;
la variable output_content devra être renseignée lors de cette action&lt;br /&gt;
&lt;br /&gt;
événement bab_eventEditorContentToHtml :&lt;br /&gt;
&lt;br /&gt;
* uid&lt;br /&gt;
* content : contenu à afficher&lt;br /&gt;
&lt;br /&gt;
La variable output_html devra être renseignée lors de cette action&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Récupérer la liste des instances de l'éditeur====&lt;br /&gt;
&lt;br /&gt;
Partout ou l'éditeur est utilisé, le nom de l'éditeur a été inscrit dans l'événement bab_eventEditors, pour récupérer la liste des éditeurs, il faut créer un objet d'événement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class bab_eventEditors extends bab_event {&lt;br /&gt;
    function addEditor($uid, $name, $description) {&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$event = new bab_eventEditors();&lt;br /&gt;
bab_fireEvent($event);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_editeur&amp;diff=2989</id>
		<title>API editeur</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_editeur&amp;diff=2989"/>
				<updated>2008-01-08T14:25:16Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* API pour implémenter un éditeur */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Fonctions à remplacer==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_editor($content, $editname, $formname, $heightpx=300, $what=3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cette fonction retourne du html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_editor_record(&amp;amp;$str)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette fonction est appelée au moment de la récupération des données soumises par l'éditeur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_replace_ref(&amp;amp;$str)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cette fonction est appelée au moment de l'affichage du texte enregistré par l'éditeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==API pour implémenter un éditeur==&lt;br /&gt;
&lt;br /&gt;
syntaxe utilisée dans le nom des fonctions :&lt;br /&gt;
&lt;br /&gt;
* Editor : le html de l'éditeur&lt;br /&gt;
* Content : le contenu à stoquer dans la base&lt;br /&gt;
* Html : le contenu transformé en html pour l'affichage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le HTML nécessaire à l'éditeur, un objet sera utilisé.  &lt;br /&gt;
Pour afficher l'éditeur au moment de la modification d'un texte :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;utilit/editorincl.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$editor = new bab_contentEditor($uid);&lt;br /&gt;
$editor-&amp;gt;setRequestFieldName('textarea_name');&lt;br /&gt;
$editor-&amp;gt;setContent($content);&lt;br /&gt;
$editor-&amp;gt;setParameters(array('height' =&amp;gt; 300));&lt;br /&gt;
$editor_html = $editor-&amp;gt;getEditor();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
setRequestFieldName est optionnel, il permet de définir le nom du champ posté, si la méthode n'est pas appelée, $uid est utilisé comme nom dans le html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Avant d'enregistrer dans la base :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$editor = new bab_contentEditor($uid);&lt;br /&gt;
$editor-&amp;gt;setRequestFieldName('textarea_name');&lt;br /&gt;
$content = $editor-&amp;gt;getContent();&lt;br /&gt;
$format = $editor-&amp;gt;getFormat();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour afficher du contenu qui a été enregistré avec l'éditeur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$editor = new bab_contentEditor($uid);&lt;br /&gt;
$editor-&amp;gt;setContent($content);&lt;br /&gt;
$html = $editor-&amp;gt;getHtml();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour chaque éditeur, un enregistrement doit être ajouté sur cet événement :&lt;br /&gt;
'''bab_eventEditors'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;utilit/eventincl.php&amp;quot;;&lt;br /&gt;
bab_addEventListener('bab_eventEditors', 'xxx_getEditorDetails', 'xxx.php');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il faut prévoir une fonction qui permet d'identifier l'éditeur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function xxx_getEditorDetails($event) {&lt;br /&gt;
    $event-&amp;gt;addEditor($uid, 'Editor label', 'Editor description');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour les fonctions externes qui insèrent du html dans l'éditeur, chaque fonction doit s'inscrire sur cet événement :&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorContentToHtml''' cet événement sera appelé au moment de l'affichage de la popup avec les listes des fonctions qui permettent d'insérer du html dans l'éditeur. S'enregistrer sur cet événement permet d'ajouter des fonctions comme l'insertion d'un fichier du gestionnaire de fichier ou une fiche annuaire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
si $babBody n'est pas utilisé pour l'affichage des pages, il faut inclure manuellement des fichiers :&lt;br /&gt;
&lt;br /&gt;
 $babBody-&amp;gt;addJavascriptFile($GLOBALS['babInstallPath'].'scripts/bab_dialog.js');&lt;br /&gt;
 $babBody-&amp;gt;addJavascriptFile($GLOBALS['babInstallPath'].'scripts/text_toolbar.js');&lt;br /&gt;
 $babBody-&amp;gt;addStyleSheet('text_toolbar.css');&lt;br /&gt;
&lt;br /&gt;
==API pour créer un module éditeur==&lt;br /&gt;
&lt;br /&gt;
Des événements serons définis pour permettre de fournir un éditeur à partir d'un module :&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorContentToEditor''' permet de créer le template HTML de l'éditeur, cet événement sera appelé par $editor-&amp;gt;getEditor()&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorRequestToContent''' cet événement sera appelé par $editor-&amp;gt;getContent()&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorContentToHtml''' cet événement sera appelé par $editor-&amp;gt;getHtml()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Création d'un module ovidentia qui propose un éditeur WYSIWYG===&lt;br /&gt;
&lt;br /&gt;
Les modules peuvent fournir un éditeur pour les formulaire de modification du contenu du noyau et des autres modules, il faut obligatoirement traiter les 3 événements de la gestion des éditeurs afin que la gestion du html soit sécurisée. &lt;br /&gt;
&lt;br /&gt;
Il est possible d'effectuer des action spécifiques en fonction du paramètre &amp;quot;uid&amp;quot; de l'éditeur. Cette fonctionnalité est optionnelle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====pré requis pour qu'un éditeur soit compatible avec ovidentia====&lt;br /&gt;
&lt;br /&gt;
* Ajout d'un bouton personnalisé qui appelle du javascript (ouverture d'une popup ovidentia)&lt;br /&gt;
* Possibilité de récupérer le html sélectionné par API au moment du click sur le bouton&lt;br /&gt;
* Possibilité d'insérer du html à la place de la sélection par API&lt;br /&gt;
* Le code récupéré doit être transformable en XHTML 1.0 transitional&lt;br /&gt;
* la hauteur de la textarea doit être paramétrable en pixel&lt;br /&gt;
&lt;br /&gt;
====Gestion des éditeur====&lt;br /&gt;
&lt;br /&gt;
lors de l'installation du module, il faut enregistrer les événements de notification pour que le module soit prévenu lors des actions effectuées sur les différentes implémentations de l'éditeur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;utilit/eventincl.php&amp;quot;;&lt;br /&gt;
bab_addEventListener('bab_eventEditorContentToHtml', 'fcke_contentToHtml', 'addon/fckeditor/events.php', 'fckeditor');&lt;br /&gt;
bab_addEventListener('bab_eventEditorRequestToContent', 'fcke_requestToContent', 'addon/fckeditor/events.php', 'fckeditor');&lt;br /&gt;
bab_addEventListener('bab_eventEditorContentToHtml', 'fcke_contentToHtml', 'addon/fckeditor/events.php', 'fckeditor');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de chaque appel d'une fonction événementielle, un paramètre sera envoyé contenant les information de l'éditeur, c'est l'objet bab_editor qui sera inclu dans l'objet de l'événement déclenché. Le module aura accès à ces informations :&lt;br /&gt;
&lt;br /&gt;
événement bab_eventEditorContentToHtml :&lt;br /&gt;
&lt;br /&gt;
* uid : identifiant unique de l'éditeur en chaine de caractère, par exemple : &amp;quot;bab_article_head&amp;quot; pour l'introduction d'un article&lt;br /&gt;
* request_field_name : nom du champ html&lt;br /&gt;
* height : la hauteur demandée pour la case d'édition en pixel&lt;br /&gt;
* content : contenu à modifier&lt;br /&gt;
&lt;br /&gt;
la variable output_editor devra être renseignée lors de cette action&lt;br /&gt;
&lt;br /&gt;
événement bab_eventEditorRequestToContent :&lt;br /&gt;
&lt;br /&gt;
* uid&lt;br /&gt;
* request_field_name : nom du champ html&lt;br /&gt;
&lt;br /&gt;
la variable output_content devra être renseignée lors de cette action&lt;br /&gt;
&lt;br /&gt;
événement bab_eventEditorContentToHtml :&lt;br /&gt;
&lt;br /&gt;
* uid&lt;br /&gt;
* content : contenu à afficher&lt;br /&gt;
&lt;br /&gt;
La variable output_html devra être renseignée lors de cette action&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Récupérer la liste des instances de l'éditeur====&lt;br /&gt;
&lt;br /&gt;
Partout ou l'éditeur est utilisé, le nom de l'éditeur à été inscrit dans l'événement bab_eventEditors, pour récupérer la liste des éditeurs, il faut créer un object d'événement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class bab_eventEditors extends bab_event {&lt;br /&gt;
    function addEditor($uid, $name, $description) {&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$event = new bab_eventEditors();&lt;br /&gt;
bab_fireEvent($event);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_editeur&amp;diff=2988</id>
		<title>API editeur</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_editeur&amp;diff=2988"/>
				<updated>2008-01-08T14:24:49Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* API pour implémenter un éditeur */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Fonctions à remplacer==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_editor($content, $editname, $formname, $heightpx=300, $what=3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cette fonction retourne du html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_editor_record(&amp;amp;$str)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette fonction est appelée au moment de la récupération des données soumises par l'éditeur&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_replace_ref(&amp;amp;$str)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cette fonction est appelée au moment de l'affichage du texte enregistré par l'éditeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==API pour implémenter un éditeur==&lt;br /&gt;
&lt;br /&gt;
syntaxe utilisée dans le nom des fonctions :&lt;br /&gt;
&lt;br /&gt;
* Editor : le html de l'éditeur&lt;br /&gt;
* Content : le contenu à stoquer dans la base&lt;br /&gt;
* Html : le contenu transformé en html pour l'affichage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le HTML nécessaire à l'éditeur, un objet sera utilisé, &lt;br /&gt;
Pour afficher l'éditeur au moment de la modification d'un texte :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;utilit/editorincl.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$editor = new bab_contentEditor($uid);&lt;br /&gt;
$editor-&amp;gt;setRequestFieldName('textarea_name');&lt;br /&gt;
$editor-&amp;gt;setContent($content);&lt;br /&gt;
$editor-&amp;gt;setParameters(array('height' =&amp;gt; 300));&lt;br /&gt;
$editor_html = $editor-&amp;gt;getEditor();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
setRequestFieldName est optionnel, il permet de définir le nom du champ posté, si la méthode n'est pas appelée, $uid est utilisé comme nom dans le html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Avant d'enregistrer dans la base :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$editor = new bab_contentEditor($uid);&lt;br /&gt;
$editor-&amp;gt;setRequestFieldName('textarea_name');&lt;br /&gt;
$content = $editor-&amp;gt;getContent();&lt;br /&gt;
$format = $editor-&amp;gt;getFormat();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour afficher du contenu qui a été enregistré avec l'éditeur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$editor = new bab_contentEditor($uid);&lt;br /&gt;
$editor-&amp;gt;setContent($content);&lt;br /&gt;
$html = $editor-&amp;gt;getHtml();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour chaque éditeur, un enregistrement doit être ajouté sur cet événement :&lt;br /&gt;
'''bab_eventEditors'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;utilit/eventincl.php&amp;quot;;&lt;br /&gt;
bab_addEventListener('bab_eventEditors', 'xxx_getEditorDetails', 'xxx.php');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il faut prévoir une fonction qui permet d'identifier l'éditeur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function xxx_getEditorDetails($event) {&lt;br /&gt;
    $event-&amp;gt;addEditor($uid, 'Editor label', 'Editor description');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour les fonctions externes qui insèrent du html dans l'éditeur, chaque fonction doit s'inscrire sur cet événement :&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorContentToHtml''' cet événement sera appelé au moment de l'affichage de la popup avec les listes des fonctions qui permettent d'insérer du html dans l'éditeur. S'enregistrer sur cet événement permet d'ajouter des fonctions comme l'insertion d'un fichier du gestionnaire de fichier ou une fiche annuaire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
si $babBody n'est pas utilisé pour l'affichage des pages, il faut inclure manuellement des fichiers :&lt;br /&gt;
&lt;br /&gt;
 $babBody-&amp;gt;addJavascriptFile($GLOBALS['babInstallPath'].'scripts/bab_dialog.js');&lt;br /&gt;
 $babBody-&amp;gt;addJavascriptFile($GLOBALS['babInstallPath'].'scripts/text_toolbar.js');&lt;br /&gt;
 $babBody-&amp;gt;addStyleSheet('text_toolbar.css');&lt;br /&gt;
&lt;br /&gt;
==API pour créer un module éditeur==&lt;br /&gt;
&lt;br /&gt;
Des événements serons définis pour permettre de fournir un éditeur à partir d'un module :&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorContentToEditor''' permet de créer le template HTML de l'éditeur, cet événement sera appelé par $editor-&amp;gt;getEditor()&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorRequestToContent''' cet événement sera appelé par $editor-&amp;gt;getContent()&lt;br /&gt;
&lt;br /&gt;
'''bab_eventEditorContentToHtml''' cet événement sera appelé par $editor-&amp;gt;getHtml()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Création d'un module ovidentia qui propose un éditeur WYSIWYG===&lt;br /&gt;
&lt;br /&gt;
Les modules peuvent fournir un éditeur pour les formulaire de modification du contenu du noyau et des autres modules, il faut obligatoirement traiter les 3 événements de la gestion des éditeurs afin que la gestion du html soit sécurisée. &lt;br /&gt;
&lt;br /&gt;
Il est possible d'effectuer des action spécifiques en fonction du paramètre &amp;quot;uid&amp;quot; de l'éditeur. Cette fonctionnalité est optionnelle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====pré requis pour qu'un éditeur soit compatible avec ovidentia====&lt;br /&gt;
&lt;br /&gt;
* Ajout d'un bouton personnalisé qui appelle du javascript (ouverture d'une popup ovidentia)&lt;br /&gt;
* Possibilité de récupérer le html sélectionné par API au moment du click sur le bouton&lt;br /&gt;
* Possibilité d'insérer du html à la place de la sélection par API&lt;br /&gt;
* Le code récupéré doit être transformable en XHTML 1.0 transitional&lt;br /&gt;
* la hauteur de la textarea doit être paramétrable en pixel&lt;br /&gt;
&lt;br /&gt;
====Gestion des éditeur====&lt;br /&gt;
&lt;br /&gt;
lors de l'installation du module, il faut enregistrer les événements de notification pour que le module soit prévenu lors des actions effectuées sur les différentes implémentations de l'éditeur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;utilit/eventincl.php&amp;quot;;&lt;br /&gt;
bab_addEventListener('bab_eventEditorContentToHtml', 'fcke_contentToHtml', 'addon/fckeditor/events.php', 'fckeditor');&lt;br /&gt;
bab_addEventListener('bab_eventEditorRequestToContent', 'fcke_requestToContent', 'addon/fckeditor/events.php', 'fckeditor');&lt;br /&gt;
bab_addEventListener('bab_eventEditorContentToHtml', 'fcke_contentToHtml', 'addon/fckeditor/events.php', 'fckeditor');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lors de chaque appel d'une fonction événementielle, un paramètre sera envoyé contenant les information de l'éditeur, c'est l'objet bab_editor qui sera inclu dans l'objet de l'événement déclenché. Le module aura accès à ces informations :&lt;br /&gt;
&lt;br /&gt;
événement bab_eventEditorContentToHtml :&lt;br /&gt;
&lt;br /&gt;
* uid : identifiant unique de l'éditeur en chaine de caractère, par exemple : &amp;quot;bab_article_head&amp;quot; pour l'introduction d'un article&lt;br /&gt;
* request_field_name : nom du champ html&lt;br /&gt;
* height : la hauteur demandée pour la case d'édition en pixel&lt;br /&gt;
* content : contenu à modifier&lt;br /&gt;
&lt;br /&gt;
la variable output_editor devra être renseignée lors de cette action&lt;br /&gt;
&lt;br /&gt;
événement bab_eventEditorRequestToContent :&lt;br /&gt;
&lt;br /&gt;
* uid&lt;br /&gt;
* request_field_name : nom du champ html&lt;br /&gt;
&lt;br /&gt;
la variable output_content devra être renseignée lors de cette action&lt;br /&gt;
&lt;br /&gt;
événement bab_eventEditorContentToHtml :&lt;br /&gt;
&lt;br /&gt;
* uid&lt;br /&gt;
* content : contenu à afficher&lt;br /&gt;
&lt;br /&gt;
La variable output_html devra être renseignée lors de cette action&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Récupérer la liste des instances de l'éditeur====&lt;br /&gt;
&lt;br /&gt;
Partout ou l'éditeur est utilisé, le nom de l'éditeur à été inscrit dans l'événement bab_eventEditors, pour récupérer la liste des éditeurs, il faut créer un object d'événement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class bab_eventEditors extends bab_event {&lt;br /&gt;
    function addEditor($uid, $name, $description) {&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$event = new bab_eventEditors();&lt;br /&gt;
bab_fireEvent($event);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_du_gestionnaire_d%27%C3%A9v%C3%A9nement&amp;diff=2987</id>
		<title>API du gestionnaire d'événement</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_du_gestionnaire_d%27%C3%A9v%C3%A9nement&amp;diff=2987"/>
				<updated>2008-01-08T14:20:47Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Gestion des priorités */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== table des listener ==&lt;br /&gt;
&lt;br /&gt;
* id&lt;br /&gt;
* event_class_name&lt;br /&gt;
* function_name&lt;br /&gt;
* require_file&lt;br /&gt;
* addon_name&lt;br /&gt;
* priority&lt;br /&gt;
&lt;br /&gt;
event_class_name est le nom d'une classe héritée de bab_event&lt;br /&gt;
&lt;br /&gt;
function_name est le nom d'une fonction déclarée dans le ficher spécifié dans la colonne require_file&lt;br /&gt;
&lt;br /&gt;
le paramètre require_file est le chemin relatif au noyau d'ovidentia d'un fichier php&lt;br /&gt;
&lt;br /&gt;
le paramètre priority (optionnel) permet de régler l'ordre d'appel des fonctions enregistrés pour un même événement&lt;br /&gt;
&lt;br /&gt;
Ajouter un listener :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_addEventListener('event_class_name', 'function_name', 'require_file', 'addon_name');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enlever un listener :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_removeEventListener('event_class_name', 'function_name', 'require_file', 'addon_name');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La fonction inscrite dans la colonne function_name sera délarée dans le fichier 'require_file' comme ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function ats_onBabPasswordModified(&amp;amp;$event) {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Appel d'événement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lors de l'appel d'un événement, toutes les fonctions enregistrées dans la table des &amp;quot;listener&amp;quot; qui ont pour event_class_name le nom de l'objet ou le nom d'un des parents de l'objet sont appelés ; pour chaque enregistrement, on effectue les actions suivantes :&lt;br /&gt;
&lt;br /&gt;
# si 'addon_name' est un nom de module valide, le contexte du module est créé&lt;br /&gt;
# le nom du fichier contenu dans 'require_file' est inclu avec la fonction require_once&lt;br /&gt;
# la fonction 'function_name' est appelée avec un seul paramètre qui est l'instance de l'événement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class bab_userModified extends bab_event {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class bab_passwordModified extends bab_userModified {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$event_obj = new bab_passwordModified();&lt;br /&gt;
&lt;br /&gt;
bab_fireEvent($event_obj);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'ordre d'appel des fonctions enregistrées dans le listener est indéterminé (le premier enregistré est le premier appelé)&lt;br /&gt;
&lt;br /&gt;
=== Gestion des priorités ===&lt;br /&gt;
&lt;br /&gt;
DRAFT&lt;br /&gt;
&lt;br /&gt;
Lorsque plusieurs fonctions ont été enregistrées sur le même événement, il doit être possible de gérer l'ordre d'appel des différents listeners avec le paramètre 'priority' renseigné lors de l'enregistrement de la fonction&lt;br /&gt;
&lt;br /&gt;
== Tous les événements disponibles ==&lt;br /&gt;
&lt;br /&gt;
=== Ovidentia ===&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
|Evenement&lt;br /&gt;
|Parent&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventBeforePeriodsCreated&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé au moment de la création d'un planning (agenda, planning de congés...), il est utilisé pour collecter les événements à afficher pour une période donnée&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventPeriodModified&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors de la modification d'un ou plusieurs événements sur une période donnée&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventBeforeWaitingItemsDisplayed&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors de l'affichage des instances d'approbation en attente sur la page &amp;quot;approbations&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors d'une intervention sur une fiche d'annuaire ou d'un utilisateur d'ovidentia&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventDirectoryEntryCreated&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la création d'une fiche d'annuaire&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventDirectoryEntryModified&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la modification d'une fiche d'annuaire&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventDirectoryEntryDeleted&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la suppression d'une fiche d'annuaire&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventUserCreated&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la création d'un utilisateur&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventUserModified&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la modification d'un utilisateur&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventUserDeleted&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la suppression d'un utilisateur&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventGroupDeleted&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors de la suppression d'un groupe&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventEditorContentToEditor&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors de l'affichage d'un éditeur de contenu&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventEditorRequestToContent&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé pour récupérer le contenu enregistré par un éditeur de contenu&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventEditorContentToHtml&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé pour afficher du contenu saisi par un éditeur de contenu&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventEditors&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé pour afficher la liste des implémentations de l'éditeur de contenu&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventEditorFunctions&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors de l'affichage de la liste des fonctionnalités d'ovidentia qui peuvent insérer des fragments de html dans un éditeur de contenu&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventUserAttachedToGroup&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Un utilisateur est ajouté dans un groupe&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventUserDetachedFromGroup&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Un utilisateur est enlevé d'un groupe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_du_gestionnaire_d%27%C3%A9v%C3%A9nement&amp;diff=2986</id>
		<title>API du gestionnaire d'événement</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_du_gestionnaire_d%27%C3%A9v%C3%A9nement&amp;diff=2986"/>
				<updated>2008-01-08T14:19:35Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Appel d'événement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== table des listener ==&lt;br /&gt;
&lt;br /&gt;
* id&lt;br /&gt;
* event_class_name&lt;br /&gt;
* function_name&lt;br /&gt;
* require_file&lt;br /&gt;
* addon_name&lt;br /&gt;
* priority&lt;br /&gt;
&lt;br /&gt;
event_class_name est le nom d'une classe héritée de bab_event&lt;br /&gt;
&lt;br /&gt;
function_name est le nom d'une fonction déclarée dans le ficher spécifié dans la colonne require_file&lt;br /&gt;
&lt;br /&gt;
le paramètre require_file est le chemin relatif au noyau d'ovidentia d'un fichier php&lt;br /&gt;
&lt;br /&gt;
le paramètre priority (optionnel) permet de régler l'ordre d'appel des fonctions enregistrés pour un même événement&lt;br /&gt;
&lt;br /&gt;
Ajouter un listener :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_addEventListener('event_class_name', 'function_name', 'require_file', 'addon_name');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enlever un listener :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bab_removeEventListener('event_class_name', 'function_name', 'require_file', 'addon_name');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La fonction inscrite dans la colonne function_name sera délarée dans le fichier 'require_file' comme ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function ats_onBabPasswordModified(&amp;amp;$event) {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Appel d'événement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lors de l'appel d'un événement, toutes les fonctions enregistrées dans la table des &amp;quot;listener&amp;quot; qui ont pour event_class_name le nom de l'objet ou le nom d'un des parents de l'objet sont appelés ; pour chaque enregistrement, on effectue les actions suivantes :&lt;br /&gt;
&lt;br /&gt;
# si 'addon_name' est un nom de module valide, le contexte du module est créé&lt;br /&gt;
# le nom du fichier contenu dans 'require_file' est inclu avec la fonction require_once&lt;br /&gt;
# la fonction 'function_name' est appelée avec un seul paramètre qui est l'instance de l'événement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class bab_userModified extends bab_event {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class bab_passwordModified extends bab_userModified {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$event_obj = new bab_passwordModified();&lt;br /&gt;
&lt;br /&gt;
bab_fireEvent($event_obj);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'ordre d'appel des fonctions enregistrées dans le listener est indéterminé (le premier enregistré est le premier appelé)&lt;br /&gt;
&lt;br /&gt;
=== Gestion des priorités ===&lt;br /&gt;
&lt;br /&gt;
DRAFT&lt;br /&gt;
&lt;br /&gt;
Lorsque plusieurs fonctions ont été enregistrées sur le même événement, il doit être possible de gérer l'ordre d'appel des différents listeners&lt;br /&gt;
&lt;br /&gt;
avec le paramètre 'priority' renseigné lors de l'enregistrement de la fonction&lt;br /&gt;
&lt;br /&gt;
== Tous les événements disponibles ==&lt;br /&gt;
&lt;br /&gt;
=== Ovidentia ===&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
|Evenement&lt;br /&gt;
|Parent&lt;br /&gt;
|Description&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventBeforePeriodsCreated&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé au moment de la création d'un planning (agenda, planning de congés...), il est utilisé pour collecter les événements à afficher pour une période donnée&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventPeriodModified&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors de la modification d'un ou plusieurs événements sur une période donnée&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventBeforeWaitingItemsDisplayed&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors de l'affichage des instances d'approbation en attente sur la page &amp;quot;approbations&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors d'une intervention sur une fiche d'annuaire ou d'un utilisateur d'ovidentia&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventDirectoryEntryCreated&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la création d'une fiche d'annuaire&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventDirectoryEntryModified&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la modification d'une fiche d'annuaire&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventDirectoryEntryDeleted&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la suppression d'une fiche d'annuaire&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventUserCreated&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la création d'un utilisateur&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventUserModified&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la modification d'un utilisateur&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventUserDeleted&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Événement appelé lors de la suppression d'un utilisateur&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventGroupDeleted&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors de la suppression d'un groupe&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventEditorContentToEditor&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors de l'affichage d'un éditeur de contenu&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventEditorRequestToContent&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé pour récupérer le contenu enregistré par un éditeur de contenu&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventEditorContentToHtml&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé pour afficher du contenu saisi par un éditeur de contenu&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventEditors&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé pour afficher la liste des implémentations de l'éditeur de contenu&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventEditorFunctions&lt;br /&gt;
|bab_event&lt;br /&gt;
|Événement appelé lors de l'affichage de la liste des fonctionnalités d'ovidentia qui peuvent insérer des fragments de html dans un éditeur de contenu&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventUserAttachedToGroup&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Un utilisateur est ajouté dans un groupe&lt;br /&gt;
|-&lt;br /&gt;
|bab_eventUserDetachedFromGroup&lt;br /&gt;
|bab_eventDirectory&lt;br /&gt;
|Un utilisateur est enlevé d'un groupe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_du_gestionnaire_de_fichiers&amp;diff=2985</id>
		<title>API du gestionnaire de fichiers</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_du_gestionnaire_de_fichiers&amp;diff=2985"/>
				<updated>2008-01-08T14:17:06Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* API d'upload */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== API d'upload ===&lt;br /&gt;
&lt;br /&gt;
Il existe une fonction pour importer des fichiers en masse dans le gestionnaire de fichiers&lt;br /&gt;
cf uploadincl.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Import a file into the file manager&lt;br /&gt;
 * if the file exists, the file is updated or a new version of the file is created&lt;br /&gt;
 * @param 	object	$fmFile			bab_fmFile instance&lt;br /&gt;
 * @param	int		$id_owner&lt;br /&gt;
 * @param	string	$path&lt;br /&gt;
 * @param	boolean	$bgroup			true if the $id_owner is a folder, false if the $id_owner is a user&lt;br /&gt;
 *&lt;br /&gt;
 * @return 	boolean	id_file&lt;br /&gt;
 */&lt;br /&gt;
function bab_importFmFile($fmFile, $id_owner, $path, $bgroup)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== API de download ===&lt;br /&gt;
&lt;br /&gt;
* Il est possible d'utiliser l'api ovml pour obtenir les liens de téléchargement&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_de_s%C3%A9lection_d%27utilisateurs&amp;diff=2984</id>
		<title>API de sélection d'utilisateurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_de_s%C3%A9lection_d%27utilisateurs&amp;diff=2984"/>
				<updated>2008-01-08T14:16:12Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Depuis la version 6.0.2 d'ovidentia&amp;lt;br&amp;gt;&lt;br /&gt;
Voir les javadoc dans le fichier : 'utilit/selectusers.php'&amp;lt;br&amp;gt;&lt;br /&gt;
Voir un exemple d'implémentation dans la rubrique Administration / Congés&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].'utilit/selectusers.php';&lt;br /&gt;
$obj = new bab_selectusers();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter des paramètres de type champs cachés dans le formulaire&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$obj-&amp;gt;addVar('ide', $ide);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter des utilisateurs qui apparaissent dans la liste des utilisateurs sélectionnés&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$obj-&amp;gt;addUser($id);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enregistrer la fonction de callback qui est appelée quand l'utilisateur clique sur enregistrer&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$obj-&amp;gt;setRecordCallback('recordVacationManager');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
getHtml() pour récupérer le formulaire&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GLOBALS['babBody']-&amp;gt;babecho($obj-&amp;gt;getHtml()); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fonction d'enregistrement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function recordVacationManager($userids, $params)&lt;br /&gt;
{&lt;br /&gt;
	&lt;br /&gt;
	$db = $GLOBALS['babDB'];&lt;br /&gt;
	$db-&amp;gt;db_query(&amp;quot;DELETE FROM &amp;quot;.BAB_VAC_MANAGERS_TBL.&amp;quot;&amp;quot;);&lt;br /&gt;
	foreach($userids as $id) {&lt;br /&gt;
		$db-&amp;gt;db_query(&amp;quot;INSERT into &amp;quot;.BAB_VAC_MANAGERS_TBL.&amp;quot; (id_user) values (&amp;quot;.$db-&amp;gt;quote($id).&amp;quot;)&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Base_de_registre&amp;diff=2983</id>
		<title>Base de registre</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Base_de_registre&amp;diff=2983"/>
				<updated>2008-01-08T14:13:19Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* API php */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Structure de la base de registre ==&lt;br /&gt;
&lt;br /&gt;
La base de registre est un moyen de mémoriser des informations librement dans un arbre sans créer de table et sans utiliser mysql. La facilité d'utilisation est mise en avant au détriment des performances.&lt;br /&gt;
&lt;br /&gt;
disposition des répertoires à la racine :&lt;br /&gt;
&lt;br /&gt;
le répertoire bab/ contient toutes les clefs liées au noyau&lt;br /&gt;
&lt;br /&gt;
un répertoire par module peut être créé&lt;br /&gt;
&lt;br /&gt;
== API php ==&lt;br /&gt;
&lt;br /&gt;
La fonction bab_getRegistryInstance est disponible dans tout ovidentia (fichier addonapi.php), elle permet d'obtenir l'instance de l'objet pour utiliser la base de registre.&lt;br /&gt;
&lt;br /&gt;
exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$instance = bab_getRegistryInstance();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$instance est un objet bab_registry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;changeDirectory($dir) ===&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet de se déplacer dans l'arborescence de la base de registre, $dir est une chaîne de caractères&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;setKeyValue($key, $value) ===&lt;br /&gt;
&lt;br /&gt;
Méthode utilisée pour créer une clef et une valeur, $key est une chaîne, et $value peut être un objet, un tableau, une chaîne, un nombre entier ou un nombre flottant.&lt;br /&gt;
&lt;br /&gt;
$key ne doit pas contenir de /&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;removeKey($key) ===&lt;br /&gt;
&lt;br /&gt;
Méthode pour supprimer une clef&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;getValue($key) ===&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet d'obtenir une valeur enregistrée ou NULLE si la clef n'existe pas, la valeur obtenue sera du même type que celle qui a été enregistrée&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;getValueEx($key) ===&lt;br /&gt;
&lt;br /&gt;
Cette méthode retourne un tableau avec des informations complémentaires sur la clef&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;deleteDirectory() ===&lt;br /&gt;
&lt;br /&gt;
Permet d'effacer le répertoire en cours.&lt;br /&gt;
&lt;br /&gt;
== Module regedit ==&lt;br /&gt;
&lt;br /&gt;
le module regedit est en cours de développement (il n'est pas disponible en téléchargement)&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Base_de_registre&amp;diff=2982</id>
		<title>Base de registre</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Base_de_registre&amp;diff=2982"/>
				<updated>2008-01-08T14:10:14Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Structure de la base de registre */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Structure de la base de registre ==&lt;br /&gt;
&lt;br /&gt;
La base de registre est un moyen de mémoriser des informations librement dans un arbre sans créer de table et sans utiliser mysql. La facilité d'utilisation est mise en avant au détriment des performances.&lt;br /&gt;
&lt;br /&gt;
disposition des répertoires à la racine :&lt;br /&gt;
&lt;br /&gt;
le répertoire bab/ contient toutes les clefs liées au noyau&lt;br /&gt;
&lt;br /&gt;
un répertoire par module peut être créé&lt;br /&gt;
&lt;br /&gt;
== API php ==&lt;br /&gt;
&lt;br /&gt;
La fonction bab_getRegistryInstance est disponible dans tout ovidentia (fichier addonapi.php), elle permet d'obtenir l'instance de l'objet pour utiliser la base de registre&lt;br /&gt;
&lt;br /&gt;
exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$instance = bab_getRegistryInstance();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$instance est un objet bab_registry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;changeDirectory($dir) ===&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet de ce déplacer dans l'arborescence de la base de registre, $dir est une chaîne de caractères&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;setKeyValue($key, $value) ===&lt;br /&gt;
&lt;br /&gt;
Méthode utilisée pour créer une clef et une valeur, $key est une chaine, et $value peut être un objet un tableau une chaîne un nombre entier ou un nombre flottant&lt;br /&gt;
&lt;br /&gt;
$key ne doit pas contenir de /&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;removeKey($key) ===&lt;br /&gt;
&lt;br /&gt;
Méthode pour supprimer une clef&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;getValue($key) ===&lt;br /&gt;
&lt;br /&gt;
Cette méthode permet d'obtenir une valeur enregistrée ou NULL si la clef n'existe pas, la valeur obtenue sera du même type que celle qui a été enregistrée&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;getValueEx($key) ===&lt;br /&gt;
&lt;br /&gt;
Cette méthode retourne un tableau avec des information complémentaires sur la clef&lt;br /&gt;
&lt;br /&gt;
=== $instance-&amp;gt;deleteDirectory() ===&lt;br /&gt;
&lt;br /&gt;
Permet d'effacer le répertoire en cours.&lt;br /&gt;
&lt;br /&gt;
== Module regedit ==&lt;br /&gt;
&lt;br /&gt;
le module regedit est en cours de développement (il n'est pas disponible en téléchargement)&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_des_ACL_(Access_Control_List)&amp;diff=2981</id>
		<title>API des ACL (Access Control List)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_des_ACL_(Access_Control_List)&amp;diff=2981"/>
				<updated>2008-01-08T14:03:58Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Gestion des tables de droits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Fonction pour enregistrer les droits ==&lt;br /&gt;
&lt;br /&gt;
Pour afficher un formulaire de droits ACL, il faut inclure un fichier php :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global $babInstallPath;&lt;br /&gt;
include_once $babInstallPath.&amp;quot;admin/acl.php&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== L'object macl (multiple access control list) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$macl = new macl('tg_value', 'idx_value', $id_object, 'returnvar', $bsetofgroups, $iddelegation);&lt;br /&gt;
$macl-&amp;gt;addtable( 'bab_table_name',bab_translate(&amp;quot;Who can manage this environement?&amp;quot;));&lt;br /&gt;
$macl-&amp;gt;filter(0,0,1,1,1);&lt;br /&gt;
$macl-&amp;gt;babecho();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
l'object &amp;quot;macl&amp;quot; permet la création d'un formulaire acl pour un seul object $id_object.&lt;br /&gt;
Les paramètres 'tg_value' et 'idx_value' seront enregistrés dans le formulaire comme valeur pour les champs cachés tg et idx. La variable $_POST['returnvar'] sera déclarée lors du retour du formulaire.&lt;br /&gt;
&lt;br /&gt;
Le paramètre $besetofgroups (booléen) permet d'afficher les ensembles de groupes ou non. Par défaut, les ensembles de groupes sont affichés (true).&lt;br /&gt;
&lt;br /&gt;
Le paramètre $iddelegation permet d'indiquer l'id de délégation à utiliser.&lt;br /&gt;
Si la valeur est nulle, le système utilise l'id de la délégation courante.&lt;br /&gt;
&lt;br /&gt;
la méthode addtable() permet d'ajouter une ou plusieurs tables de droits. La méthode doit être appelée une ou plusieurs fois. Le premier paramètre est le nom de la table, le deuxième paramètre est le libellé qui sera affiché sur le formulaire.&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de structure pour la table de droits :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE `bdic_env_groups` (&lt;br /&gt;
  `id` int(11) unsigned NOT NULL auto_increment,&lt;br /&gt;
  `id_object` int(11) unsigned NOT NULL default '0',&lt;br /&gt;
  `id_group` int(11) unsigned NOT NULL default '0',&lt;br /&gt;
  PRIMARY KEY  (`id`),&lt;br /&gt;
  KEY `id_object` (`id_object`),&lt;br /&gt;
  KEY `id_group` (`id_group`)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;filter&amp;quot; permet de désactiver certaines possibilités du formulaire de droit.&lt;br /&gt;
&lt;br /&gt;
Ci-dessous, la liste des paramètres possibles. Tous les paramètres sont optionnels. la valeur 1 permet de désactiver l'élément souhaité et la valeur 0 pour ne rien faire.&lt;br /&gt;
&lt;br /&gt;
# permet de désactiver la liste des groupes&lt;br /&gt;
# fonctionnalité dépréciée (sans effet)&lt;br /&gt;
# permet de désactiver le groupe &amp;quot;Utilisateurs d'Ovidentia&amp;quot;&lt;br /&gt;
# permet de désactiver le groupe &amp;quot;Utilisateurs enregistrés&amp;quot;&lt;br /&gt;
# permet de désactiver le groupe &amp;quot;Utilisateurs anonymes&amp;quot;&lt;br /&gt;
# permet de désactiver un ou plusieurs groupes spécifiés par leur ID (le paramètre est un tableau)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;babecho()&amp;quot; permet d'afficher le formulaire.&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;getHtml()&amp;quot; permet de récupérer le html du formulaire.&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;set_hidden_field($sName, $sValue)&amp;quot; permet de définir des champs cachés supplémentaires.&lt;br /&gt;
&lt;br /&gt;
=== Enregistrement du formulaire de droit ===&lt;br /&gt;
&lt;br /&gt;
Pour enregistrer le résultat du formulaire de droit, appeler la fonction : '''maclGroups()'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enregistrer des droits par API ===&lt;br /&gt;
&lt;br /&gt;
'''aclDuplicateRights($srcTable, $srcIdObject, $trgTable, $trgIdObject)'''&lt;br /&gt;
&lt;br /&gt;
cette fonction permet de copier les droits d'un objet vers un autre objet&lt;br /&gt;
&lt;br /&gt;
'''aclCloneRights($srcTable, $srcIdObject, $trgTable, $trgIdObject)'''&lt;br /&gt;
&lt;br /&gt;
cette fonction permet de cloner un droit d'un objet à partir des droits d'un autre objet&lt;br /&gt;
&lt;br /&gt;
'''aclSetGroups_all($table, $id_object)'''&lt;br /&gt;
&lt;br /&gt;
Pour donner accès à tous les utilisateurs d'ovidentia&lt;br /&gt;
&lt;br /&gt;
'''aclSetGroups_registered($table, $id_object)'''&lt;br /&gt;
&lt;br /&gt;
Pour donner accès aux utilisateurs enregistrés&lt;br /&gt;
&lt;br /&gt;
'''aclSetGroups_unregistered($table, $id_object)'''&lt;br /&gt;
&lt;br /&gt;
Pour donner accès aux utilisateurs anonymes&lt;br /&gt;
&lt;br /&gt;
== Fonctions pour tester les droits ==&lt;br /&gt;
&lt;br /&gt;
Pour vérifier si l'utilisateur connecté a le droit d'accéder ou non à un objet, utiliser la fonction suivante :&lt;br /&gt;
&lt;br /&gt;
===bab_isAccessValid($table_name, $id_object);===&lt;br /&gt;
&lt;br /&gt;
Cette fonction renvoie true ou false selon que l'utilisateur a accès ou non à l'objet testé.&lt;br /&gt;
&lt;br /&gt;
La fonction suivante renvoie la liste des objets auquel l'utilisateur a accès sur une table de droits :&lt;br /&gt;
&lt;br /&gt;
===bab_getUserIdObject($table_name);===&lt;br /&gt;
&lt;br /&gt;
Elle renvoie la liste des objets sous forme d'un tableau.&lt;br /&gt;
&lt;br /&gt;
=== Liste des utilisateurs ayant accès à un droit ===&lt;br /&gt;
Afin de récupérer l'ensemble des utilisateurs ayant le droit d'accès à un objet, utiliser la fonction :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aclGetAccessUsers($table, $id_object)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut inclure le fichier php des ACL et l'utiliser comme ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;admin/acl.php&amp;quot;;&lt;br /&gt;
$users = aclGetAccessUsers($table, $id_object);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La fonction retourne un tableau contenant les utilisateurs qui disposent du droit passé par les paramètres. &lt;br /&gt;
Le format de retour est un tableau structuré comme ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array(&lt;br /&gt;
    id_user =&amp;gt; array(&lt;br /&gt;
        'name' =&amp;gt; 'user name',&lt;br /&gt;
        'email' =&amp;gt; 'user email or false'&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette fonction est principalement utilisée pour les notifications par mail.&lt;br /&gt;
&lt;br /&gt;
== Gestion des tables de droits ==&lt;br /&gt;
&lt;br /&gt;
Pour mettre à jour les tables de droits lors d'une suppression, il faut utiliser les fonctions suivantes :&lt;br /&gt;
&lt;br /&gt;
=== aclDelete($table, $id_object) ===&lt;br /&gt;
&lt;br /&gt;
Fonction à appeler lors de la suppression d'un objet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== aclDeleteGroup($table, $id_group) ===&lt;br /&gt;
&lt;br /&gt;
Fonction à appeler lors de la suppression d'un groupe&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_des_ACL_(Access_Control_List)&amp;diff=2980</id>
		<title>API des ACL (Access Control List)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_des_ACL_(Access_Control_List)&amp;diff=2980"/>
				<updated>2008-01-08T14:03:22Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Fonctions pour tester les droits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Fonction pour enregistrer les droits ==&lt;br /&gt;
&lt;br /&gt;
Pour afficher un formulaire de droits ACL, il faut inclure un fichier php :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global $babInstallPath;&lt;br /&gt;
include_once $babInstallPath.&amp;quot;admin/acl.php&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== L'object macl (multiple access control list) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$macl = new macl('tg_value', 'idx_value', $id_object, 'returnvar', $bsetofgroups, $iddelegation);&lt;br /&gt;
$macl-&amp;gt;addtable( 'bab_table_name',bab_translate(&amp;quot;Who can manage this environement?&amp;quot;));&lt;br /&gt;
$macl-&amp;gt;filter(0,0,1,1,1);&lt;br /&gt;
$macl-&amp;gt;babecho();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
l'object &amp;quot;macl&amp;quot; permet la création d'un formulaire acl pour un seul object $id_object.&lt;br /&gt;
Les paramètres 'tg_value' et 'idx_value' seront enregistrés dans le formulaire comme valeur pour les champs cachés tg et idx. La variable $_POST['returnvar'] sera déclarée lors du retour du formulaire.&lt;br /&gt;
&lt;br /&gt;
Le paramètre $besetofgroups (booléen) permet d'afficher les ensembles de groupes ou non. Par défaut, les ensembles de groupes sont affichés (true).&lt;br /&gt;
&lt;br /&gt;
Le paramètre $iddelegation permet d'indiquer l'id de délégation à utiliser.&lt;br /&gt;
Si la valeur est nulle, le système utilise l'id de la délégation courante.&lt;br /&gt;
&lt;br /&gt;
la méthode addtable() permet d'ajouter une ou plusieurs tables de droits. La méthode doit être appelée une ou plusieurs fois. Le premier paramètre est le nom de la table, le deuxième paramètre est le libellé qui sera affiché sur le formulaire.&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de structure pour la table de droits :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE `bdic_env_groups` (&lt;br /&gt;
  `id` int(11) unsigned NOT NULL auto_increment,&lt;br /&gt;
  `id_object` int(11) unsigned NOT NULL default '0',&lt;br /&gt;
  `id_group` int(11) unsigned NOT NULL default '0',&lt;br /&gt;
  PRIMARY KEY  (`id`),&lt;br /&gt;
  KEY `id_object` (`id_object`),&lt;br /&gt;
  KEY `id_group` (`id_group`)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;filter&amp;quot; permet de désactiver certaines possibilités du formulaire de droit.&lt;br /&gt;
&lt;br /&gt;
Ci-dessous, la liste des paramètres possibles. Tous les paramètres sont optionnels. la valeur 1 permet de désactiver l'élément souhaité et la valeur 0 pour ne rien faire.&lt;br /&gt;
&lt;br /&gt;
# permet de désactiver la liste des groupes&lt;br /&gt;
# fonctionnalité dépréciée (sans effet)&lt;br /&gt;
# permet de désactiver le groupe &amp;quot;Utilisateurs d'Ovidentia&amp;quot;&lt;br /&gt;
# permet de désactiver le groupe &amp;quot;Utilisateurs enregistrés&amp;quot;&lt;br /&gt;
# permet de désactiver le groupe &amp;quot;Utilisateurs anonymes&amp;quot;&lt;br /&gt;
# permet de désactiver un ou plusieurs groupes spécifiés par leur ID (le paramètre est un tableau)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;babecho()&amp;quot; permet d'afficher le formulaire.&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;getHtml()&amp;quot; permet de récupérer le html du formulaire.&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;set_hidden_field($sName, $sValue)&amp;quot; permet de définir des champs cachés supplémentaires.&lt;br /&gt;
&lt;br /&gt;
=== Enregistrement du formulaire de droit ===&lt;br /&gt;
&lt;br /&gt;
Pour enregistrer le résultat du formulaire de droit, appeler la fonction : '''maclGroups()'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enregistrer des droits par API ===&lt;br /&gt;
&lt;br /&gt;
'''aclDuplicateRights($srcTable, $srcIdObject, $trgTable, $trgIdObject)'''&lt;br /&gt;
&lt;br /&gt;
cette fonction permet de copier les droits d'un objet vers un autre objet&lt;br /&gt;
&lt;br /&gt;
'''aclCloneRights($srcTable, $srcIdObject, $trgTable, $trgIdObject)'''&lt;br /&gt;
&lt;br /&gt;
cette fonction permet de cloner un droit d'un objet à partir des droits d'un autre objet&lt;br /&gt;
&lt;br /&gt;
'''aclSetGroups_all($table, $id_object)'''&lt;br /&gt;
&lt;br /&gt;
Pour donner accès à tous les utilisateurs d'ovidentia&lt;br /&gt;
&lt;br /&gt;
'''aclSetGroups_registered($table, $id_object)'''&lt;br /&gt;
&lt;br /&gt;
Pour donner accès aux utilisateurs enregistrés&lt;br /&gt;
&lt;br /&gt;
'''aclSetGroups_unregistered($table, $id_object)'''&lt;br /&gt;
&lt;br /&gt;
Pour donner accès aux utilisateurs anonymes&lt;br /&gt;
&lt;br /&gt;
== Fonctions pour tester les droits ==&lt;br /&gt;
&lt;br /&gt;
Pour vérifier si l'utilisateur connecté a le droit d'accéder ou non à un objet, utiliser la fonction suivante :&lt;br /&gt;
&lt;br /&gt;
===bab_isAccessValid($table_name, $id_object);===&lt;br /&gt;
&lt;br /&gt;
Cette fonction renvoie true ou false selon que l'utilisateur a accès ou non à l'objet testé.&lt;br /&gt;
&lt;br /&gt;
La fonction suivante renvoie la liste des objets auquel l'utilisateur a accès sur une table de droits :&lt;br /&gt;
&lt;br /&gt;
===bab_getUserIdObject($table_name);===&lt;br /&gt;
&lt;br /&gt;
Elle renvoie la liste des objets sous forme d'un tableau.&lt;br /&gt;
&lt;br /&gt;
=== Liste des utilisateurs ayant accès à un droit ===&lt;br /&gt;
Afin de récupérer l'ensemble des utilisateurs ayant le droit d'accès à un objet, utiliser la fonction :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aclGetAccessUsers($table, $id_object)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut inclure le fichier php des ACL et l'utiliser comme ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;admin/acl.php&amp;quot;;&lt;br /&gt;
$users = aclGetAccessUsers($table, $id_object);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La fonction retourne un tableau contenant les utilisateurs qui disposent du droit passé par les paramètres. &lt;br /&gt;
Le format de retour est un tableau structuré comme ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array(&lt;br /&gt;
    id_user =&amp;gt; array(&lt;br /&gt;
        'name' =&amp;gt; 'user name',&lt;br /&gt;
        'email' =&amp;gt; 'user email or false'&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette fonction est principalement utilisée pour les notifications par mail.&lt;br /&gt;
&lt;br /&gt;
== Gestion des tables de droits ==&lt;br /&gt;
&lt;br /&gt;
Pour mettre a jour les tables de droits lors d'une suppression, il faut utiliser les fonctions suivantes :&lt;br /&gt;
&lt;br /&gt;
=== aclDelete($table, $id_object) ===&lt;br /&gt;
&lt;br /&gt;
Fonction à appeler lors de la suppression d'un objet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== aclDeleteGroup($table, $id_group) ===&lt;br /&gt;
&lt;br /&gt;
Fonction à appeler lors de la suppression d'un groupe&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_des_ACL_(Access_Control_List)&amp;diff=2979</id>
		<title>API des ACL (Access Control List)</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_des_ACL_(Access_Control_List)&amp;diff=2979"/>
				<updated>2008-01-08T14:01:38Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Fonction pour enregistrer les droits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Fonction pour enregistrer les droits ==&lt;br /&gt;
&lt;br /&gt;
Pour afficher un formulaire de droits ACL, il faut inclure un fichier php :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global $babInstallPath;&lt;br /&gt;
include_once $babInstallPath.&amp;quot;admin/acl.php&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== L'object macl (multiple access control list) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$macl = new macl('tg_value', 'idx_value', $id_object, 'returnvar', $bsetofgroups, $iddelegation);&lt;br /&gt;
$macl-&amp;gt;addtable( 'bab_table_name',bab_translate(&amp;quot;Who can manage this environement?&amp;quot;));&lt;br /&gt;
$macl-&amp;gt;filter(0,0,1,1,1);&lt;br /&gt;
$macl-&amp;gt;babecho();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
l'object &amp;quot;macl&amp;quot; permet la création d'un formulaire acl pour un seul object $id_object.&lt;br /&gt;
Les paramètres 'tg_value' et 'idx_value' seront enregistrés dans le formulaire comme valeur pour les champs cachés tg et idx. La variable $_POST['returnvar'] sera déclarée lors du retour du formulaire.&lt;br /&gt;
&lt;br /&gt;
Le paramètre $besetofgroups (booléen) permet d'afficher les ensembles de groupes ou non. Par défaut, les ensembles de groupes sont affichés (true).&lt;br /&gt;
&lt;br /&gt;
Le paramètre $iddelegation permet d'indiquer l'id de délégation à utiliser.&lt;br /&gt;
Si la valeur est nulle, le système utilise l'id de la délégation courante.&lt;br /&gt;
&lt;br /&gt;
la méthode addtable() permet d'ajouter une ou plusieurs tables de droits. La méthode doit être appelée une ou plusieurs fois. Le premier paramètre est le nom de la table, le deuxième paramètre est le libellé qui sera affiché sur le formulaire.&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de structure pour la table de droits :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE `bdic_env_groups` (&lt;br /&gt;
  `id` int(11) unsigned NOT NULL auto_increment,&lt;br /&gt;
  `id_object` int(11) unsigned NOT NULL default '0',&lt;br /&gt;
  `id_group` int(11) unsigned NOT NULL default '0',&lt;br /&gt;
  PRIMARY KEY  (`id`),&lt;br /&gt;
  KEY `id_object` (`id_object`),&lt;br /&gt;
  KEY `id_group` (`id_group`)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;filter&amp;quot; permet de désactiver certaines possibilités du formulaire de droit.&lt;br /&gt;
&lt;br /&gt;
Ci-dessous, la liste des paramètres possibles. Tous les paramètres sont optionnels. la valeur 1 permet de désactiver l'élément souhaité et la valeur 0 pour ne rien faire.&lt;br /&gt;
&lt;br /&gt;
# permet de désactiver la liste des groupes&lt;br /&gt;
# fonctionnalité dépréciée (sans effet)&lt;br /&gt;
# permet de désactiver le groupe &amp;quot;Utilisateurs d'Ovidentia&amp;quot;&lt;br /&gt;
# permet de désactiver le groupe &amp;quot;Utilisateurs enregistrés&amp;quot;&lt;br /&gt;
# permet de désactiver le groupe &amp;quot;Utilisateurs anonymes&amp;quot;&lt;br /&gt;
# permet de désactiver un ou plusieurs groupes spécifiés par leur ID (le paramètre est un tableau)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;babecho()&amp;quot; permet d'afficher le formulaire.&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;getHtml()&amp;quot; permet de récupérer le html du formulaire.&lt;br /&gt;
&lt;br /&gt;
la méthode &amp;quot;set_hidden_field($sName, $sValue)&amp;quot; permet de définir des champs cachés supplémentaires.&lt;br /&gt;
&lt;br /&gt;
=== Enregistrement du formulaire de droit ===&lt;br /&gt;
&lt;br /&gt;
Pour enregistrer le résultat du formulaire de droit, appeler la fonction : '''maclGroups()'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enregistrer des droits par API ===&lt;br /&gt;
&lt;br /&gt;
'''aclDuplicateRights($srcTable, $srcIdObject, $trgTable, $trgIdObject)'''&lt;br /&gt;
&lt;br /&gt;
cette fonction permet de copier les droits d'un objet vers un autre objet&lt;br /&gt;
&lt;br /&gt;
'''aclCloneRights($srcTable, $srcIdObject, $trgTable, $trgIdObject)'''&lt;br /&gt;
&lt;br /&gt;
cette fonction permet de cloner un droit d'un objet à partir des droits d'un autre objet&lt;br /&gt;
&lt;br /&gt;
'''aclSetGroups_all($table, $id_object)'''&lt;br /&gt;
&lt;br /&gt;
Pour donner accès à tous les utilisateurs d'ovidentia&lt;br /&gt;
&lt;br /&gt;
'''aclSetGroups_registered($table, $id_object)'''&lt;br /&gt;
&lt;br /&gt;
Pour donner accès aux utilisateurs enregistrés&lt;br /&gt;
&lt;br /&gt;
'''aclSetGroups_unregistered($table, $id_object)'''&lt;br /&gt;
&lt;br /&gt;
Pour donner accès aux utilisateurs anonymes&lt;br /&gt;
&lt;br /&gt;
== Fonctions pour tester les droits ==&lt;br /&gt;
&lt;br /&gt;
Pour vérifier si l'utilisateur connecté a le droit d'accéder ou non à un objet, utiliser la fonction suivante:&lt;br /&gt;
&lt;br /&gt;
===bab_isAccessValid($table_name, $id_object);===&lt;br /&gt;
&lt;br /&gt;
Cette fonction renvoie true ou false selon que l'utilisateur a accès ou non à l'objet testé.&lt;br /&gt;
&lt;br /&gt;
La fonction suivante renvoie la liste des objets auquel l'utilisateur à accès sur une table de droit:&lt;br /&gt;
&lt;br /&gt;
===bab_getUserIdObject($table_name);===&lt;br /&gt;
&lt;br /&gt;
Elle renvoie la liste des objets sous forme d'un tableau.&lt;br /&gt;
&lt;br /&gt;
=== Liste des utilisateurs ayant accès à un droit ===&lt;br /&gt;
Afin de récupérer l'ensemble des utilisateurs ayant le droit d'accès à un objet, utiliser la fonction:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aclGetAccessUsers($table, $id_object)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut inclure le fichier php des ACL et l'utiliser comme ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $GLOBALS['babInstallPath'].&amp;quot;admin/acl.php&amp;quot;;&lt;br /&gt;
$users = aclGetAccessUsers($table, $id_object);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La fonction retourne un tableau contenant les utilisateurs qui disposent du droit passé par les paramètres. &lt;br /&gt;
Le format de retour est un tableau structuré comme ceci :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array(&lt;br /&gt;
    id_user =&amp;gt; array(&lt;br /&gt;
        'name' =&amp;gt; 'user name',&lt;br /&gt;
        'email' =&amp;gt; 'user email or false'&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette fonction est principalement utilisée pour les notifications par mail.&lt;br /&gt;
&lt;br /&gt;
== Gestion des tables de droits ==&lt;br /&gt;
&lt;br /&gt;
Pour mettre a jour les tables de droits lors d'une suppression, il faut utiliser les fonctions suivantes :&lt;br /&gt;
&lt;br /&gt;
=== aclDelete($table, $id_object) ===&lt;br /&gt;
&lt;br /&gt;
Fonction à appeler lors de la suppression d'un objet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== aclDeleteGroup($table, $id_group) ===&lt;br /&gt;
&lt;br /&gt;
Fonction à appeler lors de la suppression d'un groupe&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_des_agendas&amp;diff=2978</id>
		<title>API des agendas</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_des_agendas&amp;diff=2978"/>
				<updated>2008-01-08T13:55:29Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les constantes suivantes peuvent être utilisées :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_WORKING&amp;quot;        , 1);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_NONWORKING&amp;quot;    , 2);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_NWDAY&amp;quot;        , 4);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_CALEVENT&amp;quot;    , 8);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_TSKMGR&amp;quot;        , 16);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_VACATION&amp;quot;    , 32);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utiliser l'api pour mélanger les différentes sources d'événements (voir exemple dans utilit/mcalincl.php) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj = new bab_userWorkingHours(&lt;br /&gt;
            BAB_dateTime::fromIsoDateTime($startdate),&lt;br /&gt;
            BAB_dateTime::fromIsoDateTime($enddate)&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Les 2 paramètres sont des objets date générés par BAB_dateTime (voir la classe utilit/dateTime.php).&lt;br /&gt;
C'est la période totale de calcul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;addIdUser($GLOBALS['BAB_SESS_USERID']);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour utiliser les informations d'horaire de travail et des congés, il faut ajouter 1 ou plusieurs id utilisateurs. &lt;br /&gt;
Pour chaque ID user ajouté, les périodes correspondantes seront prises en compte&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;addCalendar($this-&amp;gt;idcalendar);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour utiliser les événements d'agenda, il faut ajouter 1 ou plusieurs id d'agenda. &lt;br /&gt;
Pour chaque ID calendar ajouté, les périodes correspondantes seront prises en compte&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;createPeriods(BAB_PERIOD_NWDAY | BAB_PERIOD_WORKING | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette fonction va chercher les informations dans toutes les tables correspondantes aux types de périodes spécifiées en paramètres&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;orderBoundaries();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fonction  à  appeler  obligatoirement pour préparer les périodes qui doivent être parcourues&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$p = $this-&amp;gt;whObj-&amp;gt;getNextEvent(BAB_PERIOD_NWDAY | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
parcourir les événements ; on peut filtrer sur le type avec le paramètre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$events = $this-&amp;gt;whObj-&amp;gt;getEventsBetween(bab_mktime($startdate), bab_mktime($enddate), BAB_PERIOD_NWDAY | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
récupérer un tableau d'événements, les paramètres de date sont des timestamp pour délimiter la période&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$freeevents = $whObj-&amp;gt;getAvailabilityBetween(bab_mktime($startdate), bab_mktime($enddate), $gap);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trouver les périodes de  disponibilité entre 2 dates, $gap permet de définir la durée minimum des périodes à remonter (en secondes)&lt;br /&gt;
Pour ces 2 dernières fonctions, il faut que  la période de récupération des infos soit incluse dans la période total qui a été utilisée à la création de l'objet&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_des_agendas&amp;diff=2977</id>
		<title>API des agendas</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_des_agendas&amp;diff=2977"/>
				<updated>2008-01-08T13:54:43Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les constantes suivantes peuvent être utilisées :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_WORKING&amp;quot;        , 1);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_NONWORKING&amp;quot;    , 2);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_NWDAY&amp;quot;        , 4);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_CALEVENT&amp;quot;    , 8);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_TSKMGR&amp;quot;        , 16);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_VACATION&amp;quot;    , 32);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utiliser l'api pour mélanger les différentes sources d'événements (voir exemple dans utilit/mcalincl.php) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj = new bab_userWorkingHours(&lt;br /&gt;
            BAB_dateTime::fromIsoDateTime($startdate),&lt;br /&gt;
            BAB_dateTime::fromIsoDateTime($enddate)&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Les 2 paramètres sont des objets date générés par BAB_dateTime (voir la classe utilit/dateTime.php).&lt;br /&gt;
C'est la période totale de calcul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;addIdUser($GLOBALS['BAB_SESS_USERID']);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour utiliser les informations d'horaire de travail et des congés, il faut ajouter 1 ou plusieurs id utilisateurs. &lt;br /&gt;
Pour chaque ID user ajouté, les périodes correspondantes seront prises en compte&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;addCalendar($this-&amp;gt;idcalendar);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour utiliser les événements d'agenda, il faut ajouter 1 ou plusieurs id d'agenda&lt;br /&gt;
pour chaque ID calendar ajouté, les périodes correspondantes seront prises en compte&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;createPeriods(BAB_PERIOD_NWDAY | BAB_PERIOD_WORKING | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette fonction va chercher les informations dans toutes les tables correspondantes aux types de périodes spécifiées en paramètres&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;orderBoundaries();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fonction  à  appeler  obligatoirement pour préparer les périodes qui doivent être parcourues&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$p = $this-&amp;gt;whObj-&amp;gt;getNextEvent(BAB_PERIOD_NWDAY | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
parcourir les événements ; on peut filtrer sur le type avec le paramètre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$events = $this-&amp;gt;whObj-&amp;gt;getEventsBetween(bab_mktime($startdate), bab_mktime($enddate), BAB_PERIOD_NWDAY | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
récupérer un tableau d'événements, les paramètres de date sont des timestamp pour délimiter la période&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$freeevents = $whObj-&amp;gt;getAvailabilityBetween(bab_mktime($startdate), bab_mktime($enddate), $gap);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trouver les périodes de  disponibilité entre 2 dates, $gap permet de définir la durée minimum des périodes à remonter (en secondes)&lt;br /&gt;
Pour ces 2 dernières fonctions, il faut que  la période de récupération des infos soit incluse dans la période total qui a été utilisée à la création de l'objet&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_des_agendas&amp;diff=2976</id>
		<title>API des agendas</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_des_agendas&amp;diff=2976"/>
				<updated>2008-01-08T13:53:45Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les constantes suivantes peuvent être utilisées :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_WORKING&amp;quot;        , 1);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_NONWORKING&amp;quot;    , 2);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_NWDAY&amp;quot;        , 4);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_CALEVENT&amp;quot;    , 8);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_TSKMGR&amp;quot;        , 16);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_VACATION&amp;quot;    , 32);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utiliser l'api pour mélanger les différentes sources d'événements (voir exemple dans utilit/mcalincl.php) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj = new bab_userWorkingHours(&lt;br /&gt;
            BAB_dateTime::fromIsoDateTime($startdate),&lt;br /&gt;
            BAB_dateTime::fromIsoDateTime($enddate)&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Les 2 paramètres sont des objets date générés par BAB_dateTime (voir la classe utilit/dateTime.php).&lt;br /&gt;
C'est la période totale de calcul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;addIdUser($GLOBALS['BAB_SESS_USERID']);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour utiliser les informations d'horaire de travail et des congés, il faut ajouter 1 ou plusieurs id utilisateurs&lt;br /&gt;
pour chaque ID user ajouté, les périodes correspondantes seront prises en compte&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;addCalendar($this-&amp;gt;idcalendar);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour utiliser les événements d'agenda, il faut ajouter 1 ou plusieurs id d'agenda&lt;br /&gt;
pour chaque ID calendar ajouté, les périodes correspondantes seront prises en compte&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;createPeriods(BAB_PERIOD_NWDAY | BAB_PERIOD_WORKING | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette fonction va chercher les informations dans toutes les tables correspondantes aux types de périodes spécifiées en paramètres&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;orderBoundaries();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fonction  à  appeler  obligatoirement pour préparer les périodes qui doivent être parcourues&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$p = $this-&amp;gt;whObj-&amp;gt;getNextEvent(BAB_PERIOD_NWDAY | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
parcourir les événements ; on peut filtrer sur le type avec le paramètre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$events = $this-&amp;gt;whObj-&amp;gt;getEventsBetween(bab_mktime($startdate), bab_mktime($enddate), BAB_PERIOD_NWDAY | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
récupérer un tableau d'événements, les paramètres de date sont des timestamp pour délimiter la période&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$freeevents = $whObj-&amp;gt;getAvailabilityBetween(bab_mktime($startdate), bab_mktime($enddate), $gap);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trouver les périodes de  disponibilité entre 2 dates, $gap permet de définir la durée minimum des périodes à remonter (en secondes)&lt;br /&gt;
Pour ces 2 dernières fonctions, il faut que  la période de récupération des infos soit incluse dans la période total qui a été utilisée à la création de l'objet&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=API_des_agendas&amp;diff=2975</id>
		<title>API des agendas</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=API_des_agendas&amp;diff=2975"/>
				<updated>2008-01-08T13:53:07Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les constantes suivantes peuvent être utilisées :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_WORKING&amp;quot;        , 1);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_NONWORKING&amp;quot;    , 2);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_NWDAY&amp;quot;        , 4);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_CALEVENT&amp;quot;    , 8);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_TSKMGR&amp;quot;        , 16);&lt;br /&gt;
define(&amp;quot;BAB_PERIOD_VACATION&amp;quot;    , 32);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utiliser l'api pour mélanger les différentes sources d'événements (voir exemple dans utilit/mcalincl.php) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj = new bab_userWorkingHours(&lt;br /&gt;
            BAB_dateTime::fromIsoDateTime($startdate),&lt;br /&gt;
            BAB_dateTime::fromIsoDateTime($enddate)&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Les 2 paramètres sont des objets date générés par BAB_dateTime (voir la classe utilit/dateTime.php)&lt;br /&gt;
C'est la période totale de calcul&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;addIdUser($GLOBALS['BAB_SESS_USERID']);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour utiliser les informations d'horaire de travail et des congés, il faut ajouter 1 ou plusieurs id utilisateurs&lt;br /&gt;
pour chaque ID user ajouté, les périodes correspondantes seront prises en compte&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;addCalendar($this-&amp;gt;idcalendar);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pour utiliser les événements d'agenda, il faut ajouter 1 ou plusieurs id d'agenda&lt;br /&gt;
pour chaque ID calendar ajouté, les périodes correspondantes seront prises en compte&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;createPeriods(BAB_PERIOD_NWDAY | BAB_PERIOD_WORKING | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette fonction va chercher les informations dans toutes les tables correspondantes aux types de périodes spécifiées en paramètres&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this-&amp;gt;whObj-&amp;gt;orderBoundaries();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fonction  à  appeler  obligatoirement pour préparer les périodes qui doivent être parcourues&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$p = $this-&amp;gt;whObj-&amp;gt;getNextEvent(BAB_PERIOD_NWDAY | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
parcourir les événements ; on peut filtrer sur le type avec le paramètre&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$events = $this-&amp;gt;whObj-&amp;gt;getEventsBetween(bab_mktime($startdate), bab_mktime($enddate), BAB_PERIOD_NWDAY | BAB_PERIOD_VACATION | BAB_PERIOD_CALEVENT);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
récupérer un tableau d'événements, les paramètres de date sont des timestamp pour délimiter la période&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$freeevents = $whObj-&amp;gt;getAvailabilityBetween(bab_mktime($startdate), bab_mktime($enddate), $gap);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trouver les périodes de  disponibilité entre 2 dates, $gap permet de définir la durée minimum des périodes à remonter (en secondes)&lt;br /&gt;
Pour ces 2 dernières fonctions, il faut que  la période de récupération des infos soit incluse dans la période total qui a été utilisée à la création de l'objet&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2974</id>
		<title>Développement d'une nouvelle fonctionnalité</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2974"/>
				<updated>2008-01-08T13:47:32Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Base de données */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sécurité ==&lt;br /&gt;
&lt;br /&gt;
*Avez-vous suivi les recommandations en sécurité ?&lt;br /&gt;
*Injection SQL&lt;br /&gt;
*Cross Site Scripting&lt;br /&gt;
&lt;br /&gt;
== Base de données ==&lt;br /&gt;
&lt;br /&gt;
*Compatibilité MYSQL 3.23&lt;br /&gt;
*Compatibilité MYSQL 4&lt;br /&gt;
*Compatibilité MySQL 5&lt;br /&gt;
*Avez-vous testé avec la même version MySQL utilisée par le client?&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous suivi les recommandations en norme de codage ?&lt;br /&gt;
* Avez-vous testé sous PHP4 (version 4.1.2) ?&lt;br /&gt;
* Avez-vous testé sous PHP5 ?&lt;br /&gt;
* Est-ce que toutes les parties du code ont été déroulées durant les tests ?&lt;br /&gt;
* Durant les tests, est -ce que l'affichage des warnings et notices était activé ?&lt;br /&gt;
* Avez-vous testé avec la même version PHP utilisée par le client ?&lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* Javascript activé&lt;br /&gt;
* Javascript désactivé&lt;br /&gt;
* Le javascript est-il fonctionnel sur internet explorer 5.5, 6.0, 7.0, firefox ?&lt;br /&gt;
* Le javascript est-il fonctionnel ou dégradé et non bloquant sur internet explorer 5.0, netscape ?&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Test d'une nouvelle  installation&lt;br /&gt;
* Test d'une mise à jour&lt;br /&gt;
* Installation sur un autre serveur que celui de la production&lt;br /&gt;
* Dans le cas d'un addon ou un script, est-ce que les tests ont été faits avec la version d'Ovidentia installée du client ?&lt;br /&gt;
* Avez-vous testé une installation avec une base «vierge» (Aucune donnée)&lt;br /&gt;
* Avez-vous testé sur l'environnement du client ?&lt;br /&gt;
* Avez-vous testé une désinstallation ?&lt;br /&gt;
&lt;br /&gt;
== OS ==&lt;br /&gt;
&lt;br /&gt;
* LINUX APACHE&lt;br /&gt;
* WINDOWS IIS&lt;br /&gt;
* WINDOWS APACHE&lt;br /&gt;
&lt;br /&gt;
== Skin ==&lt;br /&gt;
&lt;br /&gt;
* Avez -vous fait les tests avec le skin du client ?&lt;br /&gt;
* Les images sont-elles libres de droit ?&lt;br /&gt;
* L'avez vous testé sur IE ?&lt;br /&gt;
* L'avez-vous testé sur Firefox ?&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous testé l'accessibilité ?&lt;br /&gt;
* Le nom des classes utilisées est-il compatible avec tous les skins ?&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous fourni un fichier langue ?&lt;br /&gt;
* Ce fichier a t-il été relu pour les fautes d'orthographe ?&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Accueil&amp;diff=2973</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Accueil&amp;diff=2973"/>
				<updated>2008-01-08T13:46:44Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Documentation des API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Contribuer au Wiki ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=0 cellspacing=5 width=&amp;quot;100%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bienvenue sur le Wiki dédié au développement d'OVIDENTIA&lt;br /&gt;
&lt;br /&gt;
Pour télécharger des documentations utilisateur et administrateur pour OVIDENTIA, vous pouvez utiliser le site communautaire [http://www.ovidentia.org/ Ovidentia.org]. Ce wiki, quant à lui contient une introduction au développement des modules ainsi que diverses documentations sur les nouvelles interfaces de programmation disponibles dans les versions actuelles et futures d'OVIDENTIA.&lt;br /&gt;
&lt;br /&gt;
Avant de contribuer, vous pouvez vous familiariser avec les [[Règles d'usage du wiki|règles d'usage du wiki]].&lt;br /&gt;
&lt;br /&gt;
Le développement d'OVIDENTIA est initié et géré par [http://www.cantico.fr Cantico] ([[Cantico:Accueil|wiki privé]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;border: 1px solid lightgray;padding-left:1em;padding-right:0.5em;padding-bottom:0.5em;&amp;quot; width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===[[Image:Helpcenter.jpg]] Que faire avec le wiki?===&lt;br /&gt;
&lt;br /&gt;
* [[Développement de modules]]&lt;br /&gt;
* [http://www.ovidentia.org/?tg=articles&amp;amp;topics=56 Autres types de contributions]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Développement ==&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=0 cellspacing=5 width=&amp;quot;100%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;border: 1px solid gray;padding-left:1em;padding-right:0.5em;background:#E8F1FF;padding-bottom:0.5em;&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
=== Règles de développement ===&lt;br /&gt;
* [[Règles de codage]]&lt;br /&gt;
* [[Sécurité]]&lt;br /&gt;
* [[Utilisation de Mantis]]&lt;br /&gt;
* [[Utilisation de CVS]] et gestion des versions&lt;br /&gt;
* [[Créer une archive de version]]&lt;br /&gt;
* [[Gettext]] : instruction d'utilisation pour les modules&lt;br /&gt;
* [[Implémentation de containers OVML dans un module]]&lt;br /&gt;
* [[Internationalisation]] : Améliorations de la gestion de l'internationalisation dans Ovidentia&lt;br /&gt;
* [[Accessibilité]]&lt;br /&gt;
* [[Développement d'une nouvelle fonctionnalité]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation des API ===&lt;br /&gt;
* [[Nouveau moteur de templates]]&lt;br /&gt;
* [[API des agendas]]&lt;br /&gt;
* [[Access Control List]], Droits d'accès&lt;br /&gt;
* [[Base de registre]]&lt;br /&gt;
* [[API de sélection d'utilisateurs]]&lt;br /&gt;
* [[API du gestionnaire de fichier]]&lt;br /&gt;
* [[API du gestionnaire d'événement]]&lt;br /&gt;
* [[API editeur]]&lt;br /&gt;
* [[API Addon - OVML]]&lt;br /&gt;
* [[Indexation]]&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#E8F1FF&amp;quot; style=&amp;quot;border-style:solid;border-width:1px;border-color:gray;padding-left:1em;padding-right:0.5em; padding-bottom:0.5em;&amp;quot; width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
=== Outils de développements ===&lt;br /&gt;
&lt;br /&gt;
* [[Clients CVS]]&lt;br /&gt;
* [[Eclipse]]&lt;br /&gt;
&lt;br /&gt;
=== Technologies à l'étude ===&lt;br /&gt;
&lt;br /&gt;
* [[SyncML]]&lt;br /&gt;
* [[CardSpace]]&lt;br /&gt;
* [[WebDAV]]&lt;br /&gt;
* [[Plugins OpenSearch]]&lt;br /&gt;
* [[Communication entre les modules]]&lt;br /&gt;
* [[Les microformats]]&lt;br /&gt;
* [[Le standard UWA de Netvibes]]&lt;br /&gt;
&lt;br /&gt;
=== Propositions d'améliorations ===&lt;br /&gt;
&lt;br /&gt;
* [[Gestionnaire de fichiers]]&lt;br /&gt;
* [[Propositions pour Ovidentia 7]]&lt;br /&gt;
* [[OVML]]&lt;br /&gt;
* [[Gestion des skins]]&lt;br /&gt;
* [[Authentification par identifiant NT]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Utilisation du wiki ==&lt;br /&gt;
&lt;br /&gt;
Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l'utilisateur] pour plus d'information sur l'utilisation d'un wiki.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings/fr Liste des paramètres de configuration]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]&lt;br /&gt;
&lt;br /&gt;
En anglais :&lt;br /&gt;
* [http://mail.wikipedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2972</id>
		<title>Développement d'une nouvelle fonctionnalité</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2972"/>
				<updated>2008-01-08T13:40:08Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Divers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sécurité ==&lt;br /&gt;
&lt;br /&gt;
*Avez-vous suivi les recommandations en sécurité ?&lt;br /&gt;
*Injection SQL&lt;br /&gt;
*Cross Site Scripting&lt;br /&gt;
&lt;br /&gt;
== Base de données ==&lt;br /&gt;
&lt;br /&gt;
*Compatibilité MYSQL 3.23&lt;br /&gt;
*Compatibilité MYSQL 4&lt;br /&gt;
*Compatibilité MySQL 5&lt;br /&gt;
*Avez-vous testé avec la même version MySQL utilisée par le client?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous suivi les recommandations en norme de codage ?&lt;br /&gt;
* Avez-vous testé sous PHP4 (version 4.1.2) ?&lt;br /&gt;
* Avez-vous testé sous PHP5 ?&lt;br /&gt;
* Est-ce que toutes les parties du code ont été déroulées durant les tests ?&lt;br /&gt;
* Durant les tests, est -ce que l'affichage des warnings et notices était activé ?&lt;br /&gt;
* Avez-vous testé avec la même version PHP utilisée par le client ?&lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* Javascript activé&lt;br /&gt;
* Javascript désactivé&lt;br /&gt;
* Le javascript est-il fonctionnel sur internet explorer 5.5, 6.0, 7.0, firefox ?&lt;br /&gt;
* Le javascript est-il fonctionnel ou dégradé et non bloquant sur internet explorer 5.0, netscape ?&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Test d'une nouvelle  installation&lt;br /&gt;
* Test d'une mise à jour&lt;br /&gt;
* Installation sur un autre serveur que celui de la production&lt;br /&gt;
* Dans le cas d'un addon ou un script, est-ce que les tests ont été faits avec la version d'Ovidentia installée du client ?&lt;br /&gt;
* Avez-vous testé une installation avec une base «vierge» (Aucune donnée)&lt;br /&gt;
* Avez-vous testé sur l'environnement du client ?&lt;br /&gt;
* Avez-vous testé une désinstallation ?&lt;br /&gt;
&lt;br /&gt;
== OS ==&lt;br /&gt;
&lt;br /&gt;
* LINUX APACHE&lt;br /&gt;
* WINDOWS IIS&lt;br /&gt;
* WINDOWS APACHE&lt;br /&gt;
&lt;br /&gt;
== Skin ==&lt;br /&gt;
&lt;br /&gt;
* Avez -vous fait les tests avec le skin du client ?&lt;br /&gt;
* Les images sont-elles libres de droit ?&lt;br /&gt;
* L'avez vous testé sur IE ?&lt;br /&gt;
* L'avez-vous testé sur Firefox ?&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous testé l'accessibilité ?&lt;br /&gt;
* Le nom des classes utilisées est-il compatible avec tous les skins ?&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous fourni un fichier langue ?&lt;br /&gt;
* Ce fichier a t-il été relu pour les fautes d'orthographe ?&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2971</id>
		<title>Développement d'une nouvelle fonctionnalité</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2971"/>
				<updated>2008-01-08T13:39:41Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* HTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sécurité ==&lt;br /&gt;
&lt;br /&gt;
*Avez-vous suivi les recommandations en sécurité ?&lt;br /&gt;
*Injection SQL&lt;br /&gt;
*Cross Site Scripting&lt;br /&gt;
&lt;br /&gt;
== Base de données ==&lt;br /&gt;
&lt;br /&gt;
*Compatibilité MYSQL 3.23&lt;br /&gt;
*Compatibilité MYSQL 4&lt;br /&gt;
*Compatibilité MySQL 5&lt;br /&gt;
*Avez-vous testé avec la même version MySQL utilisée par le client?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous suivi les recommandations en norme de codage ?&lt;br /&gt;
* Avez-vous testé sous PHP4 (version 4.1.2) ?&lt;br /&gt;
* Avez-vous testé sous PHP5 ?&lt;br /&gt;
* Est-ce que toutes les parties du code ont été déroulées durant les tests ?&lt;br /&gt;
* Durant les tests, est -ce que l'affichage des warnings et notices était activé ?&lt;br /&gt;
* Avez-vous testé avec la même version PHP utilisée par le client ?&lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* Javascript activé&lt;br /&gt;
* Javascript désactivé&lt;br /&gt;
* Le javascript est-il fonctionnel sur internet explorer 5.5, 6.0, 7.0, firefox ?&lt;br /&gt;
* Le javascript est-il fonctionnel ou dégradé et non bloquant sur internet explorer 5.0, netscape ?&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Test d'une nouvelle  installation&lt;br /&gt;
* Test d'une mise à jour&lt;br /&gt;
* Installation sur un autre serveur que celui de la production&lt;br /&gt;
* Dans le cas d'un addon ou un script, est-ce que les tests ont été faits avec la version d'Ovidentia installée du client ?&lt;br /&gt;
* Avez-vous testé une installation avec une base «vierge» (Aucune donnée)&lt;br /&gt;
* Avez-vous testé sur l'environnement du client ?&lt;br /&gt;
* Avez-vous testé une désinstallation ?&lt;br /&gt;
&lt;br /&gt;
== OS ==&lt;br /&gt;
&lt;br /&gt;
* LINUX APACHE&lt;br /&gt;
* WINDOWS IIS&lt;br /&gt;
* WINDOWS APACHE&lt;br /&gt;
&lt;br /&gt;
== Skin ==&lt;br /&gt;
&lt;br /&gt;
* Avez -vous fait les tests avec le skin du client ?&lt;br /&gt;
* Les images sont-elles libres de droit ?&lt;br /&gt;
* L'avez vous testé sur IE ?&lt;br /&gt;
* L'avez-vous testé sur Firefox ?&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous testé l'accessibilité ?&lt;br /&gt;
* Le nom des classes utilisées est-il compatible avec tous les skins ?&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous fourni un fichier langue?&lt;br /&gt;
* Ce fichier a-t-il été relu pour les fautes d'orthographe?&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2970</id>
		<title>Développement d'une nouvelle fonctionnalité</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2970"/>
				<updated>2008-01-08T13:38:27Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* HTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sécurité ==&lt;br /&gt;
&lt;br /&gt;
*Avez-vous suivi les recommandations en sécurité ?&lt;br /&gt;
*Injection SQL&lt;br /&gt;
*Cross Site Scripting&lt;br /&gt;
&lt;br /&gt;
== Base de données ==&lt;br /&gt;
&lt;br /&gt;
*Compatibilité MYSQL 3.23&lt;br /&gt;
*Compatibilité MYSQL 4&lt;br /&gt;
*Compatibilité MySQL 5&lt;br /&gt;
*Avez-vous testé avec la même version MySQL utilisée par le client?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous suivi les recommandations en norme de codage ?&lt;br /&gt;
* Avez-vous testé sous PHP4 (version 4.1.2) ?&lt;br /&gt;
* Avez-vous testé sous PHP5 ?&lt;br /&gt;
* Est-ce que toutes les parties du code ont été déroulées durant les tests ?&lt;br /&gt;
* Durant les tests, est -ce que l'affichage des warnings et notices était activé ?&lt;br /&gt;
* Avez-vous testé avec la même version PHP utilisée par le client ?&lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* Javascript activé&lt;br /&gt;
* Javascript désactivé&lt;br /&gt;
* Le javascript est-il fonctionnel sur internet explorer 5.5, 6.0, 7.0, firefox ?&lt;br /&gt;
* Le javascript est-il fonctionnel ou dégradé et non bloquant sur internet explorer 5.0, netscape ?&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Test d'une nouvelle  installation&lt;br /&gt;
* Test d'une mise à jour&lt;br /&gt;
* Installation sur un autre serveur que celui de la production&lt;br /&gt;
* Dans le cas d'un addon ou un script, est-ce que les tests ont été faits avec la version d'Ovidentia installée du client ?&lt;br /&gt;
* Avez-vous testé une installation avec une base «vierge» (Aucune donnée)&lt;br /&gt;
* Avez-vous testé sur l'environnement du client ?&lt;br /&gt;
* Avez-vous testé une désinstallation ?&lt;br /&gt;
&lt;br /&gt;
== OS ==&lt;br /&gt;
&lt;br /&gt;
* LINUX APACHE&lt;br /&gt;
* WINDOWS IIS&lt;br /&gt;
* WINDOWS APACHE&lt;br /&gt;
&lt;br /&gt;
== Skin ==&lt;br /&gt;
&lt;br /&gt;
* Avez -vous fait les tests avec le skin du client ?&lt;br /&gt;
* Les images sont-elles libres de droit ?&lt;br /&gt;
* L'avez vous testé sur IE ?&lt;br /&gt;
* L'avez-vous testé sur Firefox ?&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous testé l'accessibilité ?&lt;br /&gt;
* Le nom des classes utilisées sont elles compatibles avec tous les skins ?&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous fourni un fichier langue?&lt;br /&gt;
* Ce fichier a-t-il été relu pour les fautes d'orthographe?&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2969</id>
		<title>Développement d'une nouvelle fonctionnalité</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2969"/>
				<updated>2008-01-08T13:36:05Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Skin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sécurité ==&lt;br /&gt;
&lt;br /&gt;
*Avez-vous suivi les recommandations en sécurité ?&lt;br /&gt;
*Injection SQL&lt;br /&gt;
*Cross Site Scripting&lt;br /&gt;
&lt;br /&gt;
== Base de données ==&lt;br /&gt;
&lt;br /&gt;
*Compatibilité MYSQL 3.23&lt;br /&gt;
*Compatibilité MYSQL 4&lt;br /&gt;
*Compatibilité MySQL 5&lt;br /&gt;
*Avez-vous testé avec la même version MySQL utilisée par le client?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous suivi les recommandations en norme de codage ?&lt;br /&gt;
* Avez-vous testé sous PHP4 (version 4.1.2) ?&lt;br /&gt;
* Avez-vous testé sous PHP5 ?&lt;br /&gt;
* Est-ce que toutes les parties du code ont été déroulées durant les tests ?&lt;br /&gt;
* Durant les tests, est -ce que l'affichage des warnings et notices était activé ?&lt;br /&gt;
* Avez-vous testé avec la même version PHP utilisée par le client ?&lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* Javascript activé&lt;br /&gt;
* Javascript désactivé&lt;br /&gt;
* Le javascript est-il fonctionnel sur internet explorer 5.5, 6.0, 7.0, firefox ?&lt;br /&gt;
* Le javascript est-il fonctionnel ou dégradé et non bloquant sur internet explorer 5.0, netscape ?&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Test d'une nouvelle  installation&lt;br /&gt;
* Test d'une mise à jour&lt;br /&gt;
* Installation sur un autre serveur que celui de la production&lt;br /&gt;
* Dans le cas d'un addon ou un script, est-ce que les tests ont été faits avec la version d'Ovidentia installée du client ?&lt;br /&gt;
* Avez-vous testé une installation avec une base «vierge» (Aucune donnée)&lt;br /&gt;
* Avez-vous testé sur l'environnement du client ?&lt;br /&gt;
* Avez-vous testé une désinstallation ?&lt;br /&gt;
&lt;br /&gt;
== OS ==&lt;br /&gt;
&lt;br /&gt;
* LINUX APACHE&lt;br /&gt;
* WINDOWS IIS&lt;br /&gt;
* WINDOWS APACHE&lt;br /&gt;
&lt;br /&gt;
== Skin ==&lt;br /&gt;
&lt;br /&gt;
* Avez -vous fait les tests avec le skin du client ?&lt;br /&gt;
* Les images sont-elles libres de droit ?&lt;br /&gt;
* L'avez vous testé sur IE ?&lt;br /&gt;
* L'avez-vous testé sur Firefox ?&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous testé l'accessibilité?&lt;br /&gt;
* Le nom des classes utilisées sont elles compatibles avec touts les skins?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous fourni un fichier langue?&lt;br /&gt;
* Ce fichier a-t-il été relu pour les fautes d'orthographe?&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2968</id>
		<title>Développement d'une nouvelle fonctionnalité</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2968"/>
				<updated>2008-01-08T13:35:42Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sécurité ==&lt;br /&gt;
&lt;br /&gt;
*Avez-vous suivi les recommandations en sécurité ?&lt;br /&gt;
*Injection SQL&lt;br /&gt;
*Cross Site Scripting&lt;br /&gt;
&lt;br /&gt;
== Base de données ==&lt;br /&gt;
&lt;br /&gt;
*Compatibilité MYSQL 3.23&lt;br /&gt;
*Compatibilité MYSQL 4&lt;br /&gt;
*Compatibilité MySQL 5&lt;br /&gt;
*Avez-vous testé avec la même version MySQL utilisée par le client?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous suivi les recommandations en norme de codage ?&lt;br /&gt;
* Avez-vous testé sous PHP4 (version 4.1.2) ?&lt;br /&gt;
* Avez-vous testé sous PHP5 ?&lt;br /&gt;
* Est-ce que toutes les parties du code ont été déroulées durant les tests ?&lt;br /&gt;
* Durant les tests, est -ce que l'affichage des warnings et notices était activé ?&lt;br /&gt;
* Avez-vous testé avec la même version PHP utilisée par le client ?&lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* Javascript activé&lt;br /&gt;
* Javascript désactivé&lt;br /&gt;
* Le javascript est-il fonctionnel sur internet explorer 5.5, 6.0, 7.0, firefox ?&lt;br /&gt;
* Le javascript est-il fonctionnel ou dégradé et non bloquant sur internet explorer 5.0, netscape ?&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Test d'une nouvelle  installation&lt;br /&gt;
* Test d'une mise à jour&lt;br /&gt;
* Installation sur un autre serveur que celui de la production&lt;br /&gt;
* Dans le cas d'un addon ou un script, est-ce que les tests ont été faits avec la version d'Ovidentia installée du client ?&lt;br /&gt;
* Avez-vous testé une installation avec une base «vierge» (Aucune donnée)&lt;br /&gt;
* Avez-vous testé sur l'environnement du client ?&lt;br /&gt;
* Avez-vous testé une désinstallation ?&lt;br /&gt;
&lt;br /&gt;
== OS ==&lt;br /&gt;
&lt;br /&gt;
* LINUX APACHE&lt;br /&gt;
* WINDOWS IIS&lt;br /&gt;
* WINDOWS APACHE&lt;br /&gt;
&lt;br /&gt;
== Skin ==&lt;br /&gt;
&lt;br /&gt;
* Avez -vous fait les tests avec le skin du client?&lt;br /&gt;
* Les images sont-elles libres de droit?&lt;br /&gt;
* L'avez vous testé sur IE?&lt;br /&gt;
* L'avez-vous testé sur Firefox?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous testé l'accessibilité?&lt;br /&gt;
* Le nom des classes utilisées sont elles compatibles avec touts les skins?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous fourni un fichier langue?&lt;br /&gt;
* Ce fichier a-t-il été relu pour les fautes d'orthographe?&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2967</id>
		<title>Développement d'une nouvelle fonctionnalité</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2967"/>
				<updated>2008-01-08T13:34:57Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* JavaScript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sécurité ==&lt;br /&gt;
&lt;br /&gt;
*Avez-vous suivi les recommandations en sécurité ?&lt;br /&gt;
*Injection SQL&lt;br /&gt;
*Cross Site Scripting&lt;br /&gt;
&lt;br /&gt;
== Base de données ==&lt;br /&gt;
&lt;br /&gt;
*Compatibilité MYSQL 3.23&lt;br /&gt;
*Compatibilité MYSQL 4&lt;br /&gt;
*Compatibilité MySQL 5&lt;br /&gt;
*Avez-vous testé avec la même version MySQL utilisée par le client?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous suivi les recommandations en norme de codage ?&lt;br /&gt;
* Avez-vous testé sous PHP4 (version 4.1.2) ?&lt;br /&gt;
* Avez-vous testé sous PHP5 ?&lt;br /&gt;
* Est-ce que toutes les parties du code ont été déroulées durant les tests ?&lt;br /&gt;
* Durant les tests, est -ce que l'affichage des warnings et notices était activé ?&lt;br /&gt;
* Avez-vous testé avec la même version PHP utilisée par le client ?&lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* Javascript activé&lt;br /&gt;
* Javascript désactivé&lt;br /&gt;
* Le javascript est-il fonctionnel sur internet explorer 5.5, 6.0, 7.0, firefox ?&lt;br /&gt;
* Le javascript est-il fonctionnel ou dégradé et non bloquant sur internet explorer 5.0, netscape ?&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Test d'une nouvelle  installation&lt;br /&gt;
* Test d'une mise à jour&lt;br /&gt;
* Installation sur un autre serveur que celui de la production&lt;br /&gt;
* Dans le cas d'un addon ou un script est-ce que les tests ont été faits avec la version d'Ovidentia installée du client?&lt;br /&gt;
* Avez-vous testé une installation avec une base «vierge» ( Aucune donnée )&lt;br /&gt;
* Avez-vous testé sur l'environnement du client?&lt;br /&gt;
* Avez-vous testé une désinstallation?&lt;br /&gt;
&lt;br /&gt;
== OS ==&lt;br /&gt;
&lt;br /&gt;
* LINUX APACHE&lt;br /&gt;
* WINDOWS IIS&lt;br /&gt;
* WINDOWS APACHE&lt;br /&gt;
&lt;br /&gt;
== Skin ==&lt;br /&gt;
&lt;br /&gt;
* Avez -vous fait les tests avec le skin du client?&lt;br /&gt;
* Les images sont-elles libres de droit?&lt;br /&gt;
* L'avez vous testé sur IE?&lt;br /&gt;
* L'avez-vous testé sur Firefox?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous testé l'accessibilité?&lt;br /&gt;
* Le nom des classes utilisées sont elles compatibles avec touts les skins?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous fourni un fichier langue?&lt;br /&gt;
* Ce fichier a-t-il été relu pour les fautes d'orthographe?&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2966</id>
		<title>Développement d'une nouvelle fonctionnalité</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2966"/>
				<updated>2008-01-08T13:34:33Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* PHP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sécurité ==&lt;br /&gt;
&lt;br /&gt;
*Avez-vous suivi les recommandations en sécurité ?&lt;br /&gt;
*Injection SQL&lt;br /&gt;
*Cross Site Scripting&lt;br /&gt;
&lt;br /&gt;
== Base de données ==&lt;br /&gt;
&lt;br /&gt;
*Compatibilité MYSQL 3.23&lt;br /&gt;
*Compatibilité MYSQL 4&lt;br /&gt;
*Compatibilité MySQL 5&lt;br /&gt;
*Avez-vous testé avec la même version MySQL utilisée par le client?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous suivi les recommandations en norme de codage ?&lt;br /&gt;
* Avez-vous testé sous PHP4 (version 4.1.2) ?&lt;br /&gt;
* Avez-vous testé sous PHP5 ?&lt;br /&gt;
* Est-ce que toutes les parties du code ont été déroulées durant les tests ?&lt;br /&gt;
* Durant les tests, est -ce que l'affichage des warnings et notices était activé ?&lt;br /&gt;
* Avez-vous testé avec la même version PHP utilisée par le client ?&lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* Javascript activé&lt;br /&gt;
* Javascript désactivé&lt;br /&gt;
* Le javascript est-il fonctionnel sur internet explorer 5.5, 6.0, 7.0, firefox?&lt;br /&gt;
* Le javascript est-il fonctionnel ou dégradé et non bloquant sur internet explorer 5.0, netscape?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Test d'une nouvelle  installation&lt;br /&gt;
* Test d'une mise à jour&lt;br /&gt;
* Installation sur un autre serveur que celui de la production&lt;br /&gt;
* Dans le cas d'un addon ou un script est-ce que les tests ont été faits avec la version d'Ovidentia installée du client?&lt;br /&gt;
* Avez-vous testé une installation avec une base «vierge» ( Aucune donnée )&lt;br /&gt;
* Avez-vous testé sur l'environnement du client?&lt;br /&gt;
* Avez-vous testé une désinstallation?&lt;br /&gt;
&lt;br /&gt;
== OS ==&lt;br /&gt;
&lt;br /&gt;
* LINUX APACHE&lt;br /&gt;
* WINDOWS IIS&lt;br /&gt;
* WINDOWS APACHE&lt;br /&gt;
&lt;br /&gt;
== Skin ==&lt;br /&gt;
&lt;br /&gt;
* Avez -vous fait les tests avec le skin du client?&lt;br /&gt;
* Les images sont-elles libres de droit?&lt;br /&gt;
* L'avez vous testé sur IE?&lt;br /&gt;
* L'avez-vous testé sur Firefox?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous testé l'accessibilité?&lt;br /&gt;
* Le nom des classes utilisées sont elles compatibles avec touts les skins?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous fourni un fichier langue?&lt;br /&gt;
* Ce fichier a-t-il été relu pour les fautes d'orthographe?&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2965</id>
		<title>Développement d'une nouvelle fonctionnalité</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=D%C3%A9veloppement_d%27une_nouvelle_fonctionnalit%C3%A9&amp;diff=2965"/>
				<updated>2008-01-08T13:33:36Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Sécurité */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sécurité ==&lt;br /&gt;
&lt;br /&gt;
*Avez-vous suivi les recommandations en sécurité ?&lt;br /&gt;
*Injection SQL&lt;br /&gt;
*Cross Site Scripting&lt;br /&gt;
&lt;br /&gt;
== Base de données ==&lt;br /&gt;
&lt;br /&gt;
*Compatibilité MYSQL 3.23&lt;br /&gt;
*Compatibilité MYSQL 4&lt;br /&gt;
*Compatibilité MySQL 5&lt;br /&gt;
*Avez-vous testé avec la même version MySQL utilisée par le client?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous suivi les recommandations en norme de codage?&lt;br /&gt;
* Avez-vous testé sous PHP4 (version 4.1.2) ?&lt;br /&gt;
* Avez-vous testé sous PHP5?&lt;br /&gt;
* Est-ce que toutes les parties du code ont été déroulées durant les tests?&lt;br /&gt;
* Durant les tests est -ce que l'affichage des warnings et notices était activé?&lt;br /&gt;
* Avez-vous testé avec la même version PHP utilisée par le client?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JavaScript ==&lt;br /&gt;
&lt;br /&gt;
* Javascript activé&lt;br /&gt;
* Javascript désactivé&lt;br /&gt;
* Le javascript est-il fonctionnel sur internet explorer 5.5, 6.0, 7.0, firefox?&lt;br /&gt;
* Le javascript est-il fonctionnel ou dégradé et non bloquant sur internet explorer 5.0, netscape?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Test d'une nouvelle  installation&lt;br /&gt;
* Test d'une mise à jour&lt;br /&gt;
* Installation sur un autre serveur que celui de la production&lt;br /&gt;
* Dans le cas d'un addon ou un script est-ce que les tests ont été faits avec la version d'Ovidentia installée du client?&lt;br /&gt;
* Avez-vous testé une installation avec une base «vierge» ( Aucune donnée )&lt;br /&gt;
* Avez-vous testé sur l'environnement du client?&lt;br /&gt;
* Avez-vous testé une désinstallation?&lt;br /&gt;
&lt;br /&gt;
== OS ==&lt;br /&gt;
&lt;br /&gt;
* LINUX APACHE&lt;br /&gt;
* WINDOWS IIS&lt;br /&gt;
* WINDOWS APACHE&lt;br /&gt;
&lt;br /&gt;
== Skin ==&lt;br /&gt;
&lt;br /&gt;
* Avez -vous fait les tests avec le skin du client?&lt;br /&gt;
* Les images sont-elles libres de droit?&lt;br /&gt;
* L'avez vous testé sur IE?&lt;br /&gt;
* L'avez-vous testé sur Firefox?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== HTML ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous testé l'accessibilité?&lt;br /&gt;
* Le nom des classes utilisées sont elles compatibles avec touts les skins?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Avez-vous fourni un fichier langue?&lt;br /&gt;
* Ce fichier a-t-il été relu pour les fautes d'orthographe?&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Accessibilit%C3%A9&amp;diff=2964</id>
		<title>Accessibilité</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Accessibilit%C3%A9&amp;diff=2964"/>
				<updated>2008-01-08T13:32:34Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Points a traiter pour le niveau bronze accessiweb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Points à traiter pour le niveau bronze accessiweb==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Tableaux.&lt;br /&gt;
&lt;br /&gt;
'''5.1 : L'attribut SUMMARY est-il présent et pertinent ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :&lt;br /&gt;
L'attribut &amp;quot;SUMMARY&amp;quot;, s'il est correctement rempli, peut donner une information supplémentaire sur l'utilisation des tableaux dans une page Web pour certains internautes, aveugles par exemple. Dans une page qui contient une barre de menu, créée à partir d'un tableau HTML, l'attribut SUMMARY=&amp;quot;Barre de menu&amp;quot; va donner à l'utilisateur une indication supplémentaire sur la fonction de ce tableau.&lt;br /&gt;
&lt;br /&gt;
'''5.2 : Dans un tableau de données, la balise CAPTION est-elle utilisée pour donner un titre au tableau ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :&lt;br /&gt;
Plutôt que d’utiliser un texte mis en forme pour titrer un tableau, il est plus judicieux d’utiliser la balise CAPTION, qui est la balise dédiée pour afficher un titre dans un tableau.&lt;br /&gt;
&lt;br /&gt;
'''5.3 : Dans les tableaux de données, y a t-il des en-têtes de colonnes appropriées ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :&lt;br /&gt;
Dans un tableau de donnée, en HTML, la balise TH spécifie les en-têtes de colonnes et permet aux utilisateurs d’aides techniques de savoir par l'intermédiaire de la synthèse vocale qu’il s’agit d’une en-tête de colonne.&lt;br /&gt;
&lt;br /&gt;
'''5.4 : Dans un tableau de données, y a t-il un attribut HEADERS présent pour relier chacune des cellules du tableau ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :&lt;br /&gt;
Correctement placé dans un tableau de données, les attributs HEADERS et ID permettent de relier le contenu d'une cellule au titre de colonne auquel il est associé. L’utilisation des attributs HEADERS et ID permet de lier chaque cellule à l’en-tête qui lui est attachée. Une personne n’ayant qu’une vision linéaire de ce tableau pourra donc en permanence savoir à quelle en-tête est attachée la cellule dans laquelle elle se trouve.&lt;br /&gt;
&lt;br /&gt;
'''5.6 : Dans un tableau de mise en forme, le contenu est-il correctement ordonné ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :&lt;br /&gt;
Dans les tableaux de mise en forme, les informations doivent être ordonnées de telle manière qu'elles puissent être affichées dans un ordre équivalent lors d'une lecture linéaire de la page. L'organisation de l'information à l'intérieur d'un tableau de mise en page doit faire l'objet de beaucoup d'attention. Les outils actuels de développement HTML ont tendance à imbriquer les tableaux les uns dans les autres. Il en résulte parfois des différences entre le rendu visuel de l'information sur un navigateur graphique et le rendu textuel, respectant l'organisation du code HTML, d'un navigateur textuel de type Lynx par exemple.&lt;br /&gt;
&lt;br /&gt;
'''8.6 : Le contenu de la balise TITLE est-il différent d'une page à l'autre ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :&lt;br /&gt;
Un même titre sur les différentes pages d'un site peut induire les utilisateurs en erreur. En effet, le titre de la page est la première information rendue à l’écran et les répétitions d’un même titre entre plusieurs documents différents, peuvent créer une perte de repères.&lt;br /&gt;
&lt;br /&gt;
'''8.7 : Les changements de langue dans une page sont-ils signalés ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :&lt;br /&gt;
Lorsqu'un changement de langue intervient dans une page, il est nécessaire de le signaler à l'utilisateur. En effet, en cas d'utilisation d'une synthèse vocale, celle-ci changera automatiquement de langue à la détection de la balise LANG qui spécifie qu'un mot ou une phrase est dans une langue différente.&lt;br /&gt;
&lt;br /&gt;
11. Formulaires.&lt;br /&gt;
&lt;br /&gt;
'''11.1 : La balise LABEL et les attributs correspondants (ID, FOR) sont-ils présents ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :&lt;br /&gt;
Dans le cas d’une page en HTML, la balise LABEL associée aux attributs ID et FOR permet de relier directement le champ de saisie au texte qui lui est associé. Cela permet aux personnes naviguant à l’aide d’une aide technique de définir sans ambiguïté à quel champ de saisie correspond le texte associé.&lt;br /&gt;
&lt;br /&gt;
'''13.3 : Le visiteur est-il averti lorsque de nouvelles fenêtres apparaissent ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :&lt;br /&gt;
Deux notions s'apparentent à l'expression &amp;quot;nouvelles fenêtres&amp;quot; : fenêtre de navigateur et pop-up. L'ouverture d'une fenêtre de navigateur s'effectue grâce à une commande HTML alors que la pop-up s'ouvre par l'intermédiaire d'un script sur le poste client. Dans certains cas, les personnes utilisant des navigateurs qui ne gèrent pas les scripts côté client ou qui désactivent volontairement les scripts dans leur navigateur n'auront donc pas accès à l'information contenue dans la pop-up. L'ouverture automatique d'une pop-up dès le chargement d'une page rend la lecture difficile, notamment pour les personnes utilisant des aides techniques pour naviguer. L'ouverture de nouvelles fenêtres, surtout lorsque l'utilisateur n'est pas prévenu, n'est pas conseillée.&lt;br /&gt;
&lt;br /&gt;
==Points a traiter pour le niveau argent accessiweb==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Tableaux.&lt;br /&gt;
&lt;br /&gt;
'''5.5 : Dans un tableau de données, lorsqu'un titre de colonne dépasse 15 caractères, l'attribut ABBR est-il utilisé ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :&lt;br /&gt;
Un titre de colonne (TH) est long lorsqu'il dépasse 15 caractères. L'attribut ABBR permet à certaines aides techniques de reprendre l'abréviation du titre de colonne pour l'associer à la cellule qui lui fait référence. Il faut veiller à ce que le contenu de l'attribut ABBR soit pertinent et soit en rapport avec le contenu de l'en-tête de colonne auquel il se réfère. Lorsqu'un tableau de données est correctement construit, une synthèse vocale est capable d'indiquer à l'utilisateur à quel titre de colonne se réfère une cellule. Quand le titre de colonne est long (exemple : Marque du véhicule), l'attribut ABBR va obliger la synthèse vocale à n'annoncer que le mot &amp;quot;marque&amp;quot;. L'utilisation de l'attribut ABBR permet un confort de lecture supplémentaire pour les utilisateurs de synthèses vocales.&lt;br /&gt;
&lt;br /&gt;
11. Formulaires.&lt;br /&gt;
&lt;br /&gt;
'''11.4 : La balise FIELDSET est-elle présente pour encadrer des blocs d'information de même nature ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :  &lt;br /&gt;
Dans un même formulaire, plusieurs champs de saisie de même nature (les champs &amp;quot;nom&amp;quot;, &amp;quot;prénom&amp;quot;, &amp;quot;date&amp;quot; et &amp;quot;lieu de naissance&amp;quot; constituent le groupe de champs &amp;quot;Etat civil&amp;quot;) peuvent être regroupés par l'intermédiaire de la balise FIELDSET (dans le cas d'une page en HTML).&lt;br /&gt;
&lt;br /&gt;
'''11.5 : La balise LEGEND est-elle présente pour donner un titre au bloc d'informations encadré par la balise FIELDSET ?'''&lt;br /&gt;
&lt;br /&gt;
Commentaire :  &lt;br /&gt;
Dans le cas d'une page en HTML, l'utilisation de la balise LEGEND (associée à la balise FIELDSET) permet de donner un titre à chaque bloc d'information.&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Internationalisation&amp;diff=2963</id>
		<title>Internationalisation</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Internationalisation&amp;diff=2963"/>
				<updated>2008-01-08T13:27:08Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Envoi d'email */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Traduction des entités de contenu ==&lt;br /&gt;
&lt;br /&gt;
Thèmes d'articles, catégories ...&lt;br /&gt;
&lt;br /&gt;
Le problème sera résolu par l'intégration du plan de site dans le noyau&lt;br /&gt;
&lt;br /&gt;
== Envoi d'email ==&lt;br /&gt;
&lt;br /&gt;
La plupart des email envoyés par ovidentia sont internationalisés, mais la langue utilisée pour la traduction est celle de la configuration de l'expéditeur du message. Il faut utiliser une autre fonction de traduction qui tient compte des options du destinataire.&lt;br /&gt;
&lt;br /&gt;
Fonction disponible à partir d'ovidentia 6.2.0 :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $babInstallPath.&amp;quot;utilit/translateincl.php&amp;quot;;&lt;br /&gt;
bab_userTranslate($id_user, 'string to translate');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	<entry>
		<id>https://wiki.ovidentia.fr/index.php?title=Internationalisation&amp;diff=2962</id>
		<title>Internationalisation</title>
		<link rel="alternate" type="text/html" href="https://wiki.ovidentia.fr/index.php?title=Internationalisation&amp;diff=2962"/>
				<updated>2008-01-08T13:26:40Z</updated>
		
		<summary type="html">&lt;p&gt;Patricia : /* Envoi d'email */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Traduction des entités de contenu ==&lt;br /&gt;
&lt;br /&gt;
Thèmes d'articles, catégories ...&lt;br /&gt;
&lt;br /&gt;
Le problème sera résolu par l'intégration du plan de site dans le noyau&lt;br /&gt;
&lt;br /&gt;
== Envoi d'email ==&lt;br /&gt;
&lt;br /&gt;
La plupart des email envoyés par ovidentia sont internationalisés, mais la langue utilisée pour la traduction est celle de la configuration de l'expéditeur du message. Il faut utiliser une autre fonction de traduction qui tient compte des options du destinataire.&lt;br /&gt;
&lt;br /&gt;
fonction disponible à partir d'ovidentia 6.2.0 :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once $babInstallPath.&amp;quot;utilit/translateincl.php&amp;quot;;&lt;br /&gt;
bab_userTranslate($id_user, 'string to translate');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Patricia</name></author>	</entry>

	</feed>