Cartouche | |
---|---|
ZEP | 16 |
Titre | La page de proposition de corrections |
Révision | 1 |
Date de création | 10 septembre 2014 |
Dernière révision | 10 septembre 2014 |
Type | Feature |
Statut | Rédaction |
Cette ZEP, au delà du scope décrit ci-dessous a surtout pour but, de poser les bases d'un socle technique, flexible et évolutif pour de nombreux cas d'usages à venir.
État des lieux et problématique
Aujourd'hui ZdS héberge du contenu, rédigé par des membres. La publication du contenu suit le workflow suivant :
Cependant, certaines publication on très souvent des fautes, et la seule méthode existante pour pouvoir proposer des correctifs sur le contenu, est d'aller dans la zone réservée aux commentaire (si le contenu est déjà publié) ou d'aller dans le topic dédié (si le tutoriel est en beta) et ceci pose plusieurs problèmes :
- Il faut copier nous même les bouts de texte incriminé, scroller, jusque dans la zone des commentaires (pour un contenu publié) et coller le texte faux et la correction en dessous. On perd donc rapidement le fil de la lecture et ça ralenti le processus
- Les commentaires de types "corrections" rajoutent du bruit dans les commentaires de la publication (car ceux-ci devrait être invalidé après correction).
- Tout un tas d'autres raisons que j'oublie
Ces problèmes diminuent le nombre de participation à des corrections collectives, car au bout de 2-3 fautes, on a plus le courage de continuer en scroller dans tous les sens.
La solution
Coté fonctionnel
Ce que je propose est simple. En plus de ce qui existe aujourd'hui, il faudrait :
- Rajouter dans la colonne de gauche un bouton intitulé "Mode correctif" (ou autre nom parlant)
- En cliquant sur ce dernier, on devrait tomber sur une page qui ressemble exactement à la page qu'on avait avant, le seul élément visuel en plus serait, lorsqu'on passe la souris sur un élément (paragraphe, image, titre ou liste à puce) du contenu, l'élément se mets en surbrillance.
- En cliquant sur l’élément, nous avons une modale qui s'affiche par dessus, avec par défaut avec le texte de l'élément sur lequel on a cliqué, et en dessous un zone de texte avec ce même contenu, mais au format markdown (prêt pour la modif). Ainsi qu'un bouton pour envoyer les modifications.
- Une fois les modifications envoyées, l'auteur reçoit dans la zone de notification une alerte qui représente chaque commentaire d'une de ses publications.
- Tout ceux qui consultent la publication en "Mode correctif" peuvent voir (juste après le paragraphe incriminé) la(les) proposition(s) de correction(s).
- Si c'est possible techniquement, on pourrait rajouter un bouton "Accepter la proposition" disponible uniquement pour l'(s) auteur(s), qui permettrait de remplacer automatiquement le texte incriminé par le bon.
L'implémentation technique
Ce n'est pas une mince affaire coté technique, car il faut jouer avec les modules zmarkdown, tutoriels/articles et front-end. Ce que je vais décrire ci-dessous n'est qu'une proposition, elle peut toujours être modifiée.
Coté zmarkdown
Actuellement on dispose d'un filtre emarkdown qui renvoit du html pour le contenu qui ressemble à ça :
1 2 3 4 5 6 7 8 | <p>Je ne sais pas vous, mais moi, j'adore Zeste de Savoir. Pourtant, je trouve qu'il manque un petit quelque chose à notre mascotte, Clem : <strong>une histoire</strong> !</p> <h3>Chapitre 1 : Prologue</h3> <p>Il faisait noir.</p> <h3>Et la suite ?</h3> <ul> <li><a href="http://endlesszeste.tk/">Le livre des aventures</a></li> </ul> <p>À vous de jouer ! <img alt=":D" src="/static/smileys/heureux.png"></p> |
L'idée serait d'avoir un autre filtre emarkdown_interactive qui renverrait quelque chose qui ressemble à ça:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <p>Je ne sais pas vous, mais moi, j'adore Zeste de Savoir. Pourtant, je trouve qu'il manque un petit quelque chose à notre mascotte, Clem : <strong>une histoire</strong> !</p> <a href="#hash-01" class="ico-after open-modal">Corriger</a> <form id="hash-01" class="modal modal-large" action=""> <p>Je ne sais pas vous, mais moi, j'adore Zeste de Savoir. Pourtant, je trouve qu'il manque un petit quelque chose à notre mascotte, Clem : <strong>une histoire</strong> !</p> <hr /> <textarea class="md-editor">Je ne sais pas vous, mais moi, j'adore Zeste de Savoir. Pourtant, je trouve qu'il manque un petit quelque chose à notre mascotte, Clem : **une histoire** !</textarea> <button type="submit" name="add_comment">Confirmer</button> </form> <h3>Chapitre 1 : Prologue</h3> <a href="#hash-02" class="ico-after open-modal">Corriger</a> <form id="hash-02" class="modal modal-large" action=""> <p><h3>Chapitre 1 : Prologue</h3></p> <hr /> <textarea class="md-editor"># Chapitre 1 : Prologue</textarea> <button type="submit" name="add_comment">Confirmer</button> </form> <p>Il faisait noir.</p> <a href="#hash-03" class="ico-after open-modal">Corriger</a> <form id="hash-03" class="modal modal-large" action=""> <p>Il faisait noir.</p> <hr /> <textarea class="md-editor">Il faisait noir.</textarea> <button type="submit" name="add_comment">Confirmer</button> </form> <h3>Et la suite ?</h3> <a href="#hash-04" class="ico-after open-modal">Corriger</a> <form id="hash-04" class="modal modal-large" action=""> <p><h3>Et la suite ?</h3></p> <hr /> <textarea class="md-editor">## Et la suite ?</textarea> <button type="submit" name="add_comment">Confirmer</button> </form> <ul> <li><a href="http://endlesszeste.tk/">Le livre des aventures</a></li> <a href="#hash-05" class="ico-after open-modal">Corriger</a> <form id="hash-05" class="modal modal-large" action=""> <p><li><a href="http://endlesszeste.tk/">Le livre des aventures</a></li></p> <hr /> <textarea class="md-editor">- [Le livre des aventures](http://endlesszeste.tk/)</textarea> <button type="submit" name="add_comment">Confirmer</button> </form> </ul> <p>À vous de jouer ! <img alt=":D" src="/static/smileys/heureux.png"></p> <a href="#hash-06" class="ico-after open-modal">Corriger</a> <form id="hash-06" class="modal modal-large" action=""> <p>À vous de jouer ! <img alt=":D" src="/static/smileys/heureux.png"></p> <hr /> <textarea class="md-editor">À vous de jouer ! ![:D](/static/smileys/heureux.png)</textarea> <button type="submit" name="add_comment">Confirmer</button> </form> |
Pour l'identifiant de chaque formulaire, je pense qu'on peut utiliser un hash de type bijectif du bout de texte pour s'assurer qu'on ait un seul identifiant par formulaire et que zmarkdown peut le construire dans son coin. Bon, j'ai fais ça à la main, mais c'est pour donner une idée. Et la page de correction sera donc disponible pour être manipulée par du JS.
Du coté du Javascript
Le boulot ici ne devrait pas être compliqué. La seule chose à faire consiste à afficher le bouton "corriger" (qui sera par défaut à display=none
) au survol du texte. Le JS devra repérer les button
ayant la classe open-modal
. Pour le reste ça sera au back-end d'assurer l'enregistrement des commentaires.
PS : Nul besoin de l'Ajax pour le moment, ça arrivera dans un second temps (une fois cette base fonctionnelle et stabilisée).
Du coté des modules django.
Il faudrait une table avec les colonnes :
- extract
- hash
- text
- text_html
Une view sera chargée de rajouter dans la table chaque nouveaux commentaires. Cette table servirait aussi pour afficher chaque commentaire d'une publication.
Voila, normalement sauf mauvaise surprise, cette ZEP devrait être sympa a implémenter.