Une famille définit un ensemble d'attributs.
Pour accéder à la définition des attributs, il faut sélectionner l'item éditer les attributs dans le menu contextuel du document famille. 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 de nouveau “éditer les attributs”.
Cette interface sert juste à ajuster les attributs d'une famille. Pour une définition complète d'une famille il faut se référer au manuel de programmation.
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<sup>1</sup>. 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 peuvent être :
Pour les attributs “text” un formatage (style langage C) peut être ajouté. Par exemple :
text(”%.02f”) “pour afficher un nombre avec 2 décimales,
text(”<B>%s</B>”) “pour afficher l'attribut en gras.
Pour les attributs “date”,”time” et “timestamp” un formatage (style langage C ”strftime”) peut être ajouté. Par exemple :
time(”%H:%M:%S”) pour afficher aussi les secondes,
timestamp(”%A %d %B %Y %X”) donne « samedi 08 janvier 2005 10:13:00 ».
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é.
Cet attribut détermine dans quel cas l'attribut est affiché. La visibilité est :
Au contraire de l'attribut caché qui est présent mais non visible.
Indique si l'attribut est obligatoire lors de la saisie.
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 “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 :
%S% : est remplacé par l'URL vers FreeDom avec le numéro de session. Il doit être utilisé en début de lien.
%I% : est remplacé par le numéro de référence du document.
Soit US_IDSOC l'attribut identifiant le document société de la famille personne. Pour créer un hyperlien vers le document famille 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 FREEDOM_CARD (affichage d'un document) dont l'identificateur est celui défini dans l'attribut US_IDSOC.
Cas particulier : pour les menus :
Par défaut, le résultat de l'activation d'un item de menu s'ouvre dans une fenêtre autonome. Chaque item de menu à sa propre fenêtre de résultat. La fenêtre cliente de destination peut être modifiée en spécifiant le nom de la fenêtre dans l'option “ltarget”. Toutes les options sur les menus sont décrites dans le paragraphe §7.2.4.3.
Exemple pour avoir le résultat dans la fenêtre 'test' :
Pour avoir le résultat dans la fenêtre courante on utilisera le nom '_self' :

Pour avoir le résultat dans une fenêtre différente à chaque activation, on utilisera le nom '_blank' :
Si le résultat d'une action menu est critique, une confirmation peut-être demandée avant l'exécution de l'action. Cette confirmation est indiquée en mettant l'option '“lconfirm”' à “yes<sup>2</sup>”.
Si l'item du menu ne doit être utilisé que dans de rare occasion, il peut être visible que lors de l'appui conjugué avec la touche 'Ctrl'. On indique cette possibilité en mettant l'option “lcontrol” à “yes”.
Cas particulier pour les liens
Il est possible d'indiquer un texte lorsque le curseur est sur le lien en utilisant l'option “ltitle”.
Cas particulier pour les extraliens
Il est possible de préfixer le lien pour changer le caractère sur la bouton (par défaut '+') et le texte surgissant affiché.
L'exemple ci-dessus affichera le bouton '$' avec le texte surgissant « éditer une facture ».
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 ”/home/httpd/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 :
”<nom fonction>(<P1>,<P2>,…):R1,R2,R3,…”
nom de fonction : nom de la fonction PHP à appeler
Pi : soit l'identificateur d'un attribut
soit D : coordonnée de la base de donnée Freedom
soit I : numéro de référence du document
soit {FAMNAME} : FAMNAME étant le nom interne de la famille. Est remplacé par la numéro de référence de la famille
soit {PARAM} : PARAM étant un identificateur de paramètre. Est remplacé par la valeur du paramètre
soit un chiffre : chiffre mis en argument tel quel
soit chaîne de caractère : mise en argument telle quelle
Ri: identificateur de l'attribut à modifier
La fonction d'aide à la saisie calcule une liste de choix en fonction des paramètres Pi. Lorsque l'utilisateur fait son choix les attributs Ri 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.
Exemple :
soit la famille test dont les attributs sont :
TST_IDSOC : identificateur de la famille société
TST_SOC : nom de la société
on met un hyperlien sur TST_SOC pour pointer sur le document société qui est lié à la famille test: %S%app=FREEDOM&action=FREEDOM_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.
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é.
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 sera présenté sur l'interface; la clef la valeur qui sera 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 ce sera 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$-1òù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.
Certaines variantes de sélection sont possibles :
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, ce sera le premier choix qui sera 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 | label | type | phpfunc | 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 | [hcheck]red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no |
| TST_COLOR3 | la couleur de la table | enum | [vcheck]red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no |
| TST_COLOR4 | aimez-vous le vert ? | enum | [bool]red¦rouge,green¦vert | bmenu=no |
| 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 | [hcheck]red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no |
| TST_COLOR7 | les couleurs du ciel | enumlist | [vcheck]red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no |

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.
Ces attributs permettent d$-1òùajouter des actions particulières dans le menu contextuel du document. Le lien définit l'url qui sera activée lors de la sélection du menu.
| “idattr” | “label” | “type” | link | “phpfunc” | option |
| “CMC_M_M1” | “Proposition n°1” | “menu” | ”%S%&app=FDL&action=FDL_CARD&id=%CMC_IDPROPO1%” | | “submenu=proposition” |
| “CMC_M_M2” | “Proposition n°2” | “menu” | ”%S%&app=FDL&action=FDL_CARD&id=%CMC_IDPROPO2%” | | “submenu=proposition” |
| “CMC_M_PROPO” | “Voir la proposition” | “menu” | ”%S%&app=FDL&action=FDL_CARD&id=%CMC_IDPROPO%” | ”::verifyProposition()” | “lconfirm=yes” |
La colonne “phpfunc” permet d'indiquer un pré-condition à l'affichage du menu. Cette méthode de l'objet documentatire retourne l'activité possible du lien (actif, inactif, invisible).
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 | “phpconstraint” |
| “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.
La hiérarchie dans les familles permet d'hériter des attributs des ancêtres.
L'ajout d'attribut se fait sans condition en utilisant les trois dernières rangées de l'interface “éditer les attributs”.
Si vous voulez modifier un des attributs, il suffit de mettre le même identifiant dans les rangées prévues pour les nouveaux attributs. Par contre, 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 ces 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é.
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, on modifie l'attribut en le rendant invisible comme on le fait pour la suppression de ces propres attributs.
Le paramétrage de la famille se fait au moyen du menu contextuel du document famille.
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.
Les attributs de type catégories peuvent être modifiés par l'interface ONEFAM. Il suffit de sélectionner l'onglet de la catégorie et choisir 'éditer la catégorie'.
De même que des dossiers, on peut sauvegarder des recherches dans le dossier par défaut. Ces recherches seront ensuite disponibles depuis les applications de type GENERIC dans la barre de menu recherche.
On associe un profil par défaut à la famille pour protéger les nouveaux documents créés.
Ce profil de document est associé à tous nouveaux documents lors de leur création. Si on modifie le profil par défaut les documents de la famille déjà créé ne sont pas impactés. Il est donc nécessaire de créer un profil pour la famille dès la définition de celle-ci si on veut rendre homogène les droits sur les documents de la famille.
L'administrateur peut aussi choisir un contrôle de vue (cf §6.4.4) par défaut qui sera appliqué lors de nouvelle création de document.
On peut associer un document cycle de vie à une famille. Ce document défini les états et les transitions du cycle. Les documents cycle de vie ne peuvent être créés via l'interface<sup>3</sup>.
Si le document cycle de vie de la famille est remplacé, les documents déjà créés conservent leur cycle de vie initial.