Cartouche            | 
---------------------|-----
**ZEP**              | 21
**Titre**            | Refonte de l'interface des messages privés
**Révision**         | 2
**Date de création** | 28 décembre 2014
**Dernière révision**| 1 janvier 2015
**Type**             | *Feature*
**Statut**           | Rédaction


Pourquoi revoir l'interface des messages privés (MP) ?
======================================================

Aujourd'hui il n'existe qu'une seule "boite" de réception où sont stocker ses messages privés. Ce n'est pas très pratique lorsque l'on a de nombreux messages privés : un système de tri s'impose.

Les changements
===============

Ajout de différents dossiers
----------------------------

Le plus gros changement apporté serait l'ajout de différents dossiers dans lesquels il est possible de stocker ses messages privés. Il serait possible de déplacer des messages vers un dossier pour pouvoir facilement les retrouver. En cas de suppression d'un dossier, l'utilisateur se verrait proposer 2 options :

* supprimer les messages privés contenus dedans ;
* les déplacer dans un autre dossier.

Les dossiers auraient une position pour pouvoir les ordonner dans le menu.

Une première maquette ressemblerait à ceci :

![Première maquette](http://i.imgur.com/3mzThiN.png)

Recherche dans ses MP
---------------------

La recherche de telle ou telle information cachée dans un message est parfois pratique et actuellement impossible. L'idée serait d'implémenter une recherche assez simple avec la possibilité de spécifier :

* une ou plusieurs catégories ou un ou plusieurs dossiers ;
* un ou plusieurs auteurs ;
* une recherche dans le titre et/ou la description uniquement ;
* spécifique un fourchette de dates (ex : *du jour A ou jour B* ou *depuis le jour C*).

Des brouillons
--------------

Encore une fonctionnalité qui manque : les brouillons. Exactement comme les MP normaux sauf qu'ils ne sont pas envoyés et qu'on peut les modifier une infinité de fois.

Des messages pour l'ajout ou le départ d'un membre du MP
--------------------------------------------------------

Aujourd'hui on ne sait pas quand un membre est ajouté à la conversation ou lorsque l'un part de la conversation. L'idée serait de simplement mettre un message comme la maquette ci dessous.

![Maquette de l'ajout d'une alerte dans les MP](http://i.imgur.com/G0qJkip.png)

Pour la réalisation technique, on ajouterai juste 1 champ à notre modèle par défaut : `action`. L'idée est de créer un message normal mais qui contient ce champ `action` remplis que si une telle action est faite (je vois les actions suivantes : `QUITE`, `ADD` ou `ADD BY` et`DELETE` ou `DELETE BY`. Ainsi on a a pas besoin de coder un modèle en plus car la majorité des informations sont déjà présentes.


Autoriser un staff participant à un MP à ajouter des membres 
------------------------------------------------------------

L'idée a été suggéré par plusieurs membres du staff c'est pourquoi ça semble assez utile. Un membre staff aurait donc les droits de gestion des membres d'un message privé.

Un système de tags
------------------

*Cette partie doit encore faire l'objet d'un débat et devra être révisée*

Pour faciliter le tri de ses messages, on peut imaginer un système de tag très similaire à celui des forums.

2 implémentations sont possible.

### Des tags automatiques

Les tags  seraient automatiquement ajouté lors de ma création d'un MP et l'utilisateur n'a aucun pouvoir dessus. Il peut simplement les voir et donc filtrer ses messages avec.

Les tags seraient de différents types :

* les tags d'actions : ceux-ci concerneraient une action spécifique qu'un utilisateur a fait et qui a entrainée ce MP (ex : demande d'aide via la ZEP-3, ajout à un tuto, publication d'un tuto, etc). Il y aurait donc un tag par action spécifique, ces actions étant à définir.
* les tags de contenu : ces tags là seraient spécifiques au contenu qu'ils concernent. Les tutoriels et les articles étant les meilleurs exemples, on pourrait avoir un tag `tuto-<slug>`.

### Des tags manuels

Dans cette vision des choses on peut imaginer qu'un utilisateur ajout lui-même des tags sur ses messages. Ça reste à discuter car l'implémentation semble assez complexe.

On peut également imaginer un mix des deux visions des choses.

Sélection multiple
------------------

La refonte des MP en profiterai pour dynamiser les actions sur les MP avec notamment la possibilité de sélection multiple pour des actions

Implémentation proposée
=======================

Le code des MP serait en même temps entièrement revu dans le but de faciliter l'implémentation de l'API concernant les MP. Le travail pourrait même être fait en parallèle.

Première étape : différents dossier
-----------------------------------

Cela comprend la possibilité de créer, modifier et supprimer les dossier ainsi que de déplacer des message privés dans ces dossiers.

Seconde étape : actions sur les messages privés
-----------------------------------------------

Cela comprend toutes les autre améliorations proposées (ajout de participant, message lors d'un ajout ou d'un départ, etc).

# Conclusion

Merci d'avoir pris le temps de lire tout ça, toutes les remarques et suggestions sont les bienvenues.


-----

Historique
==========

Version 1
---------

http://paste.awesom.eu/rLMT

Création de la ZEP

Version 2
---------

* Suppression des catégories pour les dossiers.
* Éclaircissements sur l'API.
* Proposition d'un système de tag (merci @pierre_24).
* Ajout de la proposition de @pierre_24 sur la réécriture du code qui gère les destinataires.
* Ajout de la proposition de poupou9779 sur la sélection multiple.
* Spécification techniques pour les messages spéciaux lors du départ ou de l'arrivé d'un membre dans la conversation.