Bonjour
Pour avancer sur ce point, il faut créer un cahier des charges fonctionnel :
Post en WIKI ci-dessous pour le créer ensemble :
Cahier des charges fonctionnel
Objectif du projet
L’objectif de ce projet est de permettre d’avoir un compteur de vue par sortie, visible ou non par choix du ou des auteur(s) de la sortie.
- Dans le document sortie, un compteur de vue affiche le nombre d’affichage de la sortie
- une case à cocher en bas du formulaire de saisie de sortie, mentionnant « Désactiver le compteur de vues », avec valeur par défaut à non (situé à coté de la case actuelle pour autoriser ou non les commentaires)
- Comme pour le reste des documents sortie, seul un membre de la sortie (ou un modo) peut changer la valeur de ce champ.
- si le compteur de vue est désactivé, alors le nombre de vue n’est visible que par les personnes associées à la sortie.
Cahier des charges technique
Charabia technique
API
Rajouter dans tous les documents (1) :
-
view_count
un champ numérique (integer), valeur par défaut à zero est rajouté auz document. Il s’agit d’une méta donnée, et non pas d’un champ versionné (un changement de sa valeur ne doit pas creer une nouvelle version en base du document). Ce champ est remonté dans tous les services exposant des documents.
Rajouter dans les document sorties :
-
enable_view_count
un champ booléan, par défaut à true. Ce champ est versionné, comme les autre champs du document. Comme pour les autres champ des sorties, il n’est modifiable que par les personnes rattachées à la sortie (ou les modos). Si enable_view_count
est à false, alors view_count
est remplacé par null
dans le service qui expose la sortie.
A chaque requete du document, view_count
est incrémenté. Il existe deux exclusion pour ne pas incrémenter :
- Si l’utilisateur est un robot
- si l’utilisateur a un user agent dans une liste donnée (pour exlure par exemple le google bot)
point important : l’incrementation est bufferisé, afin de ne pas surcharger la base de donnée. Les APIs stockent la valeur à incrementer, et tous les N minutes, vont vider le buffer pour mettre à jour les documents en base.
Note 1: c’est aussi simple techniquement de le mettre pour tous les docs, donc autant l’avoir pour tout le monde.
UI
Assez évident, voir partie fonctionnelle