Voici le plan pour le Front-end:
- Développement en tant que gadget (MediaWiki-Gadget-edit-conflict-prevention.js)
- Une page est considérée mise en mode édition lorsqu'un URL d'édition est affiché ou un certain bouton est cliqué
- Les items qui seront surveillés:
- Édition par l'Éditeur Visuel (
?veaction=edit
) - Édition par l'ancien éditeur de Wikicode et le nouvel éditeur de Wikicode (
?action=edit
) - Édition d'une publication dans le système de discussion (
?action=edit-post
) - Modification d'une page avec un formulaire (
Spécial:AjouterDonnées
)
- Édition par l'Éditeur Visuel (
Pour l'éditeur voulant éditer une page
- Le code surveille les actions sus-mentionnées
- Fait une requête d'API pour confirmer que quelqu'un n'est pas en train d'éditer la page
- Si c'est le cas, un message d'avertissement est envoyé (avec le nom de l'éditeur qui est en train d'éditer)
- L'éditeur peut forcer l'édition de la page
- Lorsque l'éditeur fera sa première modification sur la page, un message de perte de contrôle sera envoyé à l'éditeur d'origine
- L'éditeur peut demander à être informé lorsque la page ne sera plus en mode édition (feature futur)
- L'éditeur peut soit annuler, soit poursuivre pour voir le wikicode ou l'éditeur visuel (sans pouvoir sauvegarder)
- L'éditeur peut forcer l'édition de la page
- Si c'est le cas, un message d'avertissement est envoyé (avec le nom de l'éditeur qui est en train d'éditer)
Pour l'éditeur éditant une page
- Lorsqu'un premier changement est fait au contenu de la page, une requête est envoyée à l'API avec comme information:
- L'heure GMT
- Le nom de l'utilisateur
- L'ID de la page
- Cette requête est envoyée à tous les 2 minutes
- Le système répond indiquant si
- tout va bien
- un autre éditeur a pris le contrôle de la page et la sauvegarde entraînera probablement un conflit d'édition