Manual:Reverts/cs
Vrácení je (obecně řečeno) úprava, která obrací akce ostatních editorů. V tomto procesu se vytvoří nová verze stránky.
Tato stránka slouží jako přehled různých typů revertů podporovaných a rozpoznávaných MediaWiki, zejména pro vývojáře. Také se zabývá tím, jak integrovat rozšíření s mechanismy souvisejícími s vracením změn, které jsou součástí jádra MediaWiki.
Typy vrácení změn
MediaWiki rozpoznává tři metody provádění vrácení změn.
Undo (zpět)
Uživatelské rozhraní (UI)
Vrácení změn se provádí pomocí odkazu zpět, který se zobrazuje v historii stránky, v zobrazení rozdílů, v seznamu posledních změn a na dalších místech.
Odkazy pro vrácení zpět ukazují na index.php?action=edit
s parametry undo
a undoafter
, které určují, které úpravy mají být vráceny zpět.
undo
– ID poslední revize, která má být vrácena zpět.undoafter
– ID poslední "dobré" revize. Další revize bude první revizí, která bude vrácena zpět.
Související stránky: Příručka:Parametry pro index.php#Úprava a odeslání
API
Vrácení akcí lze provést přes API s použitím action=edit
s parametry undo
a undoafter
.
Jejich chování je stejné jako v případě index.php?action=edit
.
Mechanismus
Všechny revize od undoafter
(bez DPH) do undo
(včetně) jsou vráceny zpět.
Technicky řečeno, EditPage aplikuje inverzi rozdílu mezi revizemi undoafter
a undo
na aktuální verzi stránky.
Pokud to není možné, zobrazí se běžný formulář pro úpravy a úprava se nepočítá jako vrácení zpět.
Poté se uživateli zobrazí editační formulář, kde lze výsledný obsah dále upravovat.
Od verze 1.36, pokud uživatel provede jakékoli úpravy obsahu před uložením, úprava není označena jako vrácení zpět. To má zabránit uživatelům v označování libovolných úprav jako vrácených.
undoafter
a undo
mohou odkazovat na libovolnou revizi, nemusí být na stránce, na kterou se má vrácení akce použít. To znamená, že teoreticky lze pro jakoukoli libovolnou změnu na stránce vytvořit příkaz vrácení zpět.
Jiné typy obsahu
Pokud vaše rozšíření implementuje nový ContentHandler, může přepsat metodu getUndoContent
a přizpůsobit tak zpracování vrácení zpět podle typu obsahu.
Rollback
Uživatelské rozhraní
Vrácení změn lze provést pomocí odkazu rollback (vrácení změn), který se zobrazuje v historii stránky, v zobrazení rozdílů, v seznamu posledních změn a na dalších místech.
Odkazy pro vrácení změn ukazují na index.php?action=rollback
s dalšími parametry pro zajištění vrácení správné sady změn.
API
Vrácení změn lze provést přes API pomocí action=rollback
.
Jejich chování je stejné jako v případě index.php?action=rollback
.
Mechanismus
Vrácení změn vrátí zpět poslední úpravy provedené posledním editorem stránky. Toto je běžně užitečný scénář při řešení vandalismu, protože obvykle by měly být vráceny všechny změny provedené jedním uživatelem v poslední době.
Pokud všechny revize stránky pocházejí od stejného uživatele, nelze ji vrátit zpět.
Ruční obnovení
Verze MediaWiki: | ≥ 1.36 |
Ruční obnovení nepoužívá žádné speciální uživatelské rozhraní ani API, někdo pouze upraví stránku tak, aby se vrátila ke starší verzi.
Někdy se to provede přechodem na starou revizi stránky v historii stránek, kliknutím na tlačítko Upravit (což otevře normální formulář pro úpravy, ale předvyplní jej obsahem dané revize) a uložením. Někdy se pouhou ruční úpravou nejnovější revize (zejména při vrácení malé změny).
Software automaticky (v rámci určitých omezení) rozpozná, kdy úprava vrátí stránku do starší verze.
Při každé úpravě MediaWiki prohledá několik nejnovějších revizí stránky (standardně zadaných hodnotou $wgManualRevertSearchRadius
, 15) a vyhledá nejnovější revizi s odpovídajícím obsahem.
Pokud je taková revize nalezena, je úprava označena jako "ruční obnovení", tj. úprava obnovující stránku do přesně předchozího stavu.
Funkci lze zcela zakázat nastavením hodnoty $wgManualRevertSearchRadius
na nulu.
Další typy vrácení
Pro multi-content revisions existují další dvě akce index.php: mcrundo
(což je stejné jako vrácení zpět, ale funguje na všech slotech revize) a mcrrestore
(která vrátí všechny sloty na starší revizi).
Očekává se, že tyto problémy zmizí, jakmile budou revize více obsahů lépe integrovány s logikou editace.
Vrácení tagů
Ve výchozím nastavení je každá revize, kterou MediaWiki považuje za návrat, označena příslušným tagem změny.
Každý z těchto tagů lze jednotlivě zakázat pomocí konfigurační proměnné $wgSoftwareTags
.
- Undo:
mw-undo
- Rollback:
mw-rollback
- Ruční vrácení:
mw-manual-revert
Od verze 1.36 se s každou značkou v poli ct_params
tabulky change_tag
ukládají další data o vrácení.
Data jsou objekt EditResult přidružený k úpravě (viz další část) a kódovaný jako JSON.
Přístup k informacím o obnovení v rozšířeních
Verze MediaWiki: | ≥ 1.35 |
Verze 1.35 zavedla třídu EditResult, která se vytvoří při ukládání úprav. Tento objekt zapouzdřuje informace o účincích úpravy v kontextu historie stránky, a co je nejdůležitější:
- Zda se jednalo o vrácení změny
- Která metoda revertování byla použita
- Jaká je "základní" revize pro toto vrácení?
- Které revize byly vráceny zpět
Tento objekt je předáván rozšířením pomocí háčku PageSaveComplete.
Vrácená značka
Verze MediaWiki: | ≥ 1.36 |
Ve verzi 1.36 byl zaveden nový tag změny – mw-reverted
, který se používá k označení vrácených úprav.
Plánování a provedení
Značka je použita v úloze s názvem revertedTagUpdate
naplánované pomocí fronty úloh.
Úloha je přidána do fronty programem DerivedPageDataUpdater po uložení úpravy.
Pokud má vaše wiki rušnou frontu úloh a dochází k výrazným prodlevám mezi provedením vrácení změn a použitím tagu, můžete v závislosti na vašem nastavení chtít úlohu spustit v samostatné frontě nebo ji upřednostnit. Podrobnosti viz Příručka:Fronta úloh .
Podmínky pro provedení
Aktualizace bude naplánována po uložení úpravy, pokud jsou splněny všechny následující podmínky:
- Úprava je vrácení jakéhokoli typu, který MediaWiki rozpozná. Viz #Typy vrácení.
- Počet vrácených úprav je menší nebo roven
$wgRevertedTagMaxDepth
. - Samotná vrácená revize není označena jako vrácená nebo smazaná.
- Úprava je považována za automaticky schválenou, což může mít v závislosti na vašem nastavení různý význam:
- Pokud máte na své wiki povoleno hlídání pomocí konfigurační proměnné
$wgUseRCPatrol
, automatické schválení je ekvivalentem automatického hlídání úpravy. Vrácený tag bude tedy okamžitě použit pouze u uživatelů s uživatelským právemautopatrol
. - Pokud máte nainstalované rozšíření pro správu obsahu, například FlaggedRevs, může MediaWiki sdělit, zda je úprava automaticky schválena. Jak přesně se to určí, závisí na rozšíření. (Viz #Integrace rozšíření.)
- Pokud máte na své wiki povoleno hlídání pomocí konfigurační proměnné
Pokud je vrácená aktualizace štítku zastavena subsystémem hlídek nebo rozšířením, lze ji později přeplánovat, jakmile úpravu schválí jiný uživatel. V případě hlídkování se to stane, když je hlídána úprava. Podrobnosti o integraci s touto funkcí v rozšířeních naleznete v další části.
Tag mw-reverted
se nikdy nepoužije na fiktivní revize odpovídající akcím v protokolu (např. přesuny stránek a změny ochrany), a to ani v případě, že se objeví uprostřed série vrácených úprav, aby se předešlo náznaku, že příslušná akce byla vrácena zpět.
autopatrol
širší skupině uživatelů.
Integrace rozšíření
Rozšíření, která zahrnují nějaký mechanismus schvalování revizí, se mohou připojit k funkci vrácených tagů, aby MediaWiki věděla, kdy má provést aktualizaci vrácených tagů.
První částí je háček BeforeRevertedTagUpdate. Volá se před naplánováním aktualizace a rozšíření mohou tento háček použít k zabránění spuštění aktualizace, pokud úprava není považována za automaticky schválenou a vyžaduje další kontrolu.
Pokud byla aktualizace zastavena, může ji rozšíření později přeplánovat pomocí služby RevertedTagUpdateManager
.
- Schválení revize
$revertedTagUpdateManager = MediaWikiServices::getInstance()->getRevertedTagUpdateManager();
$revertedTagUpdateManager->approveRevertedTagForRevision( $acceptedRevisionId );
FlaggedRevs
Pokud jste si nainstalovali rozšíření FlaggedRevs, bude vrácení změn považováno za automaticky schválené, pokud:
- Funkce FlaggedRevs je nakonfigurována tak, aby se na stránce nepoužívala.
- Uživatel má uživatelské oprávnění
autoreview
. - Úprava je vlastní návrat.
- Úprava je jinak způsobilá k automatickému recenzování.
Pokud nebylo vrácení automaticky schváleno, lze jej později schválit pouhým zkontrolováním úpravy.