Les droits applicatifs doivent être enregistrés avec l'application ACCESS (Gestion des accessibilités). Ils permettent de définir des droits sur les actions applicatives. Ils ne s'appliquent pas aux documents mais seulement aux actions dans leur ensemble.
| Nom | Définition |
|---|---|
| NORMAL | Autorise l'envoi des documents par mail. Permet l'aide à la saisie. À activer si GENERIC ou FREEDOM et activé. |
| EXPORT | Autorise l'exportation de dossiers ou de recherches. Doit être utilisé en correlation avec FREEDOM_MASTER. |
| FAMILY | Autorise la modification des paramètres pour les documents famille. Doit être utilisé en correlation avec FREEDOM_MASTER. |
| Nom | Définition |
|---|---|
| GENERIC_READ | Accès aux documents en lecture seule. Aucune fonction de modification n'est autorisée. |
| GENERIC | Accès à la modifications des documents. |
| GENERIC_MASTER | Accès à l'ajout de catégories et à l'import de document |
| Nom | Définition |
|---|---|
| ONEFAM_READ | Accès à la liste de famille défini par l'administrateur en lecture seule |
| ONEFAM | Accès à une liste personnelle modifiable par l'utilisateur |
| GENERIC_MASTER | Accès en écriture à la liste administrative |
| Nom | Définition |
|---|---|
| FREEDOM_READ | Accès aux documents en lecture seule. Aucune fonction de modification n'est autorisée. |
| FREEDOM | Accès à la modifications des documents et des plans de classements |
| FREEDOM_MASTER | Accès aux fonctions d'import/export. Accès à la définition des attributs de familles |
| FREEDOM_GED | Accès à l'interface principale de Gestion documentaire |
Pour créer une nouvelle famille, il faut :
La fenêtre d'édition présentent les attributs de la famille et les attributs hérités qui sont non modifiables.
En bas du tableau, trois nouveaux attributs peuvent aussi être ajoutés. Si vous voulez en ajouter plus de trois il faut le faire trois par trois. Une fois les trois premiers saisis, il faut valider et faire :
| Champ | Description |
|---|---|
| Identificateur ou ID | Nom interne de l’attribut. Il sert de référence lors des définitions des fonctions et des liens. Cet item n’est plus modifiable une fois crée. Cet identificateur doit être unique dans l’ensemble des familles. |
| Ordre | Défini l’ordre de présentation des attributs dans le document. Cet ordre n’est pas utile pour les attributs de type frame. |
| Nom | Texte court définissant l’attribut. Ce texte est utilisé pour désigner l’attribut lors de la visualisation ou de l’édition. |
| Type | Défini le type syntaxique de l’attribut (text, htmltext, frame, date, time,…) |
| Cadre ou fenêtre | Défini le cadre dans lequel l’attribut doit être présenté. Il faut auparavant avoir défini les cadres. |
| Résumé ou R? | Si vous voulez que l’attribut soit affiché dans le mode colonne ou dans les aperçus de documents dans l’application GENERIC, il faut cocher la colonne ‘R?’. |
| Titre ou T? | Le titre d’un document peut être composé par les valeurs d’un ou de plusieurs attributs. Il faut au moins mettre un des attributs en titre en cochant la colonne “T?”. |
| Obligatoire ou O? | Indique si l’attribut est obligatoire lors de la saisie. |
| Visibilité ou Vi | Indique dans quel cas l’attribut est affiché. |
Cet exemple est celui de la famille “de base” :
| ID | ordre | Nom | type | fenêtre | R? | T? | O? | Vi |
|---|---|---|---|---|---|---|---|---|
| fr_basic | 0 | basique | frame | - | W | |||
| ba_title | 1 | titre | text | basic | x | x | O |
Commentaires :
Remarque : Pour avoir d'autres exemples, le plus simple est de regarder le paramétrage des familles disponibles en standard
Les familles sont soumises à une hiérarchie. On peut ainsi définir des familles spécialisées à partir de définition plus générale, on parle alors d’héritage.
Par exemple, Nous avons la famille “société” dans laquelle figure toutes les coordonnées d’une entreprise et on souhaite définir une famille “site” qui permettra de visualiser les différents sites de cette entreprise. Nous allons donc créer la famille “site” à partir de la famille “société”. On dit alors que la famille “site” hérite de la famille “société” et de tous ses attributs. La famille héritée pourra alors être modifiée pour caractériser précisément les sites de l’entreprise.
L'interface Web sert juste à ajuster les attributs d’une famille. Pour accéder à toutes les possibilités d'une famille, il faut la créer dans OpenOffice.org et l'importer dans Freedom. Tout est expliqué dans ce chapitre :
Pour modifier une famille, il faut :
L’ajout d’attribut se fait sans condition en utilisant les trois dernières lignes de l’interface “éditer les attributs”.
Pour modifier un attribut hérité donc normalement non modifiable, il faut créer un nouvel attribut (nouvelle ligne) ayant le même identifiant que l'attribut à modifier.
Il est nécessaire de redéfinir toutes les propriétés de l’attribut.
L’attribut modifié perd toute relation avec l’attribut défini dans ses ancêtres. Si les propriétés de l’attribut de l’ancêtre sont modifiés, l’attribut fils modifié n’est pas impacté.
Voici un exemple avec une nouvelle famille basée sur la famille “de base”
^ ID^ ordre^ Nom^ type^ fenêtre^ R?^ T?^ O?^ Vi ^
| fr_basic | 0 | basique | frame | - | W | |||
| ba_title | 1 | titre | text | basic | x | x | O | |
| ba_title | 1 | Mon nouveau titre | longtext | basic | x | x | W |
Dans ce cas, le champ “titre” ne sera plus visible car il sera remplacé par le champ “Mon nouveau titre”
On ne peut pas supprimer les attributs crées. Par contre on peut les rendre invisibles en affectant leur visibilité à H (invisible).
Si on ne veut pas hériter d’un des attributs des ancêtres, il faut :
Le dossier par défaut sert à savoir où ranger le nouveau document créé s’il n’y a pas eu de dossier sélectionné dans l’arborescence.
Ce dossier sert de dossier racine dans l’application ONEFAM (Gestion par famille). Si une famille a un dossier par défaut, elle peut être gérée par l’application ONEFAM.
Pour changer l'icône d'une famille, il faut :
Ce chapitre donne la description des colonnes de base permettant de créer ou modifier des familles.
Dans les chapitres suivants vous trouverez la description des autres colonnes pour réaliser des aides à la saisie, des menus,..
Rappel : Pour accéder à la modification d'une famille, il faut faire un clic droit sur la famille et sélectionner le menu “Éditer les attributs”
Nom interne de l'attribut.
Il sert de référence lors des définitions des fonctions et des liens. Cet item n'est plus modifiable une fois crée car il peut être utilisé dans les parties spécifiques de la famille.
Cet identificateur doit être unique dans l'ensemble des familles. Il est conseillé de préfixer chacun des attributs par un trigramme identifiant la famille afin de bien percevoir les attributs par famille.
Défini l'ordre de présentation des attributs dans le document. Cet ordre n'est pas utile pour les attributs de type frame.
Texte court définissant l'attribut. Ce texte est utilisé pour désigner l'attribut lors de la visualisation ou de l'édition.
Défini le type syntaxique de l'attribut. Les types de base sont :
| Type | Description |
|---|---|
| text | texte court sur une ligne |
| longtext | texte long sur plusieurs lignes |
| htmltext | texte formatable |
| frame | cadre dans lequel les attributs sont présentés |
| date | défini un attribut date de la forme JJ/MM/AAAA |
| time | heures et minutes |
| timestamp | date, heures et minutes |
| password | texte caché. Il est non visualisable. Des étoiles remplacent les caractères saisis. |
| file | fichier à télécharger. |
| image | image à télécharger. Formats image supportés : GIF, JPEG, PNG. |
| integer | nombre entier |
| double | nombre réel |
| money | nombre réel avec 2 chiffres après la virgule |
| enum | liste énumérée |
| docid(”[ID_DE_FAMILLE]”) | Lien vers un document de la famille ID_DE_FAMILLE 1) |
| docid | identifiant de document2) |
| color | code RGB (rouge/vert/bleu) en hexadécimal (ex: #FF0000 pour rouge) “ |
| ifile | fichier intégré. Utilisable pour les petits fichiers afin d’être visualisé directement dans le document. |
| idoc | document intégré.3) |
| menu | lien vers une autre page. |
Pour les attributs “text” un formatage du type (style langage C) peut être ajouté. Par exemple :
environ après la valeur,Ceci est aussi valable pour les type “int” ou “double”
Pour les attributs “date”,”time” et “timestamp” un formatage (style langage C ”strftime”) peut être ajouté. Par exemple :
Défini le cadre dans lequel l'attribut doit être présenté. Il faut auparavant avoir défini les cadres.
Si vous voulez que l'attribut soit affiché dans le mode colonne ou dans les aperçus de documents dans l'application GENERIC, il faut cocher la colonne 'R?'.
Le titre d'un document peut être composé par les valeurs d'un ou de plusieurs attributs. Il faut au moins mettre un des attributs en titre en cochant la colonne “T?”. Le titre est composé en concaténant les valeurs des attributs titre suivant l'ordre donné.
Si vous modifiez la définition du titre, il est nécessaire d'utiliser la fonction Bash (“freedom_refresh”) pour que les documents déjà créés aient leur titre modifié.
Indique si l'attribut est obligatoire lors de la saisie.
Cet attribut détermine dans quel cas l'attribut est affiché. La visibilité est :
| Code | Description |
|---|---|
| W | attribut visible en lecture et modifiable en édition. |
| R | attribut visible en lecture seulement. Généralement ce sont des attributs calculés. |
| H | attribut caché. Généralement ce sont des attributs servant soit au calcul, soit à la génération des liens. Leur valeur n’est généralement pas exploitable directement. |
| O | attribut modifiable en édition mais non visible en lecture. Généralement utilisé en corrélation avec les attributs de type menu. |
| S | attribut visible en lecture et en édition, mais non modifiable en édition |
| U | uniquement pour le type array. Interdit l'ajout et la suppression de rangées dans le tableau (version >= 2.7.4). Correspond à “tableau statique”. |
| I | invisible : l’attribut n’est pas présent en consultation et en édition dans le document. Un attribut de visibilité I n'est pas modifiable (méthode Doc::setValue inactive). Pour en modifier la valeur, il est nécessaire d'appliquer un masque de saisie modifiant sa visibilité |
.
Pour positionner les champs dans une famille, il existe 3 types d'attributs particulier :
L'attribut de type “frame” permet d'ajouter une bordure et un titre autour des champs.
Dans cet exemple, les deux champs de type “text” seront entourés par une bordure dont le titre est “Exemple de Frame” :
| ID | fenêtre | Nom | T? | R? | type | Ordre | Vi | O? |
|---|---|---|---|---|---|---|---|---|
| demo_frame | - | Exemple de Frame | frame | 1 | W | |||
| demo_text1 | demo_frame | Texte 1 | text | 2 | W | |||
| demo_text2 | demo_frame | Texte 2 | text | 3 | W |
Pour paramétrer une famille, il faut donc commencer par définir les différentes frames et ensuite il faut placer les champs dans les frames créées en utilisant la colonne “fenêtre”
Remarques :
L'attribut de type “array” permet de construire un attribut qui contient une liste de tuples composés de un ou plusieurs attributs.
| ID | fenêtre | Nom | T? | R? | type | Ordre | Vi | O? |
|---|---|---|---|---|---|---|---|---|
| demo_frame | - | Exemple de Frame | frame | 1 | W | |||
| demo_fichiers | demo_frame | Fichier(s) | array | 2 | W | |||
| demo_fichier | demo_fichiers | Fichier | file | 3 | W | |||
| demo_comment | demo_fichiers | Commentaire | text | 3 | W |
Dans cette exemple, on a un attribut “demo_fichiers” de type array qui contiendra une liste de couples { fichier, champ commentaire }. On a donc une liste de fichiers avec leur commentaire associé :
| Fichier(s) | ||
|---|---|---|
| Fichier | Commentaire | |
| +/- | fichier1 | commentaire 1 |
| +/- | fichier2 | commentaire 2 |
| +/- | etc. | etc. |
Chaque ligne sera préfixé de boutons pour ajouter/supprimer une ligne.
: Ajouter des exemples d'utilisation de l'attribut de type “tab”
Les attributs énumérés peuvent être utilisés pour définir un ensemble fini de choix de valeurs pour un attribut. On distinguera les attributs énumérés simples (type “enum”) pour le choix d'une seule valeur parmi l'ensemble des choix, des attributs énumérés multiples (type “enumlist”) pour le choix de plusieurs valeurs possibles.
L'ensemble des valeurs est une suite de couples <clef>|<label> séparés par des virgules. Le label est le texte qui est présenté sur l'interface; la clef la valeur qui est stockée en base de données. On peut ainsi modifier les labels sans pour autant changer la clef. La suppression d'une clef implique que c'est directement la clef qui sera affichée (les valeurs en base de données ne sont pas supprimées).
Par défaut un menu de filtrage sur les valeurs de cet attribut est ajouté dans la barre du haut pour toutes applications dérivées de GENERIC.
Deux options sont disponibles pour les énumérés bmenu et system. Si bmenu égal no, le menu supplémentaire ne sera pas affiché. Si system égal yes, les valeurs définies seront écrasées par les nouvelles valeurs définies. Par défaut, les valeurs des énumérés une fois initialisées ne sont pas modifiables lors de la redéfinition d'une famille.
Par défaut les attributs énumérés sont présentés à l'édition par une liste déroulante pour les énumérés simples et une liste à sélection multiple pour les énumérés multiples.
Plusieurs formats de sélection sont possibles :
Le format sera décrit par l'option 'eformat'. Pour indiquer qu'un énuméré est multivalué on indiquera 'multiple=yes' dans les options.
Restriction: les énumérés multiples ne peuvent pas être utilisés dans les tableaux.
Pour les énumérés simples, si la valeur par défaut n'est pas spécifiée, c'est le premier choix qui est présenté. Si on veut donner la possibilité de ne rien choisir, il faut ajouter un élément qui a pour valeur espace (red|rouge, |sans avis). La sélection de 'sans avis' aura pour conséquence la suppression de la valeur de l'attribut.
| idattr (ou ID) | label (ou Nom) | type | phpfunc (ou ft) | options |
|---|---|---|---|---|
| TST_COLOR1 | ma couleur préférée | enum | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no |
| TST_COLOR2 | la couleur du vase | enum | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no¦eformat=hcheck |
| TST_COLOR3 | la couleur de la table | enum | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no¦eformat=vcheck |
| TST_COLOR4 | aimez-vous le vert ? | enum | red¦rouge,green¦vert | bmenu=no¦eformat=bool |
| TST_COLOR5 | les couleurs de la fleur | enumlist | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no |
| TST_COLOR6 | les couleurs de l'arbre | enumlist | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no¦eformat=hcheck |
| TST_COLOR7 | les couleurs du ciel | enumlist | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no¦eformat=vcheck |

La liste des choix peut aussi être fournie par une fonction PHP ce qui permet une réutilisabilité et une plus grande dynamique dans les choix proposés. Cette fonctionnalité est décrite dans le manuel de programmation.
etype=open
Les énumérés de type 'ouvert' permettent aux utilisateurs de rajouter des entrées dana la liste des choix possibles. Si l'utilisateur a le droit d'éditer le document il a le droit de rajouter une entrée dans l'énuméré. Par contre, il ne pourra pas l'enlever directement. Seul l'administrateur pourra supprimer/corriger les entrées de cet énuméré.
etype=free
Les énumérés de type 'libre' permettent aux utilisateurs de choisir un autre choix que ceux proposés. Ce choix libre n'est pas ajouté à la liste des entrées.
Pour créer ou modifier les énumérés avec une une interface Web, il faut :
Il est aussi possible de créer des sous-listes dans l'énumération grâce à l'interface web. Il suffit pour cela:
Ce fichier contient un exemple de famille utilisant des attributs énumérés.
Vous pouvez suivre les instructions de cette page pour importer cette famille dans Freedom.
Si votre champ enum comporte de nombreuses entrées, cette macro OOo vous aidera à créer votre champ.
Le texte peut être traduit. S'il contient le caractère ”,” ou ”.”, alors il faut précéder ce caractère de ”/”.
L'hyperlien sert à afficher une URL dans la fenêtre courante à partir de l'attribut. L'hyperlien peut être une simple URL statique (”http://www.meteo.fr”). L'URL peut être décrite avec des paramètres issus du document.
Les références aux attributs du document sont écrites entre les caractères % en indiquant l'identifiant de l'attribut.
Soit l'attribut US_MAIL définissant le mail d'une personne. Pour déclencher l'édition d'un mail vers une personne il suffit de mettre l'hyperlien suivant :
mailto:%US_MAIL%
Autre exemple, soit l'attribut SI_TOWN indiquant la ville de la famille société. Pour avoir la météo de la ville il suffit de mettre l'hyperlien suivant :
http://www.viamichelin.com/viamichelin/fra/dyn/controller/weatherAmbiguous?strLocation=%SI_TOWN%&strCountry=EUR
Le mot-clef %SI_TOWN% sera remplacé par la valeur de cet attribut. S'il n'y aucune valeur pour un des attributs de l'URL, l'hyperlien ne sera pas affiché (on ne pourra pas cliquer sur l'attribut).
Deux mots-clefs spéciaux peuvent être utilisés pour la composition de l'URL :
Les propriétés du document peuvent aussi être utilisées comme %FROMID% par exemple afin d'avoir l'identifiant de la famille du document.
Pour créer une relation entre deux documents nous utiliserons le type 'docid'. Pour créer une relation entre le document et un document de la famille 'X' nous déclarerons l'attribut suivant
| id | type | visibility |
|---|---|---|
| MA_RELATION | docid(“X”) | W |
Cela donnera en édition une aide à la saisie classique vers un document de la famille X. En consultation l'utilisateur verra le titre du document lié avec un hyperlien vers celui-ci. Si la famille n'est pas précisé dans le type l'aide à la saisie ne sera pas proposée.
Par contre, seul la n° du document sera stocké et donc l'utilisateur ne pourra pas rechercher par le titre. Si vous voulez que cette relation soit recherchable par le titre il faut rajouter l'option doctitle.
| id | type | visibility | options |
|---|---|---|---|
| MA_RELATION | docid(“X”) | W | doctitle=auto |
Cela créera automatiquement un deuxième attribut 'MA_RELATION_TITLE' qui sera caché mais disponible à la recherche. Il contiendra le titre de la relation.
L'aide à la saisie peut être personnalisée. Les documents ci-dessous donne plus d'explications sur la création de liens entre documents :
Soit US_IDSOC l'attribut identifiant le document société de la famille personne. Pour créer un hyperlien vers le document lié il faut saisir l'URL suivante :
%S%app=FDL&action=FDL_CARD&id=%US_IDSOC%
Cette URL indique que l'application FREEDOM va effectuer l'action FDL_CARD (affichage d'un document) dont l'identificateur est celui défini dans l'attribut US_IDSOC.
Il est possible d'indiquer un texte lorsque le curseur est sur le lien en utilisant l'option “ltitle”.
| Link | … | Options |
|---|---|---|
| %S%app=FDL&action=FDL_CARD&id=%US_IDSOC% | ltitle=détail de la société |
L'extra lien permet d'afficher un bouton supplémentaire lors de l'édition d'un document. Ce bouton est spécifié par un lien comme pour les hyperlien défini ci-dessus. Cet extra-lien est utilisé le plus souvent pour que l'utilisateur crée ou modifie un document secondaire lors de l'édition d'un document principal.
Il est possible de préfixer le lien pour changer le caractère sur la bouton (par défaut '+') et le texte surgissant affiché.
| id | type | vis | link | … | eLink | … | Options |
|---|---|---|---|---|---|---|---|
| MA_RELATION | docid(“FACT”) | W | %S%app=GENERIC&action=GENERIC_EDIT&classid=FACT&id=%MA_RELATION% | eltitle=éditer une facture¦elsymbol=$ |
L'exemple ci-dessus affichera le bouton '$' avec le texte surgissant « éditer une facture ». Le lien GENERIC_EDIT est l'action par défaut d'édition de document.
: LES DOCUMENTS CI-DESSOUS SONT PLUS COMPLETS ET DEVRAIENT ETRE INTEGRES DANS CE CHAPITRE
Défini le nom du fichier PHP qui contient la fonction décrite ci-après. Ce fichier se trouve sur la machine serveur dans le répertoire
/usr/share/what/EXTERNALS
Les fonctions de base sont décrites dans le fichier “fdl.php”.
Les fonctions d'aide à la saisie doivent être des fonctions PHP décrites dans le fichier défini. Leur spécification est décrite dans le manuel de programmation.
La spécification de l'appel suit la syntaxe suivante :
NomFonction(P1,P2,...):R1,R2,R3,...
La fonction d'aide à la saisie calcule une liste de choix en fonction des paramètres “P”. Lorsque l'utilisateur fait son choix les attributs “R” sont modifiés.
Une fonction générale est décrite dans le fichier fdl.php. Elle peut être utilisée pour la recherche et pour lier des documents.
Cette fonction est la suivante
lfamily($dbaccess, $famid, $name, $catgid=0)
Elle possède quatre paramètres dont un optionnel :
La fonction retourne deux paramètres : identificateur du document et titre du document.
soit la famille test dont les attributs sont :
on met un hyperlien sur TST_SOC pour pointer sur le document société qui est lié à la famille test:
%S%app=FDL&action=FDL_CARD&id=%TST_IDSOC%
Le fichier de TST_SOC est fdl.php et la fonction d'aide à la saisie est : lfamily(D,SOCIETY,TST_SOC):TST_IDSOC,TST_SOC
ceci permet de choisir parmis les documents de la famille société dont le titre contient ce qui est déjà saisi dans l'attribut TST_SOC. Le choix déclenche la mise à jour de l'identificateur et du titre. Une fois le document validé (ou créé), l'hyperlien sera visible sur l'attribut TST_SOC.
A mon avis, le document ci-dessous devrait être fusionné avec ce chapitre :
Un attribut calculé est un attribut dont la valeur est défini par une méthode. Cette valeur ne peut pas être modifié directement par l'utilisateur. Par conséquent, ce type d'attribut ne peut pas avoir d'aide à la saisie. Sa visibilité est soit H (caché) soit R (lecture).
La définition du calcul se fait dans la même colonne que celle de l'aide à la saisie. Le calcul est effectué en appelant la méthode décrite. La valeur retournée par la méthode est affectée à l'attribut. La définition de l'appel de la méthode commence par '::'. Toutes les méthodes de la classe du document peuvent être appelées (méthodes générales (Classe Doc) et méthodes spécifiques).
Par exemple si on veut qu'un attribut de type 'date' contienne la date du jour on indiquera la méthode suivante.
::getDate()
L'attribut sera remis à jour à chaque rafraîchissement du document (à chaque visualisation complète).
Des paramètres peuvent être ajoutés si la méthode le requiert. Ces paramètres peuvent être des valeurs d'attributs ou des chaînes de caractères quelconques.
::getFutureDate(3) ::getFutureDate(ZOO_DELAY) ::getStrDate(%d/%m/%Y,ZOO_CDATE)
S'il y a plusieurs paramètres, ils doivent être séparés par des virgules.
Le résultat du calcul peut être appliqué à un autre attribut que celui où on a défini le calcul. Cela est utile dans la cas où on utilise un attribut avec aide à la saisie qui sera recalculé avec les paramètres issus de l'aide à la saisie.
Exemple classique : Mettre un hyperlien calculé sur un document:
::getTitle(ZOO_IDDOC1):ZOO_DOC1
| idattr | label | vis | link | phpfile | phpfunc |
|---|---|---|---|---|---|
| CMC_IDPROPO | id propo | H | | | ::getTitle(CMC_IDPROPO):CMC_PROPO |
| CMC_PROPO | proposition | W | '%S%app=FDL&action=FDL_CARD&id=%CMC_IDPROPO% | Ext.php | lpropo(D,CMC_PROPO):CMC_IDPROPO,CMC_PROPO |
Dans cet exemple, l'utilisateur choisi une proposition avec la fonction d'aide à la saisie. Ceci à pour but de récupérer l'identificateur. Ensuite, cet identificateur est utilisé pour remettre à jour le titre du lien en cas de changement du titre du document lié.
Certains attributs peuvent faire l'objet de contraintes spécifiques. C'est à dire que la valeur de l'attribut peut être soumis à certaines conditions que ce soit de syntaxe ou plus générales. La contrainte fait appel à une méthode de la classe d'objet documentaire.
| idattr | label | vis | link | constraint |
|---|---|---|---|---|
| SI_MAIL | couriel | W | mailto:%SI_MAIL% | ::parseMail(SI_MAIL) |
On peut comme pour le champ ”phpfunc” mettre comme paramètre à la méthode des attributs du document.
Si la contrainte de l'attribut n'est pas respectée, le document ne peut être enregistré. Par contre, si vous êtes connecté en temps que utilisateur 'admin', un bouton 'Valider!' apparaîtra afin d'outrepasser les contraintes. Seul cet utilisateur peut utiliser et voir ce bouton.
Vous trouverez dans les chapitres suivants toutes les explications pour créer un fichier .csv ou OpenOffice.org permettant de définir les attributs d'une famille.
Mais pour vous éviter de construire complètement ce fichier, vous pouvez partir de ce fichier OpenOffice.org pour définir vos familles et les importer dans freedom et les exporter depuis freedom.
Si vous voulez juste spécifier les structures de familles pour les importer dans freedom vous pouvez utiliser ce fichier : Spécification des structures
En complément vous pouvez mémoriser cette macro Fdl Color dans votre tableur openoffice afin de mettre en évidence les différents types d'attributs.
Avant d'importer une famille, il est conseillé de suivre le chapitre concernant l'importation de documents en général.
Mais en résumé, voici ce qu'il faut faire :
Pour importer des familles en utilisant la ligne de commandes, , il est conseillé de lire ce chapitre pour avoir plus d'explications sur l'utilisation de scripts dans Freedom.
Mais en résumé, voici la commande qu'il faut utiliser pour importer un document dans Freedom :
/usr/share/what/wsh.php --api=freedom_import --file=VotreFichier.ods
Remarque : Vous pouvez importer directement un fichier OpenOffice.org .ods ou un fichier .csv
Une fois l'importation d'une famille effectuée, il n'est plus possible de supprimer des attributs ni de les renommer. Vous serez donc certainement amené pendant votre phase de mise au point à supprimer des familles.
ATTENTION : La suppression d'une famille entraîne la suppression de tous les documents de cette famille.
Pour supprimer une famille, vous pouvez consulter ce chapitre
Pour savoir ce qu'il est possible de faire comme modifications sur une famille, il faut suivre ce chapitre.
Dans les chapitres suivants, vous trouverez la description complète d'un fichier d'importation. Ce fichier peut-être au format OpenOffice.org ou au format .csv.
Remarque : Une ligne vide ou une ligne commençant par // ne sera pas prise en compte lors de l'importation.
L'entête défini le titre, le nom et l'héritage de la famille.
| 1 | 2 | 3 | 4 | 5 | 6 |
| // famille portail url | titre | id | class | name | |
|---|---|---|---|---|---|
| BEGIN | GATE_SERVICE | service url | GATESERVICE_URL |
Définition des colonnes :
Les caractéristiques permettent d'affecter les propriétés du documents. La syntaxe est toujours la même : 1ère colonne : nom de la propriété, 2ème colonne valeur de la propriété.
Les caractéristiques des attributs suivent les explications données au paragraphe 5.1
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| idattr | idframe | label | T | A | type | ord | vis | need | link | phpfile | phpfunc | elink | constraint | option | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ATTR | US_FR_SEARCHLDAP | LDAP Recherche | N | N | frame | 0 | W | ||||||||
| ATTR | LDAP_GETINFO | US_FR_SEARCHLDAP | login LDAP | N | N | text | 500 | O | nu.php | searchLDAPinfo(LDAP_GETINFO): US_LOGIN,US_FNAME,US_LNAME | esize=20 |
Définition des colonnes :
| Option | Description | Restriction |
|---|---|---|
| esize | taille de champs de saisie en caractère | pour les attributs de type text |
| elabel | texte du tootips apparaissant lorsque la souris est sur le zone de saisie | pour les attributs de type text |
| ititle | texte du tooltip du bouton '…' de l'aide à la saisie. Par défaut : « choisissez une valeur » | |
| submenu | nom du sous menu | pour les attributs de type menu et action |
| barmenu | mettre à yes si l'affichage nécessite la barre de menu du navigateur | pour les attributs de type menu et action |
| bmenu | mettre à no si l'attribut ne doit pas apparaître dans les menus des application GENERIC. | pour les attributs de type enum |
| system | mettre à yes si les éléments de l$-1'énuméré doivent être écrasé par la nouvelle définition | pour les attributs de type enum |
| ltitle | Texte affichable en popup sur l'hyperlien lorsque la souris passe dessus | hyperlien valide |
| ltarget | Nom de la fenêtre destinataire de l'hyperlien. Par défaut _self. | hyperlien valide |
| global | Mettre à yes si le lien n'a pas de relation directe avec un document particulier. Dans ce cas, le menu apparaîtra aussi dans le menu 'outils' des applications issues de GENERIC. Ce menu apparaîtra aussi dans le menu contextuel du document famille. | pour les attributs de type menu |
| onlyglobal | Mettre à yes si option est déjà global et si vous ne voulez pas que le menu n'apparaisse pas dans le menu contextuel du document mais uniquement dans le menu 'outils' des applications issues de GENERIC. | pour les attributs de type menu |
| lconfirm | Mettre à yes pour afficher un message de confirmation avant l'activation du lien | pour les attributs de type menu |
| mwidth | Largeur de la fenêtre destinataire de l'hyperlien. Par défaut 400px. | pour les attributs de type menu ou action (version >= 2.9.6) |
| mheight | Hauteur de la fenêtre destinataire de l'hyperlien. Par défaut 300px. | pour les attributs de type menu ou action (version >= 2.9.6) |
| eltitle | Texte affichable surgissant sur le bouton généré par l'extra-lien. | extra-lien valide |
| elsymbol | Caractère symbolique affiché sur le bouton généré par l'extra-lien. | extra-lien valide |
| eltarget | Nom de la fenêtre destinataire sur le bouton généré par l'extra-lien. | extra-lien valide (version >= 2.9.6) |
| batchfolder | Mettre à yes' si l'action défini doit être appliqué sur tous les éléments du dossier | Pour les attributs de type action. Uniquement dans le cadre de famille hérités de dossier |
| version | Mettre à 'yes' pour indiquer que la valeur de l'attribut fait partie de la composition de la version | |
| cwidth | largeur de la colonne pour des attributs présents dans un tableau peut être exprimer en pixel (100px) ou en poucentage (30%) | pour les attributs de tableaux |
| editheight | hauteur de la zone d'édition : (400px par exemple) . Les valeurs exprimées en pourcentage ne sont pas possibles. | pour les attributs de type htmltext |
| toolbar | référence de la barre de menu. | pour les attributs de type htmltext. Soit Simple (le défaut), Basic (juste gras et souligné), Default (complet). |
| toolbarexpand | indique si la barre de menu doit être repliée ou non. Mettre à 'yes' (par défaut) pour la voir. Mettre à 'no' pour la replier | pour les attributs de type htmltext. |
| align | alignement horizontal pour les cellules de tableau. Valeur possible left, right, center, justify | uniquement pour les attributs insérés dans un tableau. |
| color | couleur du texte pour les cellules de tableau. Soit #RRGGBB soit nom de couleur (red,yellow,…) | uniquement pour les attributs insérés dans un tableau. |
| bgcolor | couleur du fond des cellules de tableau. Soit #RRGGBB soit nom de couleur (red,yellow,…) | uniquement pour les attributs insérés dans un tableau. |
| height | hauteur du corps du tableau. En pixel uniquement (pas de pourcentage). Si le corps du tableau dépasse la hauteur spécifiée, un ascenseur vertical apparaitra :!:Ne fonctionne qu'avec firefox | uniquement pour les attributs de type tableau. (version >= 2.8.1) |
| iwidth | largeur des images affichées pour la vue par défaut (défaut 80px). Les valeurs doivent être exprimées en pixel uniquement (ex: '100px'). Si la valeur est 'auto', l'image sera affichée à sa taille originale | uniquement pour les attributs de type image. |
| vlabel | visualisation du libellé en consultation et en édition [left¦up¦none]. left par défaut affiche le libellé à gauche de la valeur. up l'affiche dessus en souligné. none ne l'affiche pas. Dans le cas de up et none, la valeur de l'attribut prend la largeur de la fenêtre affichée. | version ≥ 2.7.0. |
| showempty | En consultation, voir le libellé de l'attribut même si sa valeur est vide. Par exemple showempty=RIEN pour afficher RIEN s'il n'y a pas de valeur. Pour afficher juste le libellé mettre simplement un espace comme valeur showempty= | version ≥ 2.7.4. |
| boolcolor | En consultation, au lieu d'afficher le libelle, un carré de couleur est affiché. Exemple : boolcolor=red,green va afficher un carré rouge si pas coché et un carré vert si coché | version ≥ 2.8.1 |
| autosuggest | En édition, sur une aide à la saisie, indique que la recherche est lancée à chaque modification du texte saisi. (par défaut yes). Mettre à no pour désactiver l'auto-suggestion | version ≥ 2.9.1 |
| search | Indique si l'attribut est recherchable. Mettre à 'no' (par défaut yes) indique que l'attribut ne fera pas l'objet d'une indexation plein texte. | version ≥ 2.9.3 - Limité au type file |
| inline | Indique si l'image doit être affichée dans la navigateur (mettre inline=yes). Par défaut inline=no. | version ≥ 2.9.4 - Limité au type image |
| rn | Méthode renommage d'un fichier. Le fichier est renommé lors du transfert du fichier sur le serveur. La syntaxe est par exemple rn=::myNewName(). myNewName est une méthode de l'objet documentaire qui retourne une chaine de caractères.Le premier argument de la méthode est le nom du fichier téléchargé. Il est recommandé que la méthode fournisse une extension compatible avec le type mime pour l'utilisation ultérieure sur le poste client et les transformations. (pour récupérer l'extension d'un nom de fichier vous pouvez utiliser la fonction getFileExtension de la librairie Lib.FileMime.php) | version ≥ 2.11.1 - Limité aux types file et image |
| isuser | Sert à indiquer à l'interface d'accessibilité des profils quels sont les identificateurs qui peuvent être pris en compte. Ceci sert à filtrer les liens vers des documents qui ne sont pas des utilisateurs ou des groupes d'utilisateurs Mettre isuser=yes pour indiquer l'usage dans les profils dynamiques | version ≥ 2.11.3 - Limité au type docid |
| htmlclean | Nettoie les balises de fonts, de style etc. qui sont généralement issu d'un copier/coller (syntaxe : htmlclean=yes) | version ≥ 2.11.3 - Limité au type htmltext |
| firstopen | Indique que cet onglet doit être sélectionné à l'ouverture du document (consultation et rédaction). | version ≥ 2.11.6 - Limité au type tab |
| empty | Indique que le tableau s'il est vide ne doit pas afficher la première rangée.empty=yes | version ≥ 2.11.8 - Limité au type array |
| sorttable | Indique que le tableau est triable L'utilisateur peut clique sur les entête de tableau pour trier sorttable=yes | version ≥ 2.11.8 - Limité au type array |
| mselectsize | Indique le nombre d'items présentés pour les attributs énumérés multiples. Par défaut 3 | version ≥ 2.11.11 - Limité au type enum multiple sans option eformat |
| multiple | Indique si un énuméré est à choix multiple (anciennement enumlist). Ceci est applicable aussi aux types docid typé afin d'indiquer la possibilité de lier plusieurs documents d'une même famille Mettre multiple=yes | version ≥ 2.11.11 - Limité aux types enum et docid |
| bgcolor | Indique si la couleur de fond d'un cadre. cela peut être une couleur simple (exemple : yellow) ou une couleur exprimée en RGB hexadécimal (exemple #FF335A) | version ≥ 2.11.13 - Limité au type frame |
| doctitle | Pour les attributs relation, indique si un attribut contenant le titre du document pointé par le lien doit être créé automatiquement. Si doctitle=auto le nom de l'attribut titre sera le nom de l'attribut relation suivi de '_title'. Sinon le nom sera celui précisé dans la valeur de l'option doctitle | version ≥ 2.11.13 - Limité au type docid |
| preventfilechange | Pour les attributs fichiers, cela ajoute une contrainte pour que le fichier à remplacer provienne de la dernière version du serveur. Cela ne bloque pas un changement de fichier mais cela averti l'utilisateur dans le cas où le fichier ne correspond pas à cette dernière version Cela implique aussi que lors du téléchargement du fichier un code identifiant la version est ajouté dans le nom du fichier (exemple todo{i47307-56}.ods pour le fichier todo.ods) Mettre preventfilechange=yes pour activer cette option | version ≥ 2.12.9 - Limité aux types file et image |
| offline | Pour les attributs fichiers, cela permet d'inhiber une synchronisation avec l'outil freedom-offline. Par défaut tous les fichiers présents dans une famille sont synchronisés. Mettre offline=no pour ne pas synchroniser le fichier | version ≥ 2.14 - Limité aux types file et image |
| docrev | Pour les attributs docid, si docrev=latest, cela indique que la relation pointe vers la dernière révision document (ceci est la valeur par défaut). Dans ce cas ce sera l'initid du document pointé qui sera stocké en base Si docrev=fixed, cela sera l'id de la dernière révision au moment de l'appel qui sera affecté. Si docrev=state(keystate) alors le lien portera vers le document à l'état keystate. L'aide à la saisie filtrera aussi sur les documents à cet état | version ≥ 3.0 - Limité aux types docid en visibilité W |
exemple : esize=3|elabel=saisissez votre prénom
Pour modifier la définition d'un attribut d'une famille mère, on utilisera MODATTR au lieu de ATTR. Cela indique que toute propriété non valué aura la valeur de l'attribut défini dans la famille mère.
A reprendre (obsolète)
La définition d'un attribut option est identique à celle d'un attributs normal. Il suffit de mettre OPTION dans la première colonne au lieu de ATTR.
| // | idattr | idframe | label | T | A | type | ord | vis |
|---|---|---|---|---|---|---|---|---|
| OPTION | USGATE_URL | SGATE_FR_PARAM | url | N | N | text | 60 | W |
| // | idattr | idframe | label | T | A | type | ord | vis | Need | Link |
|---|---|---|---|---|---|---|---|---|---|---|
| ATTR | GGATE_IDSERV1 | GGATE_FR_SERV1 | id service | N | N | docid | 10 | N | ||
| ATTR | GGATE_SERV1 | GGATE_FR_SERV1 | service | N | N | text | 10 | N | %S%app=FDL&action=IMPCARD&id=%GGATE_IDSERV1%&opt=%GGATE_IDENT1% | |
| ATTR | GGATE_IDENT1 | GGATE_FR_SERV1 | l'option | N | N | option (“GGATE_IDSERV1”) | 30 | N |
Ces attributs sont utilisables par les documents qui référencent les documents avec options à l'aide des attributs de type 'option'. Ne pas confondre les attributs normaux de type 'option' qui référence des options avec les attributs 'option' qui définissent les possibles options du documents lors du lien.
Copie d'attributs d'une frame d'une autre familles.
| famille portail | id | class | name | ||
|---|---|---|---|---|---|
| BEGIN | DIR | dossier événements | SCALENDAR | ||
| TYPE | C | ||||
| idattr | idframe | id famille | |||
| IATTR | DCAL_FR_PRESENT | DCALENDAR | |||
| END |
Cette exemple copie les attributs et le frame DCAL_FR_PRESENT de la famille DCALENDAR dans la famille SCALENDAR que l'on défini. Cela est utile dans la cas de ressemblance de famille mais sans héritage souhaité.
La définition d'un paramètre est identique à celle d'un attribut normal. Il suffit de mettre PARAM dans la première colonne au lien de ATTR.
| // | idattr | idframe | label | T | A | type | ord |
|---|---|---|---|---|---|---|---|
| PARAM | WSGAT_FR_PAR | météo | N | N | frame | 10 | |
| PARAM | WSGATE_URL | WSGAT_FR_PAR | url site météo | N | N | text | 20 |
Les valeurs par défaut sont déclarées à l'aide du mot-clef DEFAULT dans la première colonne.
| 1 | 2 | 3 |
| DEFAULT | SGATE_ACTION | GATE_WEATHER |
| DEFAULT | SGATE_IDRED | ::userDocId() |
| DEFAULT | SGATE_RED | ::getTitle(SGATE_IDRED) |
| DEFAULT | SGATE_DATE | ::getDate() |
| DEFAULT | SGATE_ARRAY | ligne1\nligne2\nligne3 |
Définition des colonnes :
Toutes définitions de familles doit ce terminer par le mot-clef END .
| END |
|---|
Remarque : Ensuite, après cette ligne, il est possible de définir une autre famille.
Vous trouverez dans ce chapitre des familles à importer dans Freedom. Le but est de vous familiariser dans la création de familles et vous donnant des exemples.
Pour importer ces familles, il faut suivre ce chapitre.
Mais en résumé, cette commande permet d'importer un document dans Freedom :
/usr/share/what/wsh.php --api=freedom_import --file=VotreFichier.ods
Le but de ce document est de décrire les étapes pour mettre en place un Workflow.
Dans Freedom un Workflow est appelé “Cycle de vie”.
Pour mettre en place un cycle de vie, il faut créer ou modifier plusieurs choses :
Dans ce document, nous allons décrire toutes les étapes nécessaires à la mise en place du cycle de vie ci-dessous :
Dans cet exemple, un document peut avoir 4 états :
Les transitions pour passer d'un état à un autre sont nommées :
Pour décrire ces états et ces transitions, il faut créer un fichier PHP comme indiqué au chapitre suivant.
Le fichier PHP définissant le cycle de vie, sera placé dans le dossier « /usr/share/what/FDL » Son nom sera sous la forme : « Class.WDocTestCycle1.php » correspond au nom de la classe de la famille de cycle de vie que nous allons créer au chapitre suivant. Voici le contenu de ce fichier qui permet de définir notre cycle de vie :
<?php include_once("FDL/Class.WDoc.php"); Class WDocTest extends WDoc { var $attrPrefix="WDT"; var $firstState="wdt_Draft"; var $transitions = array("wdt_Approvement"=>array(), "wdt_Correction"=>array(), "wdt_Chechin"=>array(), "wdt_Destroy"=>array()); var $cycle = array(array("e1"=>"wdt_Draft", "e2"=>"wdt_Approved", "t"=>"wdt_Approvement"), array("e1"=>"wdt_Approved", "e2"=>"wdt_Check", "t"=>"wdt_chechin"), array("e1"=>"wdt_Approved", "e2"=>"wdt_Draft", "t"=>"wdt_Correction"), array("e1"=>"wdt_Draft", "e2"=>"wdt_Obsolete", "t"=>"wdt_Destroy"), array("e1"=>"wdt_Approved", "e2"=>"wdt_Obsolete", "t"=>"wdt_Destroy")); } ?>
Commentaires sur les variables :
Attention :
Il n'est pas possible de créer une famille cycle de vie dans Freedom. Il faut donc créer cette famille dans OOo et l'importer dans Freedom. Vous trouverez dans ce fichier la définition de cette famille :
| // | héritage | titre | id | class | name |
|---|---|---|---|---|---|
| BEGIN | WDOC | Test Cycle | WDocTest | TestCycle | |
| ICON | cycle.gif | ||||
| TYPE | C | ||||
| USEFOR | W | ||||
| END |
Dans ce paramétrage, la seule chose vraiment importante est le nom de la classe et donc du fichier PHP à utiliser. Dans notre cas, c'est « WDocTest »
Pour importer dans Freedom ce fichier (wtest.ods) OpenOffice.org contenant la définition de la famille, il faut se rapporter à la documentation concernant l'importation de familles. Mais en résumé, cette commande, permet d'importer cette famille dans Freedom :
/usr/share/what/wsh.php --api=freedom_import --file=wtest.ods
Remarques :
Une fois la famille importée, il faut créer un document basé sur cette famille. Ce document apparaîtra dans la liste des cycles de vie disponible. C'est sur ce document qu'il sera possible d'affecter un profil et donc des droits différents en fonction des besoins.
Voici comment créer ce document :
Une fois ce document créé, il est possible de voir graphiquement le cycle de vie en cliquant sur le 'Voir le graphe' :
Remarque :
Le cycle de vie créé doit être associé à une famille de document.
Pour affecter un cycle de vie à une famille, il faut :
Une fois le cycle choisi, les document de cette famille sont lié à ce nouveau cycle. Si des documents de cette famille étaient déjà liés à un autre cycle, ceux-ci ne sont impactés par ce changement.
Remarque : Il est possible d'utiliser un même cycle de vie pour plusieurs familles de documents.
L'initialisation du cycle de vie permet de réinitialiser les attributs du cycle. Ceci est nécessaire lors de la première édition ou lors du modification du fichier de définition du cycle (classe documentaire). ensuite en éditant ce dernier de sélectionner :
Pour initialiser un cycle de vie, il faut :
Une fois le cycle de vie initialisé, des attributs correspondants aux états sont ajoutés à la famille du cycle de vie.
Pour voir ces attributs ajoutés, il faut :
ATTENTION : Il est conseillé d'initialiser le cycle de vie une fois les états et transitions figés car ensuite, il n'est plus possible de supprimer les attributs ajoutés à la famille du cycle de vie.
L'affectation d'un profil au document cycle de vie permet d'affecter des droits différents pour chaque étape de ce cycle. Pour cela, il faut :
* Il faut sélectionner les cases à cocher en fonction de vos besoins et valider
Pour plus d'information sur la gestion des profils, il faut suivre la documentation correspondante.
Pour plus d'explications sur la modification des droits du profil, il faut suivre la documentation sur les profils
Remarques :
Avant de tester le cycle de vie, il faut affecter des droits différents à au moins deux utilisateurs au niveau du profil et voir comment évolue le document en fonction des états. En fonction de l'état du document et de l'utilisateur, les boutons permettant de passer d'un état à un autre sont modifiés.
Pour tester le cycle de vie il faut simplement créer un nouveau document basé sur la famille utilisant ce cycle de vie.
Remarque : L'administrateur de Freedom a toujours accès à tous les boutons de changement d'état quelque soit le paramétrage du cycle de vie.
Pour gérer encore plus finement les droits, il est possible d'affecter un profil différent sur chaque étape du cycle de vie.
Pour cela, il faut créer un profil différent pour chaque étape du cycle de vie. Pour créer un profil, il faut suivre cette documentation.
Ensuite, il faut modifier le document cycle de vie et affecter les profils aux différents états
Remarque : Cela est possible seulement si le cycle de vie à été initialisé comme indiqué dans un chapitre précédent.
Pour identifier plus facilement dans quel état est le document, il est possible d'affecter des couleurs différentes pour chaque état du cycle de vie. Pour cela, il faut :
Une fois les couleurs définies, voici le résultat obtenu dans les différents écrans :
En fonction de l'état du document il est possible d'afficher ou masquer certains champs en appliquant un masque différent à chaque étape.
Pour créer un masque, il faut :
Pour affecter un masque sur une étape du cycle de vie, il faut :
Remarque : Pour retrouver facilement la liste des masques de saisie, il est possible de sauvegarder une recherche simple basée sur la famille “masque de saisie”
Si le masque ne suffit pas pour renseigner différentes parties du document, il est possible d'associer un contrôle de vue par état. Le contrôle de vue permettra d'avoir des masques différents par états. Le profilage de chaque contrôle de vue permettra d'appliquer différent masques suivant l'utilisateur.
Version 2.11.12
Les états du cycle définissent l'état du document à un moment donné. Il sont définis par des adjectifs comme 'validé', 'archivé', 'contrôlé'. Pour chacun de ces états, une activité peut être définie afin d'indiquer ce que doit faire celui qui a en charge du document. Cette activité peut être par exemple 'rédaction','vérification','à confirmer'.
Les activités peuvent être notées dans les attributs 'activité' du cycle de vie. Ils peuvent ainsi être différent par instance de cycle. Ils peuvent aussi être définis dans la classe du cycle, dans ce cas les attributs seront non modifiable par l'interface.
Dans l'exemple ci-dessous, pour l'état 'validé' nous avons défini l'activité 'en cours d'archivage'.
Lorsqu'on a défini une activité, on peut aussi définir qui doit faire l'activité. Bien qu'une activité puisse être réalisée à plusieurs, un seul responsable peut être désigné. Un document ne peut être affecté qu'à un seul utilisateur à la fois.
On peut récupérer l'acteur à partir d'attribut relation (type 'docid') référençant un utilisateur. Cet attribut peut être récupéré à partir du document (attribut ou paramètre de famille) ou à partir du cycle (attribut ou paramètre de famille du cycle). Dans l'exemple ci-dessus, le documentaliste sera affecté comme responsable lorsque le document passera dans l'état archivé. Si vous cochez “auto-verrouillage” le document sera verrouillé pour l'acteur. Si vous cochez “courriel automatique”, un courriel d'affectation sera envoyé à l'acteur au moment du changement d'état.
Une fois l'utilisateur affecté, il peut ré-affecter le document s'il a le droit d'éditer le document. Dans ce cas le menu “ré-affecter” apparaîtra sur le document. L'affectation est une des propriétés du document. On retrouvera la personne responsable lorsqu'on consulte les propriétés du document. Pour connaître la liste des documents qui vous sont affectés on peut utiliser le service portail “mes documents affectés” depuis l'application portail. Ce service utilise la recherche 'MY_AFFECT_DOCS' qui peut être utilisés aussi dans la gestion documentaire et comme flux RSS.
Pour aller plus loin dans l'utilisation des cycles de vie, il faut suivre le chapitre correspondant dans le manuel de programmation.
Dans la définition des étapes et des transitons d'un cycle de vie, nous avons vu qu'il n'était pas possible de mettre des espaces et des caractères accentués dans les noms.
En effet, ces noms sont utilisés comme attributs de la famille cycle de vie. Ils correspondent également aux noms des champs de la table dans la base de données.
Le but de ce document est donc d'expliquer comment utiliser la localisation pour traduire ces attributs en textes plus complet dans la langue de votre choix (en français ou en anglais)
Voici l'exemple de cycle que nous allons réaliser dans ce document :
Avoir déjà mis en place un cycle de vie simple comme indiqué dans cette documentation :
Pour ce document, nous allons mettre en place un cycle de vie très simple avec seulement deux étapes et deux transitions.
Attention : Les lignes en commentaire avec les _() et N_() sont importantes car ce sont elles qui nous permettrons de localiser les textes dans les différentes langues (français et anglais)
<?php include_once("FDL/Class.WDoc.php"); define ("i18n","i18n"); Class WDocTest extends WDoc { public $attrPrefix="WDT"; public $firstState="wdt_Draft"; public $transitions = array("wdt_Approvement"=>array(),# _("wdt_Approvement") _("wdt_Correction") _("wdt_Chechin") "wdt_Correction"=>array(), "wdt_Chechin"=>array(), "wdt_Destroy"=>array()); public $cycle = array(array("e1"=>"wdt_Draft", # _("wdt_Destroy") _("wdt_Draft") _("wdt_Approved") _("wdt_Check") _("wdt_Obsolete") "e2"=>"wdt_Approved", "t"=>"wdt_Approvement"), array("e1"=>"wdt_Approved", "e2"=>"wdt_Check", "t"=>"wdt_Chechin"), array("e1"=>"wdt_Approved", "e2"=>"wdt_Draft", "t"=>"wdt_Correction"), array("e1"=>"wdt_Draft", "e2"=>"wdt_Obsolete", "t"=>"wdt_Destroy"), array("e1"=>"wdt_Approved", "e2"=>"wdt_Obsolete", "t"=>"wdt_Destroy")); function postConstructor() { $this->stateactivity=array("wdt_Draft"=>N_("writting"), "wdt_Approved"=>N_("check in")); } } ?>
La première étape consiste à récupérer le contenu des constantes du fichier .php précédent pour générer un nouveau fichier .po qui nous permettra de renseigner les traductions :
# xgettext --keyword='N_' --language=c --keyword='_' -j -o test_fr.po Class.WDocTest.php
Ensuite, il faut éditer ce fichier texte « .po », indiquer le bon encodage sur la ligne « Content-Type » et ajouter les traductions. Exemple :
msgid "" msgstr "" "Project-Id-Version: TEST\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-01-02 23:42+0100\n" "PO-Revision-Date: 2009-01-02 23:56+0100\n" "Last-Translator: me\n" "Language-Team: french <LL2@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: Class.WDocTest.php:10 msgid "wdt_Approvement" msgstr "Approbation" #: Class.WDocTest.php:10 msgid "wdt_Correction" msgstr "Correction" #: Class.WDocTest.php:10 msgid "wdt_Chechin" msgstr "Archivage" #: Class.WDocTest.php:15 msgid "wdt_Destroy" msgstr "Destruction" #: Class.WDocTest.php:15 msgid "wdt_Draft" msgstr "Initialisé" #: Class.WDocTest.php:15 msgid "wdt_Approved" msgstr "Validé" #: Class.WDocTest.php:15 msgid "wdt_Check" msgstr "Archivé" #: Class.WDocTest.php:15 msgid "wdt_Obsolete" msgstr "Obsolète" #: Class.WDocTest.php:31 msgid "writting" msgstr "En rédaction" #: Class.WDocTest.php:32 msgid "check in" msgstr "En cours d'archivage"
Remarques : * Pour mettre en place une traduction en anglais, il faut créer un deuxième fichier .po et indiquer les traductions en anglais.
Il faut commencer par convertir le fichier texte « .po » en fichier binaire « .mo » :
# msgfmt test_fr.po -o /usr/share/what/locale/fr/LC_MESSAGES/test.mo
Remarque : La commande « msgunfmt » permet de faire l'inverse :
# msgunfmt fichier.mo -o fichier.po
Remarque : Pour mettre en place une traduction en anglais, il faut utiliser le dossier “locale/en/LC_MESSAGES/”
Assembler les différents fichiers « .mo » dans « what.mo » utilisé par Freedom :
# /usr/share/what/whattext
Recharger Apache :
# /etc/init.d/apache2 reload
Remarque : Le cycle de vie doit apparaître traduit immédiatement.
Pour avoir le graphe en anglais, on procède de la même façon en copiant le fichier de traduction dans le répertoire “locale/en/LC_MESSAGES/”.
Pour avoir l'interface de Freedom en anglais pour tout les utilisateurs, il faut modifier ce paramètre :
Pour avoir l'interface de Freedom en anglais pour un utilisateur particulier, il faut modifier ce paramètre :
Remarques :
Version > 2.11.12
Il est possible de paramétrer le cycle par l'interface afin d'envoyer des courriels lors d'un changement d'état. Les courriels peuvent être définis pour un état ou pour une transition. Si on associe un ou plusieurs courriels à un état, ils seront envoyés à chaque fois qu'un document aura ce nouvel état (quel que soit la transition). Les courriels liés aux transitions seront envoyés lors du passage de la transition.
Soit un document basique associé au cycle de test. Nous prenons comme exemple la famille déclarée dans le fichier wbasictest.ods.
Cette famille est associée au cycle 'Cycle de test' défini dans le fichier Class.WDocTest.php - à mettre dans le répertoire '/usr/share/what/FDL' du serveur (voir Création de cycle pour plus de détail).
Voici le document de test en édition. Il comprend un rédacteur et un valideur.
Le but est d'envoyer un courriel pour avertir le documentaliste d'archiver le document lorsque celui-ci est validé (passage à l'état validé).
Pour cela on édite le cycle de test et clique sur le '+' de l'attribut 'Modèle de courriel Validé'. Cela affiche le document suivant :
Le modèle de courriel permet de définir l'émetteur, les destinataires et le corps du message.
L'émetteur doit faire référence à une adresse email valide. Si l'émetteur reste vide, c'est l'adresse de l'utilisateur qui fait la transition qui sera utilisée.
Plusieurs possibilités de choix de l'émetteur sont possibles:
La définition des destinataires se fait comme pour l'émetteur. Vous pouvez choisir ensuite le mode d'envoi :
Le sujet est un texte libre. Il peut contenir des parties variables issues du document qui va être envoyé. On notera les attributs (en majuscules) entre crochets. Exemple [BT_APPROVDATE] si le document à un attribut 'BT_APPROVDATE'. La partie entre crochets sera remplacée par la valeur de l'attribut.
Le corps du messages est un texte HTML. Il peut contenir des parties variables qui sont les attributs du document et les paramètres de transitions du cycle. Ces parties variables peuvent être notées de 2 formes :
Concrètement, par exemple, la valeur brute d'un énuméré sera la clef, la valeur formaté sera la traduction du libellé. Le barre de menu de l'éditeur de texte propose les différentes possibilités pour les attributs formatés du document. Le commentaire de transition peut être récupéré par le mot clef '[WCOMMENT]'. Les propriétés du document peuvent aussi être affichée : [ID] [TITLE] [CDATE]. Par contre, les [V_ID] ne sont pas possibles; ce ne sont pas des attributs. Seul [V_TITLE] est possible pour afficher un lien vers le document.
Si on utilise les valeurs formatées, des hyperliens peuvent apparaitre dans le courriel à destination du serveur d'envoi. Si vous ne souhaitez pas avoir de liens il faut décocher la case 'avec liens'. Ceci est à faire si vous destinez votre courriel à des personnes extérieures à votre système d'information.
Tout mail sans corps ne sera pas envoyé.
Les fichiers attachés font référence à des attributs de type fichier (ou image) du document. Les fichiers seront alors en pièce jointe du courriel. Bien sûr ces attribut peuvent être des listes de fichiers (attribut fichier ou image dans un tableau).
Depuis la version 2.14.2 de freedom, vous pouvez conserver l'enregistrement du message envoyé. Celui-ci sera stocké dans la famille “message envoyé”. Son profil sera celui du document servant à l'envoi. Pour stocker le message il faut cliquer sur le champ “Enregistrer une copie”.
Une fois le modèle de courriel créé, il faut l'associer au cycle (utiliser les '…' pour sélectionner le modèle. Les envois de courriel sont visibles dans le graphe du cycle avec l'option 'avec les traitements'.
Les modèles de courriels peuvent être associés à un état ou à une transition. Lorsqu'on mets le courriel sur un état il sera envoyé dès que le document changera vers cet état, même si la transition est non définie (cas possible lorsque l'utilisateur 'admin' utilise le cycle).
Version > 2.11.12
Les minuteurs (“timers” in english language) permettent de déclencher des actions sur des documents à des moments définis.
Le minuteur dans le cadre du cycle de vie va permettre par exemple de donner une durée limite pour l'activité à réaliser dans un état défini.
Exemple : “vous avez une semaine pour valider ce contrat sinon il sera automatiquement déclaré comme obsolète.”
Nous reprenons ici le même cycle que pour les paragraphes précédents.
Pour mettre en place l'exemple, nous allons créer un minuteur qui fera un changement d'état vers “obsolète” 7 jours après le passage en “initialisé” (ou ici dès que le document est créé).
Pour avertir le rédacteur, nous allons l'avertir 3 jours avant en lui précisant qu'il faudrait y penser et ensuite un jour avant, avec en copie le valideur, avant afin qu'il finisse son travail (non non on lui mets pas la pression
).
Pour faire cela nous allons créer un minuteur. Nous éditons le cycle et avec le bouton ”+” de l'attribut “Minuteur Initialisé”.
Nous pouvons indiquer les actions à faire une fois que le minuteur sera attaché au document. Trois types d'actions sont possibles :
Lors d'un changement d'état le minuteur associé à l'état précédent est enlevé. S'il y a un autre minuteur pour l'état suivant il sera activé. Le minuteur peut être mis sur un état ou sur une transition.
Pour associer un minuteur à un état, il faut éditer le cycle de vie et renseigner les attributs minuteurs dans le cadre état ou dans le cadre de la transition voulu. Sur les transitions, les minuteurs “persistants” ne sont pas détachés de manière implicite lors d'un changement d'état. Ils sont détachés lorsqu'ils sont indiqués dans les attributs “Minuteur à détacher”. Ceci permet de lancer des actions qui peuvent durer sur plusieurs transitions.
Lorsqu'un niveau est exécuté (le délai est écoulé), le niveau suivant (rangée suivante du tableau 'configuration') est armé s'il existe. Il est possible de faire des répétitions. Je veux envoyer le même courriel tous les jours pendant 7 jours. Pour faire cela on mettra le nombre d'itérations à 7.
S'il n'y a plus de niveau le minuteur est détaché du document.
Dans notre exemple, nous avons associé le minuteur à l'état “initialise”. Dès que l'on crée un document “test de base”, le minuteur sera activé.
Si l'on regarde l'historique après la création de notre document nous y voyons l'affectation du minuteur.
version > 2.13.12
La date de déclenchement de la première action peut être liée à un des attributs de type 'date' ou 'timestamp' du document auquel est attaché un timer. Ainsi, on peut indiquer que le changement d'état vers 'diffusée' sera exécuté à la date marquée dans l'attribut 'sert_testdate'. Si on veut que ce soit 3 jours après cette date, il faudra ajouter au document un attribut 'sert_threedayafter' qui sera calculé en fonction de 'sert_testdate'.
L'interface d'administration des minuteurs est disponibles à partir de l'application 'Administration'.
Lorsque l'on clique sur le titre d'un document, cela affiche les prochaines actions qui vont être exécutées.
Cela affiche par ordre chronologique les prochaines actions qui vont s'exécuter. freedom vérifie toutes les 5 minutes les minuteurs qui doivent être exécuté. L'heure d'activation a donc une précision de 5 minutes. Si l'heure d'activation est dépassé de plus de 2 heures (paramètre FDL_TIMERHOURLIMIT) le minuteur sera ignoré.
Cela affiche les actions, issus de minuteurs, déjà exécutés. Il sont ordonnés par ordre chronologique d'éxecution.
Liste les minuteurs qui aurait due se déclencher depuis plus de 2 heures (FDL_TIMERHOURLIMIT). Cela peut arriver si le serveur a été arrêté pendant plus de 2 heures. Le paramètre applicatif FDL_TIMERHOURLIMIT est modifiable avec l'application de paramétrage :administration/paramètre de configuration/paramètres applicatifs/Bibliothèque freedom.
Permet d'effacer les traces des minuteurs déjà exécutés depuis un certain nombre de jours. Ce nombre de jour est par défaut de 7. Il peut être modifié dans la zone de saisie contigüe. Le nettoyage prend en compte le filtre sur les documents : ne seront nettoyer que ceux dont le titre contient le filtre.
Cela permet d'annuler des minuteurs actifs. Si le filtre est vide tous les minuteurs seront annulés. Si le filtre n'est pas vide seul les minuteurs attachés aux documents filtrés seront pris en compte.
Expliquer comment mettre en place un cycle de vie de publication de documents classique du genre « Bouillon → Validé » mais avec la possibilité de repasser à l'état brouillon tout en laissant la dernière version validée accessible aux utilisateurs.
Voici les règles de fonctionnement que devra respecter notre famille de documents :
Notre cycle de vie aura donc deux états avec deux profils associés :
Droits sur les changements d'états :
Au final, il faut donc :
Un rapport pour le groupe « Lecteur » permettra de consulter la liste de tous les documents à l'état « Publié » et d'y accéder. Un autre rapport pour le groupe « Rédacteur » permettra d'accéder aux documents à l'état « Brouillon »
Envoi d'un mail Un mail sera envoyé aux personnes du groupe « Lecteurs » lors de la publication du document.
Voici la liste des documents à installer :
Une fois le fichier OOo importé, vous devriez avoir dans le dossier “Freedom Master / Publication”, les fichiers suivant :
Remarques :
L'administrateur a en charge de définir les profils de création associés aux familles.
Afin de spécifier de manière globale l'ensemble des profils, vous pouver vous aider du fichier suivant :definition_droits_familles.ods
Quatre familles de profils sont définies :
Les droits définis sont :
| Nom interne | Description | Description longue | Pour |
|---|---|---|---|
| view | voir | Voir les caractéristiques du document, du dossier ou de la recherche. Le fait de ne pas voir un dossier n'implique pas de ne pas voir les documents contenus dans le dossier. | DFR |
| edit | éditer | Modifier les caractéristiques du document, du dossier. Les recherches ne sont pas modifiables. | DF |
| delete | supprimer | Supprimer le document, le dossier, la recherche; c'est à dire le mettre à la poubelle. | DFR |
| send | envoyer | Envoyer par email le document. | D |
| unlock | déverrouiller | déverrouiller le document. | DFR |
| viewacl | voir les droits | Voir les droits du document. | DFR |
| modifyacl | modifier les droits | Modifier les droits du document. | DFR |
| open | ouvrir | Ouvrir le dossier. Permet de voir le contenu du dossier | F |
| modify | modifier | Modifier le contenu du dossier. Permet d'ajouter ou de supprimer des documents dans le dossier. | F |
| execute | executer | Permet d'exécuter la recherche. | R |
| create | créer | Autorise la création de document de cette famille. | C |
| icreate | créer manuellement | Autorise la création de document de cette famille à partir de l'interface. Si ce droit n'est pas mis est que create est mis, l'utilisateur ne pourra créer le document que de manière indirecte (soit sur une transition, soit sur toutes autres actions particulière mis en place par l'administrateur). Sans ce droit les menus de création de cette famille sont inaccessibles. Si ce droit est mis il faut que le droit 'create' soit aussi mis. | C |
| confidential | voir document confidentiel | Permet d'utiliser normalement un document qui est confidentiel. (Confidentiel est une propriété de document). | DFR |
| forum | poster sur un forum | Autorise le post sur un forum de document (utilisateur n'ayant pas le droit d'édition). | DF |
D pour document, F pour dossier (folder), R pour recherche et C pour Famille (classe)
Le moyen de création et de modification des profils est décrit dans le manuel utilisateur. Nous décrirons dans ce manuel la méthode de création de profil.
Le but du profil est de décrire un ensemble de droits pour les groupes de travail de l'entreprise. Les groupes de travail doivent représenter des groupes fonctionnels (groupe des achats, groupe commercial, groupe invité, groupe administration) et peuvent être déclarés de manière hiérarchique : le groupe direction commerciale est un sous groupe du groupe commercial.
Pour que les profils soient utilisées de manière optimum, il est conseillé de ne travailler les profils que sur les groupes et non sur les personnes. Les droits des personnes doivent être déduits de leurs groupes d'appartenances. Si les droits sont bien placés pour chaque groupe, il suffit de placer les personnes dans les groupes pour changer leur droits. Il n'est alors plus nécessaire de modifier les profils.
Pour placer les droits nous vous conseillons de remplir un tableau comme celui-ci pour chaque droit :
| Droit Voir (view) | ||||
|---|---|---|---|---|
| Groupes/Familles | Fichier | Contrat | Facture | Personne |
| défaut | | | | + |
| - administrateur | | + | + | o |
| - commercial | | + | | o |
| - - direction commerciale | | o | + | o |
| - achat | | | + | o |
| invité | | | | + |
Les cellules vertes (+) représentent les droits ajoutés, les cellules grises (o) représentent les droits déduits suivant la hiérarchie des groupes. Ici, on a décidé que la famille fichier n'avait pas de droit par défaut donc chaque nouveau document de la famille fichier est accessible de tout le monde. Le groupe achat a le droit de voir les factures et les personnes (du fait de l'appartenance au groupe défaut). Par contre il n'a pas le droit de voir les contrats. On peut aussi utiliser des cellules rouges (-) pour indiquer les restrictions de droits.
Une fois les tableaux remplis il suffit de créer un profil par famille avec les droits indiqués dans les cellules vertes (et rouges). Si des familles ont la même définition de profil, on peut associer le même profil à ces familles. Le but est d'avoir le moins de profil possible pour simplifier les modifications ultérieures.
Normalement pour changer les droits d'une personne, il suffit de changer ses groupes d'appartenances<sup>2</sup>.
Bien sûr, il est toujours possible de modifier un profil pour une personne particulière si cette personne ne correspond à aucun groupe.
Pour affecter manuellement un profil à un document existant, il faut utiliser le menu :
Pour chaque famille, il est possible d'indiquer le profil à appliquer aux nouveaux documents de cette famille :
Pour chaque document de type dossier, il est possible d'indiquer le profil à appliquer aux nouveaux documents ajoutés au dossier :
Les profils dynamiques permettent de mettre des droits par rapport au contenu du document. Si un attribut est du type docid, et qu'il référence un document de la famille Utilisateur ou Groupe d'utilisateurs sa valeur peut être utilisée pour définir des droits sur le profil dynamique. Pour indiquer qu'un profil est dynamique, il suffit d'indiquer une famille dans le cadre dynamique lors de l'édition.

Dans l'exemple montré ci-dessus, on crée un profil pour la famille compte-rendu. Dans cette famille plusieurs attributs sont de type docid. Dans l'interface d'accessibilité ces attributs sont présentés en bas avec un bouton jaune pour les attributs qui ne sont pas dans un tableau; en orange pour ceux qui sont dans un tableau.

Tous les attributs de type docid sont présentés. Cependant seuls ceux qui font référence à un utilisateur ou à un groupe d'utilisateurs auront une pertinence dans le calcul des droits. Dans l'exemple ci dessus, l'attribut « id affaire » ne doit pas être pris en compte pour l'élaboration du profil.
Si l'attribut de type docid est dans un tableau, il ne peut pas être pris en compte dans le profil dynamique. (version < 2.11.3)
Depuis la version 2.11.3, le docid peut être dans un tableau. Les attributs visibles sont de type 'docid' et depuis la version 2.11.3 pensez à utiliser l'option d'attribut isuser pour ne pas prendre en compte l'attribut “id affaire” par exemple.
Si un profil n'a pas besoins de dynamique, il ne faut pas renseigner la famille dans le cadre dynamique car cela implique des calculs supplémentaires qui ne sont pas nécessaires.
Les famille cycle de vie définissent une famille de profil spécifique. Les droits des documents cycles de vie permettent de savoir qui a le droit d'effectuer les transitions. Ces droits sont applicables à tous les documents associés à ce document de cycle de vie.
Les droits d'un cycle de vie comportent cinq droits classiques (voir, éditer, supprimer, voir les droits et modifier les droits), et N droits portant sur les transitions. Ces droits sur les transitions sont définis lors de la programmation du cycle de vie<sup>3</sup>.
Lorsque l'utilisateur effectue un changement d'état, il ne peut choisir l'état suivant que parmis ceux dont il a le droit. Dans l'exemple ci-dessus, le droit vers qualifié doit être activé si l'utilisateur veut changer d'état vers qualifié. Si ce droit n'est pas accordé, le changement d'état n'est pas proposé. Pour placer les droits sur une famille cycle de vie, il faut se rapporter à sa fiche de description. Chaque cycle de vie décrit ces droits de transition particuliers en fonction de son cycle de vie.
Les profils par défaut ne sont pas applicables aux familles cycle de vie. Dans les documents cycle de vie un profil par état peut être défini. Le profil par défaut peut être considéré comme le profil associé à l'état initial du document. On modifie les profils du document en éditant le document cycle.
À chaque changement d'état, le profil associé est affecté au document. Si un état n'a pas de profil associé, le document conserve son profil courant.

Si le cycle contient des spécificités par rapport à une famille, c'est à dire qu'il contient des actions particulières utilisables seulement par une famille, il est nécessaire de spécifier cette famille. Ainsi le cycle ne pourra être associé qu'avec cette famille ou ses descendants.
Version 2.14.3
Afin de réaliser la mise en place des droits les plus courants, le document famille dispose d'une interface permettant d'accéder directement à la définition du paramétrage des droits.
Pour une famille sans cycle de vie par défaut vous avez accès aux droits pour le document famille et pour les documents de la famille.
Si vous n'avez encore effectué aucun profilage, les liens “initialisé les droits” apparaitrons. Si vous cliquez sur le lien concernant la famille cela va créer un profil de famille avec aucun droits positionnés hormis les droits pour celui qui vient de la faire. Le lien est alors remplacé par “modifier les droits”. Si vous cliquez dessus, l'interface de modification des droits apparait et vous pouvez affecter les différents droits aux groupes et utilisateurs.
De même pour les droits sur les documents. L'initialisation va créer un document profil qui sera activé avec aucun droit sauf pour l'utilisateur qui a créé le profil. Vous cliquez ensuite sur “modifier le profil” pour placer les droits des groupes et utilisateurs.
Si la famille a un cycle de vie par défaut, les différents profils associés aux états apparaitrons. Le profil par défaut des documents n'apparait pas car c'est le rôle du cycle d'imposer sa sécurité. Si vous vous voulez quand même mettre un profil par défaut, le menu “sécurité/changer le profil pour les nouveaux documents” est toujours accessible. Pour chacun des états vous pouvez “initialiser les droits” si aucun profil n'est déjà associé. Si le profil est déjà associé, vous pouvez alors le modifier ou le désactiver. La liste des états associés au profil est indiqué dans la liste (exemple “rédigé, publié”). Si vous voulez lier un profil à plusieurs état, il faudra passer par le cycle de vie pour le faire. Lorsqu'un profil est indiqué en rouge, cela signifie qu'aucun droits n'est positionné (tout le monde peut tout faire).
Cette interface ne donne pas accès à toutes les possibilités de mise en place de sécurités liées à une famille. Son rôle est de permettre à un administrateur d'accéder aux modifications ponctuelles de droits.
Le contenu d'un dossier ou le résultat d'une recherche peut être exporté dans un fichier au format CSV avec comme délimiteur le point-virgule.
L'export produit un fichier CSV (séparé par des point-virgules) ou un fichier archive (Zip) si vous avez sélectionnez avec les fichiers. Explications des options :
| option | signification |
|---|---|
| Encodage | Deux encodages sont proposés. Cela est nécessaire pour les valeurs textuelles qui comportent des accents. Si votre poste client est sur le système Windows et que vous voulez utiliser MicroSoft Excel, il est préférable de choisir Latin1. Sinon pour openOffice.org il est conseillé d'utiliser UTF-8. Lors d'une importation FREEDOM détecte automatiquement l'encodage et supporte correctement ces 2 encodages. |
| Profil | Cela est utile pour sauvegarder les profils associé à un document. Seuls les profils des documents avec profils dédiés (généralement les documents profils) sont exportés. Cette option est surtout utile lorsqu'un concepteur de famille veut récupérer son paramétrage profil. |
| Fichiers | L'option sans les fichiers indique que seul le fichier csv contenant les valeurs des attributs sera exporté. Les fichiers liés aux attributs de type file ou image ne sont pas exportés. L'option avec les fichiers indique que l'exportation génèrera un fichier archive de type Zip. Cette archive contiendra le fichier fdl.csv qui contient les valeurs des attributs et les fichiers attachées aux documents exportés. Cette archive peut être réimporté à l'importation d'archive de FREEDOM (Voir ci après). Pour des raison de compatibilité avec les différents systèmes d'exploitations les noms des fichiers exportés ne comportent pas d'accents |
| Identificateur | Permet de sauvegarder les identificateurs numériques des documents. Cela implique que votre fichier ne sera ré-importable que dans la même base. Cela identifie de manière non ambiguë le document dans l'objectif d'une restauration. Dans tous les cas, si les documents comportent des noms logiques (propriété name), ces noms sont exportés. |
Chaque ligne commençant par DOC présente les attributs visibles et invisibles (type hidden) d'un document. Les documents sont rangés par famille. À chaque changement de famille, une rangée indique les définitions des attributs de la famille (1ère colonne : / /FAM).
L'ordre de présentation des attributs suit l'ordre défini par les attributs de la famille. Les quatre premières colonnes sont communes pour tous les documents.
Le document est exploitable sur tout tableur tel que Microsoft Excel, OpenOffice.org ou Gnumeric en spécifiant que le caractère séparateur est le point-virgule.
Le fichier d'import peut être au format :
Comme pour l'export les quatre premières colonnes définissent les paramètres du document :
Les colonnes suivantes décrivent les valeurs des attributs du document.
ORDER
KEYS
L'importation de document utilise un fichier de même format que pour l'exportation. Par contre, certains attributs présents dans le fichiers d'exportation peuvent ne pas être présents dans le fichier d'importation. Pour réutiliser un fichier issu de l'exportation, il faudra bien s'assurer que les colonnes soient les mêmes (ordre et définition) que celles demandées.

Pour importer un fichier décrivant des documents, il faut sélectionner import de documents dans la barre de menu Outils. Afin de voir les formats d'importation des familles il suffit de sélectionner la famille souhaitée.
L'import de fichiers associés aux attributs de type file et image n'est pas possible dans ce cas.
Avant l'import, il est nécessaire d'analyser le fichier d'import pour être sûr de ce qu'on importe. L'analyse indique le titre du document importé si le document est un nouveau ou une mise à jour et dans quel dossier il va être placé.
S'il y a au moins un document, les boutons d'importations sont activés. Si le nombre de documents est supérieur au paramètre FDL_MAX_FGEXPORTDOC, l'importation directe reste désactivée seul l'importation en tâche de fond est possible.
Les nouveaux documents (pas d'identificateur spécifié) qui ont le même titre qu'un document existant de la même famille sont ignorés par défaut. Ils peuvent être ajouté si on change la politique d'import. Dans le cas 'Ajout nouveau document', un nouveau document avec le même titre qu'un document existant sera créé.
Dans le cas de l'importation en tâche de fond, le rapport d'importation sera envoyé au mail spécifié (par défaut celui de l'utilisateur) une fois l'import effectué.

Plus d'options d'importation sont disponibles avec ce type d'importation. Par contre la construction du fichier CSV reste la même. Cette importation est disponible via l'application 'Gestion par famille', dans le menu 'outils' choisir 'fichier à importer' ou par le bouton 'import spécifique' disponible sur l'interface d'importation générale.
Cette importation peut être utilisée pour l'importation d'un ensemble de documents de la même famille. Il faut auparavant sélectionner la famille que l'on veut importer avant de sélectionner 'fichier à importer'.
Avec ce type d'importation, l'utilisateur peut choisir l'ordre des colonnes composant le CSV en cliquant sur 'ordre des colonnes'. Les quatre premières colonnes (DOC;<id famille>;<id document>; <id dossier> restent immuables. Par défaut l'ordre des colonnes est celui défini par la famille. Vous pouvez soit supprimer des colonnes, soit modifier leur ordre. Pour supprimer il faut sélectionner la (les) colonne(s) et les déplacer dans le cadre de droite (bouton $-3ÌÎ). Pour changer l'ordre des colonnes, il faut utiliser les boutons ÌÍ et ÌÏ .L'ordre et la définition des colonnes utilisés sera celui du cadre de gauche. Lorsque vous modifiez cet ordre, l'écriture des colonnes en bas est aussitôt modifié. Vous pouvez utiliser ces deux lignes inscrites dans le cadre pour votre fichier CSV afin d'indiquer l'ordre de vos colonnes. La première ligne 'ORDER' indique au logiciel le nouvel ordre des attributs d'importation établi pour cette famille. S'il n'y a pas de ligne ORDER dans le fichier, l'ordre sera celui défini dans le cadre gauche. Dans le cas contraire ce sera l'ordre défini dans le fichier qui sera pris en compte. Les quatre premières colonnes d'une ligne ORDER sont composées du mot-clef 'ORDER', de l'identificateur de la famille puis de deux colonnes non utilisées (servant seulement pour l'alignement avec les lignes DOC). Les colonnes suivantes contiennent les identifiant des attributs de la famille. La deuxième ligne inscrite dans le cadre du bas ('#DOC') sert juste à aider l'utilisateur sur la signification des colonnes.
Le cadre dossier indique tous les dossiers fils et petit-fils du dossier par défaut défini par la famille. Lors d'un importation, vous pouvez choisir l'emplacement des documents importé dans un ou plusieurs des dossiers proposés.
Le cadre 'Politique' permet de choisir la politique d'importation lorsqu'un document à importer possède des similitudes avec un document existant. La similitude est détectée par défaut si un document d'une même famille possède le même titre. L'utilisateur peut modifier les clefs de recherche de similitude en utilisant un ou deux attributs de la famille (exemple : pour un article manufacturé on peut définir que l'on a affaire à un même document si la référence constructeur et le constructeur sont identiques).

La cadre 'valeurs par défaut' permet d'affecter des valeurs à toutes valeurs nulles (vides) définies dans le fichier d'importation. Ces valeurs par défaut sont uniquement utilisées pour des nouveaux documents, pas pour les mise à jours.

La case 'Analyse seulement' est cochée par défaut. Si vous appuyez sur 'Importation CSV' alors l'analyse du fichier sera effectuée et le résultat sera affiché dans le cadre du bas.

Les ajouts sont notifiés en vert, les modifications en jaune et les document ignorés en rouge.
Le résultat de l'analyse indique le nombre de documents à prendre en compte (ajouté ou modifié). Il indique pour chaque ligne du fichier, l'interprétation effectuée et l'action qu'il entreprendra. Si l'analyse est conforme aux attendus vous pouvez décocher 'analyse seulement' est lancer réellement l'importation. Le résultat apparaîtra dans le cadre du bas à la place de l'analyse.
L'importation d'une arborescence de fichiers peut être effectuée avec l'importation d'archive. L'archive contient une arborescence de répertoires contenant des fichiers. L'arborescence de répertoires sera rattachée au plan de classement en créant une arborescence de dossiers. Ensuite les fichiers ou les descriptions de documents seront insérés dans ces dossiers.
Cette archive permet :
Vous devez créer sur votre machine locale votre arborescence de répertoires. Dans chacun de vos répertoires vous placez les fichiers à importer. Ces fichiers seront par défaut ajoutés dans le dossier correspondant à votre plan de classement.
Dans chaque répertoire, un fichier de description nommé fdl.csv doit être créé pour indiquer les caractéristiques des fichiers. Si ce fichier n'est pas présent la conversion par défaut sera effectuée et aucune caractéristique ne sera présente dans les documents contenant les fichiers du répertoire. Ce fichier de description est tel qu'il est décrit dans le paragraphe précédant. Pour les attributs de type fichiers, il suffit d'indiquer le chemin relatif vers le fichier.
| FAM | image(IMAGE) | <specid> | <fldid> | titre | image | description |
|---|---|---|---|---|---|---|
| ORDER | IMAGE | img_title | img_file | img_description | ||
| DOC | IMAGE | - | place principale | photos/Carnaval 005.jpg | vue du balcon\navec les bandas | |
| DOC | IMAGE | - | animations | photos/Carnaval 006.jpg |
Dans l'exemple ci-dessus, le fichier fdl.csv indique la création de trois documents en attachant trois fichiers de l'archives. Le répertoire courant contient ici un sous répertoire photos contenant les fichiers jpeg.
Pour chaque fichier de description, le mot-clef DFAMID indique la famille de conversion par défaut pour les fichiers non référencés. Ces fichiers sont ceux qui n'ont pas été spécifiés dans un des fichiers de description de l'archive. S'il n'y a pas de redéfinition de DFAMID dans les sous répertoires, la famille par défaut définie par le répertoire père sera réutilisé. Le fichier de description décrit le document du dossier courant. Il ne peut pas décrire des documents d'autres dossiers. Les colonnes <special id> et <special dirid> doivent être vides dans ce cas pour l'ajout de document.
De même que pour la famille des fichiers par défaut, le mot-clef DFLDID indique la famille du container par défaut pour les répertoires. Par défaut DFLDID est l'identifiant de la famille dossier. Il faut obligatoirement que cet identificateur soit une famille dérivée de dossier.
Une fois l'arborescence, les fichiers et les fichiers de description remplis, il suffit de créer une archive sur votre poste local. Le format de fichier de l'archive peut être un tar compressé (tar.gz, tgz, tar.bz2). La compression du tar peut être effectuée soit par gzip (par défaut), soit par bzip2. Ce format peut aussi être un Zip (répertoire compressé par défaut sous Windows).
Voici un exemple très simple d'une archive contenant 2 images :Exemple d'archive
Une fois l'archive créé, il faut la transférer sur le serveur documentaire. Si l'archive est assez petite en taille, un transfert classique peut être effectué. La taille maximum d'importation dépend de la configuration de PHP (Upload configuration) au niveau du serveur. Une modification de ce paramètre implique un redémarrage de Apache.
Si l'archive est trop volumineuse, un transfert plus classique (scp, ftp) peut être effectué par l'administrateur. Il faut alors la placer sous le répertoire suivant du serveur : <FREEDOM_UPLOADDIR>/<login>/tars
Où FREEDOM_UPLOADDIR est le paramètre applicatif indiquant le répertoire de stockage (par défaut /tmp/upload), login est le nom de connexion de l'utilisateur. Par exemple pour jean.martin le répertoire de stockage des archives sera /tmp/upload/jean.martin/tars/.
Une fois l'archive téléchargée, il suffit d'aller aux archives pour voir le résultat de l'extraction.
Les fichiers commençant par un point sont ignorés.

Le résultat de l'extraction est visible dans la première partie de la fenêtre. S'il y a plusieurs archives on peut sélectionner celle que l'on souhaite. Seules les archives téléchargées par l'utilisateur sont présentées ici. Ces archives sont dans un espace temporaire et elles peuvent être supprimées.
La seconde partie montre ce qui sera effectué lors de l'importation dans la base documentaire.
Trois options d'importation sont proposées:
Dans tous les cas les dossiers sont créés conformément à l'arborescence de fichiers.
À chaque modification d'options, il faut relancer l'analyse pour effectuer l'importation.
Une fois que l'analyse est conforme à vos attentes il suffit de lancer l'importation en tâche de fond. Un email vous sera envoyé avec le résultat de l'analyse dès que l'importation sera finie.
Après importation, vous pouvez alors supprimer l'archive afin d'éviter une deuxième importation non souhaitée.
PROFIL
PROFIL
ACCESS
DOCICON
ATAG
Voir chapitre Importation famille
LDAPMAP
Pour les importations importantes de document sans fichier, vous pouvez accélérer votre importation en utilisant le script wsh csv2sql.
Ce script transforme un fichier CSV (avec ';' comme séparateur) (ou ODS) contenant des DOC en commande sql prêtes à l'insertion en base de données.
Ce script permet une importation brute. C'est à dire pas d'appel aux méthodes Doc::PostModify ou Doc::postCreate, pas de vérification d'unicité.
# . /etc/freedom.conf # wsh --api=csv2sql --file=/var/tmp/test.csv | psql freedom anakeen
Il est bien sûr fortement conseillé de bien vérifier la sortie du script avant l'injection.
Dans les fichiers CSV, il faut obligatoirement que les DOC soient précédés d'une ligne ORDER indiquant la correspondance entre les colonnes et les attributs.
Les fonctions bash sont activables via le programme “wsh.php”. Elles doivent être exécutées dans une fenêtre shell sur la machine serveur.
Pour exécuter une fonction WSH, il y a deux méthodes :
1 - Indiquer le chemin complet de la fonction. Exemple :
<wiff_context_root>/wsh.php --listapi
Le <wiff_context_root> est le répertoire d'installation de freedom.
2 - Utiliser un alias wsh. Exemple :
alias wsh="<wiff_context_root>/wsh.php" wsh --listapi
Remarque : Il est possible de charger ce fichier de configuration automatiquement au démarrage en ajoutant ces lignes au fichier ”~/.bashrc”:
alias wsh="<wiff_context_root>/wsh.php"
ATTENTION : Pour faciliter la lecture et la saisie des commandes, nous allons utiliser uniquement l'alias “wsh” dans ce document.
Cette commande, permet de connaître les fonctions de l’API disponible :
wsh --listapi
Remarque : Le résultat de cette commande, donne en faite la liste des fichiers .php du répertoire ”/usr/share/what/API”
Permet de reconstruire les classes PHP conformément à la définition décrite dans la table docattr de la base Postgresql Freedom.
Paramètres :
wsh --api=fdl_adoc --docid=100
À utiliser si des modifications ont été faites directement dans la base de données.
Supprime les documents temporaires et nettoie les contenus des dossiers.
Paramètres : aucun.
wsh --api=freedom_clean
Ce nettoyage est effectué tous les jours de manière automatique.
Convertit un document dans une autre famille. Le document perd tous les attributs qui n'existent pas dans la nouvelle famille.
Paramètres :
wsh --api=freedom_convert --tofamid=124 --docid=4568
Mets à jour la table des groupes FREEDOM par rapport à base de données WHAT. Copie la table groups de la base anakeen vers la base freedom.
Paramètres : aucun
wsh --api=freedom_groups
Cette fonction est appelée par l'application USER de WHAT à chaque changement de groupes.
Permet d'importer des documents au format CSV ou OpenOffice.org dans la base Freedom.
Paramètres :
wsh --api=freedom_import --file=/home/eric/Banques.csv --analyze=Y
Le rapport des documents importés est écrit sur la sortie standard.
Permet de recalculer les valeurs des attributs dynamiques d'un document ainsi que de leur titre. Le raffraichissement se fait pour tous les documents d'une même famille.
Paramètres :
wsh --api=freedom_refresh --famid=100
La méthode freedom_refresh permet de passer une méthode en argument. Cet exemple montre comment changer le profil d'un document et de tous les documents d'une famille.
Paramètres :
Affecter le profil 1234 au document 8776 de la famille MA_FAMILLE :
wsh --api=freedom_refresh --famid=MA_FAMILLE --docid=8776 --method=setProfil --arg=1234
Affecter le contrôle de vue 2345 à tous les documents de la famille MA_FAMILLE :
wsh --api=freedom_refresh --famid=MA_FAMILLE --method=setcvid --arg=2345
Affecter le contrôle de vue 2345 uniquement au document 8776 de la famille MA_FAMILLE :
wsh --api=freedom_refresh --famid=MA_FAMILLE --docid=8776 --method=setcvid --arg=2345
Cette fonction permet de convertir un fichier OpenOffice.org Calc (.ods) en fichier CSV. Le fichier CSV peut ensuite être utilisé pour réaliser des importations avec la fonction “freedom_import” documentée ci-dessus.
Paramètres :
wsh --api=ods2csv --odsfile=/MonChemin/MonFichier.ods wsh --api=ods2csv --odsfile=/MonChemin/MonFichier.ods --csvfile=/MonChemin/MonFichier.csv
Remarque : Il n'est pas nécessaire de convertir un fichier OpenOffice.org en fichier CSV avant de l'importer dans Freedom, car Freedom est capable d'importer directement le fichier OpenOffice.org.