Jump to content

Manuel:Annulations

From mediawiki.org
This page is a translated version of the page Manual:Reverts and the translation is 100% complete.

Une annulation est (généralement parlant) une modification qui inverse les actions des autres éditeurs. Dans ce processus une nouvelle version de la page est créée.

Cette page présente les différents types d'annulations pris en charge et reconnus par MediaWiki, principalement pour les développeurs. Elle décrit également la manière d'intégrer les extensions dotées de mécanismes liés à l'annulation et présents dans le noyau de MediaWiki.

Types d'annulation

Trois méthodes pour réaliser des annulations sont reconnues par MediaWiki.

Undo

Interface utilisateur

Les undo sont réalisés en utilisant le lien undo qui apparait dans l'historique des pages, l'affichage du diff, les listes des modifications récentes et autres.

Les liens undo pointent vers index.php?action=edit avec les paramètres undo et undoafter précisant les modifications à annuler.

  • undo – ID de la dernière version à annuler.
  • undoafter – ID de la dernière version valide. La version suivante sera la première à être annulée.

Voir aussi : Paramètres de index.php : modifier et soumettre

API

Les annulations peuvent être réalisées en utilisant l'API ainsi : action=edit avec les paramètres undo et undoafter. Leur comportement est le même que dans index.php?action=edit.

Principe

Toutes les versions de undoafter (exclue) à undo (incluse) sont annulées. Plus techniquement, EditPage applique l'inverse de la différence entre les révisions undoafter et undo à la version actuelle de la page. Si cela n'est pas possible, le formulaire d'éditon usuel est affiché et la modification n'est pas comptée comme une annulation.

Ensuite, le formulaire de modification est affiché à l'utilisateur, où le contenu résultant peut ensuite être modifié.

Depuis la version 1.36, si l'utilisateur réalise une modification quelconque du contenu avant de le sauvegarder, la modification n'est pas marquée comme annulation. Ceci est fait pour empêcher les utilisateurs de marquer les modifications arbiraires en tant qu'annulations.

Undo est la seule méthode d'annulation qui permet d'annuler les modifications intermittentes. C'est aussi la seule qui ne restaure pas nécessairement la page dans un état antérieur. undoafter et undo peuvent pointer sur n'importe quelle révision, ils ne doivent pas être forcément sur la page à laquelle l'annulation va être appliquée. Cela signifie qu'en théorie, une annulation peut être faite sur tout changement arbitraire de la page.


Autres types de contenu

Si votre extension implémente un nouveau ContentHandler, celui-ci peut supplanter la méthode getUndoContent pour adapter la façon dont les annulations sont gérées par le type de votre contenu.

Interface utilisateur

Le rollback peut être réalisé en utilisant le lien rollback apparaissant dans l'historique de page, dans l'affichage du diff, dans les listes des modifications récentes et autres.

Les liens de rollback pointent vers index.php?action=rollback avec les paramètres additionnels permettant de définir l'ensemble correct des modifications à annuler.

Voir aussi : les paramètres de index.php concernant le rollback

API

Le rollback peut être fait via l'API en utilisant action=rollback. Leur comportement est le même que dans index.php?action=rollback.

Principe

Le rollback annule les dernières éditions faites par le dernier contributeur de la page. C'est un scénario communément utilisé dans les cas de vandalisme, car habituellement il s'agit d'annuler toutes les modifications faites récemment par un même utilisateur.

Si toutes les versions de la page proviennent du même utilisateur, elle ne pourra pas être restituée.

Annulation manuelle

Version de MediaWiki :
1.36

L'annulation manuelle n'utilise aucun interface utilisateur particulier ni aucune API, quelqu'un modifie seulement la page de manière à la restituer à un état antérieur. Parfois, cela se fait en naviguant vers une ancienne révision de la page dans l'historique de page, en cliquant sur Éditer (ce qui ouvre le formulaire de révision normal mais le préremplit avec le contenu de cette révision) et en sauvegardant; parfois en éditant simplement la dernière révision manuellement (surtout lors de l'annulation d'une petite modification). Le logiciel infère automatiquement (dans certaines limites) lorsqu'une modification restaure la page dans une version plus ancienne. A chaque fois qu'une modification est faite, MediaWiki regarde le nombre de modifications les plus récentes de la page (spécifié par $wgManualRevertSearchRadius, 15 par défaut) et recherche la version la plus récente correspondant au contenu. Si une telle version est trouvée, la modification est marquée en tant que annulation manuelle (manual revert), par exemple une modification concernant la restauration exacte de la page dans un état antérieur.

La fonctionnalité peut être complètement désactivée en mettant $wgManualRevertSearchRadius à zéro.

Autres types d'annulation

Pour multi-content revisions, il existe deux actions index.php supplémentaires : mcrundo (qui est la même chose que undo mais fonctionne sur toutes les positions de la révision) et mcrrestore (qui fait l'annulation sur toutes les positions jusqu'à la révision plus ancienne). Celles-ci devraient disparaître une fois que les révisions multi-contenu seront mieux intégrées à la logique d'édition.

Balises d'annulation

Par défaut chaque version considérée comme une annulation par MediaWiki est marquée avec une balise de modification appropriée. Chacune de ces balises peut être désactivée individuellement en utilisant la variable de configuration $wgSoftwareTags.

  • Undo: mw-undo
  • Rollback: mw-rollback
  • Annulation manuelle : mw-manual-revert

Depuis la version 1.36 les données supplémentaires pour l'annulation sont sauvegardées avec chaque balise dans le champ ct_params de la table change_tag . Les données sont l'objet EditResult associé à la modification (voir la section suivante), encodé au format JSON.

Accès à l'information annulée dans les extensions

Version de MediaWiki :
1.35

La version 1.35 a introduit la classe EditResult qui est construite lorsque la modification est enregistrée. Cet objet encapsule les informations concernant les effets de la modification dans le contexte de sont historique de page, et principalement :

  • si la modification était une annulation,
  • la méthode d'annulation qui a été utilisée,
  • la version de base ayant servi pour cette annulation,
  • les versions qui ont été annulées.

Cet objet est passé aux extensions en utilisant l'accroche PageSaveComplete.

Balise d'annulation

Version de MediaWiki :
1.36

Dans la version 1.36 une nouvelle balise de modification a été introduite – mw-reverted utilisée pour marquer les modifications annulées.

Planification et exécution

La balise est appliquée par la tâche revertedTagUpdate et planifiée en utilisant la file d'attente des travaux. Le travail est mis dans la file par DerivedPageDataUpdater après que la modification a été sauvegardée.

Si la file des travaux de votre wiki est occupée et que vous rencontrez des délais notables entre le moment où vous faites les annulations et la pose des balises, vous pourriez peut-être exécuter la tâche dans une file séparée ou changer la priorité, en fonction de votre configuration. Voir File d’attente des travaux pour les détails.

Conditions d'exécution

La mise à jour sera planifiée après l'enregistrement d'une modification si toutes les conditions suivantes sont satisfaites :

  • La modification est une annnulation de type quelconque reconnue par MediaWiki. Voir la section Types d'annulation.
  • Le nombre de modifications annulées est inférieur ou égal à $wgRevertedTagMaxDepth.
  • La version correspondant à l’action d’annuler n’est pas marquée elle-même comme annulée ou supprimée.
  • La modification est considérée auto-approuvée, ce qui peut avoir différentes significations selon votre configuration :
    • Si le patrouillage est activé sur votre wiki avec la variable de configuration $wgUseRCPatrol, l'auto-approbation est équivalente à la modification devant être auto-patrouillée. Ainsi, seuls les utilisateurs avec les droits autopatrol auront leur balise d'annulation appliquée automatiquement.
    • Si vous avez installé une extension de gestion du contenu telle que FlaggedRevs, elle peut indiquer à MediaWiki que la modification est auto-approuvée. La manière dont cela est exactement déterminé dépend de l'extension. (voir la section Intégration des extensions.)

Si la mise à jour de la balise d'annulation est bloquée par le sous-système de patrouillage ou par une extension, elle peut-être replanifiée ultérieurement, lorsque la modification sera approuvée par un utilisateur différent. En cas de patrouillage, cela se produit quand la modification est patrouillée. Voir la section suivante pour les détails sur la manière d'intégrer cette fonctionnalité avec les extensions.

La marque mw-reverted ne sera jamais appliquée aux révisions nulles correspondant aux actions de journalisation (c'est à dire aux renommages des pages et à la modification des protections), même si elles apparaissent au milieu d'une série de modifications annulées, afin d'éviter de suggérer que l'action associée a été restaurée.

Les extensions de gestion de contenu telles que FlaggedRevs vont généralement supplanter le comportement du sous-système de patrouillage.
Le patrouillage est activé par défaut, mais certains wikis qui l'ont activé ne l'utilisent pas ou ne s'en servent que partiellement (beaucoup de modifications ne sont jamais patrouillées). Les annulations non patrouillées n’auront pas de balise d’annulation. Assurez-vous que votre configuration actuelle est compatible avec votre wiki. Vous pouvez essayer de désactiver complètement le patrouillage, ou attribuer le droit utilisateur autopatrol à un groupe plus large d'utilisateurs.

Intégration d'extensions

Les extensions qui touchent à certains types de mécanismes d'approbation des versions peuvent s'accrocher à la fonctionnalité des balises d'annulation pour faire connaître à MediaWiki pour qu'il fasse la mise à jour des balises d'annulation.

La première partie de ceci relève de l'accroche BeforeRevertedTagUpdate. Il est appelé avant que la mise à jour soit planifiée et que les extensions puissent utiliser cette accroche afin d'empêcher d'exécuter les mises à jour si la modification n'est pas considérée auto-approuvée et a besoin d'une relecture ultérieure.

Si la mise à jour a été interrompue, elle peut être reprogrammée ultérieurement par l'extension en utilisant le service RevertedTagUpdateManager.

Approuver une version
$revertedTagUpdateManager = MediaWikiServices::getInstance()->getRevertedTagUpdateManager();
$revertedTagUpdateManager->approveRevertedTagForRevision( $acceptedRevisionId );
Rien de catastrophique si vous demandez à appliquer la même mise à jour deux fois. La mise à jour est idempotente.

FlaggedRevs

Si vous avez installé l'extension FlaggedRevs, l'annulation sera considérée si soit :

  • FlaggedRevs est paramétré pour ne pas être utilisé sur la page.
  • L'utilisateur possède le droit utilisateur autoreview.
  • La modification est une auto-annulation.
  • La modification est sinon candidate pour être auto-contrôlée.

Si l'annulation n'a pas été auto-approuvée, elle peut l'être ultérieurement, simplement en relisant la modification.

Voir aussi