1. Définition de la visibilité
1.1. Profil des utilisateurs
Hormis le rôle de super-administrateur qui est global pour toute l'application, donc pour tous les sites, les droits des utilisateurs sont définis dans l'attribut roles d'un abonnement à un site. En conséquence, chacun de ces droits est accordé pour un site déterminé.
Les différents rôles sont les suivants :
- Titulaire ou Propriétaire (owner), responsable du site ;
- Concepteur (designer), chargé de la définition technique du site ;
- Webmester (webmaster), chargé de la gestion du contenu du site ;
- Modérateur (moderator), chargé des interactions avec les utilisateurs ;
- Membre (member), adhérent de l'association concernée par le site ;
- Invité (guest), invité de l'association concernée par le site ;
- Abonné (subscriber), internaute intéressé à recevoir des informations sur le site.
De plus, tous les utilisateurs déclarés et tous les internautes consultant le site sont considérés automatiquement comme des visiteurs (visitors).
1.2. Niveaux de visibilité
Le logiciel du projet A considère cinq niveaux de visibilité :
- Gestionnaire : accessible aux gestionnaires du site, c'est-à-dire aux titulaires, aux concepteurs, aux webmestres et aux modérateurs, ainsi qu'aux super-administrateurs ;
- Membre : accessible aux membres et aux gestionnaires ;
- Invité : accessible aux invités, aux membres et aux gestionnaires ;
- Abonné : accessible aux abonnés, aux invités, aux membres et aux gestionnaires ;
- Visiteur ou Public : accessible à tous, même aux internautes non déclarés.
2. Paramétrage de la visibilité
La visibilité est appliquée sur les objets définissant le contenu des sites, sur des parties de textes et sur les fiches des utilisateurs.
2.1. Objets visibles
- Sites (sites) : un site peut être intégralement protégé, ce qui est utile par exemple lors de sa construction initiale ;
- Espaces (spaces) : un élément du menu peut être protégé ;
- Œuvres (works) ;
- Objets joints aux œuvres (attachments) ;
- Ingrédients (ingredients) ;
- Commentaires (comments) ;
- Fiches utilisateurs (users).
Pour chaque objet, la visibilité ne s'applique qu'aux informations potentiellement publiques, à l'exception des données techniques ou administratives qui sont toujours exclusivement réservées aux administrateurs.
2.2. Visibilité à l'intérieur d'un texte
Il est possible de restreindre la visibilité d'une partie de texte en ajoutant des marqueurs à l'intérieur de celui-ci de façon similaire au procédé d'internationalisation. La présence d'un marqueur de visibilité dans le texte change la visibilité de la partie qui suit, jusqu'à la présence d'un nouveau marqueur de visibilité ou de langue. Les quatre marqueurs de visibilité sont les suivants :
- {:v:} : le texte qui suit prend la visibilité Visiteur ;
- {:s:} : le texte qui suit prend la visibilité Abonné ;
- {:g:} : le texte qui suit prend la visibilité Invité ;
- {:m:} : le texte qui suit prend la visibilité Membre ;
- {:n:} : le texte qui suit prend la visibilité Gestionnaire.
Le début du texte et celui des blocs de langue commencent toujours avec la visibilité Visiteur.
NB : Si, comme dans le texte ci-dessus, il est nécessaire d'afficher l'une des séquences clés, on y insèrera une entité invisible comme ­ (tiret de césure optionnelle).
Attention ! Pour des raisons de performances, en version 0.9 du logiciel, lors de la génération d'une page, la découpe du texte est réalisée sans tenir compte de la syntaxe HTML. On placera donc les marqueurs à des positions où ils sont le moins susceptibles de perturber la présentation des pages générées dans les différentes visibilités.
Le cas échéant, la sélection de la partie du texte correspondant à la langue de l'internaute précède l'application des restrictions de visibilité qui elle-même précède celle de toutes les règles de formatage.
3. Génération des pages
3.1. Visibilité courante
Les pages demandées par un utilisateur sont générées en fonction de sa visibilité courante sur le site consulté.
Un utilisateur non connecté, qu'il soit déclaré ou non, a une visibilité courante à Visiteur.
Quand il se connecte, il obtient la plus haute visibilité que lui confère les rôles qui lui ont été attribués pour le site considéré. Cette visibilité est maintenu tant que la session en cours reste active.
Exemple 1 : Rôles Abonné et Membre → visibilité courante = Membre ;
Exemple 2 : Rôles Membre et Webmestre → visibilité courante = Gestionnaire.
Par exception, les webmestres et les administrateurs peuvent fixer librement leur visibilité courante quand il gère le contenu de leur site. Ceci leur permet de voir les pages générées pour les différents types d'internautes.
3.2. Visibilité réelle et règle d'affichage
Chaque page générée est relative à un espace, lui-même rattaché à un site. La visibilité réelle d'un objet détermine si le contenu de cet objet sera affiché ou non; elle est déterminée par la visibilité la plus restrictive dans la chemin d'accès Site - Espace - Œuvre - Objet joint ou Site - Fiche utilisateur.
Exemple 1 : Site (Visiteur) - Espace (Membre) → page réservée aux membres et aux administrateurs ;
Exemple 2 : Site (Visiteur) - Espace (Visiteur) - Œuvre (Membre) → page accessible à tous, mais seuls les membres et les gestionnaires verront les informations sur l'œuvre.
La visibilité d'un espace restreint la visibilité réelle des sous-espaces qu'il contient.
Cette règle s'applique également aux textes ou parties de texte en allongeant la chaine de calcul de la visibilité : Site - Espace racine - ... - Espace - [Œuvre (- Objet joint)] - Texte
En application de cette règle, une œuvre collée sur plusieurs espaces peut être plus ou moins accessibles en fonction du collage utilisé pour y accéder.
Exemple : une œuvre A publique (visibilité Visiteur) sera vue quand elle est rattachée à un site et à un espace public, mais la même œuvre ne sera visible que par les membres du site quand elle est rattachée à un espace de visibilité Membre.
3.3. Adresse des pages
Quand une page n'est pas publique, la visibilité minimale requise est indiquée dans son adresse (URL) comme indiqué à l'article Adressage des pages et des ressources.
Le cas échéant, l'adresse est ajustée pour indiquer la visibilité minimale requise pour accéder à la page.
3.4. Composants
Sauf bogues de programmation ou cas très particuliers (pages d'administration par exemple), tous les composants utilisés dans un générateur de pages filtrent les objets à afficher en fonction de la visibilité courante.
3.5. Rendu graphique
Sur un site comportant des éléments avec différentes visibilités, il peut être utile, voire nécessaire, de signaler clairement leur visibilité pour indiquer par exemple les règles de confidentialité qui s'appliquent.
Pour ce faire, quelques uns des composants ajoutent si nécessaire l'une des classes subscriber, guest, member ou manager au bloc contenant les données à visibilité variables. Quelques uns ajoute également la classe visitor le cas échéant.
Le comportement standard défini dans le feuille de style a_components.css affiche une bordure colorée en fonction de la visibilité :
- visibilité Visiteur : pas de bordure ;
- visibilité Abonné : bordure bleue ;
- visibilité Invité : bordure verte ;
- visibilité Membre : bordure orange ;
- visibilité Gestionnaire : bordure rouge.
Ces styles par défaut peuvent bien sûr être redéfinis dans la feuille de style du site et remplacés par exemple par une couleur de fond ou une icône spécifique à chaque niveau.
Attention ! Pour les mêmes raisons de performances mentionnées au § 2.2, la méthode qui supprime les éléments de texte confidentiels en fonction de la visibilité courante de l'internaute ne permet pas de marquer automatiquement les autres parties visibles, mais à visibilité restreinte (ex. : pour un membre, les partie que les niveaux inférieurs n'ont pas droit de voir). Pour assurer cette fonction, les classes subscriber, member ou manager doivent être ajoutées à la main par le webmestre en les appliquant sur les blocs de texte par l'outil Styles de l'éditeur HTML Tiny-MCE.