==================================
CPSForum - Documentation technique
==================================

:Revision: $Id: cpsforum_documentation_technique_fr.txt 30395 2005-12-08 00:41:47Z dkuhlman $

.. sectnum::    :depth: 4
.. contents::   :depth: 4


Utilisation du module
=====================

CPSForum est un outil permettant aux utilisateurs du portail de
poster des messages dans des forums, sous la forme de fils de
discussion. Il permet galement d'associer des commentaires  des
documents, ces commentaires tant grs comme des fils de
discussion.


Historique du module
====================

Le produit CPSForum existe depuis CPS2. Il a t port sur CPS3 :
ceci correspond aux versions sous la forme 0.X.X. Il a ensuite t
compltement rfactor : ceci correspond aux versions sous la
forme 1.X.X.

Les objets forums cres avec les versions 0.X.X ne sont pas
compatibles avec les versions de CPSForum 1.X.X.


Prrequis  l'utilisation du module
===================================

CPSForum requiert:

- CPS3

- le produit CPSInstaller (non inclus dans CPS-3.0, mais inclus
  dans CPS-3.1)

- CPSSchemas > 0.18.0-1 (non inclus dans CPS-3.0, mais inclus dans
  CPS-3.1)

- CPSSubscriptions > 0.7.0-1 pour la gestion des notifications
  (non inclus dans CPS3)

Il a t test avec Zope 2.6 et Zope 2.7.


Installation
============

Dcompresser l'archive contenant le module dans le rpertoire
Products. Renommer "CPSForum" le dossier obtenu. Redmarrer Zope.

Le fichier INSTALL contenu dans le rpertoire doc/ du produit
contient les informations d'installation dans une instance de CPS.
Il donne galement des informations concernant la mise  jour,
lorsqu'une version antrieure de CPSForum a dj t installe
dans un instance de CPS.


Fonctionnalits du module
=========================

cf doc fonctionnelle CNCC.

Il n'existe pas de fonctionnalits supplmentaires par rapport aux
fonctionnalits dcrites dans le document pour la CNCC.

Le fichier README contenu dans le rpertoire doc/ du produit
prsente une description succinte des fonctionnalits, ainsi que
le mode d'utilisation du module.


Fonctionnement gnral
======================

Les objets CPSForum (classe Forum dans Forum.py) s'apparentent 
des folders et rsident dans le repository. Comme les autres
folders (Workspace, Section, ...), des proxies pointent sur les
forums du repository. Les objets CPSForum suivent respectivement
le workflow workspace_content_wf ou section_content_wf suivant
qu'ils rsident dans un workspace ou une section.

Les posts sont des CPSDocument qui suivent leur propre workflow
(forum_post_wf). Ce workflow gre la modration et la publication
des messages en fonction du mode de modration. Un diagramme
(``doc/forum_wf.svg``) dcrit le workflow suivi par les posts.

Comme pour tous les autres CPSDocument, les ForumPost sont stocks
dans le repository et rfrencs par des proxies situs dans le
proxy associ au forum.

Les documents ForumPost sont indexs et sont donc pris en compte
dans la recherche.

La dclaration des permissions utilise par les forums se fait
dans le module CPSForumPermissions.py

La correspondance entre roles et permissions est tablie dans
l'installer de CPSForum (Extensions/install.py), et peut tre
modifie simplement dans un installer de produit client.


Commentaires de documents
=========================

Les commentaires associs  un document sont stocks dans un
object de type CPSForum, sous la forme de documents ForumPost.
D'un point de vue fonctionnel, rien ne distingue un CPSForum
standard d'un CPSForum utilis pour stocker les commentaires
associs a un document. Les objets forums utiliss pour commenter
un document (abrgs cforums dans la suite du document) utilisent
donc le mme mcanisme de stockage : repository avec proxies les
rfrenant.

Les proxies associs aux cforums sont stocks de la manire
suivante :

- si le document comment est workspaces/ws1/doc1

- le proxy du cforum associ est workspaces/ws1/.cps_discussions/doc1

Le forum a donc la mme ID que le document, mais se trouve dans un
rpertoire special cach  l'utilisateur (visible depuis la ZMI).

La classe CommentTool (dans CommentTool.py) est utilise pour
grer les commentaires associs a un document, notamment pour
tablir la correspondance entre un document et le forum qui lui
est associ (s'il existe). Cette classe vient remplacer (par
monkey patching) l'objet portal_discussion de CMF (ajout de
fonctionnalites).

La classe CPSForum (Forum.py) gre aussi les callbacks sur
CPSSubscriptions pour notifier la cration et la publication de
nouveaux posts ou commentaires.
