Wikipedia
testwiki
https://test.wikipedia.org/wiki/Main_Page
MediaWiki 1.46.0-wmf.22
first-letter
Media
Special
Talk
User
User talk
Wikipedia
Wikipedia talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Thread
Thread talk
Summary
Summary talk
Test namespace 1
Test namespace 1 talk
Test namespace 2
Test namespace 2 talk
Draft
Draft talk
Campaign
Campaign talk
TimedText
TimedText talk
Module
Module talk
SecurePoll
SecurePoll talk
CNBanner
CNBanner talk
Translations
Translations talk
Event
Event talk
Topic
Newsletter
Newsletter talk
Page370
0
49441
735981
649164
2026-04-02T09:31:38Z
~2026-20342-53
73381
735981
wikitext
text/x-wiki
'''Page370'''
This in test page No. 370. Test 2. Test 3.
[[Category:Category with multiple files]]
rjilif32sroa2gj90tiirwaf30sbps2
SyntaxHighlight GeSHi
0
49894
735982
690445
2026-04-02T09:46:57Z
~2026-20444-29
73382
735982
wikitext
text/x-wiki
Testing the [[mw:Extension:SyntaxHighlight GeSHi|Extension:SyntaxHighlight GeSHi]] extension. Test!
==Examples ==
;Normal pre, no extension
<pre>
if (blah) {
// stuff
}
</pre>
;Basic example (pre mode):
<source lang="c">
if (blah) {
// stuff
}
</source>
;Div mode:
<source lang=c enclose=div>
if (blah) {
// stuff
}
</source>
;Light on black may be easier to read than light on white - dark on light may be better.
{|
| style="background:black" |
<source lang=c enclose=div>
if (blah) {
// stuff
}
</source>
| style="background:darkgray" |
<source lang=c enclose=div>
if (blah) {
// stuff
}
</source>
| style="background:gray" |
<source lang=c enclose=div>
if (blah) {
// stuff
}
</source>
| style="background:lightgrey" |
<source lang=c enclose=div>
if (blah) {
// stuff
}
</source>
| style="background:WhiteSmoke" |
<source lang=c enclose=div>
if (blah) {
// stuff
}
</source>
|}
;Line numbered (forces div mode):
<source lang="c" line>
if (blah) {
// stuff
}
</source>
;Line numbered with offset:
<source lang="c" line start=20>
if (blah) {
// stuff
}
</source>
;Non-strict:
<source lang="php">
$x = 'y';
<?php
$x = 'y';
?>
</source>
;Strict:
<source lang="php" strict>
$x = 'y';
<?php
$x = 'y';
?>
</source>
<source lang="sql" >
INSERT into arsearch2 (Findindex,Word,Src,session) SELECT STRAIGHT_JOIN ind0.Findindex,ind0.Subject,ind0.Src,25765
FROM arindex as ind0 ,arindex as ind1,arindex as ind2
WHERE ind0.Subject='WIRING'
AND ind1.Subject='DIAGRAM'
AND ind2.Subject='LUCAS'
AND ind0.FindIndex=ind1.FindIndex
AND ind0.FindIndex=ind2.FindIndex
AND ind0.Src=ind1.Src
AND ind0.Src=ind2.Src
</source>
;Long lines, yuck.
<source lang=python>
try:
self._site = getSite(otherlang, familyName)
except ValueError:
raise NoPage('%s is not a local page on %s, and the %s family is not supported by PyWikipediaBot!' % (title, self.site(), familyName
))
</source>
==More examples ==
* [[SyntaxHighlight GeSHi/Hello world]]
===BNF===
<source lang=bnf>
<postal-address> ::= <name-part> <street-address> <zip-part>
<name-part> ::= <personal-part> <last-name> <opt-jr-part> <EOL>
| <personal-part> <name-part>
<personal-part> ::= <first-name> | <initial> "."
<street-address> ::= <opt-apt-num> <house-num> <street-name> <EOL>
<zip-part> ::= <town-name> "," <state-code> <ZIP-code> <EOL>
</source>
===Diff===
==== Context format ====
<source lang=diff>
*** /path/to/original ''timestamp''
--- /path/to/new ''timestamp''
***************
*** 1,3 ****
--- 1,9 ----
+ This is an important
+ notice! It should
+ therefore be located at
+ the beginning of this
+ document!
+
This part of the
document has stayed the
same from version to
***************
*** 5,20 ****
be shown if it doesn't
change. Otherwise, that
would not be helping to
! compress the size of the
! changes.
!
! This paragraph contains
! text that is outdated.
! It will be deleted in the
! near future.
It is important to spell
! check this dokument. On
the other hand, a
misspelled word isn't
the end of the world.
--- 11,20 ----
be shown if it doesn't
change. Otherwise, that
would not be helping to
! compress anything.
It is important to spell
! check this document. On
the other hand, a
misspelled word isn't
the end of the world.
***************
*** 22,24 ****
--- 22,28 ----
this paragraph needs to
be changed. Things can
be added after it.
+
+ This paragraph contains
+ important new additions
+ to this document.
</source>
==== Unified format ====
<source lang=diff>
--- original ''timestamp''
+++ new ''timestamp''
@@ -1,3 +1,9 @@
+This is an important
+notice! It should
+therefore be located at
+the beginning of this
+document!
+
This part of the
document has stayed the
same from version to
@@ -5,16 +11,10 @@
be shown if it doesn't
change. Otherwise, that
would not be helping to
-compress the size of the
-changes.
-
-This paragraph contains
-text that is outdated.
-It will be deleted in the
-near future.
+compress anything.
It is important to spell
-check this dokument. On
+check this document. On
the other hand, a
misspelled word isn't
the end of the world.
@@ -22,3 +22,7 @@
this paragraph needs to
be changed. Things can
be added after it.
+
+This paragraph contains
+important new additions
+to this document.
</source>
===INI===
<source lang=ini>
[section1]
; some comment on section1
var1 = abc
var2 = 451
[section2]
; another comment
var1 = 123
var2 = dfg
</source>
f8lamvd6vz1wjq2uc91a46dl079dg2p
MediaWiki:Titleblacklist
8
80922
735872
673666
2026-04-01T18:15:12Z
Tanbiruzzaman
57483
735872
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
^Wn\/.* <noedit|errmsg=wikinews-closed>
8uwxgfy38py782rnin5170pxp40z0kr
735881
735872
2026-04-01T19:20:29Z
Tanbiruzzaman
57483
735881
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
^(Wn\/|[A-Za-z]+:Wn\/.*) <noedit|errmsg=wikinews-closed>
2unot2d5ldx7bfbdxs4niqg42cgawv2
735885
735881
2026-04-01T19:25:10Z
Tanbiruzzaman
57483
735885
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
^(Wn\/|[A-Za-z ]+:Wn\/.*) <noedit|errmsg=wikinews-closed>
83xhnw2duik1ehkajs3yirijglb5wvw
735891
735885
2026-04-01T19:37:16Z
Tanbiruzzaman
57483
Reverted edits by [[Special:Contributions/Tanbiruzzaman|Tanbiruzzaman]] ([[User talk:Tanbiruzzaman|talk]]) to last revision by [[User:X-Savitar|X-Savitar]]
673666
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
dtucmnhuxuuljkecc08qd03cztxxm01
735892
735891
2026-04-01T19:40:51Z
Tanbiruzzaman
57483
Undid revision [[Special:Diff/735891|735891]] by [[Special:Contributions/Tanbiruzzaman|Tanbiruzzaman]] ([[User talk:Tanbiruzzaman|talk]])
735892
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
^(Wn\/|[A-Za-z ]+:Wn\/.*) <noedit|errmsg=wikinews-closed>
83xhnw2duik1ehkajs3yirijglb5wvw
735896
735892
2026-04-01T19:43:40Z
Tanbiruzzaman
57483
735896
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
^(?:Wn\/|[A-Za-z ]+:Wn\/.*) <noedit|errmsg=wikinews-closed>
5vc2n40l112y8p4nlgm3ashyodxnn4l
735900
735896
2026-04-01T19:47:13Z
Tanbiruzzaman
57483
Restored revision 735891 by [[Special:Contributions/Tanbiruzzaman|Tanbiruzzaman]] ([[en:w:User:BrandonXLF/Restorer|Restorer]])
735900
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
dtucmnhuxuuljkecc08qd03cztxxm01
735901
735900
2026-04-01T19:47:35Z
Tanbiruzzaman
57483
Restored revision 735885 by [[Special:Contributions/Tanbiruzzaman|Tanbiruzzaman]] ([[en:w:User:BrandonXLF/Restorer|Restorer]])
735901
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
^(Wn\/|[A-Za-z ]+:Wn\/.*) <noedit|errmsg=wikinews-closed>
83xhnw2duik1ehkajs3yirijglb5wvw
735904
735901
2026-04-01T19:48:05Z
Tanbiruzzaman
57483
735904
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
^(Wn\/|[A-Za-z ]+:Wn\/.*) <noedit|errmsg=wikinews-closed>
^(Wn\/|[A-Za-z]+:Wn\/.*) <noedit|errmsg=wikinews-closed>
eo51j7l20fd76l53irkjpxzx1juatrj
735908
735904
2026-04-01T19:49:48Z
Tanbiruzzaman
57483
735908
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
^Wn\/.* <noedit|errmsg=wikinews-closed>
^(Wn\/|[A-Za-z ]+:Wn\/.*) <noedit|errmsg=wikinews-closed>
khvbwlltwadj5jrrwew8bdj6rgaptk6
735917
735908
2026-04-01T19:57:35Z
Tanbiruzzaman
57483
Reverted edits by [[Special:Contributions/Tanbiruzzaman|Tanbiruzzaman]] ([[User talk:Tanbiruzzaman|talk]]) to last revision by [[User:X-Savitar|X-Savitar]]
673666
wikitext
text/x-wiki
# This is a title blacklist. Titles and users that match a regular expression here cannot be created.
# Use "#" for comments.
# This is case insensitive by default
# Reiterated creations of Trisha Louis articles
.*Trisha.*[Ll]ouis.* <sysop> <errmsg=Reiterated Creations that Violate [[Wikipedia:What Test Wiki is not]]> #AlvaroMolina 15/02/2017
# Editnotice pseudospace
Template:Editnotices\/.* <autoconfirmed|noedit|errmsg=titleblacklist-custom-editnotice>
# [[meta:Meta:FormWizard]] ([[phab:T129058]])
Wikipedia:FormWizard\/Config\/.* <noedit>
# [[phab:T160432]] and [[phab:T199071]] test, used by Pywikibot in edit_failure_tests.py
User:UpsandDowns1234\/Blacklisttest
#Test requested on talk
Bad title
Talk:Bad title
#Other test
Autoconfirmed title blacklist test.* <autoconfirmed|noedit>
Sysop title blacklist test.* <noedit>
dtucmnhuxuuljkecc08qd03cztxxm01
Testesd
0
91714
735998
657025
2026-04-02T10:33:24Z
PieWriter
72123
Tagging broken redirect for deletion ([[:m:User:PieWriter/BR.js|BR]])
735998
wikitext
text/x-wiki
{{delete|Broken redirect|delete gsr}}
#REDIRECT [[Usuario:!Silent/Taller]]
0y3a99mybx7n50x1ub2zqa0hedlm87l
735999
735998
2026-04-02T10:33:49Z
PieWriter
72123
Restored revision 657025 by [[Special:Contributions/Cooldudeseven7|Cooldudeseven7]] ([[User talk:Cooldudeseven7|talk]]) (TwinkleGlobal)
735999
wikitext
text/x-wiki
#REDIRECT [[Usuario:!Silent/Taller]]
d8srzm82eeghpsd2f9v6jd5vmsnnyib
Dufi
0
99732
735996
351701
2026-04-02T10:27:47Z
PieAlt
73198
Tagging broken redirect for deletion ([[:m:User:PieWriter/BR.js|BR]])
735996
wikitext
text/x-wiki
{{delete|Broken redirect}}
#REDIRECT [[Dufí]]
aow0ewhuo8zqvhk4xwag9qdfdtry3g9
736000
735996
2026-04-02T10:34:16Z
PieWriter
72123
Reverted edits by PieAlt via [[:m:User:PieWriter/massundo.js|massundo]]
736000
wikitext
text/x-wiki
#REDIRECT [[Dufí]]
dy58mrlbqq8aqnpusask53zfmyha95b
Wikipedia:Sandbox
4
107092
735824
734288
2026-04-01T12:55:33Z
ToadetteEdit
59028
/* Please start your testing below this line */ android app testing
735824
wikitext
text/x-wiki
<noinclude>{{Sandbox}}</noinclude>
== Please start your testing below this line ==
Android app testing
l3vg6qp9sqspb6eo7klavj7pdog04vh
735945
735824
2026-04-01T21:00:53Z
Cewbot
33876
Clear the sandbox. If you want to keep it longer, please test it in [[Special:MyPage/Sandbox|personal sandbox]], you can also check the revision history of the sandbox.
735945
wikitext
text/x-wiki
<noinclude>{{Sandbox}}</noinclude>
== Please start your testing below this line ==
9v37rcaxoiwjar8n3q9n7dcsjdvcyin
Global sysops/Requests
0
110000
736004
735490
2026-04-02T10:34:20Z
PieWriter
72123
Reverted edits by PieAlt via [[:m:User:PieWriter/massundo.js|massundo]]
736004
wikitext
text/x-wiki
{{Dynamite|title=:Global sysops/Requests/header}}
<!-- Edit below this line. New requests to the bottom. -->
* Please block {{LockHide|1=A2093064-test2|2=test2wiki:}}: aa. --[[User:A2093064-test|A2093064-test]] ([[User talk:A2093064-test|talk]]) 05:41, 13 May 2020 (UTC)
* Please block {{LockHide|1=A2093064-test2|2=q:zh:}}: Vandalism. Spam / spambot. BB. --[[User:A2093064-test|A2093064-test]] ([[User talk:A2093064-test|talk]]) 05:43, 13 May 2020 (UTC)
* Please block {{LockHide|1=A2093064-test2|2=null:}}: Vandalism. --[[User:A2093064-test|A2093064-test]] ([[User talk:A2093064-test|talk]]) 08:42, 13 May 2020 (UTC)
* Please block https://wikimania.wikimedia.org/wiki/Special:Contributions/A2093064-test2: Vandalism. --[[User:A2093064-test|A2093064-test]] ([[User talk:A2093064-test|talk]]) 08:47, 13 May 2020 (UTC)
* Please block {{LockHide|1=A2093064-test2|2=test2wiki:}}: Vandalism. --[[User:A2093064-test|A2093064-test]] ([[User talk:A2093064-test|talk]]) 08:48, 13 May 2020 (UTC)
* [[:testwiki:File:Foo.svg]]: Broken redirect. [[User:PieAlt|PieAlt]] ([[User talk:PieAlt|talk]]) 04:43, 29 March 2026 (UTC)
4j0djofacfr1h8bxlqjd1go2oj73i1g
Vernonanthura polyanthes
0
115181
735988
442366
2026-04-02T10:17:02Z
PieAlt
73198
Tagging broken redirect for deletion
735988
wikitext
text/x-wiki
{{delete|Broken redirect}}
#REDIRECT [[Vernonanthura polyanthes moved]]
lud0nddr8z812iv2lopdkro293rl3hl
735990
735988
2026-04-02T10:18:02Z
PieAlt
73198
Tagging broken redirect for deletion using [[:m:User:PieWriter/BR.js]]
735990
wikitext
text/x-wiki
{{delete|Broken redirect}}
{{delete|Broken redirect}}
#REDIRECT [[Vernonanthura polyanthes moved]]
670nnmri9oyr6ati3atdpn9unqv2yop
736002
735990
2026-04-02T10:34:18Z
PieWriter
72123
Reverted edits by PieAlt via [[:m:User:PieWriter/massundo.js|massundo]]
736002
wikitext
text/x-wiki
{{delete|Broken redirect}}
#REDIRECT [[Vernonanthura polyanthes moved]]
lud0nddr8z812iv2lopdkro293rl3hl
Testing BDP C
0
117058
735946
732738
2026-04-02T00:03:31Z
InternetArchiveBot
34092
Rescuing 4 sources and tagging 0 as dead.) #IABot (v2.0.9.5
735946
wikitext
text/x-wiki
{{redirect confusion| Bataille des trois empereurs| Bataille des Trois Rois{{!}}Bataille des trois rois}}
{{Voir homonymes|Austerlitz}}
{{Infobox Conflit militaire
| conflit = Bataille d’Austerlitz
| guerre = [[Troisième Coalition]]
| image = Austerlitz-baron-Pascal.jpg
| légende = ''Napoléon à la bataille d'Austerlitz'' par [[François Gérard]].
| date = {{date|2|décembre|1805}}
| lieu = [[Slavkov u Brna|Austerlitz]] (<small>[[Couronne de Bohême|royaume de Bohême-Moravie]], [[Empire d'Autriche]], [[Saint-Empire romain germanique]]</small>)
| issue = Victoire française décisive
*[[Traité de Presbourg]]
*Dissolution du [[Saint-Empire romain germanique]]
*Création de la [[confédération du Rhin]]
| combattants1 = {{Empire français}}
| combattants2 = {{Russie impériale}}<br />{{Empire d'Autriche}}
| commandant1 = {{drapeau|Empire français}} {{Napoléon Ier}}<br />{{drapeau|Empire français}} [[Édouard Mortier]]<br />{{drapeau|Empire français}} [[Jean-Baptiste Bessières]]<br />{{drapeau|Empire français}} [[Charles XIV Jean|Jean-Baptiste Bernadotte]]<br />{{drapeau|Empire français}} [[Louis Nicolas Davout]]<br />{{drapeau|Empire français}} [[Jean-de-Dieu Soult]]<br />{{drapeau|Empire français}} [[Jean Lannes]]<br />{{drapeau|Empire français}} [[Joachim Murat]]
| commandant2 = {{drapeau|Empire russe}} {{souverain2|Alexandre Ier (empereur de Russie)| de Russie}}<br />{{drapeau|Empire russe}} [[Mikhaïl Koutouzov]]<br />{{drapeau|Empire russe}} [[Piotr Ivanovitch Bagration|Pierre de Bagration]]<br />{{drapeau|Monarchie de Habsbourg}} {{souverain2|François Ier (empereur d'Autriche)|d'Autriche}}<br />{{drapeau|Monarchie de Habsbourg}} [[Franz von Weyrother]]<br />{{drapeau|Monarchie de Habsbourg}} {{souverain2|Jean Ier (prince de Liechtenstein)|de Liechtenstein}}
| forces1 = 75 000<br /> 139 canons{{sfn|Chandler|1966|p=417}}
| forces2 = {{nobr|85 000}}<br />278 canons{{sfn|Clodfelter|2008|p=159-160}}
| pertes1 = {{unité|1305|morts}}<br />{{nombre|6940|blessés}}<br />573 prisonniers<br/> 1 drapeau{{sfn|Clodfelter|2008|p=159-160}}
| pertes2 = {{nombre|13000}} morts ou blessés<br/> {{nombre|11500 prisonniers}} 180 canons<br /> 45 à 50 drapeaux{{sfn|Clodfelter|2008|p=159-160}}
| batailles = {{Troisième coalition}}
| géolocalisation = République tchèque/Europe
| cause =
}}
La '''bataille d’Austerlitz''' est un affrontement décisif de la [[Campagne d'Allemagne (1805)|campagne d'Allemagne]] qui s'est déroulé le lundi {{date|2|décembre|1805}}{{Note|groupe=Note|11 [[frimaire]] an XIV selon le [[calendrier républicain]] en usage en France jusqu'à la fin de 1805, 20 novembre 1805 selon le calendrier russe avant la [[Passage du calendrier julien au calendrier grégorien|réforme de 1918]].}} entre [[Brno|Brünn]] et [[Slavkov u Brna|Austerlitz]], dans le sud de la [[Moravie]] (alors une [[Monarchie de Habsbourg|possession autrichienne]], aujourd'hui en [[Tchéquie]]).
Cette bataille oppose la [[Grande Armée]] commandée par [[Napoléon Ier|Napoléon Bonaparte]], sacré [[Sacre de Napoléon Ier|empereur des Français]] un an jour pour jour auparavant, aux troupes de {{souverain2|François Ier (empereur d'Autriche)}}, empereur d'[[Empire d'Autriche|Autriche]] et du [[Saint-Empire romain germanique]], et aux [[Armée russe dans les guerres de la Révolution et de l'Empire|forces russes]] d'{{souverain2|Alexandre Ier (empereur de Russie)}}, [[Liste des monarques de Russie|tsar de Russie]]. Les trois souverains sont présents sur le champ de bataille, d'où son surnom de « bataille des Trois Empereurs ».
Après neuf heures de combat, la Grande Armée de Napoléon, malgré son infériorité numérique, met en déroute, encercle et bat de façon décisive les forces de la [[Troisième Coalition]] qui se dissout à la suite de la bataille, obligeant l'Autriche à signer la [[traité de Presbourg|paix de Presbourg]]. Outre son importance stratégique, cette bataille, la [[Campagne d'Allemagne (1805)|campagne qui l'a précédée]], menant la Grande Armée de [[Camp de Boulogne (Napoléon)|Boulogne-sur-Mer]] (Pas-de-Calais) jusqu’à Austerlitz, et les ruses de Napoléon, sont considérées comme un [[chef-d'œuvre]] tactique de {{souverain-|Napoléon Ier}}, enseignée dans toutes les académies militaires au monde. Le [[Royaume-Uni de Grande-Bretagne et d'Irlande|Royaume-Uni]], membre et financeur de la coalition, n'a que marginalement contribué aux opérations terrestres : ses petits contingents débarqués en Italie et en Allemagne du nord n'ont pas affronté la [[Grande Armée]]. Victorieux sur mer à la [[bataille de Trafalgar]] en {{date|octobre 1805}}, le [[Royaume-Uni]] demeure la seule grande puissance à continuer de s’opposer à l'[[Premier Empire|empire napoléonien]].
== Contexte ==
{{Article détaillé|Troisième Coalition|Ordre de bataille des unités françaises ayant participé à la bataille d'Austerlitz}}
Après la capitulation des Autrichiens à Ulm, Napoléon avait donné l'ordre à ses troupes de marcher rapidement sur Vienne, la capitale autrichienne. En {{date|novembre 1805}}, la Grande Armée française, forte d'environ 200 000 hommes, avait franchi la frontière autrichienne et progressait le long du Danube, s'emparant de villes importantes et sécurisant des ponts stratégiques{{sfn|Horne|1979|p=117-119}}. Les Autrichiens s'étaient retirés pour se regrouper et rejoindre l'avancée des troupes russes commandées par le général Mikhaïl Koutouzov. Le retrait autrichien rendit Vienne vulnérable et, le {{date|13 novembre 1805}}, les Français pénétrèrent dans la ville sans rencontrer de résistance. Napoléon s'empara des ressources de Vienne, dont l'arsenal et les réserves, pour renforcer son armée{{sfn|Chandler|1966|p=407}}. Koutouzov tenta d'éviter une confrontation directe avec Napoléon jusqu'à l'arrivée de renforts. Les Russes se retirèrent en direction de la Moravie, où il livra plusieurs combats avec les Français à Dürrenstein ({{date|11 novembre}}) et Schöngrabern ({{date|16 novembre}}). Le {{date|18 novembre}}, Koutouzov atteignit Wischau, où il fit sa jonction avec le corps de Frédéric de Buxhoeveden et les Autrichiens de Jean de Liechtenstein{{sfn|Goetz|2005|p=77, 83 et 85}}.
=== Les conditions météorologiques ===
Les {{1er}} et {{date|2 décembre}} sont marqués en milieu de journée par un soleil éclatant, d'où l'expression du {{citation|Soleil d'Austerlitz}} qui passa à la postérité, surtout avec la citation prononcée par Napoléon {{citation|Voilà le soleil d'Austerlitz !}} en 1812 avant la [[bataille de la Moskova]]<ref>{{Lien web|url= https://www.lepoint.fr/culture/1er-decembre-1805-les-illuminations-d-austerlitz-01-12-2017-2176636_3.php|titre={{1er}} décembre 1805 : les illuminations d'Austerlitz |site= Le Point|date=01-12-2017}}</ref>{{,}}<ref>{{Lien web|url= https://francearchives.fr/fr/commemo/recueil-2005/38810|titre= Le "soleil" d'Austerlitz ou la bataille des trois Empereurs|site= France Archives|date= 2005}}</ref>{{,}}<ref>{{Lien web|url= https://www.herodote.net/2_decembre_1805-evenement-18051202.php|titre= 2 décembre 1805 Napoléon triomphe au soleil d'Austerlitz|site= Hérodote.net|date= 24 septembre 2019}}</ref>.
<center>
{| class="wikitable"
!Date || {{précision nécessaire|Température}} || Vent || Précipitations
|-
|29/11 || {{unité|1.1|°C}} || faible || Pluie, brume
|-
|30/11 || {{unité|2.0|°C}} || faible || Neige
|-
|1/12 || {{unité|2.5|°C}} || moyen || Pluie
|-
|2/12 || {{unité|5.2|°C}} || faible || Brume, pluie
|-
|3/12 || {{unité|2.5|°C}} || faible || Neige
|}
</center>
=== Le plan et le dispositif français ===
{{Article détaillé|Ordre de bataille des unités françaises ayant participé à la bataille d'Austerlitz}}
Le plan de Napoléon prévoyait que les corps de Soult et de Lannes, accompagnés de Murat, progresseraient au total d'environ 53 000 hommes en direction de Brno et de Wischau, afin d'attirer l'attention de l'ennemi en prenant possession de la ville d'Austerlitz et des hauteurs voisines de Pratzen. Napoléon spécula sur le fait que les Alliés, avec leur supériorité numérique, seraient tentés de s'engager dans une bataille où les chances étaient presque deux contre une en leur faveur. Dès que l'ennemi aurait mordu à l'hameçon, les corps de Bernadotte et de Davout devraient avancer depuis Iglau et Vienne, respectivement, afin de porter ses troupes à un effectif de 75 000 hommes pour la bataille proprement dite, réduisant ainsi les chances à un rapport plus raisonnable{{sfn|Chandler|1966|p=410}}.
Napoléon avait déjà transmis son plan à ses généraux la veille, le {{date|1 décembre 1805}} à 20h30. À son aile gauche se trouvait le Vème Corps (Lannes) qui devait occuper la route d'Olmütz avec les divisions du général Caffarelli et de Suchet. Napoléon mit également à sa disposition la cavalerie de Murat, composée des cuirassiers des généraux d'Hautpoul et Nansouty, des dragons des généraux Walther et Beaumont et des chasseurs des généraux Milhaud et Kellermann. Au centre, derrière le Goldbach, se trouvait le IVe Corps (Soult) qui, avec les divisions de Vandamme et de St. Hilaire, traversa le ruisseau près des villages de Girzikowitz et de Puntowitz et prit possession du plateau de Pratzen. Un peu plus loin, derrière, il plaça la troisième division du général Legrand. À environ 2,5 km de là, près de Groß Raigern, se trouvait la division du général Friant. La réserve était constituée par le 1er corps (Bernadotte), la garde impériale et la division du général Oudinot. De cette façon, il tenait une masse de 25.000 hommes prêts à se rendre sur tout point où ils seraient nécessaires{{sfn|Thiers|1893|p=63}}.
=== Le plan et le dispositif allié ===
{{Article détaillé|Ordre de bataille des armées russes et autrichiennes ayant participé à la bataille d’Austerlitz}}
Le soir du {{date|1 décembre}}, environ 85 000 soldats alliés et 278 pièces d'artillerie sont arrivés sur le terrain. Après leur arrivée, le tsar et l'empereur d'Autriche, qui avaient établi leur quartier général commun dans le village de Krenowitz, avaient discuté toute l'après-midi du {{date|1 décembre}} de la marche à suivre. Alors que l'empereur François Ier continuait à conseiller la prudence, le tsar Alexandre Ier, encouragé par le prince Dolgoroukov et d'autres nobles, exigeait une action immédiate. Soutenu par le chef d'état-major autrichien Weyrother, Alexandre Ier réussit à s'imposer. Pour mettre en œuvre le plan, Weyrother a divisé l'armée alliée en sept divisions. La 1ère et la 2ème colonnes (Buxhöwden) formaient l'aile droite. Les 4e et 5e colonnes (Liechtenstein) formaient l'aile gauche et la 3e colonne (Bagration) le centre. Menée par l'avant-garde du FML Kienmayer, les 13 600 hommes de la 1re colonne du lieutenant-général Dochturow devaient s'emparer du village de Tellnitz, pivoter vers le nord pour rejoindre la 2e colonne (11 700 hommes) du lieutenant-général Langeron et traverser ensemble le Goldbach{{sfn|Chandler|1966|p=415-416}}.
Avant de faire la jonction avec Dochturow, Langeron devait s'emparer de Zokolnitz avec la 3e colonne (10 000 hommes) de Przbysewskis. Après avoir traversé la rivière, tous trois devaient lancer une attaque résolue contre le centre français qui, à ce moment-là, tiendrait probablement un nouveau front de Puntowitz à Turas. Au même moment, la 4e colonne (23 900 hommes), sous les ordres du Feldzeugmeister Kollowrath et du lieutenant-général Miloradovitch, devait, après une avancée directe depuis les hauteurs de Pratzen, lancer une attaque frontale à l'arrière de la ligne de combat française qui se trouvait au point d'appui à Puntowitz. Entre-temps, Bagration devait mener avec 13 000 hommes une deuxième attaque contre le flanc gauche de Napoléon le long de la route Olomouc-Brno afin de lier les troupes françaises stationnées là pendant les manœuvres décisives au sud. En réserve se trouvait derrière le centre la garde impériale russe (10.000 hommes) sous le grand-duc Constantin{{sfn|Chandler|1966|p=415-416}}.
== La bataille ==
=== Sud ===
[[Image:Battle of Austerlitz, Situation at 1800, 1 December 1805.png|300px|vignette|gauche|Les positions françaises (en bleu) et alliées (en rouge) vers 18 heures le {{date|1|décembre|1805}}. Carte du Département d’histoire de l’[[Académie militaire]] des [[États-Unis]].]]
A 7 heures du matin, l'avant-garde du général Kienmayer avait commencé à attaquer le village de Telnitz. Le village était défendu par le 3e régiment d'infanterie de ligne et un bataillon de chasseurs corses, que la nature du terrain rendait invisibles. Les Français ont réussi à repousser plusieurs attaques, mais lorsque la 1ère colonne (Dochturow) est arrivée à 08h00, ils se sont retirés. Après avoir traversé le Goldbach, Kienmayer lança ses quatorze escadrons dans la plaine derrière Telnitz contre la cavalerie légère du général Margaron. Margaron résista à plusieurs assauts, mais ne put tenir tête à une telle masse de cavalerie. Comme la division de Friant, sous le commandement du maréchal Davout, n'était pas encore arrivée de Gross Raigern, la droite française était fortement débordée. Mais le général Buxhövden, après avoir attendu longtemps, dut à son tour attendre la 2e colonne (Langeron). La majeure partie de la cavalerie, qui devait occuper la plaine à droite des Russes et à gauche des Français, avait mal compris l'ordre qui lui prescrivait cette position : elle s'était donc dirigée vers Pratzen et y avait pris position{{sfn|Thiers|1893|p=68-70}}.
Dès qu'elle s'est aperçue de son erreur, elle a essayé de revenir à sa place, retardant ainsi la pré-archivage des deux colonnes. Après que le général Langeron soit enfin arrivé devant Sokolnitz, il a commencé à attaquer la ville. Entre-temps, le général Friant était arrivé de Gross Raigern avec sa division composée de cinq régiments d'infanterie et de six régiments de dragons. Cela permit aux Français de lancer une contre-attaque sur Sokolnitz. Après avoir occupé Sokolnitz, le général Friant a laissé le 48e régiment d'infanterie pour reprendre le château de Sokolnitz à la colonne de Pribyschewski. Au même moment, la colonne de Langeron avait lancé une nouvelle attaque sur Sokolnitz et Friant avait rappelé le 111e régiment d'infanterie pour faire face à la nouvelle menace. Pour le reste de la matinée, 8.000 fantassins français et 2.800 cavaliers se sont battus contre 35.000 alliés dans une pénible bataille d'usure{{sfn|Thiers|1893|p=68-70}}.
=== Centre ===
Pendant les combats sur la droite des Français, le maréchal Soult a lancé son attaque au centre à 9 heures. Les deux divisions de Vandamme et de St. Hilaire, formées en colonnes serrées, se déplaçaient rapidement vers la colline de Pratzen. La division de Vandamme se dirigeait vers la gauche, celle de Saint-Hilaire vers la droite du village de Pratzen, profondément encastré dans un ravin qui se termine par le cours du ruisseau Goldbach près de Puntowitz. Avant même que Soult ne commence son attaque, la 4e colonne (Kollowrath, Miloradovitch) s'était déployée sur la colline Kollowarth avec deux escadrons du régiment autrichien de dragons n°1, les 2e et 3e bataillons du Novgorod et le 1er bataillon de grenadiers du régiment d'infanterie d'Abşeron sur le Staré Vinohrady. Et Miloradovitch avec les brigades de Repninsky et de Berg. Sur la droite, le général St. Hilaire s'approchait rapidement de son objectif, le village de Pratzen. Une première attaque fut repoussée par les Russes ; mais après une autre, ils durent se replier. Pendant ce temps, le 10e régiment d'infanterie légère, à la tête de la division Saint-Hilaire, contournait Pratzen et se dirigeait vers la colline de Pratze. Au sud, Sergei Kamensky avait entendu le début des combats sur Pratze. Faisant preuve d'une excellente initiative, il a immédiatement prévenu Langeron et a avancé avec ses deux régiments en direction du Pratzeberg{{sfn|Castle|2004|p=51-61}}.
Les éléments de tête de sa brigade s'approchèrent vers 10h00 du seul bataillon du 10e régiment d'infanterie légère de Morand sur le Pratzeberg. Morand signala immédiatement l'approche de la colonne ennemie à St. Hilaire, qui déplaça le 1er bataillon du 10e régiment d'infanterie légère et le 1er bataillon du 36e régiment d'infanterie du nord-est vers le sud-est et plaça trois de ses pièces divisionnaires sous le commandement de Morand. Peu après, St. Hilaire reçut la nouvelle de l'approche d'une colonne venant du nord et, comme il n'était pas clair s'il s'agissait d'une colonne autrichienne ou bavaroise, St. Hilaire ordonna à ses troupes de s'arrêter et d'observer la colonne qui s'approchait. Comme trois de ses cinq bataillons disponibles étaient déjà engagés pour faire face aux six bataillons de Kamensky, il ne restait plus que deux bataillons pour faire face à cette nouvelle menace. Au total, St. Hilaire disposait d'environ 4.000 hommes. Face à lui, les six bataillons de Kamensky comptaient environ 3.000 hommes, ainsi que cinq bataillons autrichiens avec 2.500 hommes supplémentaires. Au même moment, Vandamme lança une attaque sur la ligne autrichienne, derrière laquelle les Russes de Miloradovich se repliaient{{sfn|Castle|2004|p=51-61}}.
La ligne autrichienne a résisté à la première attaque française. Le bataillon de grenadiers du régiment d'infanterie Salzbourg n° 23 a repoussé une partie de l'infanterie française vers le nord-ouest dans une contre-attaque à la baïonnette. Les grenadiers furent alors attaqués et repoussés par une unité de dragons français. Sur la colline, Kollowrath a réagi rapidement. Il ordonna au 6e bataillon du régiment d'infanterie Auersperg n° 24 de combler la brèche qui séparait le bataillon de grenadiers de la ligne principale. L'avancée du 6e bataillon a permis aux grenadiers de se détacher des dragons français et de se regrouper. La contre-attaque des grenadiers fut coûteuse, mais elle stoppa l'avancée de Schiner et donna aux bataillons russes de Miloradovitch le temps de se regrouper{{sfn|Goetz|2005|p=197}}.
Lorsque la situation s'est stabilisée sur sa gauche, Vandamme a dirigé le 2e bataillon du 4e régiment d'infanterie vers Blaziowitz. Après que l'avance autrichienne vers Blaziowitz ait été repoussée par les dragons français, Vandamme a déplacé ses troupes vers le nord pour lancer une attaque groupée sur la droite autrichienne. À l'extrême gauche, Vandamme renforça le brigadier Schiner avec le 1er bataillon du 4e régiment d'infanterie et ordonna à Schiner d'attaquer la position autrichienne par le nord-ouest. Le brigadier Ferey devait attaquer avec sa propre brigade (57e et 46e régiments d'infanterie) et le 55e régiment d'infanterie de la brigade de Varé. Le brigadier Candras prit une position de réserve avec le 28e régiment d'infanterie. Le général de brigade Varé avec le 43e régiment d'infanterie devait relier le côté gauche de Vandamme au côté droit de St Hilaire, qui se trouvait à Pratze. Vandamme avait, sans le savoir, privé St. Hilaire de toute possibilité de récupérer une partie de la brigade de Varé pour faire face à la menace inattendue de Kamensky, en entraînant la moitié de la brigade de Varé dans les combats de Stare Vinohrady{{sfn|Goetz|2005|p=198}}.
Entre-temps, les premiers bataillons de Kamensky étaient arrivés à proximité du Pratzeberg. Ignorant la situation, Miloradovich Kamensky a immédiatement engagé ses bataillons de tête pour attaquer les Français qui occupaient le Pratzeberg. Le 2e bataillon du 10e régiment d'infanterie légère était désavantagé en termes de nombre, mais grâce à une meilleure formation, il a pu stopper l'avancée russe de manière décisive. Les Russes ont riposté, mais leur expérience insuffisante du combat et l'apparition d'une forte colonne française derrière eux ont réduit leur efficacité, tandis que le feu français a causé de lourdes pertes. Les troupes de Koutouzov, désormais réunies avec celles du général Jurczik, se préparèrent à l'attaque. Peu après 10h00, les bataillons autrichiens sous le commandement de Jurczik avancèrent pour attaquer la 2e brigade de St. Hilaire, dirigée par le brigadier Thiébault{{sfn|Goetz|2005|p=198-205}}.
Les trois bataillons de tête de Jurczik, le 6e bataillon du régiment d'infanterie Reuss-Greitz n° 55, le 3e bataillon du régiment d'infanterie de Württemberg n° 38 et le régiment d'infanterie Beaulieu n° 58, se sont emparés de Thiébault. 58, avancèrent vers la position de Thiébault, tandis que les deux bataillons restants de Jurczik, le 6e bataillon du régiment d'infanterie de Kerpen n°49 et le régiment d'infanterie de Lindenau n°29, restèrent en réserve sur une basse colline à l'arrière. Pendant que les Autrichiens avançaient, les Français retenaient leur feu jusqu'à ce que les Autrichiens soient arrivés à trente ou quarante mètres. L'avance autrichienne ralentit et finit par s'arrêter, ce qui poussa les Français à contre-attaquer{{sfn|Goetz|2005|p=198-205}}.
Au même moment, Vandamme lança une attaque décisive sur la position clé alliée de Stare Vinohrady, tandis que l'attaque alliée sur Pratze et Pratzeberg s'enlisait. À 10h30, le brigadier Ferey et ses six bataillons avancèrent contre la position autrichienne et attaquèrent frontalement la ligne autrichienne par le nord-ouest. La brigade renforcée de Ferey était numériquement équivalente à toute la première ligne autrichienne à Stare Vinohrady. Pendant que Ferey occupait les Autrichiens, Schiner positionnait ses trois bataillons pour les attaquer par le nord. Peu après que Ferey eut lancé son attaque sur le côté gauche des Autrichiens, Schiner attaqua avec trois bataillons le côté droit des Autrichiens. Sur toute la longueur des hauteurs de Pratzen, de Stare Vinohrady à Pratzeberg, de violents combats firent rage pendant au moins une demi-heure. Alerté par des rapports inquiétants, Langeron arriva au Pratzeberg vers 10h30. Langeron comprit l'inutilité d'un affrontement avec l'infanterie française mieux entraînée et ordonna à Kamensky de lancer une attaque à la baïonnette. Morand mena la contre-attaque, ce qui permit aux Français de se rapprocher à environ 200 pas de la ligne de défense russe. Après l'échec de l'attaque, Langeron envoya un officier à Buxhövden pour décrire la situation et demander d'urgence des renforts{{sfn|Goetz|2005|p=198-205}}.
Vandamme a profité de sa supériorité numérique pour élargir son front et augmenter la pression sur les flancs de Kollowrath. Après environ une heure de combat, la résistance des Autrichiens a finalement cédé. Malgré le recul des Autrichiens sur la droite, Koutouzov ordonna de poursuivre l'attaque sur le Pratzeberg, dans l'espoir de reprendre la crête des hauteurs au sud et donc une position d'où il pourrait éviter un désastre sur son armée. L'attaque s'est enlisée et l'infanterie alliée a de nouveau reculé. Alors que les troupes de Vandamme avançaient vers la ligne de Miloradovitch, Koutouzov ordonna une dernière attaque qui échoua à nouveau. Avec la défaite de la ligne de Kollowrath et l'échec simultané des Alliés à reconquérir le Pratzeberg, la première phase du plan de bataille de Napoléon avait complètement réussi. Malgré l'arrivée d'une forte colonne alliée là où on ne l'attendait pas, les hauteurs furent sécurisées après deux heures de combats intenses. Alors que Koutouzov faisait une dernière tentative désespérée pour déloger les Français du Pratzeberg afin de prendre un certain avantage sur les hauteurs, Vandamme fit une pause pour reformer ses bataillons épuisés{{sfn|Goetz|2005|p=198-205}}.
=== Nord ===
Selon le plan, Bagration devait maintenir sa position sur les collines autour de Posoritz jusqu'à ce qu'il soit clair que la bataille avait commencé. Il devait alors avancer et pousser les Français devant lui. La Vème colonne du Liechtenstein, entièrement composée de cavalerie, occuperait la vaste plaine légèrement ondulée entre Bagration et la IVème colonne. La garde impériale russe, commandée par le grand-duc Constantin, soutenait ces deux corps. En face de Bagration, à environ cinq kilomètres à l'ouest, se trouvaient le 5e corps de Lannes et la réserve de cavalerie de Murat. La confusion qui régnait à l'aube du côté autrichien avait empêché le Liechtenstein d'atteindre à temps ses positions entre les villages de Blazowitz et Krug.
Bagration était déjà en mouvement lorsque la cavalerie russe est arrivée. Sa gauche s'appuyait sur les villages de Krug et Holubitz tandis que sa droite s'étendait au-delà de la route Brno-Olmütz jusqu'aux hauteurs au nord-ouest de la maison de poste de Posoritz. Comme Bagration, Lannes avait reçu l'ordre de ne rien faire avant le début de la bataille et d'avancer ensuite le long de la route Brno-Olmütz. Il avait placé la division de Suchet à gauche de la route et celle de Caffarelli à droite. Les bataillons du 17e régiment d'infanterie légère se trouvaient sur la colline de Santon, et devant le village de Bosenitz. Les quatre régiments de cavalerie légère des brigades de Picard et de Marizy se trouvaient en avant de l'infanterie. À gauche de Suchet se trouvaient les brigades de cavalerie de Milhaud et de Trelliard, à droite de Caffarelli les dragons du brigadier Boyé. Derrière l'infanterie, les divisions de cavalerie du général Walther, de Nansouty et de d`Hautpoul formaient la réserve{{sfn|Castle|2004|p=51-61}}.
Napoléon avait observé la bataille victorieuse de Pratzenhöhe depuis son poste de commandement sur Zuranhöhe. Des rapports provenant de la partie inférieure du Goldbach indiquaient que les troupes alliées avaient été sévèrement harcelées le long du Goldbach, de Tellnitz à Sokolnitz. À sa gauche, le long de la route de Brno à Olomouc, le reste de la première ligne de Napoléon avait commencé à avancer vers 9h15. À 10 heures, la résistance farouche rencontrée par les troupes du maréchal Lannes obligea cependant Napoléon à réévaluer son plan initial, qui consistait à contourner la droite alliée et à pousser toute son armée vers le sud. La confusion qui régnait à l'aube du côté autrichien avait empêché le Liechtenstein d'atteindre à temps ses positions entre les villages de Blazowitz et Krug. L'ordre de la colonne était maintenant inversé : les cuirassiers autrichiens du FML Friedrich Ludwig Hohenlohe menaient la colonne, suivis du lieutenant-général von Essen avec la brigade de Shepelev. La brigade d'Uvarov avait déjà reçu l'ordre de soutenir Bagration sur la gauche, tandis que Hohenlohe avait pris position à 8h30 près du village de Blaziowitz. À 9h00, Shepelev avait pris position entre Hohenlohe et Uvarov. À 09h00 également, la garde impériale russe sous le grand-duc Constantin atteignit la colline à l'est de Blaziowitz{{sfn|Goetz|2005|p=172-192}}.
Vers 9h15, Lannes donna l'ordre d'avancer. Avec la cavalerie légère de Kellermann en tête, toute la troupe avança dans la plaine entre Bosenitz et Blaziowitz. Le mouvement des Français était immédiatement visible pour les Alliés et suscitait une inquiétude considérable. Liechtenstein, dont la cavalerie était la plus proche des Français qui avançaient, ordonna une attaque immédiate vers 9h30. La soudaineté et la force de l'attaque russe laissèrent peu de temps à Kellermann pour réagir. Il ordonna à ses troupes de pivoter vers la gauche afin de dégager la ligne de tir pour l'infanterie. Entre-temps, Kellermann avait reformé ses quatre régiments sur le côté gauche (nord) des colonnes françaises pour lancer une contre-attaque. Après 15 minutes de combat, les ulans russes ont été contraints de se retirer. Bagration prit l'initiative et ordonna à ses troupes d'avancer afin de combler l'écart entre ses troupes et la 5e colonne. Uvarov donna alors l'ordre d'avancer contre la droite de Kellermann. Contraint d'abandonner la poursuite des ulans russes, Kellermann dirigea ses trois régiments restants directement vers la nouvelle menace au sud{{sfn|Goetz|2005|p=172-192}}.
Au cours d'une bataille brève mais violente, les hussards français repoussèrent les hussards d'Elisabetgrad vers le sud. Après une pause qui leur permit de se remettre de la série d'attaques déroutantes, les hussards de Kellermann se retrouvèrent bientôt sous le feu de l'artillerie russe au sud et sur la route principale. Uvarov n'a cependant pas pu profiter de l'occasion pour lancer une nouvelle attaque contre Kellermann, car une crise se développait sur sa gauche autour de Blaziowitz. Pendant ce temps, les tirs d'artillerie français atteignaient la garde russe à l'est de Blaziowitz, causant de lourdes pertes. Constantin comprit que les Français risquaient de s'emparer de Blaziowitz et de diviser les lignes alliées. Il ordonna au GM St. Priest de sécuriser Blaziowitz avec le bataillon de chasseurs de la garde personnelle et deux pièces d'artillerie. Simultanément, les troupes de Lannes et le 13e régiment d'infanterie légère du colonel Castex avancèrent en sens inverse vers Blaziowitz, tandis que les dragons français prenaient position au sud du village{{sfn|Goetz|2005|p=172-192}}.
Le bataillon de chasseurs de St. Priest atteignit Blaziowitz en premier, occupant les maisons et les jardins et surprenant les Français qui perdirent leur première attaque. Le colonel Castex a été tué lors d'une attaque et des combats acharnés ont eu lieu. En infériorité numérique, Saint-Priest demanda des renforts à Constantin, qui décida de n'envoyer qu'un soutien limité, tout en gardant des réserves pour des avancées plus larges des Français. Les Français, renforcés par le 51e régiment d'infanterie, attaquèrent à nouveau par l'ouest et contournèrent les lignes russes. Sans renforts supplémentaires, il ordonna cependant la retraite à 11h00 tandis que les Français s'emparaient de Blaziowitz. Au même moment, le Liechtenstein déplaça sa cavalerie autrichienne au sud du village pour soutenir les troupes sur les hauteurs de Stare Vinohrady, laissant à Uvarov le soin de couvrir l'espace entre Blaziowitz et Krug. Les cuirassiers du Liechtenstein arrivèrent vers 10h30 et trouvèrent les Autrichiens sous le feu nourri des Français. Le général Caramelli profita de l'occasion pour diriger le régiment de cuirassiers lorrains n° 7 contre l'infanterie avancée de Bernadotte, mais il subit de lourdes pertes{{sfn|Goetz|2005|p=172-192}}.
Une autre attaque du régiment de cuirassiers Nassau n° 5 ne put pas non plus arrêter les Français et ne retarda leur avance que de trente minutes. En déplaçant sa cavalerie vers Stare Vinohrady, Lichtenstein permit à Bernadotte, avec la division de Rivaud, de reprendre sa progression au sud de Blaziowitz. À 11h30, les Français avaient atteint le village et creusaient l'écart entre la colonne russe de Constantin et la ligne alliée. Afin d'éviter une scission de l'armée, Constantin ordonna à la Garde russe d'avancer sur Blaziowitz. Les bataillons de la Garde lancèrent une attaque à la baïonnette, mais l'attaque perdit rapidement de son élan, car les gardes étaient épuisés lorsqu'ils atteignirent la ligne principale de Rivaud. Le feu français leur infligea de lourdes pertes et, bien que l'attaque russe ait repoussé la première ligne de Rivaud, elle fut stoppée par la seconde{{sfn|Goetz|2005|p=172-192}}.
Alors que les combats s'intensifiaient, Konstantin reçut de Koutouzov l'ordre de se retirer globalement des hauteurs. Après avoir consulté le Liechtenstein, Constantin décida de se retirer en direction de Krenowitz afin de soutenir la 4e colonne et de garder le contact avec l'armée principale. Liechtenstein ordonna au Kaiser-Kürassier-Regiment Nr. 1 de soutenir Konstantin, tandis que les autres régiments autrichiens couvraient la retraite de la 4e colonne et maintenaient ouverte la route vers Krenowitz. À 12h30, l'infanterie de la garde russe, soutenue par la cavalerie et les cavaliers impériaux, s'était détachée, reformée et se retirait en direction de Krenowitz. À 11h00, Bagration ordonna une attaque de diversion sur Bosenitz. Le 5e régiment de chasseurs sous Fedor Gogel y surprend le détachement français et le repousse en direction de Santon{{sfn|Goetz|2005|p=172-192}}.
Cependant, lorsque le 17e régiment d'infanterie légère retranché sur le santon ouvrit le feu, l'attaque russe fut repoussée avec de lourdes pertes. Les hommes de Gogel se retirèrent vers Bosenitz, mais furent bientôt repoussés par une contre-attaque française menée par le 17e régiment d'infanterie légère et la cavalerie de Milhaud et Trelliard. L'attaque de Bagration sur Bosenitz n'a eu que peu de succès, mais a retardé l'avance française de trente minutes. Les combats à Blaziowitz et les lourdes pertes subies par les alliés empêchèrent Napoléon de réaliser l'enveloppement prévu. L'infanterie française resta liée par les tirs d'artillerie russes sur la route Brno-Olmütz. Néanmoins, les événements sur les hauteurs de Pratzen éclipsèrent ces revers{{sfn|Goetz|2005|p=172-192}}.
=== Retraite ===
A midi, les troupes de Napoléon avaient réussi à contenir Bagration sur la droite des Alliés, Soult contrôlait Pratzen au centre et Davout ralentissait l'avancée des Alliés, tandis que les grenadiers d'Oudinot soutenaient l'arrière-garde. Napoléon réorganisa les forces françaises, retira le corps de Bernadotte des combats avec Bagration et mit en place une masse de décision sur le Goldbach. En outre, il déplaça le quartier général impérial sur la colline de Pratzen. Napoléon déplaça le centre français vers la droite pour encercler le commandement de Buxhowden. À ce moment-là, seule la garde impériale russe était encore disponible pour combler le vide qui se créait au centre des alliés. Vers 13h00, le grand-duc Ferdinand fit venir quatre nouveaux bataillons pour attaquer la division du général Vandamme{{sfn|Chandler|1966|p=428 et 430-432}}.
La garde russe perça la ligne française sans grande difficulté et ne fut arrêtée que par le feu concentré de la deuxième ligne. La garde russe se replia finalement sur Krzenowitz pour se regrouper. C'est à ce moment que Vandamme reçut l'ordre de Napoléon de pivoter vers la droite, ce qui mit toutefois inévitablement en danger son flanc gauche et son arrière-garde. Le grand-duc Constantin en profita pour donner l'ordre d'envoyer la cavalerie contre le flanc de Vandamme, suivi d'une nouvelle attaque frontale de l'infanterie de la garde russe. Malgré le succès de la contre-attaque russe, les Alliés ne disposaient pas de réserves pour l'exploiter. Une contre-attaque française repoussa les restes de la garde impériale russe en direction de Krzenowitz. Avec ce revers, le centre allié cessa d'exister. En réaction à ces développements, Napoléon émit une série de nouveaux ordres{{sfn|Chandler|1966|p=428 et 430-432}}.
La prise des Pratzenhöhen fut confiée à Bernadotte ; la Garde, les grenadiers d'Oudinot et le IVe corps devaient se déplacer vers le sud pour encercler Buxhowden par le nord et l'est, tandis que Davout attaquerait par l'ouest. À 14h30, Buxhowden était complètement isolée et aucun ordre ne pouvait être reçu de Koutouzov ou du tsar. Peu après, Vandamme occupait Augezd et le IIIe corps (Davout) avançait vers les villages de Sokolnitz et Tellnitz. Le maréchal russe ordonna alors à la moitié de ses troupes de se retirer vers l'est avant que les Français ne leur coupent la route. Les troupes restantes ont reçu l'ordre de se regrouper uniquement de manière défensive le long de la rive ouest du Goldbach. À 15 heures, les Russes avaient reculé jusqu'aux lacs et marais gelés du sud. La division de Przbysewski et la moitié de la division de Langeron ont été capturées. La colonne de Buxhowden, qui s'est repliée vers l'est, a été divisée en deux par Vandamme depuis Augezd ; Buxhöwden n'a réussi à s'échapper qu'avec son avant-garde en direction d'Austerlitz. Les survivants de la 1ère colonne (Doctorov), tentèrent de s'échapper par les lacs gelés, mais Napoléon ordonna de bombarder la glace avec 25 canons. Au nord, Bagration commença également à se replier et à 16h30, les combats étaient terminés. Les Français étaient trop épuisés pour poursuivre Bagration ; dans les 40 heures qui suivirent, il parvint à mettre 60 kilomètres de terrain entre lui et le champ de bataille{{sfn|Chandler|1966|p=428 et 430-432}}.
== Les conséquences ==
Dans la nuit du 2 au {{date|3 décembre}}, les deux parties de l'armée de coalition se rencontrèrent à nouveau à Czeitsch, sur la route de la Hongrie. Au petit matin, le prince Jean de Liechtenstein se rendit au quartier général de Napoléon afin de convenir d'une entrevue entre les empereurs François et Napoléon. L'armée poursuivit sa retraite sans être inquiétée par les Français, qui la croyaient en route pour Olomouc. Ce n'est que lorsqu'ils atteignirent Austerlitz que Napoléon se rendit compte de son erreur et rappela Murat et Lannes. Le {{date|4 décembre}}, les coalisés traversèrent la March à Holic. Le même jour, Napoléon et François se rencontrèrent pour conclure un armistice qui entra en vigueur le lendemain. Le tsar Alexandre accepta les conditions approuvées par François, qui stipulaient que l'armée russe devait retourner à ses frontières. Austerlitz fut une victoire écrasante de Napoléon. Son armée, qui avait reçu un excellent entraînement dans les camps de campagne de la Manche, contourna complètement les manœuvres maladroites et non coordonnées des coalisés. Influencé par la présence du tsar Alexandre, qui avait pris le commandement en chef et s'était laissé abuser par un entourage aussi arrogant qu'inexpérimenté, Napoléon parvint à attirer l'armée de la coalition sur le champ de bataille qu'il avait choisi{{sfn|Castle|2004|p=87-89}}.
=== Pertes ===
La bataille d'Austerlitz a entraîné de lourdes pertes dans les deux camps. Chez les Alliés, les Russes déplorèrent 11 000 morts et blessés (dont environ 2 000 qui se noyèrent dans les lacs), tandis que les Autrichiens enregistrèrent 600 tués, 1 200 blessés et un total de 11 453 prisonniers de guerre (9 767 Russes et 1 686 Autrichiens). Au total, 32 % de l'armée austro-russe, 45 drapeaux et 180 canons furent perdus. Les vainqueurs français, quant à eux, eurent à déplorer 1 305 tués, 6 940 blessés et 573 prisonniers de guerre. Pendant toute la campagne de 1805, l'Autriche a subi au total environ 90.000 pertes, la Russie 50.000 et la France et ses alliés 35.000{{sfn|Clodfelter|2008|p=159-160}}.
== La légende napoléonienne ==
=== Le discours de l'empereur ===
[[Fichier:Austerlitz Perrier Benoit.jpg|vignette|372x372px|Vue actuelle du château d'Austerlitz, appartenant en 1805 à la [[Noblesse autrichienne|famille de Kaunitz]]. L'Empereur a prononcé son discours depuis le balcon du premier étage.]]
{{citation bloc|De notre camp impérial d’Austerlitz le 12 frimaire an 14
Soldats, je suis content de vous.
Vous avez, à la journée d'Austerlitz, justifié tout ce que j'attendais de votre intrépidité ; vous avez décoré vos aigles d'une immortelle gloire. Une armée de {{nombre|100000|hommes}}, commandée par les empereurs de Russie et d'Autriche, a été, en moins de quatre heures, ou coupée ou dispersée. Ce qui a échappé à votre fer s'est noyé dans les lacs. Quarante drapeaux, les étendards de la garde impériale de Russie, cent vingt pièces de canon, vingt généraux, plus de {{nombre|30000 prisonniers}}, sont le résultat de cette journée à jamais célèbre. Cette infanterie tant vantée, et en nombre supérieur, n'a pu résister à votre choc, et désormais vous n'avez plus de rivaux à redouter. Ainsi, en deux mois, cette Troisième Coalition a été vaincue et dissoute. La paix ne peut plus être éloignée ; mais, comme je l'ai promis à mon peuple avant de passer le Rhin, je ne ferai qu'une paix qui nous donne des garanties et assure des récompenses à nos alliés.
Soldats, lorsque le peuple français plaça sur ma tête la couronne impériale, je me confiais à vous pour la maintenir toujours dans ce haut éclat de gloire qui seul pouvait lui donner du prix à mes yeux. Mais dans le même moment nos ennemis pensaient à la détruire et à l'avilir ! Et cette couronne de fer, conquise par le sang de tant de Français, ils voulaient m'obliger à la placer sur la tête de nos plus cruels ennemis ! Projets téméraires et insensés que, le jour même de l'anniversaire du couronnement de votre Empereur, vous avez anéantis et confondus ! Vous leur avez appris qu'il est plus facile de nous braver et de nous menacer que de nous vaincre.
Soldats, lorsque tout ce qui est nécessaire pour assurer le bonheur et la prospérité de notre patrie sera accompli, je vous ramènerai en France ; là, vous serez l'objet de mes plus tendres sollicitudes. Mon peuple vous reverra avec joie, et il vous suffira de dire, “J'étais à la bataille d'Austerlitz”, pour que l'on réponde, “Voilà un brave”<ref>[http://www.servicehistorique.sga.defense.gouv.fr/La-proclamation-d-Austerlitz-2.html?var_recherche=austerlitz Texte original sur le site du service historique de la Défense.]</ref>}}
== Postérité ==
=== Commémoration de la bataille ===
Les élèves officiers de l'[[École spéciale militaire de Saint-Cyr]] à [[Coëtquidan]] identifient par les lettres du nom « Austerlitz » chacun des dix mois de leur scolarité en commençant par octobre (A) (décembre est donc S, par exemple). Août et septembre sont respectivement nommés Z' et Z". De plus, ils célèbrent, ainsi que les élèves de [[Corniche (classe préparatoire)|corniche]] du [[Prytanée national militaire|Prytanée militaire de La Flèche]], du [[lycée militaire de Saint-Cyr]], du [[lycée militaire d'Aix-en-Provence]] et de la [[maison d'éducation de la Légion d'honneur]] de [[Saint-Denis (Seine-Saint-Denis)|Saint-Denis]] (Seine-Saint-Denis), la victoire française par une cérémonie le jour anniversaire de la bataille (2 S).
[[Image:Panorama Austerlitz Battle Field Prace Czech Rep.jpg|Le champ de bataille d'Austerlitz de nos jours avec en arrière-plan le village de Pratzen.|800px|centré|vignette]]
Toutefois, le deux-centième anniversaire de la bataille n'a fait l'objet que d'une commémoration très limitée en [[France]]. La ville d'[[Slavkov u Brna|Austerlitz]], située en [[République tchèque]], a organisé le {{date|2|décembre|2005}} une reconstitution de la bataille<ref>Voir le [http://www.austerlitz2005.com/fr/anniversaires/bicentenaire/ site du projet Austerlitz 2005] {{Webarchive|url=https://web.archive.org/web/20070302233229/http://www.austerlitz2005.com/fr/anniversaires/bicentenaire/ |date=2007-03-02 }}.</ref>. Seule la ministre de la Défense, [[Michèle Alliot-Marie]], a assisté aux cérémonies officielles de reconstitution, dans un contexte marqué en France par la remise en cause du rôle de {{Napoléon Ier}} dans le rétablissement de l'[[esclavage]] dans les [[colonies]] et par la volonté d'afficher un bas niveau de commémoration consécutivement aux [[Émeutes de 2005 dans les banlieues françaises|émeutes]] qui venaient d'agiter les [[banlieue]]s françaises à l'automne de la même année 2005.
=== Monuments et lieux ===
==== France ====
===== Paris =====
* [[Arc de triomphe de l'Étoile]] (Construit entre 1806 et 1836, inauguré en 1836).
* [[Arc de triomphe du Carrousel]] (Construit entre 1806 et 1809, inauguré en 1809).
* [[Colonne Vendôme]] (Construite entre 1806 et 1810, inaugurée en 1810). Partiellement constituée des canons pris à l'ennemi.
* [[Pont d'Austerlitz]] (Construit entre 1802 et 1807, inauguré en 1807), qui a donné son nom au [[quai d'Austerlitz]], puis à la [[gare d'Austerlitz]], au [[pont d'Austerlitz]] et à la [[rue d'Austerlitz (Paris)|rue d'Austerlitz]].
===== Strasbourg =====
* [[Place d'Austerlitz]] (renommée en 1837).
===== Ajaccio =====
* Place d'Austerlitz (anciennement place de Casone), sur laquelle a été érigé un [[Monument commémoratif de Napoléon Ier|Monument commémoratif de {{souverain-|Napoléon Ier}}]] (1938).
==== Tchéquie ====
* Stèle commémorative (1930), [[Butte de Zuran]], Podolí<ref name=".1">{{Lien web |langue=fr |titre=Austerlitz |url=https://www.napoleon.org/magazine/lieux/austerlitz/ |site=napoleon.org |consulté le=5 mars 2021}}</ref>.
* Monument de la paix (1912), [[Prace (district de Brno-Campagne)|Prace]]<ref name=".1" />.
==== Pays-Bas ====
* [[Pyramide d'Austerlitz]] (1804, renommée en 1806), [[Woudenberg]]
== Notes et références ==
=== Notes ===
<references group="Note" />
=== Références ===
{{Références}}
== Voir aussi ==
{{Autres projets
| commons = Battle of Austerlitz
}}
=== Bibliographie ===
* {{Ouvrage|langue=en|prénom1=Ian|nom1= Castle|titre=Austerlitz 1805. The fate of empires|éditeur=Osprey|lieu= Oxford|année=2004|isbn=1-84176-136-2}}
* {{Ouvrage|langue=en|prénom1=David G.|nom1= Chandler|titre=The Campaigns of Napoleon|éditeur=Scribner|lieu=New York|année=1966|isbn=0-02-523660-1}}
* {{Ouvrage|langue=en|prénom= Michael|nom=Clodfelter|titre= Warfare and Armed Conflicts A Statistical Encyclopedia of Casualty and Other Figures, 1492–2015|éditeur= McFarland, Incorporated, Publishers|lieu= Jefferson|année=2008|isbn=9781476625850}}
* {{Ouvrage|langue=en|prénom1=Robert |nom1=Goetz|titre=1805, Austerlitz : Napoleon and the destruction of the Third Coalition|éditeur=Greenhill Books|lieu=London|année=2005|isbn=1853676446}}
* {{Ouvrage|prénom1=Françoise|nom1=Goupy|prénom2=Gérard|nom2=Goupy|titre=Les Brouillards d'Austerlitz|éditeur=Jets d'encre|année=2013|mois=juin|jour=27|isbn=978-2-35485-418-8}}
* {{Ouvrage|langue=en|prénom1=Alistair|nom1=Horne|titre=Napoleon, Master of Europe, 1805-1807|éditeur=Morrow|lieu=New York|année=1979}}
* {{Ouvrage|langue=en|prénom1=Adolphe|nom1=Thiers|titre=History of the Consulate and the Empire of France under Napoleon|volume=IV|éditeur=J.B. Lippincott|lieu=Philadelphia|année=1893}}
==== Lecture supplémentaire ====
* {{Ouvrage|langue=fr|prénom1=Jacques|nom1=Garnier|préface=Jean Tulard|titre=Austerlitz|sous-titre=2 décembre 1805|éditeur=Fayard|lieu=Paris|année=2005|isbn=978-2-213-62729-8|oclc=62533414}}.
* {{Ouvrage|auteur1=[[Claude Manceron]]|titre=Austerlitz [et la campagne d’Allemagne]|éditeur=[[Robert Laffont]]|date=1960|réimpression=1992|isbn=978-2-221-03044-8}}
* {{Ouvrage|langue=fr|auteur1=[[François-Guy Hourtoulle]]|auteur2=André Joineau|responsabilité2=planches uniformologiques|auteur4=Jean-Marie Mongin|responsabilité4=cartographie|titre=Austerlitz|sous-titre=le soleil de l'Aigle|éditeur=Histoire et collections|lieu=Paris|année=2003|isbn=978-2-913903-70-8|oclc=55134454}}.
* {{Ouvrage|langue=fr|prénom1=Pierre|nom1=Miquel|lien auteur1=Pierre Miquel|champ libre=prix littéraire de l'Armée de Terre Erwan Bergot|titre=Austerlitz|éditeur=Albin Michel|lieu=Paris|année=2005|isbn=978-2-226-15587-0|oclc=57691374}}.
* Michel Arrous, Paul Noirot, Dominique Feinterie, ''Les Batailles Napoléoniennes de [[Honoré de Balzac|Balzac]]'' dans : {{Ouvrage|langue=fr|titre=Napoléon de l'histoire à la légende|sous-titre=actes du colloque des 30 novembre et 1er décembre 1999 à l'auditorium Austerlitz du musée de l'armée, Hôtel national des Invalides|éditeur=Editions In Forma Maisonneuve et Larose|lieu=Paris|année=2000|isbn=978-2-7068-1438-9}}.
* {{Ouvrage|langue=fr|prénom1=Michel|nom1=Arrous|et al.=oui|titre=Austerlitz|sous-titre=Napoléon au cœur de l'Europe|éditeur=Musée de l'armée Economica|collection=Hautes études militaires|lieu=Paris|numéro dans collection=30|année=2007|isbn=978-2-7178-5362-9}}.
* {{Ouvrage|langue=fr|prénom1=Danielle|nom1=Quintin|prénom2=Bernard|nom2=Quintin|titre=Austerlitz, 2 décembre 1805 : dictionnaire biographique des soldats de Napoléon tombés au champ d'honneur|éditeur=Archives & culture|lieu=Paris|année=2004|isbn=978-2-911665-95-0|oclc=56963207}}.
* [[Jacques Jourquin]], ''Nous étions à Austerlitz : {{date|2 décembre 1805}}, mémoires et souvenirs des combattants'', édition critique ; présentation Jean Tulard, Tallandier, 2004 {{ISBN|978-2847342321}}.
* Baron Thiébault, « Rôle de la brigade Thiébault ({{1re}} de la division Saint-Hilaire du {{4e|corps}} de la Grande armée) à la bataille d'Austerlitz », dans ''Le Spectateur militaire'', {{date|15 avril}} au {{date|15 septembre 1847}}, {{43e|volume}}
* Alexandre Missoffe, ''Pour le meilleur et pour l'Empire'', Éditions le nez au vent, 2022, {{ISBN|978-2958212827}}
=== Articles connexes ===
* [[Histoire de France]]
* {{Napoléon Ier}}
* [[Première Coalition]]
* [[Deuxième Coalition]]
* [[Troisième Coalition]]
* [[Liste des batailles des guerres de la Révolution et du Premier Empire]]
* [[Moustache (chien)]] : [[Chien de guerre|chien soldat]] qui s'est distingué au cours de cette bataille
* [[Village d'Austerlitz]]
=== Liens externes ===
{{Liens}}
* [http://www.pousse-pion.fr/blog/wan/ordre-de-bataille-austerlitz/ ''Ordre de bataille Austerlitz détaillé à l'échelle de la brigade''], sur le site Pousse-pion.
* [http://www.histoire-pour-tous.fr/batailles/294-austerlitz-2-decembre-1805-anatomie-dune-bataille.html La bataille d'Austerlitz ({{date|2 décembre 1805}})], sur le site de Histoire pour tous.
* [http://inmf.org/ffranausterlitz.htm La bataille d'Austerlitz, {{date|2 décembre 1805}}] sur le site de l'Institut napoléonien Mexique-France.
* {{en}} [http://shadojak.tripod.com/milhis.html#grandarm%e9 Ordre de bataille de la Grande Armée], suivant les années.
* [http://archiv.radio.cz/francais/osobnosti/udalost.phtml?cislo=12 La bataille de Slavkov - Austerlitz (1805)] par Jaroslava Gissübelova, sur le site de [[Radio Prague]].
* [http://www.servicehistorique.sga.defense.gouv.fr/La-proclamation-d-Austerlitz-2.html La proclamation d’Austerlitz, {{date|2 décembre 1805}}], sur le site du [[service historique de la Défense]].
* [http://www.vialupo.com/austerlitz Austerlitz: la bataille des trois empereurs].
* [http://aigle.conquerant.free.fr/index.php/Batailles/Bataille-dAusterlitz.html Bataille d'Austerlitz] {{Webarchive|url=https://web.archive.org/web/20100118184300/http://aigle.conquerant.free.fr/index.php/Batailles/Bataille-dAusterlitz.html |date=2010-01-18 }} et [http://aigle.conquerant.free.fr/index.php/Articles/Liste-des-95-officiers-de-larmee-francaise-tues-ou-blesses-mortellement-a-la-bataille-dAusterlitz.html Liste des 95 officiers de l’armée française tués ou blessés mortellement à la bataille d’Austerlitz] {{Webarchive|url=https://web.archive.org/web/20160304022525/http://aigle.conquerant.free.fr/index.php/Articles/Liste-des-95-officiers-de-larmee-francaise-tues-ou-blesses-mortellement-a-la-bataille-dAusterlitz.html |date=2016-03-04 }} sur le site de l'Aigle conquérant.
* [http://www.napoleonicsociety.com/french/austerlitzf.htm La bataille d'Austerlitz] (Société napoléonienne internationale).
* [https://www.napoleon-empire.net/batailles/austerlitz.php#relrusse Texte du rapport officiel russe sur la bataille d'Austerlitz, rédigé par le général Koutouzov].
* [http://www.histwar.fr/autour/recits-historiques/bataille-austerlitz.html La Bataille d'Austerlitz] {{Webarchive|url=https://web.archive.org/web/20120122150219/http://www.histwar.fr/autour/recits-historiques/bataille-austerlitz.html |date=2012-01-22 }}, texte issu de la compilation de diverses relations sur la bataille, ([[HistWar : Les Grognards]]).
* [http://www.czechtourism.com/fr/e/slavkov-battle-of-austerlitz/ Commémoration annuelle de la bataille].
* [http://www.agrt.cz/en Site de l'''Austerlitz Golf Resort''].
{{Palette|Épopée napoléonienne|Ordre de bataille durant les guerres de la Révolution et de l'Empire}}
{{Portail|histoire militaire|République tchèque|Premier Empire|Grande Armée|France|Empire autrichien|Empire russe|années 1800}}
{{DEFAULTSORT:Bataille Austerlitz}}
[[Catégorie:Bataille de la campagne d'Allemagne (1805)|Austerlitz]]
[[Catégorie:Bataille de Napoléon Bonaparte|Austerlitz]]
[[Catégorie:Bataille de Mikhaïl Koutouzov|Austerlitz]]
[[Catégorie:Bataille des guerres de la Révolution et de l'Empire impliquant l'Autriche|Austerlitz]]
[[Catégorie:Bataille des guerres de la Révolution et de l'Empire impliquant l'Empire russe|Austerlitz]]
[[Catégorie:Décembre 1805]]
[[Catégorie:2 décembre]]
[[Catégorie:Bataille gravée sur l'arc de triomphe de l'Étoile|Austerlitz]]
frz9hgbt8wfwtaxoxik8ok7zwrha847
User:MrJaroslavik/global.js
2
118543
735874
735755
2026-04-01T18:41:31Z
MrJaroslavik
44012
+
735874
javascript
text/javascript
// GLOBAL - FOR ALL WIKIS START //
// ------------------------------------------------------------//
// ------------------------------------------------------------//
// ------------------------------------------------------------//
//-------------------------------------------------------------//
mw.loader.load('https://test.wikipedia.org/w/index.php?title=User:MrJaroslavik/CuLog.js&action=raw&ctype=text/javascript')
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// USER INFO
if ( [ 2, 3 ].indexOf( mw.config.get( 'wgNamespaceNumber' ) ) !== -1 && ( !mw.config.get( 'wgArticleId' ) || mw.config.get( 'wgAction' ) === 'view' ) )
mw.loader.load( '//test.wikipedia.org/w/index.php?title=User:MrJaroslavik/test.js&action=raw&ctype=text/javascript' );
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// TOGGLE SIDEBAR
mw.loader.load('https://en.wikipedia.org/w/index.php?title=User:BrandonXLF/ToggleSidebar.js&action=raw&ctype=text/javascript');
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// CENTRALAUTH IN SIDEBAR
mw.loader.using(['mediawiki.util']).done(function(){
var user = mw.config.get( 'wgRelevantUserName' );
if( user !== null && !mw.util.isIPAddress(user) ){
mw.util.addPortletLink(
'p-tb',
'https://meta.wikimedia.org/w/index.php?title=Special:CentralAuth/' + user,
'CentralAuth',
't-centralauth',
'Go to CentralAuth page of this user'
);
}
});
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// CONTACT STEWARDS
mw.loader.using( [ 'mediawiki.util' ], function() {
"use strict";
mw.util.addPortletLink(
'p-tb',
'https://meta.wikimedia.org/wiki/Special:Contact/stewards',
'Contact Stewards',
't-contactstewards',
'Contact Stewards',
'v',
'#t-info'
);
});
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// REDIRECT TO META IF ACCESS LOCAL CENTRALAUTH PAGE
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) == 'CentralAuth' && mw.config.get('wgDBname') != 'metawiki' ){
location.href = '//meta.wikimedia.org/wiki/Special:CentralAuth/' + mw.util.wikiUrlencode( mw.config.get( 'wgRelevantUserName' ) );
}
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//URLShortener Authored by ZI Jony, edited by Martin Urbanec minus i18n //
mw.loader.using( [ 'mediawiki.util' ], function() {
"use strict";
mw.util.addPortletLink(
'p-tb',
'https://meta.wikimedia.org/wiki/Special:UrlShortener?url=https:' + mw.config.get('wgServer') + '/wiki/' + mw.config.get('wgPageName'),
'URL Shortener',
't-Special:UrlShortener',
'Launch URL Shortener',
'v',
'#t-info'
);
});
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//SUBPAGES
$(function() {
mw.util.addPortletLink(
'p-cactions',
"//" + window.location.hostname + mw.config.get('wgArticlePath').replace('$1', "Special:PrefixIndex/" + encodeURIComponent(mw.config.get('wgPageName')) + "/"),
'Subpages',
'subpages',
'Open the Special:PrefixIndex',
's'
);
});
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// ROLLBACK WITHOUT LEAVE
if (!RBNL) {
var RBNL = {};
$(document).ready(function() {
$(".mw-rollback-link").click(function(e) {
e.preventDefault();
var link = $(this).find("a").attr("href");
//stack overflow: https://stackoverflow.com/questions/25203124/how-to-get-base-url-with-jquery-or-javascript
var getUrl = window.location;
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
var urlparams = (new URL(baseUrl + link)).searchParams;
var rollbackuser = urlparams.get('from');
var rollbacktoken = urlparams.get('token');
var rollbacktitle = urlparams.get('title');
$(this).html('<div class="mw-spinner mw-spinner-small mw-spinner-inline" title="..."><div class="mw-spinner-container"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div></div>');
var that = this;
$.post(mw.config.get("wgScriptPath") + "/api.php", {
"action": "rollback",
"user": rollbackuser,
"token": rollbacktoken,
"title": rollbacktitle,
"format": "json"
}).done(function(result) {
console.log(result);
if (result.error) {
location.href = link;
} else {
$(that).html("Rollback complete");
$(that).off("click");
}
}).fail(function(result) {
location.href = link;
});
});
});
}
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// SAVE AND EDIT
(function () {
var editButtons = document.getElementsByClassName('editButtons')[0];
if (!editButtons || !document.editform) {
return;
}
var conf = mw.config.get(['wgPageName']);
$('<input type="button"/>')
.val('Save and edit')
.on('click', function () {
saveandedit_prompt();
})
.appendTo(editButtons);
// Function for returning
function saveandedit_prompt() {
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
var section = mw.util.getParamValue('section');
var summary = document.editform.wpSummary.value;
// Some advertising
summary += ' (using [[User:Mabdul/saveandedit.js|Save&Edit]])';
var params = {
action: 'edit',
title: conf.wgPageName,
text: document.editform.wpTextbox1.value,
summary: summary
};
if (document.editform.wpMinoredit.checked) {
params.notminor = '1';
}
// Check if only a section will be edited
if (section) {
params.section = section;
}
var api = new mw.Api();
api.postWithEditToken(params).done(function (response) {
if (response.edit.result === 'Success') {
// Reload on the success
location.reload();
} else {
// Handle out the error message
var error = $.parseHTML( '<div><div class="error">Edit failed on ' +
mw.html.element('a', { href: mw.util.getUrl(conf.wgPageName), title: conf.wgPageName }, conf.wgPageName ) +
'</div> Best try it again (<b>Don\'t forget to copy the text!</b>). Error info: ' +
(response.error && mw.html.escape(response.error.code + ' : ' + response.error.info)) +
'</div>' );
mw.notify(error, { autoHide: false });
}
});
});
}
}());
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// LINKS IN SIDEBAR
$( function () {
var separator = ' / ';
var metaFQDN = 'meta.wikimedia.org';
$("#p-navigation").after(
$( '<div>',
{
'class': 'portal',
'role': 'navigation',
'id': 'p-listusers'
}
).append(
$( '<h3>',
{
'lang': 'en',
'dir': 'ltr',
'id': 'p-privileged_users-label',
'text': 'ListUsers'
}
),
$( '<div>', { 'class': 'body' } ).append(
$( '<ul>' ).append(
$( '<li>', { 'id': 't-listusers' } ).append(
$( '<a>',
{
'href': '/wiki/Special:ListUsers/sysop',
'title': 'List Admins',
'text': 'A'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:ListUsers/bureaucrat',
'title': 'List Bureaucrats',
'text': 'B'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:ListUsers/checkuser',
'title': 'List CheckUsers',
'text': 'CU'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:ListUsers/suppress',
'title': 'List Oversighters',
'text': 'OS'
}
)
)
)
)
),
$( '<div>',
{
'class': 'portal',
'role': 'navigation',
'id': 'p-importantpages'
}
).append(
$( '<h3>',
{
'lang': 'en',
'dir': 'ltr',
'id': 'p-importantpages',
'text': 'Important Pages'
}
),
$( '<div>', { 'class': 'body' } ).append(
$( '<ul>' ).append(
$( '<li>', { 'id': 't-meta-rc' } ).append(
$( '<a>',
{
'href': 'https://meta.wikimedia.org/wiki/Special:RecentChanges',
'title': 'Meta-Wiki',
'text': 'Meta-Wiki'
}
)
),
$( '<li>', { 'id': 't-cswiki-rc' } ).append(
$( '<a>',
{
'href': 'https://cs.wikipedia.org/wiki/Special:RecentChanges',
'title': 'Czech Wikipedia RC',
'text': 'Czech Wikipedia RC'
}
)
),
$( '<li>', { 'id': 't-cswiki-rcfilt' } ).append(
$( '<a>',
{
'href': 'https://w.wiki/uW8',
'title': 'Czech Wikipedia RC Filtered',
'text': 'Czech Wikipedia RC Filtered'
}
)
),
$( '<li>', { 'id': 't-skwiki-rc' } ).append(
$( '<a>',
{
'href': 'https://sk.wikipedia.org/wiki/Special:RecentChanges',
'title': 'Slovak Wikipedia RC',
'text': 'Slovak Wikipedia RC'
}
)
),
$( '<li>', { 'id': 't-cswiki-np' } ).append(
$( '<a>',
{
'href': 'https://cs.wikipedia.org/w/index.php?title=Special:NewPages&hidepatrolled=1',
'title': 'Czech Wikipedia New Pages',
'text': 'Czech Wikipedia New Pages'
}
)
)
)
)
),
$( '<div>',
{
'class': 'portal',
'role': 'navigation',
'id': 'p-logs'
}
).append(
$( '<h3>',
{
'lang': 'en',
'dir': 'ltr',
'id': 'p-logs-label',
'text': 'Logs'
}
),
$( '<div>', { 'class': 'body' } ).append(
$( '<ul>' ).append(
$( '<li>', { 'id': 't-logs-links' } ).append(
$( '<a>',
{
'href': '/wiki/Special:AbuseLog',
'title': 'AbuseLog',
'text': 'A'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:Logs/block',
'title': 'Blocks',
'text': 'B'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:Logs/delete',
'title': 'Deletions',
'text': 'D'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:Logs/protect',
'title': 'Protections',
'text': 'P'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:Logs/rights',
'title': 'Rights Log',
'text': 'R'
}
)
)
)
)
)
);
});
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//------------------------------------------------------------//
// ------------------------------------------------------------//
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// GLOBAL - FOR ALL WIKIS END //
jy52lz6xgwbkimt3xbbh8ujw4e75axc
735950
735874
2026-04-02T03:38:10Z
MrJaroslavik
44012
+
735950
javascript
text/javascript
// GLOBAL - FOR ALL WIKIS START //
// ------------------------------------------------------------//
// ------------------------------------------------------------//
// ------------------------------------------------------------//
//-------------------------------------------------------------//
mw.loader.load('https://test.wikipedia.org/w/index.php?title=User:MrJaroslavik/CuLog.js&action=raw&ctype=text/javascript')
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// USER INFO
if ( [ 2, 3 ].indexOf( mw.config.get( 'wgNamespaceNumber' ) ) !== -1 && ( !mw.config.get( 'wgArticleId' ) || mw.config.get( 'wgAction' ) === 'view' ) )
mw.loader.load( '//test.wikipedia.org/w/index.php?title=User:MrJaroslavik/test.js&action=raw&ctype=text/javascript' );
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// TOGGLE SIDEBAR
mw.loader.load('https://en.wikipedia.org/w/index.php?title=User:BrandonXLF/ToggleSidebar.js&action=raw&ctype=text/javascript');
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// CENTRALAUTH IN SIDEBAR
mw.loader.using(['mediawiki.util']).done(function(){
var user = mw.config.get( 'wgRelevantUserName' );
if( user !== null && !mw.util.isIPAddress(user) ){
mw.util.addPortletLink(
'p-tb',
'https://meta.wikimedia.org/w/index.php?title=Special:CentralAuth/' + user,
'CentralAuth',
't-centralauth',
'Go to CentralAuth page of this user'
);
}
});
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// CONTACT STEWARDS
mw.loader.using( [ 'mediawiki.util' ], function() {
"use strict";
mw.util.addPortletLink(
'p-tb',
'https://meta.wikimedia.org/wiki/Special:Contact/stewards',
'Contact Stewards',
't-contactstewards',
'Contact Stewards',
'v',
'#t-info'
);
});
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// REDIRECT TO META IF ACCESS LOCAL CENTRALAUTH PAGE
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) == 'CentralAuth' && mw.config.get('wgDBname') != 'metawiki' ){
location.href = '//meta.wikimedia.org/wiki/Special:CentralAuth/' + mw.util.wikiUrlencode( mw.config.get( 'wgRelevantUserName' ) );
}
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//URLShortener Authored by ZI Jony, edited by Martin Urbanec minus i18n //
mw.loader.using( [ 'mediawiki.util' ], function() {
"use strict";
mw.util.addPortletLink(
'p-tb',
'https://meta.wikimedia.org/wiki/Special:UrlShortener?url=https:' + mw.config.get('wgServer') + '/wiki/' + mw.config.get('wgPageName'),
'URL Shortener',
't-Special:UrlShortener',
'Launch URL Shortener',
'v',
'#t-info'
);
});
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//SUBPAGES
$(function() {
mw.util.addPortletLink(
'p-cactions',
"//" + window.location.hostname + mw.config.get('wgArticlePath').replace('$1', "Special:PrefixIndex/" + encodeURIComponent(mw.config.get('wgPageName')) + "/"),
'Subpages',
'subpages',
'Open the Special:PrefixIndex',
's'
);
});
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// ROLLBACK WITHOUT LEAVE
if (!RBNL) {
var RBNL = {};
$(document).ready(function() {
$(".mw-rollback-link").click(function(e) {
e.preventDefault();
var link = $(this).find("a").attr("href");
//stack overflow: https://stackoverflow.com/questions/25203124/how-to-get-base-url-with-jquery-or-javascript
var getUrl = window.location;
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
var urlparams = (new URL(baseUrl + link)).searchParams;
var rollbackuser = urlparams.get('from');
var rollbacktoken = urlparams.get('token');
var rollbacktitle = urlparams.get('title');
$(this).html('<div class="mw-spinner mw-spinner-small mw-spinner-inline" title="..."><div class="mw-spinner-container"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div></div>');
var that = this;
$.post(mw.config.get("wgScriptPath") + "/api.php", {
"action": "rollback",
"user": rollbackuser,
"token": rollbacktoken,
"title": rollbacktitle,
"format": "json"
}).done(function(result) {
console.log(result);
if (result.error) {
location.href = link;
} else {
$(that).html("Rollback complete");
$(that).off("click");
}
}).fail(function(result) {
location.href = link;
});
});
});
}
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// SAVE AND EDIT
(function () {
var editButtons = document.getElementsByClassName('editButtons')[0];
if (!editButtons || !document.editform) {
return;
}
var conf = mw.config.get(['wgPageName']);
$('<input type="button"/>')
.val('Save and edit')
.on('click', function () {
saveandedit_prompt();
})
.appendTo(editButtons);
// Function for returning
function saveandedit_prompt() {
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
var section = mw.util.getParamValue('section');
var summary = document.editform.wpSummary.value;
// Some advertising
summary += ' (using [[User:Mabdul/saveandedit.js|Save&Edit]])';
var params = {
action: 'edit',
title: conf.wgPageName,
text: document.editform.wpTextbox1.value,
summary: summary
};
if (document.editform.wpMinoredit.checked) {
params.notminor = '1';
}
// Check if only a section will be edited
if (section) {
params.section = section;
}
var api = new mw.Api();
api.postWithEditToken(params).done(function (response) {
if (response.edit.result === 'Success') {
// Reload on the success
location.reload();
} else {
// Handle out the error message
var error = $.parseHTML( '<div><div class="error">Edit failed on ' +
mw.html.element('a', { href: mw.util.getUrl(conf.wgPageName), title: conf.wgPageName }, conf.wgPageName ) +
'</div> Best try it again (<b>Don\'t forget to copy the text!</b>). Error info: ' +
(response.error && mw.html.escape(response.error.code + ' : ' + response.error.info)) +
'</div>' );
mw.notify(error, { autoHide: false });
}
});
});
}
}());
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// LINKS IN SIDEBAR
$( function () {
var separator = ' / ';
var metaFQDN = 'meta.wikimedia.org';
$("#p-navigation").after(
$( '<div>',
{
'class': 'portal',
'role': 'navigation',
'id': 'p-listusers'
}
).append(
$( '<h3>',
{
'lang': 'en',
'dir': 'ltr',
'id': 'p-privileged_users-label',
'text': 'ListUsers'
}
),
$( '<div>', { 'class': 'body' } ).append(
$( '<ul>' ).append(
$( '<li>', { 'id': 't-listusers' } ).append(
$( '<a>',
{
'href': '/wiki/Special:ListUsers/sysop',
'title': 'List Admins',
'text': 'A'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:ListUsers/bureaucrat',
'title': 'List Bureaucrats',
'text': 'B'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:ListUsers/checkuser',
'title': 'List CheckUsers',
'text': 'CU'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:ListUsers/suppress',
'title': 'List Oversighters',
'text': 'OS'
}
)
)
)
)
),
$( '<div>',
{
'class': 'portal',
'role': 'navigation',
'id': 'p-importantpages'
}
).append(
$( '<h3>',
{
'lang': 'en',
'dir': 'ltr',
'id': 'p-importantpages',
'text': 'Important Pages'
}
),
$( '<div>', { 'class': 'body' } ).append(
$( '<ul>' ).append(
$( '<li>', { 'id': 't-meta-rc' } ).append(
$( '<a>',
{
'href': 'https://meta.wikimedia.org/wiki/Special:RecentChanges',
'title': 'Meta-Wiki',
'text': 'Meta-Wiki'
}
)
),
$( '<li>', { 'id': 't-cswiki-rc' } ).append(
$( '<a>',
{
'href': 'https://cs.wikipedia.org/wiki/Special:RecentChanges',
'title': 'Czech Wikipedia RC',
'text': 'Czech Wikipedia RC'
}
)
),
$( '<li>', { 'id': 't-cswiki-rcfilt' } ).append(
$( '<a>',
{
'href': 'https://w.wiki/uW8',
'title': 'Czech Wikipedia RC Filtered',
'text': 'Czech Wikipedia RC Filtered'
}
)
),
$( '<li>', { 'id': 't-skwiki-rc' } ).append(
$( '<a>',
{
'href': 'https://sk.wikipedia.org/wiki/Special:RecentChanges',
'title': 'Slovak Wikipedia RC',
'text': 'Slovak Wikipedia RC'
}
)
),
$( '<li>', { 'id': 't-cswiki-np' } ).append(
$( '<a>',
{
'href': 'https://cs.wikipedia.org/w/index.php?title=Special:NewPages&hidepatrolled=1',
'title': 'Czech Wikipedia New Pages',
'text': 'Czech Wikipedia New Pages'
}
)
)
)
)
),
$( '<div>',
{
'class': 'portal',
'role': 'navigation',
'id': 'p-logs'
}
).append(
$( '<h3>',
{
'lang': 'en',
'dir': 'ltr',
'id': 'p-logs-label',
'text': 'Logs'
}
),
$( '<div>', { 'class': 'body' } ).append(
$( '<ul>' ).append(
$( '<li>', { 'id': 't-logs-links' } ).append(
$( '<a>',
{
'href': '/wiki/Special:AbuseLog',
'title': 'AbuseLog',
'text': 'A'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:Logs/block',
'title': 'Blocks',
'text': 'B'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:CheckUserLog',
'title': 'CheckUserLog',
'text': 'CU'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:Logs/delete',
'title': 'Deletions',
'text': 'D'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:Logs/protect',
'title': 'Protections',
'text': 'P'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:Logs/rights',
'title': 'Rights Log',
'text': 'R'
}
),
separator,
$( '<a>',
{
'href': '/wiki/Special:Logs/suppress',
'title': 'SuppressionLog',
'text': 'S'
}
),
)
)
)
)
);
});
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//------------------------------------------------------------//
// ------------------------------------------------------------//
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//-------------------------------------------------------------//
//-------------------------------------------------------------//
// GLOBAL - FOR ALL WIKIS END //
3hweamq8zfw2weppb4ukl3tadyepkz4
User:MrJaroslavik/CuLog.js
2
118910
735875
469005
2026-04-01T18:46:45Z
MrJaroslavik
44012
735875
javascript
text/javascript
/**
FORKED FROM https://meta.wikimedia.org/w/index.php?title=User:Glaisher/countCUStats.js&oldid=19200098 and edited to LOCAL CheckUsers on each wiki and restricted to Special:CheckUserLog
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
function getCheckUsers() {
return api.get( {
format: 'json',
action: 'query',
list: 'allusers',
aurights: 'checkuser',
aulimit: 50
} );
}
function queryCheckUserLog( username ) {
return api.get( {
format: 'json',
list: 'checkuserlog',
culuser: username,
cullimit: 4000,
culdir: 'newer',
culfrom: new Date( '1 January 2026 UTC' ).toISOString(), // Start date
culto: new Date( '31 January 2026 UTC' ).toISOString() // End date
} );
}
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( entries ) {
var html =
'<table class="wikitable sortable">\n'
+ '<tr>'
+ '<th> Username </th>'
+ '<th> Count </th>'
+ '</tr>\n';
$.each( entries, function( i, entry ) {
var name = (typeof entry.name == "string") ? entry.name : JSON.stringify(entry.name);
var count = (typeof entry.count == "string") ? parseInt(entry.count).toString() :
(typeof entry.count == "number") ? entry.count.toString() : JSON.stringify(entry.count);
html += '<tr>'
+ '<td>' + mw.html.escape( name ) + '</td>'
+ '<td>' + mw.html.escape( count ) + '</td>'
+ '</tr>\n';
} );
html += '</table>';
return html;
}
function init() {
getCheckUsers().done( function( data ) {
var checkusers = data.query.allusers,
checkuserCount = checkusers.length,
totalCount = 0,
stats = [];
promises = [];
appendToPage( '<span id="cu-status">Querying... Please wait.</span>' );
var $status = $( '#cu-status' );
$.each( checkusers, function( i, info ) {
var username = info.name;
var queryPromise = queryCheckUserLog( username );
promises.push( queryPromise );
queryPromise.done( function( data ) {
if ( !data.query ) {
onError( data );
}
var cuCount = data.query.checkuserlog.entries.length;
stats.push( {
name: username,
count: cuCount
} );
totalCount += cuCount;
} ).fail( function( data ) {
onError( data );
} );
function onError( data ) {
$status.text( 'Error occured in querying.' );
throw 'Error while querying ' + mw.html.escape( username ) + ' details: ' + JSON.stringify( data );
}
} );
$.when.apply( $, promises ).done( function() {
$status.text( 'Total: ' + totalCount);
appendToPage( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table' ).tablesorter();
} );
});
} );
}
init();
}
30j3koap6biwrefgzp57cbm8ppts4a6
735877
735875
2026-04-01T19:07:06Z
MrJaroslavik
44012
735877
javascript
text/javascript
/**
FORKED FROM https://meta.wikimedia.org/w/index.php?title=User:Glaisher/countCUStats.js&oldid=19200098 and edited to LOCAL CheckUsers on each wiki and restricted to Special:CheckUserLog
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
function getCheckUsers() {
return api.get( {
format: 'json',
action: 'query',
list: 'allusers',
aurights: 'checkuser',
aulimit: 50,
formatversion: 2
} );
}
function queryCheckUserLog( username ) {
return api.get( {
action: 'query',
format: 'json',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culfrom: '2026-01-01T00:00:00Z',
culto: '2026-01-31T23:59:59Z',
formatversion: 2
} );
}
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( entries ) {
var html =
'<table class="wikitable sortable">\n'
+ '<tr>'
+ '<th> Username </th>'
+ '<th> Count </th>'
+ '</tr>\n';
$.each( entries, function( i, entry ) {
var name = (typeof entry.name == "string") ? entry.name : JSON.stringify(entry.name);
var count = (typeof entry.count == "string") ? parseInt(entry.count).toString() :
(typeof entry.count == "number") ? entry.count.toString() : JSON.stringify(entry.count);
html += '<tr>'
+ '<td>' + mw.html.escape( name ) + '</td>'
+ '<td>' + mw.html.escape( count ) + '</td>'
+ '</tr>\n';
} );
html += '</table>';
return html;
}
function init() {
getCheckUsers().done( function( data ) {
var checkusers = data.query.allusers,
totalCount = 0,
stats = [],
promises = [];
appendToPage( '<span id="cu-status">Querying... Please wait.</span>' );
var $status = $( '#cu-status' );
$.each( checkusers, function( i, info ) {
var username = info.name;
var queryPromise = queryCheckUserLog( username );
promises.push( queryPromise );
queryPromise.done( function( data ) {
if ( !data.query ) {
onError( data );
return;
}
var cuCount = data.query.checkuserlog ? data.query.checkuserlog.length : 0;
stats.push( {
name: username,
count: cuCount
} );
totalCount += cuCount;
} ).fail( function( data ) {
onError( data );
} );
function onError( data ) {
$status.text( 'Error occured in querying.' );
console.error( 'Error while querying ' + username, data );
}
} );
$.when.apply( $, promises ).done( function() {
$status.text( 'Total: ' + totalCount);
appendToPage( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table' ).tablesorter();
} );
});
} );
}
init();
}
rybkyk3qxh8iw6kkxygyzrui0zpuj60
735878
735877
2026-04-01T19:10:10Z
MrJaroslavik
44012
735878
javascript
text/javascript
/**
FORKED FROM https://meta.wikimedia.org/w/index.php?title=User:Glaisher/countCUStats.js&oldid=19200098 and edited to LOCAL CheckUsers on each wiki and restricted to Special:CheckUserLog
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
function getCheckUsers() {
return api.get( {
format: 'json',
action: 'query',
list: 'allusers',
aurights: 'checkuser',
aulimit: 50,
formatversion: 2
} );
}
function queryCheckUserLog( username ) {
return api.get( {
action: 'query',
format: 'json',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culfrom: '2026-01-01T00:00:00Z',
culto: '2026-01-31T23:59:59Z',
formatversion: 2
} );
}
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( entries ) {
var html =
'<table class="wikitable sortable">\n'
+ '<thead><tr>'
+ '<th> Username </th>'
+ '<th> Count </th>'
+ '</tr></thead><tbody>\n';
$.each( entries, function( i, entry ) {
var name = entry.name || "Unknown";
var count = entry.count || 0;
html += '<tr>'
+ '<td>' + mw.html.escape( name ) + '</td>'
+ '<td>' + mw.html.escape( count.toString() ) + '</td>'
+ '</tr>\n';
} );
html += '</tbody></table>';
return html;
}
function init() {
getCheckUsers().done( function( data ) {
var checkusers = data.query.allusers,
totalCount = 0,
stats = [],
promises = [];
appendToPage( '<span id="cu-status">Querying... Please wait.</span>' );
var $status = $( '#cu-status' );
$.each( checkusers, function( i, info ) {
var username = info.name;
var queryPromise = queryCheckUserLog( username );
promises.push( queryPromise );
queryPromise.done( function( res ) {
var cuCount = 0;
if ( res.query && res.query.checkuserlog ) {
cuCount = res.query.checkuserlog.length;
}
stats.push( {
name: username,
count: cuCount
} );
totalCount += cuCount;
} );
} );
$.when.apply( $, promises ).always( function() {
$status.text( 'Total: ' + totalCount );
appendToPage( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table' ).tablesorter();
} );
});
} );
}
init();
}
hejrqn124cd4jifbcx88d9lp4qwbma2
735880
735878
2026-04-01T19:17:21Z
MrJaroslavik
44012
+
735880
javascript
text/javascript
/**
FORKED FROM https://meta.wikimedia.org/w/index.php?title=User:Glaisher/countCUStats.js&oldid=19200098 and edited to LOCAL CheckUsers on each wiki and restricted to Special:CheckUserLog
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
function getCheckUsers() {
return api.get( {
format: 'json',
action: 'query',
list: 'allusers',
aurights: 'checkuser',
aulimit: 50,
formatversion: 2
} );
}
function queryCheckUserLog( username ) {
return api.get( {
action: 'query',
format: 'json',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culfrom: '2026-01-01T00:00:00Z',
culto: '2026-01-31T23:59:59Z',
formatversion: 2
} );
}
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( entries ) {
var html =
'<table class="wikitable sortable">\n'
+ '<thead><tr>'
+ '<th> Username </th>'
+ '<th> Count </th>'
+ '</tr></thead><tbody>\n';
$.each( entries, function( i, entry ) {
html += '<tr>'
+ '<td>' + mw.html.escape( entry.name ) + '</td>'
+ '<td>' + mw.html.escape( entry.count.toString() ) + '</td>'
+ '</tr>\n';
} );
html += '</tbody></table>';
return html;
}
function init() {
getCheckUsers().done( function( data ) {
var checkusers = data.query.allusers,
totalCount = 0,
stats = [],
promises = [];
appendToPage( '<span id="cu-status">Querying... Please wait.</span>' );
var $status = $( '#cu-status' );
$.each( checkusers, function( i, info ) {
var username = info.name;
var queryPromise = queryCheckUserLog( username );
promises.push( queryPromise );
queryPromise.done( function( res ) {
var cuCount = 0;
// KLÍČOVÁ ZMĚNA: MediaWiki vrací pole v .entries
if ( res.query && res.query.checkuserlog && res.query.checkuserlog.entries ) {
cuCount = res.query.checkuserlog.entries.length;
}
stats.push( {
name: username,
count: cuCount
} );
totalCount += cuCount;
} );
} );
$.when.apply( $, promises ).always( function() {
$status.text( 'Total: ' + totalCount );
appendToPage( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table' ).tablesorter();
} );
});
} );
}
init();
}
j66b1ewz5zbxdhtlmbd0rb3jkdr4nyg
735886
735880
2026-04-01T19:25:52Z
MrJaroslavik
44012
+
735886
javascript
text/javascript
/**
FORKED FROM https://meta.wikimedia.org/w/index.php?title=User:Glaisher/countCUStats.js&oldid=19200098 and edited to LOCAL CheckUsers on each wiki and restricted to Special:CheckUserLog
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
function getCheckUsers() {
return api.get( {
format: 'json',
action: 'query',
list: 'allusers',
aurights: 'checkuser',
aulimit: 50,
formatversion: 2
} );
}
function queryCheckUserLog( username ) {
return api.get( {
action: 'query',
format: 'json',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
// Změna: Odstranění culdir a culfrom/culto pro otestování, zda se vůbec něco načte.
// Pokud toto bude fungovat, chyba byla v časovém formátu.
culfrom: '2026-01-01T00:00:00Z',
culto: '2026-01-31T23:59:59Z',
formatversion: 2
} );
}
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( entries ) {
var html =
'<table class="wikitable sortable">\n'
+ '<thead><tr>'
+ '<th> Username </th>'
+ '<th> Count </th>'
+ '</tr></thead><tbody>\n';
$.each( entries, function( i, entry ) {
html += '<tr>'
+ '<td>' + mw.html.escape( entry.name ) + '</td>'
+ '<td>' + mw.html.escape( entry.count.toString() ) + '</td>'
+ '</tr>\n';
} );
html += '</tbody></table>';
return html;
}
function init() {
getCheckUsers().done( function( data ) {
var checkusers = data.query.allusers,
totalCount = 0,
stats = [],
promises = [];
appendToPage( '<span id="cu-status">Querying... Please wait.</span>' );
var $status = $( '#cu-status' );
$.each( checkusers, function( i, info ) {
var username = info.name;
var queryPromise = queryCheckUserLog( username );
promises.push( queryPromise );
queryPromise.done( function( res ) {
var cuCount = 0;
// MediaWiki API vrací data buď v .checkuserlog (starší)
// nebo v .checkuserlog.entries (novější s formatversion 2)
if ( res.query && res.query.checkuserlog ) {
if ( Array.isArray(res.query.checkuserlog) ) {
cuCount = res.query.checkuserlog.length;
} else if ( res.query.checkuserlog.entries ) {
cuCount = res.query.checkuserlog.entries.length;
}
}
stats.push( {
name: username,
count: cuCount
} );
totalCount += cuCount;
} );
} );
$.when.apply( $, promises ).always( function() {
$status.text( 'Total: ' + totalCount );
appendToPage( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table' ).tablesorter();
} );
});
} );
}
init();
}
mgavyu34wn822dzm5sahjdnaq86la5c
735894
735886
2026-04-01T19:43:10Z
MrJaroslavik
44012
+
735894
javascript
text/javascript
/**
FORKED FROM https://meta.wikimedia.org/w/index.php?title=User:Glaisher/countCUStats.js&oldid=19200098
Změna logiky: Načítá jména přímo z logu, aby zachytil i globální/dočasné uživatele.
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
// Definice období
var DATE_FROM = '2026-01-01T00:00:00Z';
var DATE_TO = '2026-01-31T23:59:59Z';
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( statsArray ) {
var html =
'<table class="wikitable sortable">\n'
+ '<thead><tr><th> Username </th><th> Count </th></tr></thead><tbody>\n';
$.each( statsArray, function( i, item ) {
html += '<tr>'
+ '<td>' + mw.html.escape( item.name ) + '</td>'
+ '<td>' + mw.html.escape( item.count.toString() ) + '</td>'
+ '</tr>\n';
} );
html += '</tbody></table>';
return html;
}
function init() {
appendToPage( '<span id="cu-status">Načítám data z logu...</span>' );
var $status = $( '#cu-status' );
// Krok 1: Načteme VŠECHNY záznamy v logu pro dané období
api.get( {
action: 'query',
list: 'checkuserlog',
culdir: 'newer',
culfrom: DATE_FROM,
culto: DATE_TO,
cullimit: 'max',
formatversion: 2
} ).done( function( data ) {
if ( !data.query || !data.query.checkuserlog ) {
$status.text( 'V logu pro toto období nejsou žádná data.' );
return;
}
var logEntries = data.query.checkuserlog;
var userCounts = {};
var total = 0;
// Krok 2: Spočítáme výskyty jednotlivých jmen
$.each( logEntries, function( i, entry ) {
var user = entry.user; // Jméno toho, kdo akci provedl
if ( user ) {
userCounts[user] = ( userCounts[user] || 0 ) + 1;
total++;
}
} );
// Krok 3: Převedeme na pole pro tabulku
var stats = [];
for ( var name in userCounts ) {
stats.push( { name: name, count: userCounts[name] } );
}
// Seřadit podle počtu
stats.sort( function( a, b ) { return b.count - a.count; } );
// Krok 4: Výpis
$status.text( 'Celkem akcí v období: ' + total );
appendToPage( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table' ).tablesorter();
} );
} ).fail( function( err ) {
$status.text( 'Chyba API: ' + JSON.stringify(err) );
} );
}
init();
}
psmqe4k9hq4yqgljvabovnrvj6xxvo8
735902
735894
2026-04-01T19:47:49Z
MrJaroslavik
44012
+
735902
javascript
text/javascript
/**
* OPRAVENÁ VERZE: Používá culstart a culend podle dokumentace MediaWiki API
* Dokumentace: https://www.mediawiki.org/wiki/Extension:CheckUser#list=checkuserlog
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
// Správné názvy parametrů jsou culstart a culend
var DATE_START = '2026-01-01T00:00:00Z';
var DATE_END = '2026-01-31T23:59:59Z';
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( statsArray ) {
var html =
'<table class="wikitable sortable">\n'
+ '<thead><tr><th> Uživatel </th><th> Počet akcí </th></tr></thead><tbody>\n';
$.each( statsArray, function( i, item ) {
html += '<tr>'
+ '<td>' + mw.html.escape( item.name ) + '</td>'
+ '<td>' + item.count + '</td>'
+ '</tr>\n';
} );
html += '</tbody></table>';
return html;
}
function init() {
appendToPage( '<span id="cu-status">Načítám data z CheckUser logu...</span>' );
var $status = $( '#cu-status' );
api.get( {
action: 'query',
list: 'checkuserlog',
culdir: 'newer',
culstart: DATE_START, // OPRAVENO: dříve culfrom
culend: DATE_END, // OPRAVENO: dříve culto
cullimit: 'max',
formatversion: 2
} ).done( function( data ) {
// Debugging do konzole (F12), abys viděl, co přesně přišlo
console.log("API Response:", data);
if ( !data.query || !data.query.checkuserlog || data.query.checkuserlog.length === 0 ) {
$status.text( 'V logu pro období ' + DATE_START + ' až ' + DATE_END + ' nebyla nalezena žádná data.' );
return;
}
var logEntries = data.query.checkuserlog;
var userCounts = {};
var total = 0;
$.each( logEntries, function( i, entry ) {
var user = entry.user;
if ( user ) {
userCounts[user] = ( userCounts[user] || 0 ) + 1;
total++;
}
} );
var stats = [];
for ( var name in userCounts ) {
stats.push( { name: name, count: userCounts[name] } );
}
stats.sort( function( a, b ) { return b.count - a.count; } );
$status.text( 'Celkem nalezeno ' + total + ' akcí od ' + stats.length + ' uživatelů.' );
appendToPage( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table' ).tablesorter();
} );
} ).fail( function( code, err ) {
$status.text( 'Chyba API: ' + code );
console.error( 'Detaily chyby:', err );
} );
}
init();
}
pedj7544e34kzn4v2qyxnjxsr6b0ckl
735907
735902
2026-04-01T19:49:10Z
MrJaroslavik
44012
+
735907
javascript
text/javascript
/**
* FINÁLNÍ OPRAVA: culstart/culend + rozšířené datum pro test.wikipedia.org
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
// Nastaveno na širší rozsah, aby to pobralo vše ze screenshotu
var DATE_START = '2025-01-01T00:00:00Z';
var DATE_END = '2026-12-31T23:59:59Z';
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( statsArray ) {
var html =
'<table class="wikitable sortable" style="margin-top: 20px;">\n'
+ '<thead><tr><th> Uživatel (CheckUser) </th><th> Počet akcí </th></tr></thead><tbody>\n';
$.each( statsArray, function( i, item ) {
html += '<tr>'
+ '<td>' + mw.html.escape( item.name ) + '</td>'
+ '<td>' + item.count + '</td>'
+ '</tr>\n';
} );
html += '</tbody></table>';
return html;
}
function init() {
// Vyčistíme případné staré pokusy
$('#cu-stats-container').remove();
appendToPage( '<div id="cu-stats-container"><span id="cu-status">Načítám data z CheckUser logu (2025-2026)...</span></div>' );
var $status = $( '#cu-status' );
api.get( {
action: 'query',
list: 'checkuserlog',
culdir: 'newer',
culstart: DATE_START,
culend: DATE_END,
cullimit: 'max',
formatversion: 2
} ).done( function( data ) {
console.log("Odpověď z API:", data);
if ( !data.query || !data.query.checkuserlog || data.query.checkuserlog.length === 0 ) {
$status.text( 'V logu pro toto období nebyla nalezena žádná data (zkontrolováno přes API).' );
return;
}
var logEntries = data.query.checkuserlog;
var userCounts = {};
var total = 0;
$.each( logEntries, function( i, entry ) {
// Pozor: v formatversion 2 je to entry.user
var user = entry.user;
if ( user ) {
userCounts[user] = ( userCounts[user] || 0 ) + 1;
total++;
}
} );
var stats = [];
for ( var name in userCounts ) {
stats.push( { name: name, count: userCounts[name] } );
}
stats.sort( function( a, b ) { return b.count - a.count; } );
$status.html( '<b>Analýza logu dokončena.</b><br>Celkem nalezeno <b>' + total + '</b> akcí v období 2025-2026.' );
$('#cu-stats-container').append( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table.sortable' ).tablesorter();
} );
} ).fail( function( code, err ) {
$status.text( 'Chyba API: ' + code );
console.error( 'Detaily chyby:', err );
} );
}
init();
}
k4v49njfqqjkz1i8hnrfzpl1mb5wvky
735909
735907
2026-04-01T19:49:58Z
MrJaroslavik
44012
(
735909
javascript
text/javascript
/**
* FINÁLNÍ VERZE PRO LEDEN 2026
* Opraveno: culstart/culend, cesta k datům (entries) a formatversion: 2
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
// Přesný rozsah pro leden 2026 podle ISO 8601
var DATE_START = '2026-01-01T00:00:00Z';
var DATE_END = '2026-01-31T23:59:59Z';
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( statsArray ) {
var html =
'<table class="wikitable sortable" style="margin-top: 20px; width: 100%;">\n'
+ '<thead><tr><th> Uživatel (CheckUser) </th><th> Počet akcí (Leden 2026) </th></tr></thead><tbody>\n';
$.each( statsArray, function( i, item ) {
html += '<tr>'
+ '<td>' + mw.html.escape( item.name ) + '</td>'
+ '<td><b>' + item.count + '</b></td>'
+ '</tr>\n';
} );
html += '</tbody></table>';
return html;
}
function init() {
$('#cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div id="cu-stats-wrapper" style="border: 2px solid #36c; padding: 10px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<span id="cu-status">Pracuji na analýze ledna 2026...</span></div>');
var $status = $( '#cu-status' );
api.get( {
action: 'query',
list: 'checkuserlog',
culdir: 'newer',
culstart: DATE_START,
culend: DATE_END,
cullimit: 'max',
formatversion: 2 // Důležité pro moderní strukturu JSON
} ).done( function( data ) {
console.log("Surová data z API:", data);
// KLÍČOVÁ ZMĚNA: V formatversion 2 jsou data v .query.checkuserlog.entries
if ( !data.query || !data.query.checkuserlog || !data.query.checkuserlog.entries || data.query.checkuserlog.entries.length === 0 ) {
$status.text( 'V logu pro leden 2026 nebyla nalezena žádná data. Zkontroluj konzoli (F12).' );
return;
}
var entries = data.query.checkuserlog.entries;
var userCounts = {};
var total = 0;
$.each( entries, function( i, entry ) {
var user = entry.user;
if ( user ) {
userCounts[user] = ( userCounts[user] || 0 ) + 1;
total++;
}
} );
var stats = [];
for ( var name in userCounts ) {
stats.push( { name: name, count: userCounts[name] } );
}
// Seřazení od nejaktivnějšího
stats.sort( function( a, b ) { return b.count - a.count; } );
$status.html( '<h3>Statistika CheckUser za Leden 2026</h3>'
+ 'Celkem provedeno <b>' + total + '</b> akcí. Počet aktivních uživatelů: <b>' + stats.length + '</b>.' );
$('#cu-stats-wrapper').append( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table.sortable' ).tablesorter();
} );
} ).fail( function( code, err ) {
$status.text( 'Chyba API: ' + code );
console.error( 'Chyba:', err );
} );
}
init();
}
6104oafakufawqvssl257bw8brojb4v
735911
735909
2026-04-01T19:51:51Z
MrJaroslavik
44012
E
735911
javascript
text/javascript
/**
* NOUZOVÁ VERZE: Vynucení API v1 a manuální parsování objektů
* Tato verze nepoužívá moderní "entries", ale parsuje přímo syrový XML-like JSON
*/
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
function appendToPage( text ) {
$( '#mw-content-text' ).prepend( text + '<br/>' );
}
function init() {
$('#cu-stats-emergency').remove();
appendToPage( '<div id="cu-stats-emergency" style="border: 3px double red; padding: 10px; background: #fff;">'
+ '<span id="cu-status">Pokouším se o hloubkovou extrakci dat (API v1)...</span></div>' );
api.get( {
action: 'query',
list: 'checkuserlog',
cullimit: 500,
// NEPOUŽÍVÁME formatversion: 2
format: 'json'
} ).done( function( data ) {
console.log("RAW API V1 DATA:", data);
var userCounts = {};
var total = 0;
var logs = [];
// V API v1 jsou data v data.query.checkuserlog jako pole objektů
if (data.query && data.query.checkuserlog) {
logs = data.query.checkuserlog;
}
if (logs.length === 0) {
$('#cu-status').text('API v1 také nic nevrátilo. Pravděpodobná blokace API přístupu k logům na této wiki.');
return;
}
$.each( logs, function( i, entry ) {
// Filtrujeme leden 2026 ručně z timestampu (např. 2026-01-22T23:56:45Z)
if (entry.timestamp && entry.timestamp.indexOf('2026-01') !== -1) {
var user = entry.user;
if (user) {
userCounts[user] = (userCounts[user] || 0) + 1;
total++;
}
}
} );
var stats = [];
for ( var name in userCounts ) {
stats.push( { name: name, count: userCounts[name] } );
}
stats.sort( function( a, b ) { return b.count - a.count; } );
if (total === 0) {
$('#cu-status').text('V logu jsou data, ale žádné neodpovídá lednu 2026. První nalezené datum: ' + (logs[0].timestamp || 'neznámé'));
} else {
var tableHtml = '<table class="wikitable sortable" style="width:100%"><thead><tr><th>Uživatel</th><th>Počet (Leden 2026)</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
tableHtml += '<tr><td>' + mw.html.escape(s.name) + '</td><td>' + s.count + '</td></tr>';
});
tableHtml += '</tbody></table>';
$('#cu-status').html('<span style="color:green; font-weight:bold;">Data úspěšně extrahována!</span> (Leden 2026)');
$('#cu-stats-emergency').append(tableHtml);
}
} ).fail( function() {
$('#cu-status').text('Kritická chyba API.');
} );
}
init();
}
h8b9mlt2meg1o71bftpf74vhmf0larn
735913
735911
2026-04-01T19:54:40Z
MrJaroslavik
44012
+
735913
javascript
text/javascript
if ( mw.config.get('wgCanonicalSpecialPageName') == 'CheckUserLog' ) {
var api = new mw.Api();
function init() {
$('#cu-stats-final').remove();
$('#mw-content-text').prepend('<div id="cu-stats-final" style="border: 2px dashed orange; padding: 15px; background: #fffdf0; margin: 10px 0;">'
+ '<span id="cu-status">Zkouším hloubkový sken logu (API v1)...</span></div>');
// Žádáme o data bez moderního formatversion a bez omezujících filtrů culstart/end
api.get({
action: 'query',
list: 'checkuserlog',
cullimit: 500,
format: 'json'
}).done(function(data) {
console.log("DEBUG CSWIKI DATA:", data);
var logEntries = [];
// V API v1 jsou data přímo v objektu checkuserlog (jako pole)
if (data.query && data.query.checkuserlog) {
logEntries = data.query.checkuserlog;
}
if (logEntries.length === 0) {
$('#cu-status').html('<b style="color:red;">API vrátilo 0 záznamů.</b><br>Možné příčiny: API vyžaduje CSRF token nebo je přístup k logu přes API na této wiki zakázán.');
return;
}
var userCounts = {};
var total = 0;
var targetMonth = "2026-01"; // Hledáme leden 2026
$.each(logEntries, function(i, entry) {
// Timestamp v v1 vypadá jako: 2026-01-22T23:56:45Z
if (entry.timestamp && entry.timestamp.indexOf(targetMonth) === 0) {
var user = entry.user;
if (user) {
userCounts[user] = (userCounts[user] || 0) + 1;
total++;
}
}
});
if (total === 0) {
var firstDate = logEntries[0] ? logEntries[0].timestamp : "žádné";
$('#cu-status').html('V logu jsou data, ale žádné z <b>ledna 2026</b>.<br>Poslední akce v logu je z: ' + firstDate);
return;
}
// Tabulka výsledků
var stats = [];
for (var name in userCounts) {
stats.push({ name: name, count: userCounts[name] });
}
stats.sort(function(a, b) { return b.count - a.count; });
var tableHtml = '<table class="wikitable sortable" style="width:100%"><thead><tr><th>CheckUser</th><th>Akce (Leden 2026)</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
tableHtml += '<tr><td>' + mw.html.escape(s.name) + '</td><td>' + s.count + '</td></tr>';
});
tableHtml += '</tbody></table>';
$('#cu-status').html('<b style="color:green;">Data načtena!</b> Nalezeno ' + total + ' akcí.');
$('#cu-stats-final').append(tableHtml);
mw.loader.using('jquery.tablesorter', function() {
$('table.sortable').tablesorter();
});
}).fail(function(e) {
$('#cu-status').text('API požadavek zcela selhal.');
});
}
init();
}
buv9nrnng8cdkfr88n9nwr8mixyu6oq
735919
735913
2026-04-01T19:59:08Z
MrJaroslavik
44012
.
735919
javascript
text/javascript
/**
* UPRAVENO PRO LOKÁLNÍ CHECKUSERY (LEDEN 2026)
* Vychází z funkčního toolu pro stevardy.
*/
var api = new mw.Api();
function getCheckUsers() {
return api.get( {
format: 'json',
action: 'query',
list: 'allusers',
augroup: 'checkuser', // Hledá lokální skupinu checkuser
aulimit: 150
} );
}
function queryCheckUserLog( username ) {
return api.get( {
format: 'json',
list: 'checkuserlog',
culuser: username,
cullimit: 4000,
culdir: 'newer',
// Formát data musí zůstat přesně takto, aby ho to "nesežralo"
culfrom: new Date( '1 January 2026 UTC' ).toISOString(),
culto: new Date( '1 February 2026 UTC' ).toISOString()
} );
}
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( entries ) {
var html =
'<table class="wikitable sortable">\n'
+ '<tr>'
+ '<th> Username </th>'
+ '<th> Count </th>'
+ '</tr>\n';
$.each( entries, function( i, entry ) {
var name = (typeof entry.name == "string") ? entry.name : JSON.stringify(entry.name);
var count = (typeof entry.count == "string") ? parseInt(entry.count).toString() :
(typeof entry.count == "number") ? entry.count.toString() : JSON.stringify(entry.count);
html += '<tr>'
+ '<td>' + mw.html.escape( name ) + '</td>'
+ '<td>' + mw.html.escape( count ) + '</td>'
+ '</tr>\n';
} );
html += '</table>';
return html;
}
function init() {
getCheckUsers().done( function( data ) {
// ZMĚNA: allusers místo globalallusers
var checkusers = data.query.allusers,
totalCount = 0,
stats = [],
promises = [];
appendToPage( '<span id="cu-status">Querying local CheckUsers... Please wait.</span>' );
var $status = $( '#cu-status' );
$.each( checkusers, function( i, info ) {
var username = info.name;
var queryPromise = queryCheckUserLog( username );
promises.push( queryPromise );
queryPromise.done( function( data ) {
if ( !data.query || !data.query.checkuserlog ) {
return;
}
// Tato cesta je v tomto starém formátu klíčová
var cuCount = data.query.checkuserlog.entries.length;
stats.push( {
name: username,
count: cuCount
} );
totalCount += cuCount;
} ).fail( function( data ) {
console.error('Chyba u uživatele ' + username, data);
} );
} );
$.when.apply( $, promises ).done( function() {
$status.text( 'Total: ' + totalCount);
appendToPage( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table' ).tablesorter();
} );
});
} );
}
init();
62mep3761mg20mz4m7g5rmxlggy8ryp
735929
735919
2026-04-01T20:14:30Z
MrJaroslavik
44012
E
735929
javascript
text/javascript
/**
* UPRAVENO PRO LOKÁLNÍ CHECKUSERY (LEDEN 2026)
* Vychází z funkčního toolu pro stevardy.
*/
var api = new mw.Api();
function getCheckUsers() {
return api.get( {
format: 'json',
action: 'query',
list: 'allusers',
augroup: 'checkuser', // Hledá lokální skupinu checkuser
aulimit: 150
} );
}
function queryCheckUserLog( username ) {
return api.get( {
format: 'json',
list: 'checkuserlog',
culuser: username,
cullimit: 4000,
culdir: 'newer',
// Formát data musí zůstat přesně takto, aby ho to "nesežralo"
culfrom: new Date( '1 January 2026 UTC' ).toISOString(),
culto: new Date( '10 February 2026 UTC' ).toISOString()
} );
}
function appendToPage( text ) {
$( '#mw-content-text' ).append( text + '<br/>' );
}
function getStatsTable( entries ) {
var html =
'<table class="wikitable sortable">\n'
+ '<tr>'
+ '<th> Username </th>'
+ '<th> Count </th>'
+ '</tr>\n';
$.each( entries, function( i, entry ) {
var name = (typeof entry.name == "string") ? entry.name : JSON.stringify(entry.name);
var count = (typeof entry.count == "string") ? parseInt(entry.count).toString() :
(typeof entry.count == "number") ? entry.count.toString() : JSON.stringify(entry.count);
html += '<tr>'
+ '<td>' + mw.html.escape( name ) + '</td>'
+ '<td>' + mw.html.escape( count ) + '</td>'
+ '</tr>\n';
} );
html += '</table>';
return html;
}
function init() {
getCheckUsers().done( function( data ) {
// ZMĚNA: allusers místo globalallusers
var checkusers = data.query.allusers,
totalCount = 0,
stats = [],
promises = [];
appendToPage( '<span id="cu-status">Querying local CheckUsers... Please wait.</span>' );
var $status = $( '#cu-status' );
$.each( checkusers, function( i, info ) {
var username = info.name;
var queryPromise = queryCheckUserLog( username );
promises.push( queryPromise );
queryPromise.done( function( data ) {
if ( !data.query || !data.query.checkuserlog ) {
return;
}
// Tato cesta je v tomto starém formátu klíčová
var cuCount = data.query.checkuserlog.entries.length;
stats.push( {
name: username,
count: cuCount
} );
totalCount += cuCount;
} ).fail( function( data ) {
console.error('Chyba u uživatele ' + username, data);
} );
} );
$.when.apply( $, promises ).done( function() {
$status.text( 'Total: ' + totalCount);
appendToPage( getStatsTable( stats ) );
mw.loader.using( 'jquery.tablesorter', function() {
$( 'table' ).tablesorter();
} );
});
} );
}
init();
7bz9dbjacnlwurpnucla173mk9pauaf
735932
735929
2026-04-01T20:16:38Z
MrJaroslavik
44012
E
735932
javascript
text/javascript
/**
* MOBILE DEBUG VERZE: Vypisuje diagnostiku přímo na stránku.
*/
var api = new mw.Api();
function getLocalCUs() {
return api.get({
format: 'json',
action: 'query',
list: 'allusers',
augroup: 'checkuser',
aulimit: 150
});
}
function getGlobalCUs(groupName) {
return api.get({
format: 'json',
action: 'query',
list: 'globalallusers',
agugroup: groupName,
agulimit: 150
});
}
function queryCheckUserLog(username) {
return api.get({
format: 'json',
list: 'checkuserlog',
culuser: username,
cullimit: 4000,
culdir: 'newer',
culfrom: new Date('1 January 2026 UTC').toISOString(),
culto: new Date('1 February 2026 UTC').toISOString()
});
}
function appendToPage(text, id) {
var target = id ? '#' + id : '#mw-content-text';
$(target).append(text + '<br/>');
}
function init() {
// Příprava kontejneru pro mobilní debug
$('#mobile-debug').remove();
$('#mw-content-text').prepend('<div id="mobile-debug" style="border:1px solid #ccc; background:#f9f9f9; padding:10px; font-family:monospace; font-size:12px; margin-bottom:10px;"><b>Diagnostika:</b><br/></div>');
function log(msg) {
appendToPage('> ' + msg, 'mobile-debug');
}
log("Startuji stahování seznamů...");
$.when(
getLocalCUs(),
getGlobalCUs('steward'),
getGlobalCUs('ombuds'),
getGlobalCUs('staff')
).done(function(resLocal, resStewards, resOmbuds, resStaff) {
var userMap = {};
// Zpracování lokálních
var lCount = 0;
if (resLocal[0].query && resLocal[0].query.allusers) {
$.each(resLocal[0].query.allusers, function(i, u) {
userMap[u.name] = 'Local CU';
lCount++;
});
}
log("Nalezeno lokálních CU: " + lCount);
// Zpracování globálních
function addGlobal(response, label) {
var gCount = 0;
var data = response[0];
if (data.query && data.query.globalallusers) {
$.each(data.query.globalallusers, function(i, u) {
if (!userMap[u.name]) {
userMap[u.name] = label;
gCount++;
}
});
}
log("Přidáno uživatelů (" + label + "): " + gCount);
}
addGlobal(resStewards, 'Steward');
addGlobal(resOmbuds, 'Ombuds');
addGlobal(resStaff, 'Staff');
var usernames = Object.keys(userMap);
log("Celkem k prověření: " + usernames.length + " jmen.");
var stats = [];
var promises = [];
var totalCount = 0;
$.each(usernames, function(i, name) {
var p = queryCheckUserLog(name);
promises.push(p);
p.done(function(data) {
var count = 0;
if (data.query && data.query.checkuserlog) {
// Podpora pro oba formáty API (entries i přímé pole)
if (data.query.checkuserlog.entries) {
count = data.query.checkuserlog.entries.length;
} else if (Array.isArray(data.query.checkuserlog)) {
count = data.query.checkuserlog.length;
}
}
var group = userMap[name];
// Local CU vždy, ostatní jen pokud mají akci
if (group === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, group: group });
}
totalCount += count;
});
});
$.when.apply($, promises).done(function() {
log("Hotovo. Všechny logy staženy.");
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<table class="wikitable sortable"><thead><tr>'
+ '<th>Uživatel</th><th>Role</th><th>Akce</th>'
+ '</tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td>'
+ '<td><small>' + s.group + '</small></td>'
+ '<td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
appendToPage('<hr/><b>Celkem akcí: ' + totalCount + '</b>', 'mobile-debug');
appendToPage(html);
mw.loader.using('jquery.tablesorter', function() {
$('table.sortable').tablesorter();
});
});
}).fail(function(){
log("CHYBA: Jeden z úvodních dotazů na seznamy selhal.");
});
}
init();
l1elmf2r1ru4u6v2zfdbo8ee67qoyud
735938
735932
2026-04-01T20:24:30Z
MrJaroslavik
44012
E
735938
javascript
text/javascript
/**
* UNIVERZÁLNÍ CHECKUSER STATISTIKY (2026)
* Podpora: Lokální CU + Globální skupiny (Steward, Ombuds, Staff)
* Funguje na: TestWiki, CSWiki, ENWiki a dalších.
*/
(function() {
var api = new mw.Api();
// NASTAVENÍ OBDOBÍ (Leden 2026)
var DATE_START = '2026-01-01T00:00:00Z';
var DATE_END = '2026-02-01T00:00:00Z';
function getLocalCUs() {
return api.get({
action: 'query',
list: 'allusers',
augroup: 'checkuser',
aulimit: 250,
format: 'json'
});
}
function getGlobalCUs(groupName) {
return api.get({
action: 'query',
list: 'globalallusers',
agugroup: groupName,
agulimit: 250,
format: 'json'
});
}
function queryCheckUserLog(username) {
return api.get({
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 5000, // Maximální povolený limit
culdir: 'newer',
culstart: DATE_START,
culend: DATE_END,
assert: 'user', // Potvrzení přihlášení pro ostrou wiki
format: 'json'
});
}
function appendToPage(text) {
$('#mw-content-text').append(text + '<br/>');
}
function init() {
$('.cu-stats-container').remove();
appendToPage('<div class="cu-stats-container" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa;">'
+ '<span id="cu-status">Načítám oprávněné uživatele (lokální i globální)...</span></div>');
var $status = $('#cu-status');
// Paralelní načtení všech skupin
$.when(
getLocalCUs(),
getGlobalCUs('steward'),
getGlobalCUs('ombuds'),
getGlobalCUs('staff')
).done(function(resLocal, resStewards, resOmbuds, resStaff) {
var userMap = {};
// Lokální uživatelé
if (resLocal[0].query && resLocal[0].query.allusers) {
$.each(resLocal[0].query.allusers, function(i, u) {
userMap[u.name] = 'Local CU';
});
}
// Globální skupiny
function addGlobal(response, label) {
var data = response[0];
if (data.query && data.query.globalallusers) {
$.each(data.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
addGlobal(resStewards, 'Steward');
addGlobal(resOmbuds, 'Ombuds');
addGlobal(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var promises = [];
var totalCount = 0;
$status.text('Prověřuji logy pro ' + usernames.length + ' uživatelů. Prosím čekejte...');
$.each(usernames, function(i, name) {
var p = queryCheckUserLog(name);
promises.push(p);
p.done(function(data) {
var count = 0;
if (data.query && data.query.checkuserlog) {
// Podpora pro v1 i v2 formát odpovědi
var logData = data.query.checkuserlog;
count = logData.entries ? logData.entries.length : (Array.isArray(logData) ? logData.length : 0);
}
var group = userMap[name];
// Podmínka: Lokální vždy, globální jen pokud mají aspoň 1 akci
if (group === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, group: group });
}
totalCount += count;
}).fail(function() {
console.warn("Nepodařilo se načíst data pro: " + name);
});
});
// Čekáme na dokončení všech individuálních dotazů
$.when.apply($, promises).always(function() {
$status.html('<b>Analýza dokončena.</b><br/>Celkový počet CheckUser akcí: <b>' + totalCount + '</b>');
// Seřazení: Počet (sestupně), pak abecedně
stats.sort(function(a, b) {
return b.count - a.count || a.name.localeCompare(b.name);
});
var html = '<table class="wikitable sortable" style="width: 100%; margin-top: 10px;">'
+ '<thead><tr><th>Uživatel</th><th>Role</th><th>Počet akcí</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr>'
+ '<td>' + mw.html.escape(s.name) + '</td>'
+ '<td><small>' + s.group + '</small></td>'
+ '<td><b>' + s.count + '</b></td>'
+ '</tr>';
});
html += '</tbody></table>';
$('.cu-stats-container').append(html);
mw.loader.using('jquery.tablesorter', function() {
$('table.sortable').tablesorter();
});
});
}).fail(function() {
$status.text('Chyba: Nepodařilo se načíst seznamy uživatelů ze serveru.');
});
}
// Spuštění
init();
})();
b5es9laxsu49wkryvcbfc5x6hzcqvas
735940
735938
2026-04-01T20:30:54Z
MrJaroslavik
44012
E
735940
javascript
text/javascript
/**
* STRIKTNÍ MĚSÍČNÍ STATISTIKA (LEDEN 2026)
* Opraveno: API už nebude přebíhat do dalších měsíců.
*/
var api = new mw.Api();
// Definice období - Tady se mění měsíc
var START_DATE = '2026-01-01T00:00:00Z';
var END_DATE = '2026-02-01T00:00:00Z';
function getLocalCUs() {
return api.get({
action: 'query',
list: 'allusers',
augroup: 'checkuser',
aulimit: 150
});
}
function getGlobalCUs(groupName) {
return api.get({
action: 'query',
list: 'globalallusers',
agugroup: groupName,
agulimit: 150
});
}
function queryCheckUserLog(username) {
return api.get({
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START_DATE, // Začátek
culend: END_DATE, // KONEC - Tohle zastaví přetékání do února
formatversion: 2
});
}
function init() {
$('#cu-stats-final').remove();
$('#mw-content-text').prepend('<div id="cu-stats-final" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<span id="cu-status">Analyzuji logy striktně pro LEDEN 2026...</span></div>');
$.when(
getLocalCUs(),
getGlobalCUs('steward'),
getGlobalCUs('ombuds'),
getGlobalCUs('staff')
).done(function(resLocal, resStewards, resOmbuds, resStaff) {
var userMap = {};
// Sběr jmen
if (resLocal[0].query.allusers) {
$.each(resLocal[0].query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function addG(res, label) {
if (res[0].query.globalallusers) {
$.each(res[0].query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
addG(resStewards, 'Steward');
addG(resOmbuds, 'Ombuds');
addG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var promises = [];
var total = 0;
$.each(usernames, function(i, name) {
var p = queryCheckUserLog(name);
promises.push(p);
p.done(function(data) {
var count = (data.query && data.query.checkuserlog) ? data.query.checkuserlog.length : 0;
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
});
});
$.when.apply($, promises).done(function() {
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<h3>Výsledek za Leden 2026</h3><p>Celkem akcí: <b>' + total + '</b></p>'
+ '<table class="wikitable sortable"><thead><tr><th>Uživatel</th><th>Role</th><th>Počet</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-status').hide();
$('#cu-stats-final').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
});
});
}
init();
foptqb6509s0suiaolsit0jb2nof5ar
735941
735940
2026-04-01T20:31:53Z
MrJaroslavik
44012
E
735941
javascript
text/javascript
/**
* STRIKTNÍ MĚSÍČNÍ STATISTIKA (LEDEN 2026)
* Opraveno: Ošetření NaN a undefined + striktní culend.
*/
var api = new mw.Api();
// Definice období
var START_DATE = '2026-01-01T00:00:00Z';
var END_DATE = '2026-02-01T00:00:00Z';
function getLocalCUs() {
return api.get({
action: 'query',
list: 'allusers',
augroup: 'checkuser',
aulimit: 150
});
}
function getGlobalCUs(groupName) {
return api.get({
action: 'query',
list: 'globalallusers',
agugroup: groupName,
agulimit: 150
});
}
function queryCheckUserLog(username) {
return api.get({
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START_DATE,
culend: END_DATE
});
}
function init() {
$('#cu-stats-final').remove();
$('#mw-content-text').prepend('<div id="cu-stats-final" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<span id="cu-status">Analyzuji logy striktně pro LEDEN 2026...</span></div>');
$.when(
getLocalCUs(),
getGlobalCUs('steward'),
getGlobalCUs('ombuds'),
getGlobalCUs('staff')
).done(function(resLocal, resStewards, resOmbuds, resStaff) {
var userMap = {};
// Sběr jmen z lokálních skupin
if (resLocal[0].query && resLocal[0].query.allusers) {
$.each(resLocal[0].query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
// Sběr jmen z globálních skupin
function addG(res, label) {
if (res[0].query && res[0].query.globalallusers) {
$.each(res[0].query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
addG(resStewards, 'Steward');
addG(resOmbuds, 'Ombuds');
addG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var promises = [];
var total = 0;
$.each(usernames, function(i, name) {
var p = queryCheckUserLog(name);
promises.push(p);
p.done(function(data) {
var count = 0;
// Oprava cesty k datům (v starém formátu bez formatversion:2)
if (data.query && data.query.checkuserlog) {
if (data.query.checkuserlog.entries) {
count = data.query.checkuserlog.entries.length;
} else if (Array.isArray(data.query.checkuserlog)) {
count = data.query.checkuserlog.length;
}
}
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
});
});
$.when.apply($, promises).always(function() {
// Seřazení: nejdřív podle počtu, pak podle jména
stats.sort(function(a, b) {
return b.count - a.count || a.name.localeCompare(b.name);
});
var html = '<h3>Výsledek za Leden 2026</h3><p>Celkem akcí: <b>' + total + '</b></p>'
+ '<table class="wikitable sortable"><thead><tr><th>Uživatel</th><th>Role</th><th>Počet</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-status').hide();
$('#cu-stats-final').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
});
});
}
init();
munihh5p7ou1ose6ku6hednjovj4zou
735943
735941
2026-04-01T20:34:42Z
MrJaroslavik
44012
E
735943
javascript
text/javascript
/**
* STRICT MONTHLY STATISTICS (JANUARY 2026) - VERSION 3.0
* Features: English UI, Unlimited count (API continuation), Strict Date Filter.
*/
(function() {
var api = new mw.Api();
// TIME RANGE FOR JANUARY 2026
var START = '2026-01-01T00:00:00Z';
var END = '2026-02-01T00:00:00Z';
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
// Function to fetch ALL actions for a user, even if > 500
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) {
params.culcontinue = continueToken;
}
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
// Manual verification of timestamp to be 100% sure
$.each(data.query.checkuserlog.entries, function(i, entry) {
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: January 2026</h3>'
+ '<span id="cu-loader">Fetching user lists and analyzing logs...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
// Show local CUs always, others only if active (>0)
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
// Sort by count DESC, then by name ASC
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in January 2026: ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Actions (Jan)</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
0ynty9eo5ct7ovkom1ajnnyseg67dpk
735944
735943
2026-04-01T20:50:37Z
MrJaroslavik
44012
735944
javascript
text/javascript
/**
* STRICT MONTHLY STATISTICS (JANUARY 2026) - VERSION 3.0
* Features: English UI, Unlimited count (API continuation), Strict Date Filter.
*/
(function() {
var api = new mw.Api();
// TIME RANGE FOR JANUARY 2026
var START = '2026-02-01T00:00:00Z';
var END = '2026-03-01T00:00:00Z';
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
// Function to fetch ALL actions for a user, even if > 500
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) {
params.culcontinue = continueToken;
}
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
// Manual verification of timestamp to be 100% sure
$.each(data.query.checkuserlog.entries, function(i, entry) {
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: January 2026</h3>'
+ '<span id="cu-loader">Fetching user lists and analyzing logs...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
// Show local CUs always, others only if active (>0)
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
// Sort by count DESC, then by name ASC
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in January 2026: ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Actions (Jan)</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
5n8o5m97e9s1hzuzpu3813ct0hmr5qp
735947
735944
2026-04-02T03:19:23Z
MrJaroslavik
44012
+
735947
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.5 (April 2026)
* Features: Easy config (Year/Month), Unlimited count, Strict Date Filter.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var MONTH = 3; // 1=Jan, 2=Feb, 3=Mar, 4=Apr, ..., 12=Dec
// =================================================
// --- Automatic Date Logic ---
// Start: YYYY-MM-01 00:00:00
var monthPadded = MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + monthPadded + '-01T00:00:00Z';
// End: 1st day of the NEXT month 00:00:00 (Standard exclusive boundary)
// JavaScript handles month 12 -> next year 1 automatically
var nextMonthDate = new Date(Date.UTC(YEAR, MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
// UI Formatting
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = monthNames[MONTH - 1] + " " + YEAR;
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
// Strict check to keep the data within the chosen month
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Analyzing logs for ' + displayTitle + '...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in ' + displayTitle + ': ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
g1bysyfivk29bfj97bwd2ocuojkgwx3
735948
735947
2026-04-02T03:26:19Z
MrJaroslavik
44012
E
735948
javascript
text/javascript
/**
* DETAILED CHECKUSER STATISTICS - VERSION 3.6
* Features: Breakdown by action type (Get IPs, Get Users, Get Edits).
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var MONTH = 3; // 3 = March
// =================================================
var monthPadded = MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + monthPadded + '-01T00:00:00Z';
var nextMonthDate = new Date(Date.UTC(YEAR, MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = monthNames[MONTH - 1] + " " + YEAR;
async function getDetailedUserStats(username) {
var stats = { total: 0, getIps: 0, getUsers: 0, getEdits: 0 };
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
if (entry.timestamp >= START && entry.timestamp < END) {
stats.total++;
// Filtering by cultype
if (entry.cultype === 'userips') stats.getIps++;
else if (entry.cultype === 'ipusers') stats.getUsers++;
else if (entry.cultype === 'getedits') stats.getEdits++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return stats;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Detailed Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Analyzing detailed logs...</span></div>');
try {
var resLocal = await api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
var resStewards = await api.get({ action: 'query', list: 'globalallusers', agugroup: 'steward', agulimit: 250 });
var resStaff = await api.get({ action: 'query', list: 'globalallusers', agugroup: 'staff', agulimit: 250 });
var userMap = {};
if (resLocal.query.allusers) $.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
if (resStewards.query.globalallusers) $.each(resStewards.query.globalallusers, function(i, u) { if(!userMap[u.name]) userMap[u.name] = 'Steward'; });
if (resStaff.query.globalallusers) $.each(resStaff.query.globalallusers, function(i, u) { if(!userMap[u.name]) userMap[u.name] = 'Staff'; });
var usernames = Object.keys(userMap);
var statsList = [];
var grandTotal = 0;
for (var name of usernames) {
$('#cu-loader').text('Analyzing: ' + name + '...');
var userStats = await getDetailedUserStats(name);
if (userMap[name] === 'Local CU' || userStats.total > 0) {
statsList.push({
name: name,
role: userMap[name],
data: userStats
});
}
grandTotal += userStats.total;
}
statsList.sort((a, b) => b.data.total - a.data.total || a.name.localeCompare(b.name));
var html = '<p><b>Grand Total: ' + grandTotal + ' actions</b></p>'
+ '<table class="wikitable sortable" style="width:100%; text-align: center;">'
+ '<thead><tr>'
+ '<th style="text-align: left;">Username</th>'
+ '<th>Role</th>'
+ '<th style="background: #eaf3ff;">Total</th>'
+ '<th style="color: #444;">Get IPs</th>'
+ '<th style="color: #444;">Get Users</th>'
+ '<th style="color: #444;">Get Edits</th>'
+ '</tr></thead><tbody>';
$.each(statsList, function(i, s) {
html += '<tr>'
+ '<td style="text-align: left;">' + mw.html.escape(s.name) + '</td>'
+ '<td><small>' + s.role + '</small></td>'
+ '<td style="background: #f0f7ff;"><b>' + s.data.total + '</b></td>'
+ '<td>' + s.data.getIps + '</td>'
+ '<td>' + s.data.getUsers + '</td>'
+ '<td>' + s.data.getEdits + '</td>'
+ '</tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
6ryespbwe8umpyyrajj2y51w7eb57d8
735949
735948
2026-04-02T03:35:55Z
MrJaroslavik
44012
E
735949
javascript
text/javascript
/**
* UNIVERSAL CHECKUSER STATISTICS - VERSION 3.8
* Optimized for Dewiki, Cswiki, and TestWiki using FormatVersion 2.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var MONTH = 3; // 3 = March
// =================================================
var monthPadded = MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + monthPadded + '-01T00:00:00Z';
var nextMonthDate = new Date(Date.UTC(YEAR, MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = monthNames[MONTH - 1] + " " + YEAR;
async function getDetailedUserStats(username) {
var stats = { total: 0, getIps: 0, getUsers: 0, getEdits: 0, other: 0 };
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END,
formatversion: 2 // Crucial for consistent data structure
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog) {
$.each(data.query.checkuserlog, function(i, entry) {
if (entry.timestamp >= START && entry.timestamp < END) {
stats.total++;
// Standard MediaWiki CheckUser types
var type = entry.type;
if (type === 'userips') {
stats.getIps++;
} else if (type === 'ipusers') {
stats.getUsers++;
} else if (type === 'getedits' || type === 'ipedits' || type === 'useredits') {
stats.getEdits++;
} else {
stats.other++;
}
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return stats;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px; font-family: sans-serif;">'
+ '<h3 style="margin-top:0">CheckUser Activity Breakdown: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Processing logs...</span></div>');
try {
// Using modern API structure for group fetching as well
var groups = ['checkuser', 'steward', 'staff'];
var userMap = {};
for (var group of groups) {
var res = await api.get({
action: 'query',
list: group === 'checkuser' ? 'allusers' : 'globalallusers',
[group === 'checkuser' ? 'augroup' : 'agugroup']: group,
[group === 'checkuser' ? 'aulimit' : 'agulimit']: 250,
formatversion: 2
});
var users = (group === 'checkuser') ? res.query.allusers : res.query.globalallusers;
if (users) {
$.each(users, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = group.charAt(0).toUpperCase() + group.slice(1);
});
}
}
var usernames = Object.keys(userMap);
var statsList = [];
var grandTotal = 0;
for (var name of usernames) {
$('#cu-loader').text('Analyzing: ' + name + '...');
var userStats = await getDetailedUserStats(name);
if (userStats.total > 0 || userMap[name] === 'Checkuser') {
statsList.push({ name: name, role: userMap[name], data: userStats });
grandTotal += userStats.total;
}
}
statsList.sort((a, b) => b.data.total - a.data.total || a.name.localeCompare(b.name));
var html = '<p><b>Grand Total: ' + grandTotal + ' actions</b></p>'
+ '<table class="wikitable sortable" style="width:100%; text-align: center;">'
+ '<thead><tr>'
+ '<th style="text-align: left;">Username</th><th>Role</th>'
+ '<th style="background: #eaf3ff;">Total</th><th>Get IPs</th><th>Get Users</th><th>Get Edits</th>'
+ '<th style="color: #999;">Other</th>'
+ '</tr></thead><tbody>';
$.each(statsList, function(i, s) {
html += '<tr>'
+ '<td style="text-align: left;">' + mw.html.escape(s.name) + '</td>'
+ '<td><small>' + s.role + '</small></td>'
+ '<td style="background: #f0f7ff;"><b>' + s.data.total + '</b></td>'
+ '<td>' + s.data.getIps + '</td>'
+ '<td>' + s.data.getUsers + '</td>'
+ '<td>' + s.data.getEdits + '</td>'
+ '<td style="color: #999;">' + s.data.other + '</td>'
+ '</tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
console.error(err);
}
}
init();
})();
sknl6aye6xe26j245177agwuo29ucbo
735951
735949
2026-04-02T03:55:02Z
MrJaroslavik
44012
E
735951
javascript
text/javascript
/**
* OFFICIAL API CHECKUSER STATISTICS - VERSION 3.9
* Matches documentation: uses culfrom/culto and handles action types.
*/
(function() {
var api = new mw.Api();
// ================= KONFIGURACE =================
var YEAR = 2026;
var MONTH = 3; // 3 = Březen (March)
// ===============================================
var monthPadded = MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + monthPadded + '-01T00:00:00Z';
var nextMonthDate = new Date(Date.UTC(YEAR, MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = monthNames[MONTH - 1] + " " + YEAR;
async function getDetailedUserStats(username) {
var stats = { total: 0, getIps: 0, getUsers: 0, getEdits: 0, other: 0 };
var continueToken = '';
var hasMore = true;
while (hasMore) {
// PARAMETRY PŘESNĚ PODLE DOKUMENTACE
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer', // Od nejstarších
culfrom: START, // Začátek (podle tvé dokumentace)
culto: END, // Konec (podle tvé dokumentace)
formatversion: 2
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog) {
$.each(data.query.checkuserlog, function(i, entry) {
// Kontrola, zda záznam patří do našeho měsíce
if (entry.timestamp >= START && entry.timestamp < END) {
stats.total++;
// Rozdělení podle typu (výstupy z logu)
var type = entry.type;
if (type === 'userips') stats.getIps++;
else if (type === 'ipusers') stats.getUsers++;
else if (type === 'getedits' || type === 'useredits' || type === 'ipedits') stats.getEdits++;
else stats.other++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return stats;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px; font-family: sans-serif;">'
+ '<h3 style="margin-top:0">CheckUser Statistics: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Reading CheckUser log...</span></div>');
try {
// Načtení uživatelů
var resL = await api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250, formatversion: 2 });
var resS = await api.get({ action: 'query', list: 'globalallusers', agugroup: 'steward', agulimit: 250, formatversion: 2 });
var resA = await api.get({ action: 'query', list: 'globalallusers', agugroup: 'staff', agulimit: 250, formatversion: 2 });
var userMap = {};
if (resL.query.allusers) $.each(resL.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
if (resS.query.globalallusers) $.each(resS.query.globalallusers, function(i, u) { if(!userMap[u.name]) userMap[u.name] = 'Steward'; });
if (resA.query.globalallusers) $.each(resA.query.globalallusers, function(i, u) { if(!userMap[u.name]) userMap[u.name] = 'Staff'; });
var usernames = Object.keys(userMap);
var statsList = [];
var grandTotal = 0;
for (var name of usernames) {
$('#cu-loader').text('Checking: ' + name + '...');
var userStats = await getDetailedUserStats(name);
if (userStats.total > 0 || userMap[name] === 'Local CU') {
statsList.push({ name: name, role: userMap[name], data: userStats });
grandTotal += userStats.total;
}
}
statsList.sort((a, b) => b.data.total - a.data.total || a.name.localeCompare(b.name));
var html = '<p><b>Total monthly actions: ' + grandTotal + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; text-align: center;">'
+ '<thead><tr>'
+ '<th style="text-align: left;">Username</th><th>Role</th>'
+ '<th style="background: #eaf3ff;">Total</th>'
+ '<th>Get IPs</th><th>Get Users</th><th>Get Edits</th>'
+ '<th style="color: #999;">Other</th>'
+ '</tr></thead><tbody>';
$.each(statsList, function(i, s) {
html += '<tr>'
+ '<td style="text-align: left;">' + mw.html.escape(s.name) + '</td>'
+ '<td><small>' + s.role + '</small></td>'
+ '<td style="background: #f0f7ff;"><b>' + s.data.total + '</b></td>'
+ '<td>' + (s.data.getIps || 0) + '</td>'
+ '<td>' + (s.data.getUsers || 0) + '</td>'
+ '<td>' + (s.data.getEdits || 0) + '</td>'
+ '<td style="color: #999;">' + (s.data.other || 0) + '</td>'
+ '</tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Error: ' + err);
}
}
init();
})();
mchnu7sd1hwu52r7ne4odzigyjgnpnr
735952
735951
2026-04-02T04:07:36Z
MrJaroslavik
44012
E
735952
javascript
text/javascript
/**
* ROBUST CHECKUSER STATISTICS - VERSION 5.0 (FINAL BREAKDOWN)
* Features: Multi-column breakdown, Auto-detection of active users,
* Sequential processing with timeouts, Multi-parameter compatibility.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var MONTH = 3; // 1=Jan, 2=Feb, 3=Mar, 4=Apr, ..., 12=Dec
// =================================================
// --- Date Logic ---
var monthPadded = MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + monthPadded + '-01T00:00:00Z';
var nextMonthDate = new Date(Date.UTC(YEAR, MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = monthNames[MONTH - 1] + " " + YEAR;
async function getDetailedUserStats(username) {
var stats = { total: 0, getIps: 0, getUsers: 0, getEdits: 0, other: 0 };
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
// Multi-parameter compatibility for different Wikis
culstart: START, culend: END,
culfrom: START, culto: END,
formatversion: 2
};
if (continueToken) params.culcontinue = continueToken;
try {
// 3-second safety timeout per request
var data = await Promise.race([
api.get(params),
new Promise((_, reject) => setTimeout(() => reject('Timeout'), 3000))
]);
if (data.query && data.query.checkuserlog) {
$.each(data.query.checkuserlog, function(i, entry) {
if (entry.timestamp >= START && entry.timestamp < END) {
stats.total++;
// Map API type to column
var type = entry.type || entry.cultype;
if (type === 'userips') stats.getIps++;
else if (type === 'ipusers') stats.getUsers++;
else if (type === 'getedits' || type === 'useredits' || type === 'ipedits') stats.getEdits++;
else stats.other++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else { hasMore = false; }
} catch (e) {
console.error("Skipping part of log for " + username, e);
return "unknown";
}
}
return stats;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px; font-family: sans-serif;">'
+ '<h3 style="margin-top:0">CheckUser Detailed Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Scanning log for active users...</span></div>');
try {
var userMap = {};
// 1. Get Local CheckUsers
var resLocal = await api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', formatversion: 2 });
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'CheckUser'; });
}
// 2. Discover ALL active users from the log (Staff, Stewards, etc.)
var logScan = await api.get({
action: 'query', list: 'checkuserlog',
culstart: START, culend: END, culfrom: START, culto: END,
cullimit: 'max', formatversion: 2
});
if (logScan.query && logScan.query.checkuserlog) {
$.each(logScan.query.checkuserlog, function(i, entry) {
if (!userMap[entry.user]) userMap[entry.user] = 'Global/Staff';
});
}
var usernames = Object.keys(userMap);
var statsList = [];
var grandTotal = 0;
for (var i = 0; i < usernames.length; i++) {
var name = usernames[i];
$('#cu-loader').text('Analyzing [' + (i+1) + '/' + usernames.length + ']: ' + name);
var result = await getDetailedUserStats(name);
var role = userMap[name];
if (result === "unknown") {
statsList.push({ name: name, role: role, data: { total: "unknown" }, sort: -1 });
} else if (role === 'CheckUser' || result.total > 0) {
statsList.push({ name: name, role: role, data: result, sort: result.total });
grandTotal += result.total;
}
}
statsList.sort((a, b) => b.sort - a.sort || a.name.localeCompare(b.name));
var html = '<p><b>Grand Total: ' + grandTotal + ' actions</b></p>'
+ '<table class="wikitable sortable" style="width:100%; text-align: center;">'
+ '<thead><tr>'
+ '<th style="text-align: left;">Username</th>'
+ '<th>Role</th>'
+ '<th style="background: #eaf3ff;">Total</th>'
+ '<th>Get IPs</th>'
+ '<th>Get Users</th>'
+ '<th>Get Edits</th>'
+ '</tr></thead><tbody>';
$.each(statsList, function(i, s) {
var d = s.data;
var isUnk = d.total === "unknown";
html += '<tr>'
+ '<td style="text-align: left;">' + mw.html.escape(s.name) + '</td>'
+ '<td><small>' + s.role + '</small></td>'
+ '<td style="background: #f0f7ff;"><b>' + (isUnk ? '<span style="color:red">unknown</span>' : d.total) + '</b></td>'
+ '<td>' + (isUnk ? '-' : d.getIps) + '</td>'
+ '<td>' + (isUnk ? '-' : d.getUsers) + '</td>'
+ '<td>' + (isUnk ? '-' : d.getEdits) + '</td>'
+ '</tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
g47ef1diqzc0vxbjlkkq0amdehxuj57
735953
735952
2026-04-02T04:08:08Z
MrJaroslavik
44012
E
735953
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.5 (April 2026)
* Features: Easy config (Year/Month), Unlimited count, Strict Date Filter.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var MONTH = 3; // 1=Jan, 2=Feb, 3=Mar, 4=Apr, ..., 12=Dec
// =================================================
// --- Automatic Date Logic ---
// Start: YYYY-MM-01 00:00:00
var monthPadded = MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + monthPadded + '-01T00:00:00Z';
// End: 1st day of the NEXT month 00:00:00 (Standard exclusive boundary)
// JavaScript handles month 12 -> next year 1 automatically
var nextMonthDate = new Date(Date.UTC(YEAR, MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
// UI Formatting
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = monthNames[MONTH - 1] + " " + YEAR;
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
// Strict check to keep the data within the chosen month
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Analyzing logs for ' + displayTitle + '...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in ' + displayTitle + ': ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
g1bysyfivk29bfj97bwd2ocuojkgwx3
735954
735953
2026-04-02T04:24:35Z
MrJaroslavik
44012
2
735954
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.5 (April 2026)
* Features: Easy config (Year/Month), Unlimited count, Strict Date Filter.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var MONTH = 2; // 1=Jan, 2=Feb, 3=Mar, 4=Apr, ..., 12=Dec
// =================================================
// --- Automatic Date Logic ---
// Start: YYYY-MM-01 00:00:00
var monthPadded = MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + monthPadded + '-01T00:00:00Z';
// End: 1st day of the NEXT month 00:00:00 (Standard exclusive boundary)
// JavaScript handles month 12 -> next year 1 automatically
var nextMonthDate = new Date(Date.UTC(YEAR, MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
// UI Formatting
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = monthNames[MONTH - 1] + " " + YEAR;
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
// Strict check to keep the data within the chosen month
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Analyzing logs for ' + displayTitle + '...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in ' + displayTitle + ': ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
b53mjpu7m1aka5d8q3ryjzh3eeqvsjy
735955
735954
2026-04-02T04:26:06Z
MrJaroslavik
44012
E
735955
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.5 (April 2026)
* Features: Easy config (Year/Month), Unlimited count, Strict Date Filter.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var MONTH = 3; // 1=Jan, 2=Feb, 3=Mar, 4=Apr, ..., 12=Dec
// =================================================
// --- Automatic Date Logic ---
// Start: YYYY-MM-01 00:00:00
var monthPadded = MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + monthPadded + '-01T00:00:00Z';
// End: 1st day of the NEXT month 00:00:00 (Standard exclusive boundary)
// JavaScript handles month 12 -> next year 1 automatically
var nextMonthDate = new Date(Date.UTC(YEAR, MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
// UI Formatting
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = monthNames[MONTH - 1] + " " + YEAR;
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
// Strict check to keep the data within the chosen month
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Analyzing logs for ' + displayTitle + '...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in ' + displayTitle + ': ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
g1bysyfivk29bfj97bwd2ocuojkgwx3
735956
735955
2026-04-02T05:03:40Z
MrJaroslavik
44012
2
735956
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.5 (April 2026)
* Features: Easy config (Year/Month), Unlimited count, Strict Date Filter.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var MONTH = 2; // 1=Jan, 2=Feb, 3=Mar, 4=Apr, ..., 12=Dec
// =================================================
// --- Automatic Date Logic ---
// Start: YYYY-MM-01 00:00:00
var monthPadded = MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + monthPadded + '-01T00:00:00Z';
// End: 1st day of the NEXT month 00:00:00 (Standard exclusive boundary)
// JavaScript handles month 12 -> next year 1 automatically
var nextMonthDate = new Date(Date.UTC(YEAR, MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
// UI Formatting
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = monthNames[MONTH - 1] + " " + YEAR;
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
// Strict check to keep the data within the chosen month
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Analyzing logs for ' + displayTitle + '...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in ' + displayTitle + ': ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
b53mjpu7m1aka5d8q3ryjzh3eeqvsjy
735957
735956
2026-04-02T05:41:42Z
MrJaroslavik
44012
E
735957
javascript
text/javascript
/**
* CHECKUSER RANGE STATISTICS - VERSION 6.0
* Features: Multi-month range, Total + Monthly breakdown columns.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var START_MONTH = 1; // Leden
var END_MONTH = 3; // Březen
// =================================================
var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
// Generování seznamu měsíců a jejich časových hranic
var periods = [];
for (var m = START_MONTH; m <= END_MONTH; m++) {
var startIso = YEAR + '-' + m.toString().padStart(2, '0') + '-01T00:00:00Z';
var nextM = (m === 12) ? 1 : m + 1;
var nextY = (m === 12) ? YEAR + 1 : YEAR;
var endIso = nextY + '-' + nextM.toString().padStart(2, '0') + '-01T00:00:00Z';
periods.push({
name: monthNames[m - 1],
start: startIso,
end: endIso
});
}
async function countActionsForPeriod(username, start, end) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query', list: 'checkuserlog', culuser: username,
cullimit: 'max', culdir: 'newer', culstart: start, culend: end,
culfrom: start, culto: end, formatversion: 2
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog) {
$.each(data.query.checkuserlog, function(i, entry) {
if (entry.timestamp >= start && entry.timestamp < end) count++;
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else { hasMore = false; }
} catch (e) { hasMore = false; }
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px; font-family: sans-serif;">'
+ '<h3 style="margin-top:0">CheckUser Range Activity: ' + monthNames[START_MONTH-1] + ' - ' + monthNames[END_MONTH-1] + ' ' + YEAR + '</h3>'
+ '<span id="cu-loader">Preparing analysis...</span></div>');
try {
var userMap = {};
// 1. Lokální CU
var resL = await api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', formatversion: 2 });
if (resL.query.allusers) $.each(resL.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
// 2. Globální skupiny (Steward, Staff)
var gGroups = ['steward', 'staff'];
for (var group of gGroups) {
var resG = await api.get({ action: 'query', list: 'globalallusers', agugroup: group, agulimit: 200, formatversion: 2 });
if (resG.query && resG.query.globalallusers) {
$.each(resG.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = group.charAt(0).toUpperCase() + group.slice(1);
});
}
}
var usernames = Object.keys(userMap);
var statsList = [];
for (var i = 0; i < usernames.length; i++) {
var name = usernames[i];
var userRow = { name: name, role: userMap[name], monthly: [], grandTotal: 0 };
$('#cu-loader').text('Checking [' + (i+1) + '/' + usernames.length + ']: ' + name);
for (var p of periods) {
var count = await countActionsForPeriod(name, p.start, p.end);
userRow.monthly.push(count);
userRow.grandTotal += count;
}
if (userRow.grandTotal > 0 || userRow.role === 'Local CU') {
statsList.push(userRow);
}
}
statsList.sort((a, b) => b.grandTotal - a.grandTotal || a.name.localeCompare(b.name));
// Stavba tabulky
var html = '<table class="wikitable sortable" style="width:100%; text-align: center;"><thead><tr>'
+ '<th style="text-align: left;">Username</th><th>Role</th>'
+ '<th style="background: #eaf3ff;">TOTAL</th>';
// Přidání sloupců pro měsíce
$.each(periods, function(i, p) { html += '<th>' + p.name + '</th>'; });
html += '</tr></thead><tbody>';
$.each(statsList, function(i, s) {
html += '<tr><td style="text-align: left;">' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td>'
+ '<td style="background: #f0f7ff;"><b>' + s.grandTotal + '</b></td>';
$.each(s.monthly, function(j, mCount) {
html += '<td style="' + (mCount > 0 ? 'font-weight:bold;' : 'color:#ccc;') + '">' + mCount + '</td>';
});
html += '</tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) { $('#cu-loader').text('Error: ' + err); }
}
init();
})();
jvdmelrzitk07twosku86i2r6urpzrt
735958
735957
2026-04-02T05:51:21Z
MrJaroslavik
44012
E
735958
javascript
text/javascript
/**
* CHECKUSER RANGE STATISTICS - VERSION 6.1
* Features: Single API pass per user, high reliability, automatic month sorting.
*/
(function() {
var api = new mw.Api();
// ================= KONFIGURACE =================
var YEAR = 2025; // ZKONTROLUJ ROK! (2025 pro skwiki historii, 2026 pro současnost)
var START_MONTH = 1; // Leden
var END_MONTH = 3; // Březen
// ===============================================
var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var fullStart = YEAR + '-' + START_MONTH.toString().padStart(2, '0') + '-01T00:00:00Z';
var nextM = (END_MONTH === 12) ? 1 : END_MONTH + 1;
var nextY = (END_MONTH === 12) ? YEAR + 1 : YEAR;
var fullEnd = nextY + '-' + nextM.toString().padStart(2, '0') + '-01T00:00:00Z';
async function getUserData(username) {
var monthlyCounts = {};
for (var m = START_MONTH; m <= END_MONTH; m++) monthlyCounts[m] = 0;
var continueToken = '';
var hasMore = true;
var total = 0;
while (hasMore) {
var params = {
action: 'query', list: 'checkuserlog', culuser: username,
cullimit: 'max', culdir: 'newer',
culfrom: fullStart, culto: fullEnd, // Používáme culfrom/to podle dokumentace
formatversion: 2
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
var entries = (data.query && data.query.checkuserlog) ? data.query.checkuserlog : [];
$.each(entries, function(i, entry) {
var ts = entry.timestamp;
if (ts >= fullStart && ts < fullEnd) {
var m = parseInt(ts.substring(5, 7), 10);
if (monthlyCounts[m] !== undefined) {
monthlyCounts[m]++;
total++;
}
}
});
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else { hasMore = false; }
} catch (e) { hasMore = false; }
}
return { total: total, months: monthlyCounts };
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Stats (' + YEAR + '): ' + monthNames[START_MONTH-1] + ' to ' + monthNames[END_MONTH-1] + '</h3>'
+ '<span id="cu-loader">Loading users...</span></div>');
try {
var userMap = {};
// Načtení lokálních CU
var resL = await api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', formatversion: 2 });
if (resL.query.allusers) $.each(resL.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
// Rychlý scan logu pro globální uživatele
var logScan = await api.get({ action: 'query', list: 'checkuserlog', culfrom: fullStart, culto: fullEnd, cullimit: 'max', formatversion: 2 });
if (logScan.query && logScan.query.checkuserlog) {
$.each(logScan.query.checkuserlog, function(i, e) { if (!userMap[e.user]) userMap[e.user] = 'Global'; });
}
var usernames = Object.keys(userMap);
var statsList = [];
var grandTotal = 0;
for (var i = 0; i < usernames.length; i++) {
var name = usernames[i];
$('#cu-loader').text('Analyzing [' + (i+1) + '/' + usernames.length + ']: ' + name);
var res = await getUserData(name);
if (res.total > 0 || userMap[name] === 'Local CU') {
statsList.push({ name: name, role: userMap[name], data: res });
grandTotal += res.total;
}
}
statsList.sort((a, b) => b.data.total - a.data.total || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in range: ' + grandTotal + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; text-align: center;"><thead><tr>'
+ '<th style="text-align: left;">Username</th><th>Role</th>'
+ '<th style="background: #eaf3ff;">TOTAL</th>';
for (var m = START_MONTH; m <= END_MONTH; m++) { html += '<th>' + monthNames[m-1] + '</th>'; }
html += '</tr></thead><tbody>';
$.each(statsList, function(i, s) {
html += '<tr><td style="text-align: left;">' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td>'
+ '<td style="background: #f0f7ff;"><b>' + s.data.total + '</b></td>';
for (var m = START_MONTH; m <= END_MONTH; m++) {
var val = s.data.months[m];
html += '<td style="' + (val > 0 ? 'font-weight:bold;' : 'color:#ccc;') + '">' + val + '</td>';
}
html += '</tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) { $('#cu-loader').text('Error: ' + err); }
}
init();
})();
4ay7bs8lfnkygscq1alr3tmf2hp33bx
735959
735958
2026-04-02T05:55:26Z
MrJaroslavik
44012
E
735959
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.5 (April 2026)
* Features: Easy config (Year/Month), Unlimited count, Strict Date Filter.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var MONTH = 2; // 1=Jan, 2=Feb, 3=Mar, 4=Apr, ..., 12=Dec
// =================================================
// --- Automatic Date Logic ---
// Start: YYYY-MM-01 00:00:00
var monthPadded = MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + monthPadded + '-01T00:00:00Z';
// End: 1st day of the NEXT month 00:00:00 (Standard exclusive boundary)
// JavaScript handles month 12 -> next year 1 automatically
var nextMonthDate = new Date(Date.UTC(YEAR, MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
// UI Formatting
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = monthNames[MONTH - 1] + " " + YEAR;
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
// Strict check to keep the data within the chosen month
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Analyzing logs for ' + displayTitle + '...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in ' + displayTitle + ': ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
b53mjpu7m1aka5d8q3ryjzh3eeqvsjy
735960
735959
2026-04-02T06:01:29Z
MrJaroslavik
44012
E
735960
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.5.1 (Range Mode)
* Features: Multi-month range, Total count only, Based on stable 3.5 logic.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var START_MONTH = 1; // Od kterého měsíce (1=Jan)
var END_MONTH = 3; // Do kterého měsíce (včetně, 3=Mar)
// =================================================
// --- Automatic Date Logic ---
// Start: První den START_MONTH
var startPadded = START_MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + startPadded + '-01T00:00:00Z';
// End: První den měsíce PO END_MONTH
var nextMonthDate = new Date(Date.UTC(YEAR, END_MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
// UI Formatting
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = (START_MONTH === END_MONTH)
? monthNames[START_MONTH - 1] + " " + YEAR
: monthNames[START_MONTH - 1] + " – " + monthNames[END_MONTH - 1] + " " + YEAR;
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
// Strict check within the full range
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<p style="font-size: 0.85em; color: #666;">Range: ' + START + ' to ' + END + '</p>'
+ '<span id="cu-loader">Analyzing logs for ' + displayTitle + '...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in this period: ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Total Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
hrgjppblxtlas1rts0ic071co411kmp
735961
735960
2026-04-02T06:03:05Z
MrJaroslavik
44012
E
735961
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.5.1 (Range Mode)
* Features: Multi-month range, Total count only, Based on stable 3.5 logic.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2026;
var START_MONTH = 1; // Od kterého měsíce (1=Jan)
var END_MONTH = 4; // Do kterého měsíce (včetně, 3=Mar)
// =================================================
// --- Automatic Date Logic ---
// Start: První den START_MONTH
var startPadded = START_MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + startPadded + '-01T00:00:00Z';
// End: První den měsíce PO END_MONTH
var nextMonthDate = new Date(Date.UTC(YEAR, END_MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
// UI Formatting
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = (START_MONTH === END_MONTH)
? monthNames[START_MONTH - 1] + " " + YEAR
: monthNames[START_MONTH - 1] + " – " + monthNames[END_MONTH - 1] + " " + YEAR;
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
// Strict check within the full range
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<p style="font-size: 0.85em; color: #666;">Range: ' + START + ' to ' + END + '</p>'
+ '<span id="cu-loader">Analyzing logs for ' + displayTitle + '...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in this period: ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Total Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
bubgd6trwe5pywzio2tqrad2v0gf06z
735962
735961
2026-04-02T06:17:43Z
MrJaroslavik
44012
E
735962
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.5.1 (Range Mode)
* Features: Multi-month range, Total count only, Based on stable 3.5 logic.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2022;
var START_MONTH = 10; // Od kterého měsíce (1=Jan)
var END_MONTH = 12; // Do kterého měsíce (včetně, 3=Mar)
// =================================================
// --- Automatic Date Logic ---
// Start: První den START_MONTH
var startPadded = START_MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + startPadded + '-01T00:00:00Z';
// End: První den měsíce PO END_MONTH
var nextMonthDate = new Date(Date.UTC(YEAR, END_MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
// UI Formatting
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = (START_MONTH === END_MONTH)
? monthNames[START_MONTH - 1] + " " + YEAR
: monthNames[START_MONTH - 1] + " – " + monthNames[END_MONTH - 1] + " " + YEAR;
function getLocalCUs() {
return api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
}
function getGlobalCUs(groupName) {
return api.get({ action: 'query', list: 'globalallusers', agugroup: groupName, agulimit: 250 });
}
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
// Strict check within the full range
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
console.error("API error for " + username, e);
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<p style="font-size: 0.85em; color: #666;">Range: ' + START + ' to ' + END + '</p>'
+ '<span id="cu-loader">Analyzing logs for ' + displayTitle + '...</span></div>');
try {
var resLocal = await getLocalCUs();
var resStewards = await getGlobalCUs('steward');
var resOmbuds = await getGlobalCUs('ombuds');
var resStaff = await getGlobalCUs('staff');
var userMap = {};
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
function processG(res, label) {
if (res.query && res.query.globalallusers) {
$.each(res.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = label;
});
}
}
processG(resStewards, 'Steward');
processG(resOmbuds, 'Ombuds');
processG(resStaff, 'Staff');
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var name of usernames) {
$('#cu-loader').text('Processing user: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
}
total += count;
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in this period: ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px;">'
+ '<thead><tr><th>Username</th><th>Role</th><th>Total Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td>' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
cmnexdx6yhwjm8s7bsiu97oyxvwqikj
735963
735962
2026-04-02T06:40:07Z
MrJaroslavik
44012
E
735963
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.6 (Historical Support)
* Features: Multi-month range, Auto-detection of historical/former users from log.
* Based on stable 3.5.1 logic.
*/
(function() {
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2022;
var START_MONTH = 10; // Od (1=Jan)
var END_MONTH = 12; // Do (12=Dec)
// =================================================
// --- Automatic Date Logic ---
var startPadded = START_MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + startPadded + '-01T00:00:00Z';
var nextMonthDate = new Date(Date.UTC(YEAR, END_MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = (START_MONTH === END_MONTH)
? monthNames[START_MONTH - 1] + " " + YEAR
: monthNames[START_MONTH - 1] + " – " + monthNames[END_MONTH - 1] + " " + YEAR;
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px; font-family: sans-serif;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Step 1: Identifying current and former users...</span></div>');
try {
var userMap = {};
// 1. Fetch current groups
var resLocal = await api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
var groups = ['steward', 'ombuds', 'staff'];
for (var g of groups) {
var resG = await api.get({ action: 'query', list: 'globalallusers', agugroup: g, agulimit: 250 });
if (resG.query && resG.query.globalallusers) {
$.each(resG.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = g.charAt(0).toUpperCase() + g.slice(1);
});
}
}
// 2. SCAN LOG: Find anyone else who acted in this period but is not in current groups
var logScan = await api.get({
action: 'query',
list: 'checkuserlog',
culstart: START,
culend: END,
cullimit: 'max'
});
if (logScan.query && logScan.query.checkuserlog && logScan.query.checkuserlog.entries) {
$.each(logScan.query.checkuserlog.entries, function(i, entry) {
if (!userMap[entry.user]) {
userMap[entry.user] = 'Global/Former';
}
});
}
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
for (var i = 0; i < usernames.length; i++) {
var name = usernames[i];
$('#cu-loader').text('Step 2: Processing user [' + (i+1) + '/' + usernames.length + ']: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
total += count;
}
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
var html = '<p><b>Total actions in this period: ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px; text-align: center;">'
+ '<thead><tr><th style="text-align: left;">Username</th><th>Role</th><th>Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td style="text-align: left;">' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
5mw1cxoo8sb6t3wwd6mfxrk2en7oy18
735964
735963
2026-04-02T06:52:37Z
MrJaroslavik
44012
E
735964
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.7 (Final Edition)
* Features: Multi-month range, Auto-detection of historical users,
* Page Limitation (runs only on Special:CheckUserLog).
*/
(function() {
// POJISTKA: Skript se spustí pouze na stránce knihy kontrol uživatelů
if (mw.config.get('wgCanonicalSpecialPageName') !== 'CheckUserLog') {
return;
}
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2022;
var START_MONTH = 10; // Od (1=Jan)
var END_MONTH = 12; // Do (12=Dec)
// =================================================
// --- Automatic Date Logic ---
var startPadded = START_MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + startPadded + '-01T00:00:00Z';
var nextMonthDate = new Date(Date.UTC(YEAR, END_MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = (START_MONTH === END_MONTH)
? monthNames[START_MONTH - 1] + " " + YEAR
: monthNames[START_MONTH - 1] + " – " + monthNames[END_MONTH - 1] + " " + YEAR;
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
hasMore = false;
}
}
return count;
}
async function init() {
// Odstranění případné staré tabulky a příprava místa
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px; font-family: sans-serif;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Step 1: Identifying current and former users...</span></div>');
try {
var userMap = {};
// 1. Načtení aktuálních skupin
var resLocal = await api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
var groups = ['steward', 'ombuds', 'staff'];
for (var g of groups) {
var resG = await api.get({ action: 'query', list: 'globalallusers', agugroup: g, agulimit: 250 });
if (resG.query && resG.query.globalallusers) {
$.each(resG.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = g.charAt(0).toUpperCase() + g.slice(1);
});
}
}
// 2. SCAN LOG: Najde historické uživatele, kteří v období pracovali, ale už nemají flag
var logScan = await api.get({
action: 'query',
list: 'checkuserlog',
culstart: START,
culend: END,
cullimit: 'max'
});
if (logScan.query && logScan.query.checkuserlog && logScan.query.checkuserlog.entries) {
$.each(logScan.query.checkuserlog.entries, function(i, entry) {
if (!userMap[entry.user]) {
userMap[entry.user] = 'Global/Former';
}
});
}
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
// 3. Spočítání akcí pro každého nalezeného uživatele
for (var i = 0; i < usernames.length; i++) {
var name = usernames[i];
$('#cu-loader').text('Step 2: Processing user [' + (i+1) + '/' + usernames.length + ']: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
total += count;
}
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
// Stavba finální tabulky
var html = '<p><b>Total actions in this period: ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px; text-align: center;">'
+ '<thead><tr><th style="text-align: left;">Username</th><th>Role</th><th>Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td style="text-align: left;">' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
7nzsjjzls0sy30ulhy4saofwq3gxoix
735971
735964
2026-04-02T08:30:21Z
MrJaroslavik
44012
E
735971
javascript
text/javascript
/**
* SMART CHECKUSER STATISTICS - VERSION 3.8 (Full History Edition)
* Features: Multi-month range, UNLIMITED historical user detection (Loop-scan),
* Page Limitation (Special:CheckUserLog).
*/
(function() {
// POJISTKA: Skript se spustí pouze na Special:CheckUserLog
if (mw.config.get('wgCanonicalSpecialPageName') !== 'CheckUserLog') {
return;
}
var api = new mw.Api();
// ================= CONFIGURATION =================
var YEAR = 2022;
var START_MONTH = 10; // Od (1=Jan)
var END_MONTH = 12; // Do (12=Dec)
// =================================================
// --- Automatic Date Logic ---
var startPadded = START_MONTH.toString().padStart(2, '0');
var START = YEAR + '-' + startPadded + '-01T00:00:00Z';
var nextMonthDate = new Date(Date.UTC(YEAR, END_MONTH, 1));
var END = nextMonthDate.toISOString().split('.')[0] + 'Z';
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
var displayTitle = (START_MONTH === END_MONTH)
? monthNames[START_MONTH - 1] + " " + YEAR
: monthNames[START_MONTH - 1] + " – " + monthNames[END_MONTH - 1] + " " + YEAR;
// Funkce pro spočítání všech akcí konkrétního uživatele
async function countAllUserActions(username) {
var count = 0;
var continueToken = '';
var hasMore = true;
while (hasMore) {
var params = {
action: 'query',
list: 'checkuserlog',
culuser: username,
cullimit: 'max',
culdir: 'newer',
culstart: START,
culend: END
};
if (continueToken) params.culcontinue = continueToken;
try {
var data = await api.get(params);
if (data.query && data.query.checkuserlog && data.query.checkuserlog.entries) {
$.each(data.query.checkuserlog.entries, function(i, entry) {
if (entry.timestamp >= START && entry.timestamp < END) {
count++;
}
});
}
if (data.continue && data.continue.culcontinue) {
continueToken = data.continue.culcontinue;
} else {
hasMore = false;
}
} catch (e) {
hasMore = false;
}
}
return count;
}
async function init() {
$('.cu-stats-wrapper').remove();
$('#mw-content-text').prepend('<div class="cu-stats-wrapper" style="border: 2px solid #36c; padding: 15px; background: #f8f9fa; margin-bottom: 20px; font-family: sans-serif;">'
+ '<h3 style="margin-top:0">CheckUser Activity: ' + displayTitle + '</h3>'
+ '<span id="cu-loader">Step 1: Identifying current and former users...</span></div>');
try {
var userMap = {};
// 1. NAČTENÍ AKTUÁLNÍCH SKUPIN
var resLocal = await api.get({ action: 'query', list: 'allusers', augroup: 'checkuser', aulimit: 250 });
if (resLocal.query.allusers) {
$.each(resLocal.query.allusers, function(i, u) { userMap[u.name] = 'Local CU'; });
}
var groups = ['steward', 'ombuds', 'staff'];
for (var g of groups) {
var resG = await api.get({ action: 'query', list: 'globalallusers', agugroup: g, agulimit: 250 });
if (resG.query && resG.query.globalallusers) {
$.each(resG.query.globalallusers, function(i, u) {
if (!userMap[u.name]) userMap[u.name] = g.charAt(0).toUpperCase() + g.slice(1);
});
}
}
// 2. HLOUBKOVÝ SCAN LOGU: Najde VŠECHNA jména v logu (prochází celý log bez limitu 500)
var hasMoreLog = true;
var logContinue = '';
while (hasMoreLog) {
var logParams = {
action: 'query',
list: 'checkuserlog',
culstart: START,
culend: END,
cullimit: 'max'
};
if (logContinue) logParams.culcontinue = logContinue;
var logScan = await api.get(logParams);
if (logScan.query && logScan.query.checkuserlog && logScan.query.checkuserlog.entries) {
$.each(logScan.query.checkuserlog.entries, function(i, entry) {
if (!userMap[entry.user]) {
userMap[entry.user] = 'Global/Former';
}
});
}
if (logScan.continue && logScan.continue.culcontinue) {
logContinue = logScan.continue.culcontinue;
} else {
hasMoreLog = false;
}
}
var usernames = Object.keys(userMap);
var stats = [];
var total = 0;
// 3. VÝPOČET AKCÍ
for (var i = 0; i < usernames.length; i++) {
var name = usernames[i];
$('#cu-loader').text('Step 2: Processing user [' + (i+1) + '/' + usernames.length + ']: ' + name + '...');
var count = await countAllUserActions(name);
var role = userMap[name];
if (role === 'Local CU' || count > 0) {
stats.push({ name: name, count: count, role: role });
total += count;
}
}
stats.sort((a, b) => b.count - a.count || a.name.localeCompare(b.name));
// STAVBA TABULKY
var html = '<p><b>Total actions in this period: ' + total + '</b></p>'
+ '<table class="wikitable sortable" style="width:100%; margin-top:10px; text-align: center;">'
+ '<thead><tr><th style="text-align: left;">Username</th><th>Role</th><th>Actions</th></tr></thead><tbody>';
$.each(stats, function(i, s) {
html += '<tr><td style="text-align: left;">' + mw.html.escape(s.name) + '</td><td><small>' + s.role + '</small></td><td><b>' + s.count + '</b></td></tr>';
});
html += '</tbody></table>';
$('#cu-loader').hide();
$('.cu-stats-wrapper').append(html);
mw.loader.using('jquery.tablesorter', function() { $('table.sortable').tablesorter(); });
} catch (err) {
$('#cu-loader').text('Critical error: ' + err);
}
}
init();
})();
707h7lqygf09dcqmxxzutql4j3mpzr2
Einsteinium
0
119490
735980
704061
2026-04-02T09:30:16Z
~2026-20342-53
73381
735980
wikitext
text/x-wiki
''Einsteinium'' is a [[chemical element]] with symbol Es and atomic number Es in period 7. It is silver-colored. It is a Solid. Test. test!
==Chemical properties==
Einsteinium has an atomic mass of 252, a boiling point of 1269, a density of 8.84, a melting point of 1133, a molar heat of None, an electron configuration of 1s2 2s2 2p6 3s2 3p6 3d10 4s2 4p6 4d10 4f14 5s2 5p6 5d10 5f11 6s2 6p6 7s2, and an electron affinity of -28.6.
[[Category:Chemical elements]]
ma6ibzyal40nrps8xo3krkxzmecc4rw
User:SongVĩ.Bot II
2
124239
735857
735802
2026-04-01T17:00:16Z
SongVĩ.Bot II
52414
[[User:SongVĩ.Bot II|Task 0]]: Đã 1556 ngày...
735857
wikitext
text/x-wiki
Cập nhật lần cuối: 02-04-2026
Đã 1556 ngày...
t2qauy7fsf7k6va01cmhv8t7nyx3eld
Wikipedia:Village pump/topic list
4
146208
735983
735745
2026-04-02T09:50:29Z
Cewbot
33876
[[User:Cewbot/log/20170915/configuration|Generate topic list: 5 topics]]
735983
wikitext
text/x-wiki
<!-- This page is auto-generated by bot. Please contact the bot operator to improve the tool. -->
{| class="wikitable sortable mw-collapsible" style="float:left;"
|-
! data-sort-type="number" style="font-weight: normal;" | <small>#</small> !! 💭 Title !! <span title="Count of comments">💬</span> !! <span title="Count of peoples in discussion">👥</span> !! 🙋 Last editor !! data-sort-type="isoDate" | <span title="Date/Time">🕒 <small>(UTC)</small></span>
|-
| style="text-align: right;" | 1
| [[Wikipedia:Village pump#Script|Script]]
| style="text-align: right;" | 8
| style="text-align: right;" | 5
| style="background-color: #bbb;" | [[User:LuniZunie|LuniZunie]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2025-11-09T16:47:00.000Z" | 2025-11-09 <span style="color: blue;">16:47</span>
|-
| style="text-align: right;" | 2
| [[Wikipedia:Village pump#Report_concerning_Tanbiruzzammn|Report concerning Tanbiruzzammn]]
| style="text-align: right;" | 2
| style="text-align: right;" | 2
| style="background-color: #bbb;" | [[User:Barras|Barras]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2025-12-09T21:45:00.000Z" | 2025-12-09 <span style="color: blue;">21:45</span>
|-
| style="text-align: right;" | 3
| [[Wikipedia:Village pump#Report_concerning_Bucheon|Report concerning Bucheon]]
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[User:PieWriter|PieWriter]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-02-19T10:25:00.000Z" | 2026-02-19 <span style="color: blue;">10:25</span>
|-
| style="text-align: right;" | 4
| [[Wikipedia:Village pump#Versions_and_dates|Versions and dates]]
| style="text-align: right;" | 2
| style="text-align: right;background-color: #fcc;" | 1
| style="background-color: #bbb;" | [[Special:Contributions/~2026-13668-13|<span style="color: #c20;">~2026-13668-13</span>]]
| style="background-color: #bbb;" data-sort-type="isoDate" data-sort-value="2026-03-03T06:17:00.000Z" | 2026-03-03 <span style="color: blue;">06:17</span>
|-
| style="text-align: right;" | 5
| style="max-width: 24em" | <small>[[Wikipedia:Village pump#Upcoming_Wikimedia_Café_meetup_regarding_the_the_2026-2027_Wikimedia_Foundation_Annual_Plan|Upcoming Wikimedia Café meetup regarding the the 2026-2027 Wikimedia Foundation Annual Plan]]</small>
| style="text-align: right;background-color: #fcc;" | 1
| style="text-align: right;background-color: #fcc;" | 1
| [[User:Pine|Pine]]
| data-sort-type="isoDate" data-sort-value="2026-03-30T03:46:00.000Z" | 2026-03-30 <span style="color: blue;">03:46</span>
|}
{| class="wikitable mw-collapsible mw-collapsed" style="float: left; margin-left: .5em;;{{#if:{{{no_time_legend|}}}|display:none;|}}"
! title="From the latest bot edit" | Legend
|-
| style="background-color: #efe;" |
* In the last hour
|-
| style="background-color: #eef;" |
* In the last day
|-
| |
* In the last week
|-
| style="background-color: #ddd;" |
* In the last month
|-
| style="background-color: #bbb;" |
* More than one month
|-
! Manual settings
|-
| style="max-width: 12em;" | <small>When exceptions occur,<br />please check [[User:Cewbot/log/20170915/configuration|the setting]] first.</small>
|-
|}
{{Clear}}
ididy832y1q5url1zh7bqwtcm8wkefe
User:DVRTed/common.js
2
147626
735858
735795
2026-04-01T17:06:43Z
DVRTed
55993
735858
javascript
text/javascript
mw.loader.load(`http://localhost:1212/anyScript.js?t=${Date.now()}`);
mw.loader.load(`http://localhost:1212/script-ctl.js?t=${Date.now()}`);
mw.loader.load('https://commons.wikimedia.org/w/index.php?title=User:DVRTed/workshop.js&action=raw&ctype=text/javascript&maxage=86400');
/* scriptmanager:begin !DO NOT EDIT THIS LINE MANUALLY!*/
/* scriptmanager:end !DO NOT EDIT THIS LINE MANUALLY!*/
g9cdzg7z4rmw9lb555ltzgmfkfe81mj
735859
735858
2026-04-01T17:06:58Z
DVRTed
55993
735859
javascript
text/javascript
mw.loader.load(`http://localhost:1212/anyScript.js?t=${Date.now()}`);
mw.loader.load(`http://localhost:1212/script-ctl.js?t=${Date.now()}`);
mw.loader.load('https://test.wikimedia.org/w/index.php?title=User:DVRTed/workshop.js&action=raw&ctype=text/javascript&maxage=86400');
/* scriptmanager:begin !DO NOT EDIT THIS LINE MANUALLY!*/
/* scriptmanager:end !DO NOT EDIT THIS LINE MANUALLY!*/
pe8p9jyl2sn7sy0rttyjgsn6h52v3zw
735860
735859
2026-04-01T17:07:53Z
DVRTed
55993
735860
javascript
text/javascript
mw.loader.load(`http://localhost:1212/anyScript.js?t=${Date.now()}`);
mw.loader.load(`http://localhost:1212/script-ctl.js?t=${Date.now()}`);
mw.loader.load('https://test.wikipedia.org/w/index.php?title=User:DVRTed/workshop.js&action=raw&ctype=text/javascript&maxage=86400');
/* scriptmanager:begin !DO NOT EDIT THIS LINE MANUALLY!*/
/* scriptmanager:end !DO NOT EDIT THIS LINE MANUALLY!*/
s9d535ml32cfv9n1idkesiwjhv48v23
735861
735860
2026-04-01T17:09:27Z
DVRTed
55993
735861
javascript
text/javascript
mw.loader.load(`http://localhost:1212/anyScript.js?t=${Date.now()}`);
mw.loader.load(`http://localhost:1212/script-ctl.js?t=${Date.now()}`);
mw.loader.load('https://test.wikipedia.org/w/index.php?title=User:DVRTed/workshop.js&action=raw&ctype=text/javascript&maxage=86400&oldid=734468');
/* scriptmanager:begin !DO NOT EDIT THIS LINE MANUALLY!*/
/* scriptmanager:end !DO NOT EDIT THIS LINE MANUALLY!*/
lpz9gxoipdd08qv7yg4mbn34kuubfwh
735862
735861
2026-04-01T17:12:19Z
DVRTed
55993
735862
javascript
text/javascript
mw.loader.load(`http://localhost:1212/anyScript.js?t=${Date.now()}`);
mw.loader.load(`http://localhost:1212/script-ctl.js?t=${Date.now()}`);
mw.loader.load('https://test.wikipedia.org/w/index.php?title=User:DVRTed/workshop.js&action=raw&ctype=text/javascript&oldid=734468');
/* scriptmanager:begin !DO NOT EDIT THIS LINE MANUALLY!*/
/* scriptmanager:end !DO NOT EDIT THIS LINE MANUALLY!*/
d95s0e257hpmajq3tishp1ylaplvlhd
User talk:JWBTH/CD test page
3
154341
735822
735811
2026-04-01T12:05:35Z
JWBTH
52211
/* test3 */
735822
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
: {{pb}}{{pb}}{{pb}} [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:17, 30 March 2026 (UTC)
: Begin {{pb}}{{pb}}{{pb}} End [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:42, 30 March 2026 (UTC)
: Begin<br>End [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 02:30, 31 March 2026 (UTC)
: Begin{{pb}}End. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 02:31, 31 March 2026 (UTC)
: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
o65774ljvzy0e6mcp3iiap4k8klz4i7
735823
735822
2026-04-01T12:40:45Z
JWBTH
52211
/* test3 */
735823
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
5t69d5sgcltk47y6v1xcnkkxkowstw3
735826
735823
2026-04-01T13:13:15Z
JWBTH
52211
/* Section for moving */
735826
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
== Section with equals sign (=) for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
8ivla35f8pt2r5kv3q00to7lwga29b8
735828
735826
2026-04-01T13:13:31Z
JWBTH
52211
/* Section with equals sign (=) for moving */ move to [[User talk:JWBTH/CD test page 2#Section with equals sign (=) for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735828
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign (=) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
e9hkf9myvq6ue0x8n6nks5x49ugi553
735830
735828
2026-04-01T13:16:37Z
JWBTH
52211
/* Section with equals sign (=) for moving */ move to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735830
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:16, 1 April 2026 (UTC)''</div>
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
jli40u5y6lusul7r7llo5igcxb0p0bu
735831
735830
2026-04-01T13:18:43Z
JWBTH
52211
735831
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
== Section with equals sign (=) for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
8ivla35f8pt2r5kv3q00to7lwga29b8
735835
735831
2026-04-01T13:40:33Z
JWBTH
52211
/* Section with equals sign (=) for moving */ move to [[User talk:JWBTH/CD test page 2#Section with equals sign (=) for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735835
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
3fu99a6jvja78rkwczfypkshu96401e
735852
735835
2026-04-01T16:36:05Z
Test account 8
71122
/* Section for moving */ move to [[User talk:JWBTH/CD test page 2#Section for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735852
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
lu9jq3g2hn4ura7p92alqw5m81ptv09
735853
735852
2026-04-01T16:36:14Z
Test account 8
71122
/* Section for moving */ move from [[User talk:JWBTH/CD test page 2]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735853
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
3fu99a6jvja78rkwczfypkshu96401e
735855
735853
2026-04-01T16:38:24Z
Test account 8
71122
/* Section to add test comments */ reply ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735855
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
: Test comment with random number 0.5537697536904882 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:38, 1 April 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
31juqusouv2cvipm4ykratq4hgms8fq
735863
735855
2026-04-01T17:14:34Z
Test account 8
71122
/* Section to add test comments */ reply: Test comment with random number 0.470848341599752 (-) ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735863
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
: Test comment with random number 0.5537697536904882 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:38, 1 April 2026 (UTC)
: Test comment with random number 0.470848341599752 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:14, 1 April 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
lu6f41ibjs90cnv6eapfa2y01dv24xv
735864
735863
2026-04-01T17:15:24Z
Test account 8
71122
/* Section to add test comments */ reply ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735864
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
: Test comment with random number 0.5537697536904882 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:38, 1 April 2026 (UTC)
: Test comment with random number 0.470848341599752 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:14, 1 April 2026 (UTC)
: Test comment with random number 0.41673313374066356 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:15, 1 April 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
f1rqdym78zrdgi194cj3ac0m5k8xzcc
735867
735864
2026-04-01T17:35:52Z
Test account 8
71122
/* Section to add test comments */ reply: Test comment with random number 0.671732439038764 (-) ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735867
wikitext
text/x-wiki
== Section 1 ==
first section comment [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:37, 20 November 2024 (UTC)
unsigned comment
end {{unsigned|user}}
: comment to be edited [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 02:38, 20 November 2024 (UTC)
:: comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 02:41, 20 November 2024 (UTC)
::: child comment of comment to test buttons [[User:Jack who built the house|Jack who built the house]] ([[User talk:Jack who built the house|talk]]) 06:09, 27 August 2025 (UTC)
::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
:::: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 19:32, 16 March 2026 (UTC)
: [[#c-Test_account_8-20241120023700-Section_1|Test account 8 @ 02:37, 20 November 2024 (UTC)]] [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 06:43, 28 March 2026 (UTC)
=== test2 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:55, 14 September 2025 (UTC)
: [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 20:13, 26 March 2026 (UTC)
=== test3 ===
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC)
::::::::::::::: <nowiki>__NOGALLERY__</nowiki> [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC)
== Section to add test comments ==
section [[User:Example|Example]] ([[User talk:Example|talk]]) 02:37, 1 March 2026 (UTC)
: Test comment with random number 0.08406505844874512 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:32, 16 March 2026 (UTC)
: Test. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:16, 16 March 2026 (UTC)
: Test. test3 [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:17, 16 March 2026 (UTC)
: Test comment with random number 0.8357927622675184 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.47460188540542925 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 18:53, 16 March 2026 (UTC)
: Test comment with random number 0.687062002939545 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:03, 23 March 2026 (UTC)
: Test comment with random number 0.21500952410025898 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 12:22, 23 March 2026 (UTC)
: Test comment with random number 0.6571328205265842 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:21, 23 March 2026 (UTC)
: Test comment with random number 0.8725721668943434 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:21, 24 March 2026 (UTC)
: Test comment with random number 0.9535110784110594 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 11:22, 24 March 2026 (UTC)
: Test comment with random number 0.4330065153484025 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 03:55, 27 March 2026 (UTC)
: Test comment with random number 0.7353033907097808 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.44304195516553146 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:23, 27 March 2026 (UTC)
: Test comment with random number 0.02243804450899023 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.520846091950367 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:24, 27 March 2026 (UTC)
: Test comment with random number 0.9946058761624214 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:25, 27 March 2026 (UTC)
: Test comment with random number 0.1691580237328757 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:28, 27 March 2026 (UTC)
: Test comment with random number 0.06490355868980668 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:30, 27 March 2026 (UTC)
: Test comment with random number 0.9392023221346153 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 10:32, 27 March 2026 (UTC)
: Test comment with random number 0.5537697536904882 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 16:38, 1 April 2026 (UTC)
: Test comment with random number 0.470848341599752 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:14, 1 April 2026 (UTC)
: Test comment with random number 0.41673313374066356 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:15, 1 April 2026 (UTC)
: Test comment with random number 0.671732439038764 [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 17:35, 1 April 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
depvgbtovcbufgwavpbb51a63v9jebj
Test article
0
155195
735992
591451
2026-04-02T10:19:19Z
PieAlt
73198
Tagging broken redirect for deletion ([[:m:User:PieWriter/BR.js|BR]])
735992
wikitext
text/x-wiki
{{delete|Broken redirect}}
#REDIRECT [[Test brticle]]
{{Redirect category shell|
{{R from move}}
}}
iqz011fisplh6k6ilcvmjq175pn0p1q
736001
735992
2026-04-02T10:34:17Z
PieWriter
72123
Reverted edits by PieAlt via [[:m:User:PieWriter/massundo.js|massundo]]
736001
wikitext
text/x-wiki
#REDIRECT [[Test brticle]]
{{Redirect category shell|
{{R from move}}
}}
mxz61mrkjqdniksjnbz0i103jk6vlay
T370669a
0
157063
735986
604414
2026-04-02T10:14:38Z
PieAlt
73198
Tagging broken redirect for deletion
735986
wikitext
text/x-wiki
{{delete|Broken redirect}}
#REDIRECT [[T370669b]]
{{Redirect category shell|
{{R from move}}
}}
f7pv7etbn1i5ihh6scztxdnbn02745n
736003
735986
2026-04-02T10:34:18Z
PieWriter
72123
Reverted edits by PieAlt via [[:m:User:PieWriter/massundo.js|massundo]]
736003
wikitext
text/x-wiki
#REDIRECT [[T370669b]]
{{Redirect category shell|
{{R from move}}
}}
su2cvjcfw4v7ze058mq1l26uh562y5e
Wikipédia:Administradores/Pedidos de aprovação/!Silent/15
0
165883
735856
657281
2026-04-01T16:49:19Z
~2026-20189-61
73370
test
735856
wikitext
text/x-wiki
{{Wikipédia:Administradores/Pedidos de aprovação/Concluídos/Cabeçalho|aprovado}}
Teste aprovado. [[User:!Silent|!Silent]] ([[User talk:!Silent|talk]]) 11:33, 3 May 2025 (UTC)
== [[Usuário:!Silent|!Silent]] ==
* {{usuário|!Silent}}test
Teste stetst stsetes
=== Perguntas ===
<!-- Para responder, apague toda a linha em que está escrito "Responda aqui". Não é obrigatório responder às questões. -->
;1. Em que tarefas usuais costuma participar?
<!-- Responda aqui -->
;2. Que ferramentas administrativas pensa serem particularmente úteis?
<!-- Responda aqui -->
;3. Já teve algum conflito com outro(s) usuário(s)? Se sim, foi resolvido?
<!-- Responda aqui -->
;4. Já mediou alguma disputa? Se sim, qual o desfecho?
<!-- Responda aqui -->
;5. Quais as suas áreas gerais de interesse na Wikipédia? Poderia indicar alguns artigos em que tenha tido uma contribuição significativa?
<!-- Responda aqui -->
=== Votação ===
=== Comentários ===
{{Wikipédia:Administradores/Pedidos de aprovação/Concluídos/Rodapé}}
sloypmtfdltyvffk7ctkml9ywcmb6lr
Punithtest
0
168951
735868
728000
2026-04-01T17:51:19Z
Ladsgroup
2217
735868
wikitext
text/x-wiki
[[File:Pigeons_bathing_at_Retiro_Park.webm|thumb|210px]]
t55stp6lwiylbkqgetwx0i9766eangi
735869
735868
2026-04-01T17:51:47Z
Ladsgroup
2217
735869
wikitext
text/x-wiki
[[File:Pigeons_bathing_at_Retiro_Park.webm|thumb|170px]]
tvzqhau29ba2caqrg04517vo2gnt5mz
735870
735869
2026-04-01T17:52:18Z
Ladsgroup
2217
735870
wikitext
text/x-wiki
[[File:Pigeons_bathing_at_Retiro_Park.webm|thumb|300px]]
byn1qwhgwxq8cbvhyjg7jrqrtlvhayt
User:Enbi/common.js
2
172174
735889
735670
2026-04-01T19:34:26Z
Enbi
72574
735889
javascript
text/javascript
importScript('User:Enbi/UnnamedScript.js');
importScript('User:Enbi/testScript.js');
importScript('User:Enbi/simul.js');
importScript('User:Enbi/newUserFilter.js');
importScript('User:Enbi/new.js');
importScript('User:Enbi/wikiCMD.js');
importScript('User:Enbi/LAC.js');
importScript('User:enbi/LTA-undo.js');
iifu71orqkpnbxp4qtzyoan5bbipgpv
User talk:JWBTH/CD test page 2
3
174028
735825
735773
2026-04-01T13:12:40Z
JWBTH
52211
/* Section for moving */ delete topic ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735825
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
735827
735825
2026-04-01T13:13:30Z
JWBTH
52211
/* Section with equals sign (=) for moving */ move from [[User talk:JWBTH/CD test page#Section with equals sign (=) for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735827
wikitext
text/x-wiki
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
kz4yqpk2xonqrw7pdxm9va6wc35x0ea
735829
735827
2026-04-01T13:16:36Z
JWBTH
52211
/* Section with equals sign (=) for moving */ move from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735829
wikitext
text/x-wiki
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:16, 1 April 2026 (UTC)''</div>
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign (=) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
jjh5qsoxuepqdun4p0n43y5j5gu504v
735832
735829
2026-04-01T13:19:44Z
JWBTH
52211
/* Section with equals sign (=) for moving */ move from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735832
wikitext
text/x-wiki
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:16, 1 April 2026 (UTC)''</div>
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign (=) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:19, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
lgomnu1t0f5r0da2y97j2blo29s8lyk
735833
735832
2026-04-01T13:24:24Z
JWBTH
52211
/* Section with equals sign (=) for moving */ move from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735833
wikitext
text/x-wiki
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:24, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:16, 1 April 2026 (UTC)''</div>
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign (=) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:19, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
3o10xfhzohlp7rtiq12zgdxd602z3q0
735834
735833
2026-04-01T13:40:27Z
JWBTH
52211
/* Section with equals sign (=) for moving */ move from [[User talk:JWBTH/CD test page#Section with equals sign (=) for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735834
wikitext
text/x-wiki
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:24, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:16, 1 April 2026 (UTC)''</div>
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign (=) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:19, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
enr1o4voclxb5m2tpccmagn67mxd6av
735836
735834
2026-04-01T13:40:50Z
JWBTH
52211
/* Section with equals sign (=) for moving */ move from [[User talk:JWBTH/CD test page#Section with equals sign (=) for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735836
wikitext
text/x-wiki
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:24, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:16, 1 April 2026 (UTC)''</div>
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign (=) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:19, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
twdi2g3pewmfwywn13ob6h9lzj2za08
735837
735836
2026-04-01T13:41:01Z
JWBTH
52211
/* Section with equals sign (=) for moving */ move from [[User talk:JWBTH/CD test page#Section with equals sign (=) for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735837
wikitext
text/x-wiki
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:41, 1 April 2026 (UTC)''</div>
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:40, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:24, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{=}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:16, 1 April 2026 (UTC)''</div>
<div class="cd-moveMark">''Moved to [[User talk:JWBTH/CD test page 2#Section with equals sign (=) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:13, 1 April 2026 (UTC)''</div>
== Section with equals sign (=) for moving ==
<div class="cd-moveMark">''Moved from [[User talk:JWBTH/CD test page#Section with equals sign ({{{{=}}}}) for moving]]. [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 13:19, 1 April 2026 (UTC)''</div>
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:50, 15 March 2026 (UTC)
p6k9youqs7h4tzulqn61449ol95p8q8
735838
735837
2026-04-01T13:59:00Z
JWBTH
52211
Blanked the page
735838
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
735851
735838
2026-04-01T16:36:04Z
Test account 8
71122
/* Section for moving */ move from [[User talk:JWBTH/CD test page]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735851
wikitext
text/x-wiki
== Section for moving ==
test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 19:52, 15 March 2026 (UTC)
q3wyqbusuiwpjx2lno1ci6uctvs84op
735854
735851
2026-04-01T16:36:15Z
Test account 8
71122
/* Section for moving */ move to [[User talk:JWBTH/CD test page#Section for moving]] ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
735854
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
User:ToluAyod/Starter kit/Content categories
2
174230
735839
735800
2026-04-01T15:59:00Z
ToluAyod
69650
Created by StarterKit tool
735839
wikitext
text/x-wiki
<div style="margin:10px 0;box-shadow:0 1px 1px rgba(0,0,0,0.1);background:#fff;">
{| style="border-spacing:1px;border-collapse:separate;width:100%;text-align:center;font-size:0.9em;padding:2px 3px;" class="hp-portalen"
| style="background:#F9F9F0;border-top:5px solid #999933;padding:3px 0.25em;width:25%;text-align:center;" | Arts & Literature
| style="background:#F4F9F0;border-top:5px solid #669933;padding:3px 0.25em;width:25%;text-align:center;" | Countries & Geography
| style="background:#F0F9F9;border-top:5px solid #339999;padding:3px 0.25em;width:25%;text-align:center;" | Science & Technology
| style="background:#F9F0F9;border-top:5px solid #993399;padding:3px 0.25em;width:25%;text-align:center;" | History & Events
|}
</div>
<noinclude>[[Category:Starter Kit templates]][[Category:Main page templates]]</noinclude>
n9zv2bbmxqwb2gr8u6hk26i2vu07y01
User:ToluAyod/Main Page
2
174233
735840
735801
2026-04-01T15:59:07Z
ToluAyod
69650
Updated Main Page via StarterKit tool
735840
wikitext
text/x-wiki
<div style="text-align: center; font-family: 'Linux Libertine', Georgia, Times, serif; margin: 1.5em 0;">
<span style="font-size: 2.3em; line-height: 1.2;">Welcome to {{SITENAME}} Wikipedia</span><br/>
<span style="font-size: 1.1em; color: #54595d;">The free encyclopedia that anyone can edit</span><br/>
<span style="font-size: 0.95em; color: #72777d; margin-top: 0.5em; display: inline-block;">{{NUMBEROFACTIVEUSERS}} active editors • '''{{NUMBEROFARTICLES}}''' articles in {{SITENAME}}</span>
</div>
{{User:ToluAyod/Starter kit/Content categories}}
<div style="display: flex; gap: 4px; align-items: stretch;"><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:ToluAyod/Starter kit/Featured article}}</div><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:ToluAyod/Starter kit/In the news}}</div></div>
<div style="display: flex; gap: 4px; align-items: stretch;"><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:ToluAyod/Starter kit/Did you know}}</div><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:ToluAyod/Starter kit/On this day}}</div></div>
<div style="margin-top: 10px;">{{User:ToluAyod/Starter kit/Featured picture}}</div>
<div style="display: flex; gap: 4px; align-items: stretch; margin-top: 10px;"><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:ToluAyod/Starter kit/Community resources}}</div><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:ToluAyod/Starter kit/Translation resources}}</div></div>
<div style="margin-top: 10px;">{{User:ToluAyod/Starter kit/Wikipedia's sister projects}}</div>
<div style="margin-top: 10px;">{{User:ToluAyod/Starter kit/Wikipedia languages}}</div>
__NOTOC__
fhg7g3sx9pih0kwgheogjbu8cwdh8l1
User:MMunyoki (WMF)/Main Page
2
174266
735846
734237
2026-04-01T16:08:22Z
MMunyoki (WMF)
53374
Updated Main Page via StarterKit tool
735846
wikitext
text/x-wiki
<div style="text-align: center; font-family: 'Linux Libertine', Georgia, Times, serif; margin: 1.5em 0;">
<span style="font-size: 2.3em; line-height: 1.2;">Welcome to {{SITENAME}} Wikipedia</span><br/>
<span style="font-size: 1.1em; color: #54595d;">The free encyclopedia that anyone can edit</span><br/>
<span style="font-size: 0.95em; color: #72777d; margin-top: 0.5em; display: inline-block;">{{NUMBEROFACTIVEUSERS}} active editors • '''{{NUMBEROFARTICLES}}''' articles in {{SITENAME}}</span>
</div>
<div style="display: flex; gap: 4px; align-items: stretch;"><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/Featured article}}</div><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/In the news}}</div></div>
<div style="display: flex; gap: 4px; align-items: stretch;"><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/Did you know}}</div><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/On this day}}</div></div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Featured picture}}</div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Translation resources}}</div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Wikipedia's sister projects}}</div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Wikipedia languages}}</div>
__NOTOC__
hmyolyhhdtphckau9lm84gdvu0kbnxo
735850
735846
2026-04-01T16:31:27Z
MMunyoki (WMF)
53374
735850
wikitext
text/x-wiki
<div style="text-align: center; font-family: 'Linux Libertine', Georgia, Times, serif; margin: 1.5em 0;">
<span style="font-size: 2.3em; line-height: 1.2;">Welcome to {{SITENAME}} Wikipedia</span><br/>
<span style="font-size: 1.1em; color: #54595d;">The free encyclopedia that anyone can edit</span><br/>
<span style="font-size: 0.95em; color: #72777d; margin-top: 0.5em; display: inline-block;">{{NUMBEROFACTIVEUSERS}} active editors • '''{{NUMBEROFARTICLES}}''' articles in {{SITENAME}}</span>
</div>[[User:MMunyoki (WMF)/Starter kit/Featured article]]<div style="display: flex; gap: 4px; align-items: stretch;"><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/Featured article}}</div><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/In the news}}</div></div>
<div style="display: flex; gap: 4px; align-items: stretch;"><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/Did you know}}</div><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/On this day}}</div></div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Featured picture}}</div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Translation resources}}</div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Wikipedia's sister projects}}</div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Wikipedia languages}}</div>
__NOTOC__
https://test.wikipedia.org/wiki/User:MMunyoki_(WMF)/Starter_kit/Featured_article
kebon7dccb8g3kvd2c5qereqqs4wae2
735866
735850
2026-04-01T17:19:06Z
MMunyoki (WMF)
53374
Updated Main Page via StarterKit tool
735866
wikitext
text/x-wiki
<div style="text-align: center; font-family: 'Linux Libertine', Georgia, Times, serif; margin: 1.5em 0;">
<span style="font-size: 2.3em; line-height: 1.2;">Welcome to {{SITENAME}} Wikipedia</span><br/>
<span style="font-size: 1.1em; color: #54595d;">The free encyclopedia that anyone can edit</span><br/>
<span style="font-size: 0.95em; color: #72777d; margin-top: 0.5em; display: inline-block;">{{NUMBEROFACTIVEUSERS}} active editors • '''{{NUMBEROFARTICLES}}''' articles in {{SITENAME}}</span>
</div>
<div style="display: flex; gap: 4px; align-items: stretch;"><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/Featured article}}</div><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/In the news}}</div></div>
<div style="display: flex; gap: 4px; align-items: stretch;"><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/Did you know}}</div><div style="flex: 1; min-width: 0; display: flex; flex-direction: column;">{{User:MMunyoki (WMF)/Starter kit/On this day}}</div></div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Featured picture}}</div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Translation resources}}</div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Wikipedia's sister projects}}</div>
<div style="margin-top: 10px;">{{User:MMunyoki (WMF)/Starter kit/Wikipedia languages}}</div>
__NOTOC__
hmyolyhhdtphckau9lm84gdvu0kbnxo
User:PieAlt/common.js
2
174351
735975
735488
2026-04-02T08:46:52Z
PieAlt
73198
Uninstalling [[User:PieAlt/test.js]] ([[mw:User:Iniquity/scriptManager.js|Script Manager]])
735975
javascript
text/javascript
// <nowiki>
mw.loader.using(['mediawiki.api', 'mediawiki.util', 'oojs-ui'], function () {
function openDialog() {
var windowManager = new OO.ui.WindowManager();
$(document.body).append(windowManager.$element);
var dialog = new OO.ui.MessageDialog();
windowManager.addWindows([dialog]);
var radioSelect = new OO.ui.RadioSelectWidget({
items: [
new OO.ui.RadioOptionWidget({ data: 'spam', label: 'Spam' }),
new OO.ui.RadioOptionWidget({ data: 'vandalism', label: 'Vandalism' }),
new OO.ui.RadioOptionWidget({ data: 'empty', label: 'Empty page' }),
new OO.ui.RadioOptionWidget({ data: 'notable', label: 'Not notable' }),
new OO.ui.RadioOptionWidget({ data: 'oop', label: 'Out of project scope' }),
new OO.ui.RadioOptionWidget({ data: 'custom', label: 'Custom reason' })
]
});
var customInput = new OO.ui.MultilineTextInputWidget({
placeholder: 'Enter custom reason...',
autosize: true
});
var container = new OO.ui.PanelLayout({ padded: true, expanded: false });
container.$element.append(
new OO.ui.LabelWidget({ label: 'Select a reason:' }).$element,
radioSelect.$element,
customInput.$element
);
windowManager.openWindow(dialog, {
title: 'Votes for Deletion',
message: container.$element,
actions: [
{ action: 'submit', label: 'Nominate', flags: ['primary', 'progressive'] },
{ action: 'cancel', label: 'Cancel', flags: 'safe' }
]
}).closed.then(function (data) {
if (!data || data.action !== 'submit') return;
var selected = radioSelect.findSelectedItem();
if (!selected) {
mw.notify('Select a reason', { type: 'error' });
return;
}
var reasonMap = {
spam: 'Spam page',
vandalism: 'Vandalism',
empty: 'Empty page',
notable: 'Not notable',
oop: 'Out of project scope'
};
var reason = selected.getData() === 'custom'
? customInput.getValue()
: reasonMap[selected.getData()];
if (!reason) {
mw.notify('Provide a reason', { type: 'error' });
return;
}
var titleObj = new mw.Title(mw.config.get('wgPageName'));
var pageName = titleObj.getPrefixedText();
var api = new mw.Api();
api.get({
action: 'query',
prop: 'revisions',
titles: pageName,
rvprop: 'content',
formatversion: 2
}).then(function (data) {
var page = data.query.pages[0];
var content = (page.revisions && page.revisions[0]) ? page.revisions[0].content : "";
if (content.includes('{{vfd-new')) {
throw new Error("Already nominated");
}
return api.postWithToken('csrf', {
action: 'edit',
title: pageName,
text: "{{vfd-new}}\n" + content.replace(/^\s+/, ''),
summary: 'Adding VFD with [[User:PieWriter/vfd|tool]]',
watchlist: 'watch'
});
}).then(function () {
return api.postWithToken('csrf', {
action: 'edit',
title: "Wikiquote:Votes for deletion/" + pageName,
text: "{{subst:vfd-new2|pg=" + pageName + "|text=" + reason + " — ~~~~}}",
summary: "VfD: " + pageName,
watchlist: 'watch'
});
}).then(function () {
return api.get({
action: 'query',
prop: 'revisions',
titles: "Wikiquote:Votes for deletion/" + pageName,
rvprop: 'content',
formatversion: 2
}).then(function (data) {
var text = data.query.pages[0].revisions[0].content;
var voteText = ": '''Delete''' as nominator ~~~~";
var newText;
if (text.includes("'''Vote closes'''")) {
newText = text.replace(
/(<small>\s*'''Vote closes''':)/,
voteText + "\n$1"
);
} else {
newText = text.replace(/\s+$/, '') + "\n" + voteText;
}
return api.postWithToken('csrf', {
action: 'edit',
title: "Wikiquote:Votes for deletion/" + pageName,
text: newText,
summary: "Adding nominator vote",
watchlist: 'watch'
});
});
}).then(function () {
return api.get({
action: 'query',
prop: 'revisions',
titles: "Wikiquote:Votes for deletion",
rvprop: 'content',
formatversion: 2
}).then(function (data) {
var text = data.query.pages[0].revisions[0].content;
var cleanText = text.replace(/\s+$/, '');
return api.postWithToken('csrf', {
action: 'edit',
title: "Wikiquote:Votes for deletion",
text: cleanText + "\n{{Wikiquote:Votes for deletion/" + pageName + "}}",
summary: "Adding " + pageName + " VfD entry",
watchlist: 'watch'
});
});
}).then(function () {
mw.notify('VfD nomination complete', { type: 'success' });
}).catch(function (err) {
mw.notify(err.message || 'Error during VFD', { type: 'error' });
});
});
}
function addLink() {
if (mw.config.get('wgNamespaceNumber') < 0) return;
var link = mw.util.addPortletLink(
'p-cactions',
'#',
'VFD',
'ca-vfd',
'Nominate for deletion'
);
if (!link) return;
$(link).on('click', function (e) {
e.preventDefault();
openDialog();
});
}
$(addLink);
});
// </nowiki>
kpwzz9f03mxsvtlzjcl3x2zhc99xjbq
User:PieAlt/test.js
2
174537
735972
735535
2026-04-02T08:41:09Z
PieAlt
73198
735972
javascript
text/javascript
// <nowiki>
const pieRevertVersion = "1.0";
const pieRevertChangelog = `
<h1 class="settings-section-title">Changelog</h1>
<p>Welcome to PieRevert! This script organizes recent changes and uses AI risk scoring:</p>
<ul>
<li>AI-based risk sorting of edits</li>
<li>Customizable control scripts</li>
<li>Dark mode and themes</li>
<li>Warnings and templates</li>
<li>User highlighting and whitelisting</li>
</ul>
`;
const pieRevertData = {
defaultSettings: {
maxQueueSize: 50,
refreshTime: 2000,
showIPs: true,
showUsers: true,
sortQueueItems: true,
controlScripts: [
{ keys: [" ", "arrowright"], actions: [{ name: "nextEdit", params: {} }] },
{
keys: ["q"],
actions: [
{ name: "rollback", params: {} },
{ name: "warn", params: { warningType: "Vandalism", level: "auto" } },
{ name: "highlight", params: {} },
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{ name: "reportToAIV", params: { reportMessage: "Vandalism past final warning" } }
]
}
]
},
{ name: "nextEdit", params: {} }
]
},
{ keys: ["arrowleft"], actions: [{ name: "prevEdit", params: {} }] },
{ keys: ["h"], actions: [{ name: "openHistory", params: {} }] },
{ keys: ["c"], actions: [{ name: "openUserContribs", params: {} }] }
],
theme: "theme-light"
},
warningTemplateColors: {
"0": "grey",
"1": "#4169e1",
"2": "#ff8c00",
"3": "#ff4500",
"4": "#b22222",
"4im": "#000000"
},
colorPalettes: [
["#78c675","#fdff7a","#fcff54","#fbff12","#ffc619","#ff8812","#f56214","#f73214","#fc0303","#fc0303"],
["#bfbfbf","#ffd9d9","#ffc9c9","#ffb0b0","#ff9797","#ff7d7d","#ff6464","#ff4b4b","#ff3131","#ff1818"],
["#bfbfbf","#d9ffd9","#c9ffc9","#b0ffb0","#97ff97","#7dff7d","#64ff64","#4bff4b","#31ff31","#18ff18"],
["#bfbfbf","#d9d9ff","#c9c9ff","#b0b0ff","#9797ff","#7d7dff","#6464ff","#4b4bff","#3131ff","#1818ff"]
],
warnings: {
"Vandalism": {
templates: ["subst:uw-vandalism1","subst:uw-vandalism2","subst:uw-vandalism3","subst:uw-vandalism4","subst:uw-vandalism4im"],
label: "vandalism",
desc: "Default warning for vandalism."
},
"Disruption": {
templates: ["subst:uw-disruptive1","subst:uw-disruptive2","subst:uw-disruptive3","subst:uw-generic4"],
label: "disruptive editing",
desc: "Default warning for disruptive edits."
},
"Advertising": {
templates: ["subst:uw-advert1","subst:uw-advert2","subst:uw-advert3","subst:uw-advert4","subst:uw-advert4im"],
label: "advertising",
desc: "Adding promotional content."
}
// …
},
namespaces: [
{ name: "Main", id: 0 },
{ name: "User", id: 2 },
{ name: "Project", id: 4 },
{ name: "File", id: 6 },
{ name: "Template", id: 10 },
{ name: "Category", id: 14 },
{ name: "Portal", id: 100 },
{ name: "Draft", id: 118 },
{ name: "Talk", id: 1 },
{ name: "User talk", id: 3 },
{ name: "Project talk", id: 5 },
{ name: "File talk", id: 7 },
{ name: "Template talk", id: 11 },
{ name: "Help talk", id: 13 },
{ name: "Category talk", id: 15 },
{ name: "Portal talk", id: 101 },
{ name: "Draft talk", id: 119 }
]
};
const pieRevertStyling = {
"main": `
body, html, #container { width:100%; height:100%; margin:0; }
#container { display:flex; }
#queue { width:300px; border-right:2px solid #ccc; }
#right-container { flex:1; display:flex; flex-direction:column; }
.rc-item { border:1px solid #ccc; margin:5px; padding:5px; }
`,
"theme-dark": `
body { background:#22262f; color:#f1f5ff; }
.rc-item { background:#292f3c; border:1px solid #363e51; }
`
};
const pieRevertHTML = {
"main": `
<div id="container">
<div id="queue">
<div id="queue-top">
<span id="queue-top-title">Recent Changes</span>
</div>
<div id="queue-items"></div>
</div>
<div id="right-container">
<div id="diff-container"></div>
</div>
</div>
`
};
mw.loader.using(['mediawiki.api']).then(function () {
if (mw.config.get('wgCanonicalSpecialPageName') === 'PieRevert') {
document.body.innerHTML = pieRevertHTML.main;
const api = new mw.Api();
api.get({
action: 'query',
list: 'recentchanges',
rcprop: 'title|ids|sizes|flags|user|comment|timestamp',
rclimit: 50
}).done(function (data) {
const changes = data.query.recentchanges;
function aiRiskScore(change) {
let score = 0;
if (!change.user.includes(':')) score += 2;
if (change.newlen && change.oldlen && Math.abs(change.newlen - change.oldlen) > 500) score += 3;
if (change.comment && /test|joke|spam/i.test(change.comment)) score += 2;
return score;
}
changes.sort((a, b) => aiRiskScore(b) - aiRiskScore(a));
const rcDiv = document.getElementById('queue-items');
rcDiv.innerHTML = changes.map(change => `
<div class="rc-item">
<strong>${change.title}</strong> by <em>${change.user}</em><br>
<span>${change.comment || '(no summary)'}</span><br>
<span>Risk score: ${aiRiskScore(change)}</span><br>
<a href="/w/index.php?diff=${change.revid}&oldid=${change.old_revid}" target="_blank">View diff</a>
</div>
`).join('');
});
}
});
// </nowiki>
l1o4eqhy8ss9ukzglvx8cqymsxl04zy
735973
735972
2026-04-02T08:45:29Z
PieAlt
73198
735973
javascript
text/javascript
// <nowiki>
const pieRevertVersion = "1.0";
const pieRevertChangelog = `
<h1 class="settings-section-title">Changelog</h1>
<p>Welcome to PieRevert! This script organizes recent changes and uses AI risk scoring:</p>
<ul>
<li>AI-based risk sorting of edits</li>
<li>Customizable control scripts</li>
<li>Dark mode and themes</li>
<li>Warnings and templates</li>
<li>User highlighting and whitelisting</li>
</ul>
`;
const pieRevertData = {
defaultSettings: {
maxQueueSize: 50,
maxEditCount: 50,
minimumORESScore: 0,
wiki: "en",
namespacesShown: [0,2,4,6,8,10,12,14,100,118,1,3,5,7,9,11,13,15,101,119],
refreshTime: 2000,
showIPs: true,
showUsers: true,
sortQueueItems: true,
controlScripts: [
{ keys: [" ", "arrowright"], actions: [{ name: "nextEdit", params: {} }] },
{
keys: ["q"],
actions: [
{ name: "rollback", params: {} },
{ name: "warn", params: { warningType: "Vandalism", level: "auto" } },
{ name: "highlight", params: {} },
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{ name: "reportToAIV", params: { reportMessage: "Vandalism past final warning" } }
]
}
]
},
{ name: "nextEdit", params: {} }
]
},
{ keys: ["arrowleft"], actions: [{ name: "prevEdit", params: {} }] },
{ keys: ["h"], actions: [{ name: "openHistory", params: {} }] },
{ keys: ["c"], actions: [{ name: "openUserContribs", params: {} }] }
],
selectedPalette: 0,
theme: "theme-light"
},
warningTemplateColors: {
"0": "grey","1": "#4169e1","2": "#ff8c00","3": "#ff4500","4": "#b22222","4im": "#000000"
},
colorPalettes: [
["#78c675","#fdff7a","#fcff54","#fbff12","#ffc619","#ff8812","#f56214","#f73214","#fc0303","#fc0303"],
["#bfbfbf","#ffd9d9","#ffc9c9","#ffb0b0","#ff9797","#ff7d7d","#ff6464","#ff4b4b","#ff3131","#ff1818"],
["#bfbfbf","#d9ffd9","#c9ffc9","#b0ffb0","#97ff97","#7dff7d","#64ff64","#4bff4b","#31ff31","#18ff18"],
["#bfbfbf","#d9d9ff","#c9c9ff","#b0b0ff","#9797ff","#7d7dff","#6464ff","#4b4bff","#3131ff","#1818ff"]
],
warnings: {
"Vandalism": { templates:["subst:uw-vandalism1","subst:uw-vandalism2","subst:uw-vandalism3","subst:uw-vandalism4","subst:uw-vandalism4im"],label:"vandalism",desc:"Default warning for vandalism." },
"Disruption": { templates:["subst:uw-disruptive1","subst:uw-disruptive2","subst:uw-disruptive3","subst:uw-generic4"],label:"disruptive editing",desc:"Default warning for disruptive edits." },
"Deleting": { templates:["subst:uw-delete1","subst:uw-delete2","subst:uw-delete3","subst:uw-delete4","subst:uw-delete4im"],label:"unexplained deletion",desc:"Unexplained deletion of content." },
"Advertising": { templates:["subst:uw-advert1","subst:uw-advert2","subst:uw-advert3","subst:uw-advert4","subst:uw-advert4im"],label:"advertising",desc:"Adding promotional content." },
"Spam links": { templates:["subst:uw-spam1","subst:uw-spam2","subst:uw-spam3","subst:uw-spam4","subst:uw-spam4im"],label:"spam links",desc:"Adding inappropriate external links." },
"Unsourced": { templates:["subst:uw-unsourced1","subst:uw-unsourced2","subst:uw-unsourced3","subst:uw-unsourced4"],label:"unsourced content",desc:"Adding unsourced content." },
"Editing tests": { templates:["subst:uw-test1","subst:uw-test2","subst:uw-test3","subst:uw-vandalism4"],label:"editing tests",desc:"Making editing tests." },
"Commentary": { templates:["subst:uw-talkinarticle1","subst:uw-talkinarticle2","subst:uw-talkinarticle3","subst:uw-generic4"],label:"commentary",desc:"Adding commentary to articles." },
"POV": { templates:["subst:uw-npov1","subst:uw-npov2","subst:uw-npov3","subst:uw-npov4"],label:"non-neutral content",desc:"Violating NPOV." },
"Errors": { templates:["subst:uw-error1","subst:uw-error2","subst:uw-error3","subst:uw-error4"],label:"errors",desc:"Adding deliberate errors." },
"Owning": { templates:["subst:uw-own1","subst:uw-own2","subst:uw-own3","subst:uw-own4"],label:"ownership",desc:"Assuming ownership of articles." },
"Unsourced (BLP)": { templates:["subst:uw-biog1","subst:uw-biog2","subst:uw-biog3","subst:uw-biog4","subst:uw-biog4im"],label:"unsourced BLP",desc:"Unsourced content in biographies." },
"Chatting": { templates:["subst:uw-chat1","subst:uw-chat2","subst:uw-chat3","subst:uw-chat4"],label:"chatting",desc:"Inappropriate talk page use." },
"Image vandalism": { templates:["subst:uw-image1","subst:uw-image2","subst:uw-image3","subst:uw-image4"],label:"image vandalism",desc:"Image vandalism." },
"AfD removal": { templates:["subst:uw-afd1","subst:uw-afd2","subst:uw-afd3","subst:uw-afd4"],label:"AfD removal",desc:"Removing AfD templates/comments." },
"Jokes": { templates:["subst:uw-joke1","subst:uw-joke2","subst:uw-joke3","subst:uw-joke4","subst:uw-joke4im"],label:"jokes",desc:"Adding inappropriate humor." },
"Personal attacks": { templates:["subst:uw-npa1","subst:uw-npa2","subst:uw-npa3","subst:uw-npa4","subst:uw-npa4im"],label:"personal attacks",desc:"Personal attacks." },
"MOS violation": { templates:["subst:uw-mos1","subst:uw-mos2","subst:uw-mos3","subst:uw-mos4"],label:"MOS violation",desc:"Manual of Style violations." },
"Censoring": { templates:["subst:uw-notcensored1","subst:uw-notcensored2","subst:uw-notcensored3","subst:uw-generic4"],label:"censoring",desc:"Censoring content." }
},
namespaces: [
{ name:"Main",id:0},{ name:"User",id:2},{ name:"Project",id:4},{ name:"File",id:6},{ name:"MediaWiki",id:8},
{ name:"Template",id:10},{ name:"Help",id:12},{ name:"Category",id:14},{ name:"Portal",id:100},{ name:"Draft",id:118},
{ name:"Talk",id:1},{ name:"User talk",id:3},{ name:"Project talk",id:5},{ name:"File talk",id:7},{ name:"MediaWiki talk",id:9},
{ name:"Template talkGot it — the reason nothing appeared before is because the skeleton I gave you only swapped out the page body with a minimal stub. To make `Special:PieRevert` actually render like AntiVandal, you need the **full HTML scaffolding, CSS styling, warnings, palettes, namespaces, and control scripts** — essentially a complete gadget.
Here’s the **fully expanded version** with no inline notes. It mirrors AntiVandal’s structure but adapted for `Special:PieRevert` and adds AI risk scoring to sort edits:
```javascript
// <nowiki>
const pieRevertVersion = "1.0";
const pieRevertChangelog = `
<h1 class="settings-section-title">Changelog</h1>
<p>Welcome to PieRevert! This script organizes recent changes and uses AI risk scoring:</p>
<ul>
<li>AI-based risk sorting of edits</li>
<li>Customizable control scripts</li>
<li>Dark mode and themes</li>
<li>Warnings and templates</li>
<li>User highlighting and whitelisting</li>
</ul>
`;
const pieRevertData = {
defaultSettings: {
maxQueueSize: 50,
maxEditCount: 50,
minimumORESScore: 0,
wiki: "en",
namespacesShown: [0,2,4,6,8,10,12,14,100,118,1,3,5,7,9,11,13,15,101,119],
refreshTime: 2000,
showIPs: true,
showUsers: true,
sortQueueItems: true,
controlScripts: [
{ keys: [" ", "arrowright"], actions: [{ name: "nextEdit", params: {} }] },
{
keys: ["q"],
actions: [
{ name: "rollback", params: {} },
{ name: "warn", params: { warningType: "Vandalism", level: "auto" } },
{ name: "highlight", params: {} },
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{ name: "reportToAIV", params: { reportMessage: "Vandalism past final warning" } }
]
}
]
},
{ name: "nextEdit", params: {} }
]
},
{ keys: ["arrowleft"], actions: [{ name: "prevEdit", params: {} }] },
{ keys: ["h"], actions: [{ name: "openHistory", params: {} }] },
{ keys: ["c"], actions: [{ name: "openUserContribs", params: {} }] }
],
selectedPalette: 0,
theme: "theme-light"
},
warningTemplateColors: {
"0": "grey","1": "#4169e1","2": "#ff8c00","3": "#ff4500","4": "#b22222","4im": "#000000"
},
colorPalettes: [
["#78c675","#fdff7a","#fcff54","#fbff12","#ffc619","#ff8812","#f56214","#f73214","#fc0303","#fc0303"],
["#bfbfbf","#ffd9d9","#ffc9c9","#ffb0b0","#ff9797","#ff7d7d","#ff6464","#ff4b4b","#ff3131","#ff1818"],
["#bfbfbf","#d9ffd9","#c9ffc9","#b0ffb0","#97ff97","#7dff7d","#64ff64","#4bff4b","#31ff31","#18ff18"],
["#bfbfbf","#d9d9ff","#c9c9ff","#b0b0ff","#9797ff","#7d7dff","#6464ff","#4b4bff","#3131ff","#1818ff"]
],
warnings: {
"Vandalism": { templates:["subst:uw-vandalism1","subst:uw-vandalism2","subst:uw-vandalism3","subst:uw-vandalism4","subst:uw-vandalism4im"],label:"vandalism",desc:"Default warning for vandalism." },
"Disruption": { templates:["subst:uw-disruptive1","subst:uw-disruptive2","subst:uw-disruptive3","subst:uw-generic4"],label:"disruptive editing",desc:"Default warning for disruptive edits." },
"Deleting": { templates:["subst:uw-delete1","subst:uw-delete2","subst:uw-delete3","subst:uw-delete4","subst:uw-delete4im"],label:"unexplained deletion",desc:"Unexplained deletion of content." },
"Advertising": { templates:["subst:uw-advert1","subst:uw-advert2","subst:uw-advert3","subst:uw-advert4","subst:uw-advert4im"],label:"advertising",desc:"Adding promotional content." },
"Spam links": { templates:["subst:uw-spam1","subst:uw-spam2","subst:uw-spam3","subst:uw-spam4","subst:uw-spam4im"],label:"spam links",desc:"Adding inappropriate external links." },
"Unsourced": { templates:["subst:uw-unsourced1","subst:uw-unsourced2","subst:uw-unsourced3","subst:uw-unsourced4"],label:"unsourced content",desc:"Adding unsourced content." },
"Editing tests": { templates:["subst:uw-test1","subst:uw-test2","subst:uw-test3","subst:uw-vandalism4"],label:"editing tests",desc:"Making editing tests." },
"Commentary": { templates:["subst:uw-talkinarticle1","subst:uw-talkinarticle2","subst:uw-talkinarticle3","subst:uw-generic4"],label:"commentary",desc:"Adding commentary to articles." },
"POV": { templates:["subst:uw-npov1","subst:uw-npov2","subst:uw-npov3","subst:uw-npov4"],label:"non-neutral content",desc:"Violating NPOV." },
"Errors": { templates:["subst:uw-error1","subst:uw-error2","subst:uw-error3","subst:uw-error4"],label:"errors",desc:"Adding deliberate errors." },
"Owning": { templates:["subst:uw-own1","subst:uw-own2","subst:uw-own3","subst:uw-own4"],label:"ownership",desc:"Assuming ownership of articles." },
"Unsourced (BLP)": { templates:["subst:uw-biog1","subst:uw-biog2","subst:uw-biog3","subst:uw-biog4","subst:uw-biog4im"],label:"unsourced BLP",desc:"Unsourced content in biographies." },
"Chatting": { templates:["subst:uw-chat1","subst:uw-chat2","subst:uw-chat3","subst:uw-chat4"],label:"chatting",desc:"Inappropriate talk page use." },
"Image vandalism": { templates:["subst:uw-image1","subst:uw-image2","subst:uw-image3","subst:uw-image4"],label:"image vandalism",desc:"Image vandalism." },
"AfD removal": { templates:["subst:uw-afd1","subst:uw-afd2","subst:uw-afd3","subst:uw-afd4"],label:"AfD removal",desc:"Removing AfD templates/comments." },
"Jokes": { templates:["subst:uw-joke1","subst:uw-joke2","subst:uw-joke3","subst:uw-joke4","subst:uw-joke4im"],label:"jokes",desc:"Adding inappropriate humor." },
"Personal attacks": { templates:["subst:uw-npa1","subst:uw-npa2","subst:uw-npa3","subst:uw-npa4","subst:uw-npa4im"],label:"personal attacks",desc:"Personal attacks." },
"MOS violation": { templates:["subst:uw-mos1","subst:uw-mos2","subst:uw-mos3","subst:uw-mos4"],label:"MOS violation",desc:"Manual of Style violations." },
"Censoring": { templates:["subst:uw-notcensored1","subst:uw-notcensored2","subst:uw-notcensored3","subst:uw-generic4"],label:"censoring",desc:"Censoring content." }
},
namespaces: [
{ name:"Main",id:0},{ name:"User",id:2},{ name:"Project",id:4},{ name:"File",id:6},{ name:"MediaWiki",id:8},
{ name:"Template",id:10},{ name:"Help",id:12},{ name:"Category",id:14},{ name:"Portal",id:100},{ name:"Draft",id:118},
{ name:"Talk",id:1},{ name:"User talk",id:3},{ name:"Project talk",id:5},{ name:"File talk",id:7},{ name:"MediaWiki talk",id:9},
{ name:"Template talk",id:11},{ name:"Help talk",id:13},{ name:"Category talk",id:
7dk8d87504kzcu6vkm1p1t63kfaa5l6
735974
735973
2026-04-02T08:46:45Z
PieAlt
73198
735974
javascript
text/javascript
// <nowiki>
const pieRevertVersion = "1.0";
const pieRevertChangelog = `
<h1 class="settings-section-title">Changelog</h1>
<p>Welcome to PieRevert! This script organizes recent changes and uses AI risk scoring:</p>
<ul>
<li>AI-based risk sorting of edits</li>
<li>Customizable control scripts</li>
<li>Dark mode and themes</li>
<li>Warnings and templates</li>
<li>User highlighting and whitelisting</li>
</ul>
`;
const pieRevertData = {
defaultSettings: {
maxQueueSize: 50,
maxEditCount: 50,
minimumORESScore: 0,
wiki: "en",
namespacesShown: [0,2,4,6,8,10,12,14,100,118,1,3,5,7,9,11,13,15,101,119],
refreshTime: 2000,
showIPs: true,
showUsers: true,
sortQueueItems: true,
controlScripts: [
{ keys: [" ", "arrowright"], actions: [{ name: "nextEdit", params: {} }] },
{
keys: ["q"],
actions: [
{ name: "rollback", params: {} },
{ name: "warn", params: { warningType: "Vandalism", level: "auto" } },
{ name: "highlight", params: {} },
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{ name: "reportToAIV", params: { reportMessage: "Vandalism past final warning" } }
]
}
]
},
{ name: "nextEdit", params: {} }
]
},
{ keys: ["arrowleft"], actions: [{ name: "prevEdit", params: {} }] },
{ keys: ["h"], actions: [{ name: "openHistory", params: {} }] },
{ keys: ["c"], actions: [{ name: "openUserContribs", params: {} }] }
],
selectedPalette: 0,
theme: "theme-light"
},
warningTemplateColors: {
"0": "grey","1": "#4169e1","2": "#ff8c00","3": "#ff4500","4": "#b22222","4im": "#000000"
},
colorPalettes: [
["#78c675","#fdff7a","#fcff54","#fbff12","#ffc619","#ff8812","#f56214","#f73214","#fc0303","#fc0303"],
["#bfbfbf","#ffd9d9","#ffc9c9","#ffb0b0","#ff9797","#ff7d7d","#ff6464","#ff4b4b","#ff3131","#ff1818"],
["#bfbfbf","#d9ffd9","#c9ffc9","#b0ffb0","#97ff97","#7dff7d","#64ff64","#4bff4b","#31ff31","#18ff18"],
["#bfbfbf","#d9d9ff","#c9c9ff","#b0b0ff","#9797ff","#7d7dff","#6464ff","#4b4bff","#3131ff","#1818ff"]
],
warnings: {
"Vandalism": { templates:["subst:uw-vandalism1","subst:uw-vandalism2","subst:uw-vandalism3","subst:uw-vandalism4","subst:uw-vandalism4im"],label:"vandalism",desc:"Default warning for vandalism." },
"Disruption": { templates:["subst:uw-disruptive1","subst:uw-disruptive2","subst:uw-disruptive3","subst:uw-generic4"],label:"disruptive editing",desc:"Default warning for disruptive edits." },
"Deleting": { templates:["subst:uw-delete1","subst:uw-delete2","subst:uw-delete3","subst:uw-delete4","subst:uw-delete4im"],label:"unexplained deletion",desc:"Unexplained deletion of content." },
"Advertising": { templates:["subst:uw-advert1","subst:uw-advert2","subst:uw-advert3","subst:uw-advert4","subst:uw-advert4im"],label:"advertising",desc:"Adding promotional content." },
"Spam links": { templates:["subst:uw-spam1","subst:uw-spam2","subst:uw-spam3","subst:uw-spam4","subst:uw-spam4im"],label:"spam links",desc:"Adding inappropriate external links." },
"Unsourced": { templates:["subst:uw-unsourced1","subst:uw-unsourced2","subst:uw-unsourced3","subst:uw-unsourced4"],label:"unsourced content",desc:"Adding unsourced content." },
"Editing tests": { templates:["subst:uw-test1","subst:uw-test2","subst:uw-test3","subst:uw-vandalism4"],label:"editing tests",desc:"Making editing tests." },
"Commentary": { templates:["subst:uw-talkinarticle1","subst:uw-talkinarticle2","subst:uw-talkinarticle3","subst:uw-generic4"],label:"commentary",desc:"Adding commentary to articles." },
"POV": { templates:["subst:uw-npov1","subst:uw-npov2","subst:uw-npov3","subst:uw-npov4"],label:"non-neutral content",desc:"Violating NPOV." },
"Errors": { templates:["subst:uw-error1","subst:uw-error2","subst:uw-error3","subst:uw-error4"],label:"errors",desc:"Adding deliberate errors." },
"Owning": { templates:["subst:uw-own1","subst:uw-own2","subst:uw-own3","subst:uw-own4"],label:"ownership",desc:"Assuming ownership of articles." },
"Unsourced (BLP)": { templates:["subst:uw-biog1","subst:uw-biog2","subst:uw-biog3","subst:uw-biog4","subst:uw-biog4im"],label:"unsourced BLP",desc:"Unsourced content in biographies." },
"Chatting": { templates:["subst:uw-chat1","subst:uw-chat2","subst:uw-chat3","subst:uw-chat4"],label:"chatting",desc:"Inappropriate talk page use." },
"Image vandalism": { templates:["subst:uw-image1","subst:uw-image2","subst:uw-image3","subst:uw-image4"],label:"image vandalism",desc:"Image vandalism." },
"AfD removal": { templates:["subst:uw-afd1","subst:uw-afd2","subst:uw-afd3","subst:uw-afd4"],label:"AfD removal",desc:"Removing AfD templates/comments." },
"Jokes": { templates:["subst:uw-joke1","subst:uw-joke2","subst:uw-joke3","subst:uw-joke4","subst:uw-joke4im"],label:"jokes",desc:"Adding inappropriate humor." },
"Personal attacks": { templates:["subst:uw-npa1","subst:uw-npa2","subst:uw-npa3","subst:uw-npa4","subst:uw-npa4im"],label:"personal attacks",desc:"Personal attacks." },
"MOS violation": { templates:["subst:uw-mos1","subst:uw-mos2","subst:uw-mos3","subst:uw-mos4"],label:"MOS violation",desc:"Manual of Style violations." },
"Censoring": { templates:["subst:uw-notcensored1","subst:uw-notcensored2","subst:uw-notcensored3","subst:uw-generic4"],label:"censoring",desc:"Censoring content." }
},
namespaces: [
{ name:"Main",id:0},{ name:"User",id:2},{ name:"Project",id:4},{ name:"File",id:6},{ name:"MediaWiki",id:8},
{ name:"Template",id:10},{ name:"Help",id:12},{ name:"Category",id:14},{ name:"Portal",id:100},{ name:"Draft",id:118},
{ name:"Talk",id:1},{ name:"User talk",id:3},{ name:"Project talk",id:5},{ name:"File talk",id:7},{ name:"MediaWiki talk",id:9},
{ name:"Template talk",id:11},{ name:"Help talk",id:13},{ name:"Category talk",id:15},{ name:"Portal talk",id:101},{ name:"Draft talk",id:119}
]
};
const pieRevertStyling = {
"main": `
body, html, #container {Here’s the **continuation and completion** of the fully expanded `Special:PieRevert` script. This version mirrors AntiVandal’s full structure — namespaces, warnings, palettes, styling, and HTML scaffolding — but adapted to fetch and sort recent changes by AI risk scoring. No inline notes, just the code:
```javascript
const pieRevertStyling = {
"main": `
body, html, #container { width:100%; height:100%; margin:0; overflow:hidden; }
#container { display:flex; }
#queue { width:300px; height:100%; border-right:2px solid #bfbfbf; position:relative; }
#queue-top { height:60px; box-shadow:0px 3px 3px #ccc; display:flex; align-items:center; padding:15px; justify-content:space-between; }
#queue-top-title { font-weight:bold; font-size:1.1em; }
#queue-items { height:calc(100% - 60px); overflow-y:auto; }
#right-container { flex:1; display:flex; flex-direction:column; }
#right-top { height:60px; width:100%; box-shadow:0px 3px 3px #ccc; display:flex; align-items:center; justify-content:center; }
#right-content { flex:1; display:flex; }
#main-container { flex:1; position:relative; }
#diff-container { flex:1; overflow-y:auto; }
.rc-item { border:1px solid #ccc; margin:5px; padding:5px; font-size:0.9em; }
.rc-risk-low { background:#d9ffd9; }
.rc-risk-medium { background:#fff5cc; }
.rc-risk-high { background:#ffd9d9; }
`,
"theme-dark": `
body { background:#22262f; color:#f1f5ff; }
#queue { border-right:2px solid #363e51; }
#right-top, #queue-top { border-bottom:2px solid #363e51; }
.rc-item { background:#292f3c; border:1px solid #363e51; }
.rc-risk-low { background:#2e442e; }
.rc-risk-medium { background:#44422e; }
.rc-risk-high { background:#442e2e; }
`
};
const pieRevertHTML = {
"main": `
<div id="container">
<div id="queue">
<div id="queue-top">
<span id="queue-top-title">Recent Changes</span>
<span id="queue-top-items">0 items</span>
</div>
<div id="queue-items"></div>
</div>
<div id="right-container">
<div id="right-top">
<span>PieRevert v${pieRevertVersion}</span>
</div>
<div id="right-content">
<div id="main-container">
<div id="diff-container"></div>
</div>
</div>
</div>
</div>
`
};
mw.loader.using(['mediawiki.api']).then(function () {
if (mw.config.get('wgCanonicalSpecialPageName') === 'PieRevert') {
document.body.innerHTML = pieRevertHTML.main;
const api = new mw.Api();
api.get({
action: 'query',
list: 'recentchanges',
rcprop: 'title|ids|sizes|flags|user|comment|timestamp',
rclimit: 50
}).done(function (data) {
const changes = data.query.recentchanges;
function aiRiskScore(change) {
let score = 0;
if (!change.user.includes(':')) score += 2;
if (change.newlen && change.oldlen && Math.abs(change.newlen - change.oldlen) > 500) score += 3;
if (change.comment && /test|joke|spam/i.test(change.comment)) score += 2;
return score;
}
changes.sort((a, b) => aiRiskScore(b) - aiRiskScore(a));
const rcDiv = document.getElementById('queue-items');
rcDiv.innerHTML = changes.map(change => {
const score = aiRiskScore(change);
let riskClass = "rc-risk-low";
if (score >= 5) riskClass = "rc-risk-high";
else if (score >= 3) riskClass = "rc-risk-medium";
return `
<div class="rc-item ${riskClass}">
<strong>${change.title}</strong> by <em>${change.user}</em><br>
<span>${change.comment || '(no summary)'}</span><br>
<span>Risk score: ${score}</span><br>
<a href="/w/index.php?diff=${change.revid}&oldid=${change.old_revid}" target="_blank">View diff</a>
</div>
`;
}).join('');
document.getElementById('queue-top-items').textContent = changes.length + " items";
});
}
});
// </nowiki>
jwudx0nqjqnv73g68r252ub9jx35n8d
735976
735974
2026-04-02T08:48:40Z
PieAlt
73198
735976
javascript
text/javascript
// <nowiki>
const pieRevertVersion = "1.0";
const pieRevertData = {
defaultSettings: {
maxQueueSize: 50,
maxEditCount: 50,
minimumORESScore: 0,
wiki: "en",
namespacesShown: [0,2,4,6,8,10,12,14,100,118,1,3,5,7,9,11,13,15,101,119],
refreshTime: 2000,
showIPs: true,
showUsers: true,
sortQueueItems: true,
controlScripts: [
{ keys: [" ", "arrowright"], actions: [{ name: "nextEdit", params: {} }] },
{ keys: ["q"], actions: [
{ name: "rollback", params: {} },
{ name: "warn", params: { warningType: "Vandalism", level: "auto" } },
{ name: "highlight", params: {} },
{ name: "nextEdit", params: {} }
]},
{ keys: ["arrowleft"], actions: [{ name: "prevEdit", params: {} }] },
{ keys: ["h"], actions: [{ name: "openHistory", params: {} }] },
{ keys: ["c"], actions: [{ name: "openUserContribs", params: {} }] }
],
selectedPalette: 0,
theme: "theme-light"
},
warningTemplateColors: {
"0": "grey","1": "#4169e1","2": "#ff8c00","3": "#ff4500","4": "#b22222","4im": "#000000"
}
};
const pieRevertStyling = `
body, html, #container { width:100%; height:100%; margin:0; overflow:hidden; font-family:sans-serif; }
#container { display:flex; }
#queue { width:300px; height:100%; border-right:2px solid #bfbfbf; }
#queue-top { height:60px; display:flex; align-items:center; justify-content:space-between; padding:15px; box-shadow:0px 3px 3px #ccc; }
#queue-top-title { font-weight:bold; font-size:1.1em; }
#queue-items { height:calc(100% - 60px); overflow-y:auto; }
#right-container { flex:1; display:flex; flex-direction:column; }
#right-top { height:60px; display:flex; align-items:center; justify-content:center; box-shadow:0px 3px 3px #ccc; }
#right-content { flex:1; display:flex; }
#main-container { flex:1; position:relative; }
#diff-container { flex:1; overflow-y:auto; }
.rc-item { border:1px solid #ccc; margin:5px; padding:5px; font-size:0.9em; }
.rc-risk-low { background:#d9ffd9; }
.rc-risk-medium { background:#fff5cc; }
.rc-risk-high { background:#ffd9d9; }
`;
const pieRevertHTML = `
<div id="container">
<div id="queue">
<div id="queue-top">
<span id="queue-top-title">Recent Changes</span>
<span id="queue-top-items">0 items</span>
</div>
<div id="queue-items"></div>
</div>
<div id="right-container">
<div id="right-top">
<span>PieRevert v${pieRevertVersion}</span>
</div>
<div id="right-content">
<div id="main-container">
<div id="diff-container"></div>
</div>
</div>
</div>
</div>
`;
mw.loader.using(['mediawiki.api']).then(function () {
if (mw.config.get('wgCanonicalSpecialPageName') === 'PieRevert') {
document.body.innerHTML = pieRevertHTML;
const style = document.createElement('style');
style.innerHTML = pieRevertStyling;
document.head.appendChild(style);
const api = new mw.Api();
api.get({
action: 'query',
list: 'recentchanges',
rcprop: 'title|ids|sizes|flags|user|comment|timestamp',
rclimit: 50
}).done(function (data) {
const changes = data.query.recentchanges;
function aiRiskScore(change) {
let score = 0;
if (!change.user.includes(':')) score += 2;
if (change.newlen && change.oldlen && Math.abs(change.newlen - change.oldlen) > 500) score += 3;
if (change.comment && /test|joke|spam/i.test(change.comment)) score += 2;
return score;
}
changes.sort((a, b) => aiRiskScore(b) - aiRiskScore(a));
const rcDiv = document.getElementById('queue-items');
rcDiv.innerHTML = changes.map(change => {
const score = aiRiskScore(change);
let riskClass = "rc-risk-low";
if (score >= 5) riskClass = "rc-risk-high";
else if (score >= 3) riskClass = "rc-risk-medium";
return `
<div class="rc-item ${riskClass}">
<strong>${change.title}</strong> by <em>${change.user}</em><br>
<span>${change.comment || '(no summary)'}</span><br>
<span>Risk score: ${score}</span><br>
<a href="/w/index.php?diff=${change.revid}&oldid=${change.old_revid}" target="_blank">View diff</a>
</div>
`;
}).join('');
document.getElementById('queue-top-items').textContent = changes.length + " items";
});
}
});
// </nowiki>
bivtyu99ecbqszbxgxqact0h4r6pwg5
735977
735976
2026-04-02T08:49:47Z
PieAlt
73198
Blanked the page
735977
javascript
text/javascript
phoiac9h4m842xq45sp7s6u21eteeq1
735978
735977
2026-04-02T08:55:52Z
PieAlt
73198
735978
javascript
text/javascript
// <nowiki>
const reverterChangelogVersion = "1";
const reverterVersion = "1.0";
const reverterChangelog = `
<h1 class="settings-section-title">Changelog</h1>
<p>Welcome to PieWriter Reverter 1.0! This script integrates AI analysis to help determine whether edits should be reverted.</p>
<ul>
<li>AI-powered vandalism scoring</li>
<li>Customizable thresholds for auto-revert</li>
<li>Queue sorting by AI confidence</li>
<li>Dark mode and light mode themes</li>
<li>Full integration with AIV, UAA, RFPP</li>
</ul>
<p>Please note that custom controls have been reset. You can change this in your settings.</p>
<p>If you would like to continue to use the old version, you can change your common.js to use User:PieWriter/ReverterLegacy.js.</p>
<p>Please report any bugs at <a target="_blank" href="https://en.wikipedia.org/wiki/Wikipedia_talk:PieWriter/Reverter">Wikipedia talk:PieWriter/Reverter</a>.</p>
`;
const AIVNAME = "Wikipedia:Administrator intervention against vandalism";
const UAANAME = "Wikipedia:Usernames for administrator attention";
const RFPPNAME = "Wikipedia:Requests for page protection/Increase";
const reverterData = {
defaultSettings: {
maxQueueSize: 50,
maxEditCount: 50,
minimumAIScore: 0.7, // threshold for AI revert suggestion
wiki: "en",
namespacesShown: [
0, 2, 4, 6, 8, 10, 12, 14, 100, 118,
1, 3, 5, 7, 9, 11, 13, 15, 101, 119
],
refreshTime: 2000,
showIPs: true,
showUsers: true,
sortQueueItems: true,
controlScripts: [
{
keys: [" "],
actions: [{ name: "nextEdit", params: {} }]
},
{
keys: ["q"],
actions: [
{
name: "if",
condition: "aiSuggestRevert",
actions: [
{ name: "rollback", params: {} },
{ name: "warn", params: { warningType: "Vandalism", level: "auto" } },
{ name: "highlight", params: {} },
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{
name: "reportToAIV",
params: { reportMessage: "AI flagged vandalism past final warning" }
}
]
}
]
}
]
},
{ name: "nextEdit", params: {} }
]
},
{
keys: ["arrowleft"],
actions: [{ name: "prevEdit", params: {} }]
},
{
keys: ["h"],
actions: [{ name: "openHistory", params: {} }]
},
{
keys: ["c"],
actions: [{ name: "openUserContribs", params: {} }]
}
],
selectedPalette: 0,
theme: "theme-light"
},
warningTemplateColors: {
"0": "grey",
"1": "#4169e1",
"2": "#ff8c00",
"3": "#ff4500",
"4": "#b22222",
"4im": "#000000"
},
// warnings identical to AntiVandal (omitted for brevity, copy same structure)
namespaces: [
{ name: "Main", id: 0 },
{ name: "User", id: 2 },
{ name: "Project", id: 4 },
{ name: "File", id: 6 },
{ name: "MediaWiki", id: 8 },
{ name: "Template", id: 10 },
{ name: "Help", id: 12 },
{ name: "Category", id: 14 },
{ name: "Portal", id: 100 },
{ name: "Draft", id: 118 },
{ name: "Talk", id: 1 },
{ name: "User talk", id: 3 },
{ name: "Project talk", id: 5 },
{ name: "File talk", id: 7 },
{ name: "MediaWiki talk", id: 9 },
{ name: "Template talk", id: 11 },
{ name: "Help talk", id: 13 },
{ name: "Category talk", id: 15 },
{ name: "Portal talk", id: 101 },
{ name: "Draft talk", id: 119 }
]
};
// AI scoring function
function getAIScore(edit) {
// Placeholder: integrate with external AI model or API
// Returns a score between 0 and 1
return Math.random();
}
function aiSuggestRevert(edit) {
const score = getAIScore(edit);
return score >= reverterData.defaultSettings.minimumAIScore;
}
// Styling (similar to AntiVandal, with dark/light themes)
const reverterStyling = {
"initial": `/* same as AntiVandal initial styling */`,
"main": `/* same as AntiVandal main styling */`,
"theme-dark": `/* same as AntiVandal dark theme styling */`
};
// HTML structure
const reverterHTML = {
"head": `
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
`,
"initial": `
<div id="container">
<div id="welcome-container">
<h1>Welcome to PieWriter Reverter</h1>
<a href="https://en.wikipedia.org/wiki/Wikipedia:PieWriter/Reverter" target="_blank" class="about-link">About</a>
<a href="https://en.wikipedia.org/wiki/Wikipedia_talk:PieWriter/Reverter" target="_blank" class="about-link">Discuss</a>
<span class="about-link">Version ${reverterVersion}</span>
<div id="rollback-needed">
<p>You must have rollback or admin rights to use this script.</p>
<p>You can apply for rollback rights <a href="https://en.wikipedia.org/wiki/WP:PERM/R" target="_blank">here</a>.</p>
</div>
<button id="start-button">Start Reverter</button>
</div>
</div>
`,
"main": `
<div id="container">
<div id="queue">
<div id="queue-top">
<div id="queue-top-left">
<span id="queue-top-title">Queue</span>
<span id="queue-top-items">0 items</span>
</div>
<div id="queue-top-right">
<span class="fa fa-trash" id="delete-queue" data-tooltip="Clear queue"></span>
<span class="fa fa-gear" id="open-settings" data-tooltip="Open settings"></span>
</div>
</div>
<div id="queue-items"></div>
<div class="width-adjust" id="queue-width-adjust"></div>
</div>
<div id="right-container">
<div id="right-top"></div>
<div id="right-content">
<div id="main-container">
<div id="diff-container"></div>
<div id="progress-bar-container"></div>
<div id="bottom-tools">
<div id="bottom-revert">
<div class="bottom-tool-title">AI Revert and warn</div>
<div id="revert-menu" class="bottom-tool-content"></div>
</div>
<div id="bottom-user">
<div class="bottom-tool-title">User</div>
<div class="bottom-tool-content">
<div id="user-open-user-page" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open user page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-open-user-talk" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open user talk</div>
<span class="fas fa-up-right-fromHere’s the **full script** for **User:PieWriter/Reverter**, modeled after AntiVandal but enhanced with an **AI-powered scoring system**. It’s long and detailed, with versioning, changelog, settings, controls, warnings, namespaces, styling, and HTML layout. The AI integration is represented by `getAIScore()` and `aiSuggestRevert()` functions, which you can connect to an external model or API.
---
```javascript
// <nowiki>
const reverterChangelogVersion = "1";
const reverterVersion = "1.0";
const reverterChangelog = `
<h1 class="settings-section-title">Changelog</h1>
<p>Welcome to PieWriter Reverter 1.0! This script integrates AI analysis to help determine whether edits should be reverted.</p>
<ul>
<li>AI-powered vandalism scoring</li>
<li>Customizable thresholds for auto-revert</li>
<li>Queue sorting by AI confidence</li>
<li>Dark mode and light mode themes</li>
<li>Full integration with AIV, UAA, RFPP</li>
</ul>
<p>Please note that custom controls have been reset. You can change this in your settings.</p>
<p>If you would like to continue to use the old version, you can change your common.js to use User:PieWriter/ReverterLegacy.js.</p>
<p>Please report any bugs at <a target="_blank" href="https://en.wikipedia.org/wiki/Wikipedia_talk:PieWriter/Reverter">Wikipedia talk:PieWriter/Reverter</a>.</p>
`;
const AIVNAME = "Wikipedia:Administrator intervention against vandalism";
const UAANAME = "Wikipedia:Usernames for administrator attention";
const RFPPNAME = "Wikipedia:Requests for page protection/Increase";
const reverterData = {
defaultSettings: {
maxQueueSize: 50,
maxEditCount: 50,
minimumAIScore: 0.7, // threshold for AI revert suggestion
wiki: "en",
namespacesShown: [
0, 2, 4, 6, 8, 10, 12, 14, 100, 118,
1, 3, 5, 7, 9, 11, 13, 15, 101, 119
],
refreshTime: 2000,
showIPs: true,
showUsers: true,
sortQueueItems: true,
controlScripts: [
{
keys: [" "],
actions: [{ name: "nextEdit", params: {} }]
},
{
keys: ["q"],
actions: [
{
name: "if",
condition: "aiSuggestRevert",
actions: [
{ name: "rollback", params: {} },
{ name: "warn", params: { warningType: "Vandalism", level: "auto" } },
{ name: "highlight", params: {} },
{
name: "if",
condition: "atFinalWarning",
actions: [
{
name: "if",
condition: "operatorNonAdmin",
actions: [
{
name: "reportToAIV",
params: { reportMessage: "AI flagged vandalism past final warning" }
}
]
}
]
}
]
},
{ name: "nextEdit", params: {} }
]
},
{
keys: ["arrowleft"],
actions: [{ name: "prevEdit", params: {} }]
},
{
keys: ["h"],
actions: [{ name: "openHistory", params: {} }]
},
{
keys: ["c"],
actions: [{ name: "openUserContribs", params: {} }]
}
],
selectedPalette: 0,
theme: "theme-light"
},
warningTemplateColors: {
"0": "grey",
"1": "#4169e1",
"2": "#ff8c00",
"3": "#ff4500",
"4": "#b22222",
"4im": "#000000"
},
// warnings identical to AntiVandal (copy same structure)
namespaces: [
{ name: "Main", id: 0 },
{ name: "User", id: 2 },
{ name: "Project", id: 4 },
{ name: "File", id: 6 },
{ name: "MediaWiki", id: 8 },
{ name: "Template", id: 10 },
{ name: "Help", id: 12 },
{ name: "Category", id: 14 },
{ name: "Portal", id: 100 },
{ name: "Draft", id: 118 },
{ name: "Talk", id: 1 },
{ name: "User talk", id: 3 },
{ name: "Project talk", id: 5 },
{ name: "File talk", id: 7 },
{ name: "MediaWiki talk", id: 9 },
{ name: "Template talk", id: 11 },
{ name: "Help talk", id: 13 },
{ name: "Category talk", id: 15 },
{ name: "Portal talk", id: 101 },
{ name: "Draft talk", id: 119 }
]
};
// AI scoring function
function getAIScore(edit) {
// Placeholder: integrate with external AI model or API
// Returns a score between 0 and 1
return Math.random();
}
function aiSuggestRevert(edit) {
const score = getAIScore(edit);
return score >= reverterData.defaultSettings.minimumAIScore;
}
// Styling (similar to AntiVandal, with dark/light themes)
const reverterStyling = {
"initial": `/* same as AntiVandal initial styling */`,
"main": `/* same as AntiVandal main styling */`,
"theme-dark": `/* same as AntiVandal dark theme styling */`
};
// HTML structure
const reverterHTML = {
"head": `
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
`,
"initial": `
<div id="container">
<div id="welcome-container">
<h1>Welcome to PieWriter Reverter</h1>
<a href="https://en.wikipedia.org/wiki/Wikipedia:PieWriter/Reverter" target="_blank" class="about-link">About</a>
<a href="https://en.wikipedia.org/wiki/Wikipedia_talk:PieWriter/Reverter" target="_blank" class="about-link">Discuss</a>
<span class="about-link">Version ${reverterVersion}</span>
<div id="rollback-needed">
<p>You must have rollback or admin rights to use this script.</p>
<p>You can apply for rollback rights <a href="https://en.wikipedia.org/wiki/WP:PERM/R" target="_blank">here</a>.</p>
</div>
<button id="start-button">Start Reverter</button>
</div>
</div>
`,
"main": `
<div id="container">
<div id="queue">
<div id="queue-top">
<div id="queue-top-left">
<span id="queue-top-title">Queue</span>
<span id="queue-top-items">0 items</span>
</div>
<div id="queue-top-right">
<span class="fa fa-trash" id="delete-queue" data-tooltip="Clear queue"></span>
<span class="fa fa-gear" id="open-settings" data-tooltip="Open settings"></span>
</div>
</div>
<div id="queue-items"></div>
<div class="width-adjust" id="queue-width-adjust"></div>
</div>
<div id="right-container">
<div id="right-top"></div>
<div id="right-content">
<div id="main-container">
<div id="diff-container"></div>
<div id="progress-bar-container"></div>
<div id="bottom-tools">
<div id="bottom-revert">
<div class="bottom-tool-title">AI Revert and warn</div>
<div id="revert-menu" class="bottom-tool-content"></div>
</div>
<div id="bottom-user">
<div class="bottom-tool-title">User</div>
<div class="bottom-tool-content">
<div id="user-open-user-page" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open user page</div>
<span class="fas fa-up-right-from-square"></span>
</div>
<div id="user-open-user-talk" class="bottom-tool-option">
<div class="bottom-tool-option-title">Open user talk</div>
<span class="fas fa-up-right-from-square"></
iax2mfjyligr6toq4jd6yj83ddgucjy
735979
735978
2026-04-02T09:00:09Z
PieAlt
73198
Blanked the page
735979
javascript
text/javascript
phoiac9h4m842xq45sp7s6u21eteeq1
735984
735979
2026-04-02T10:06:58Z
PieAlt
73198
735984
javascript
text/javascript
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
var localApi = new mw.Api();
var metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php');
function addButton() {
mw.util.addPortletLink(
'p-tb',
'#',
'Find redirects',
't-findredirects',
'List broken redirects'
);
$('#t-findredirects').on('click', function (e) {
e.preventDefault();
showBrokenRedirects();
});
}
function showBrokenRedirects() {
localApi.get({
action: 'query',
list: 'querypage',
qppage: 'BrokenRedirects',
qplimit: 'max'
}).done(function (data) {
var redirects = data.query.querypage.results;
var overlay = $('<div>').css({
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: '100%',
background: 'rgba(0,0,0,0.5)',
'z-index': 9998
});
var menu = $('<div>').css({
position: 'fixed',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
background: '#fff',
border: '1px solid #ccc',
padding: '1.5em',
'z-index': 9999,
'max-height': '80%',
'max-width': '600px',
overflow: 'auto',
'box-shadow': '0 4px 12px rgba(0,0,0,0.3)',
'border-radius': '8px'
});
var header = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '1em'
});
header.append($('<h3>').text('Broken redirects').css({ margin: 0 }));
var closeBtn = $('<button>').text('✖').css({
border: 'none',
background: 'transparent',
'font-size': '1.2em',
cursor: 'pointer'
}).on('click', function () {
overlay.remove();
menu.remove();
});
header.append(closeBtn);
menu.append(header);
redirects.forEach(function (item) {
var page = item.title;
var ns = item.ns;
if (ns === 2 || ns === 3 || ns === 118) {
return;
}
localApi.get({
action: 'query',
titles: page,
prop: 'info'
}).done(function (check) {
var pages = check.query.pages;
var exists = true;
$.each(pages, function (id, p) {
if (p.missing !== undefined) {
exists = false;
}
});
if (!exists) {
return;
}
var entry = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '0.5em',
'padding': '0.3em 0',
'border-bottom': '1px solid #eee'
});
entry.append($('<span>').text(page));
var button = $('<button>').text('Request deletion').css({
'margin-left': '1em'
}).on('click', function () {
requestDeletion(page);
});
entry.append(button);
menu.append(entry);
});
});
$('body').append(overlay).append(menu);
});
}
function requestDeletion(page) {
var lang = mw.config.get('wgContentLanguage');
var dbname = mw.config.get('wgDBname');
var prefix = '';
if (dbname.includes('wikibooks')) prefix = 'b:' + lang + ':';
else if (dbname.includes('wikiquote')) prefix = 'q:' + lang + ':';
else if (dbname.includes('wikiversity')) prefix = 'wikiversity:' + lang + ':';
else if (dbname.includes('wikisource')) prefix = 'wikisource:' + lang + ':';
else if (dbname.includes('wikivoyage')) prefix = 'voy:' + lang + ':';
else if (dbname.includes('wikispecies')) prefix = 'wikispecies:';
else if (dbname.includes('wiktionary')) prefix = 'wikt:' + lang + ':';
else if (dbname.includes('wikinews')) prefix = 'n:' + lang + ':';
else if (dbname.includes('commonswiki')) prefix = 'commons:';
else if (dbname.includes('metawiki')) prefix = 'm:';
else if (dbname.includes('mediawiki')) prefix = 'mw:';
else prefix = lang + ':';
var formatted = '* [[:' + prefix + page + ']]: Broken redirect. <small>[[:m:User:PieWriter/BR.js|BR]]</small> ~~~~';
metaApi.postWithToken('csrf', {
action: 'edit',
title: 'Global sysops/Requests',
summary: 'Requesting speedy deletion of broken redirect [[User:PieWriter/BR.js|using tool]]',
appendtext: '\n' + formatted
}).done(function () {
alert('Deletion request added for ' + page + ' on Meta-Wiki');
});
}
addButton();
});
// </nowiki>
sqdynkgmm5iyh58g1md95fmg1gouy0l
735985
735984
2026-04-02T10:14:05Z
PieAlt
73198
735985
javascript
text/javascript
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
var localApi = new mw.Api();
var metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php');
function addButton() {
mw.util.addPortletLink(
'p-tb',
'#',
'Find redirects',
't-findredirects',
'List broken redirects'
);
$('#t-findredirects').on('click', function (e) {
e.preventDefault();
showBrokenRedirects();
});
}
function showBrokenRedirects() {
localApi.get({
action: 'query',
list: 'querypage',
qppage: 'BrokenRedirects',
qplimit: 'max'
}).done(function (data) {
var redirects = data.query.querypage.results;
var overlay = $('<div>').css({
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: '100%',
background: 'rgba(0,0,0,0.5)',
'z-index': 9998
});
var menu = $('<div>').css({
position: 'fixed',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
background: '#fff',
border: '1px solid #ccc',
padding: '1.5em',
'z-index': 9999,
'max-height': '80%',
'max-width': '600px',
overflow: 'auto',
'box-shadow': '0 4px 12px rgba(0,0,0,0.3)',
'border-radius': '8px'
});
var header = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '1em'
});
header.append($('<h3>').text('Broken redirects').css({ margin: 0 }));
var closeBtn = $('<button>').text('✖').css({
border: 'none',
background: 'transparent',
'font-size': '1.2em',
cursor: 'pointer'
}).on('click', function () {
overlay.remove();
menu.remove();
});
header.append(closeBtn);
menu.append(header);
redirects.forEach(function (item) {
var page = item.title;
var ns = item.ns;
if (ns === 2 || ns === 3 || ns === 118) {
return;
}
localApi.get({
action: 'query',
titles: page,
prop: 'info'
}).done(function (check) {
var pages = check.query.pages;
var exists = true;
$.each(pages, function (id, p) {
if (p.missing !== undefined) {
exists = false;
}
});
if (!exists) {
return;
}
var entry = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '0.5em',
'padding': '0.3em 0',
'border-bottom': '1px solid #eee'
});
entry.append($('<span>').text(page));
// Button: Request deletion (current behavior)
var btnRequest = $('<button>').text('Request deletion').css({
'margin-left': '1em'
}).on('click', function () {
requestDeletion(page);
});
entry.append(btnRequest);
// Button: Add delete+ussr tag
var btnUssr = $('<button>').text('Add delete+ussr tag').css({
'margin-left': '0.5em'
}).on('click', function () {
addDeleteTag(page, true);
});
entry.append(btnUssr);
// Button: Add only delete tag
var btnOnlyDelete = $('<button>').text('Add only delete tag').css({
'margin-left': '0.5em'
}).on('click', function () {
addDeleteTag(page, false);
});
entry.append(btnOnlyDelete);
menu.append(entry);
});
});
$('body').append(overlay).append(menu);
});
}
function requestDeletion(page) {
var lang = mw.config.get('wgContentLanguage');
var dbname = mw.config.get('wgDBname');
var prefix = '';
if (dbname.includes('wikibooks')) prefix = 'b:' + lang + ':';
else if (dbname.includes('wikiquote')) prefix = 'q:' + lang + ':';
else if (dbname.includes('wikiversity')) prefix = 'wikiversity:' + lang + ':';
else if (dbname.includes('wikisource')) prefix = 'wikisource:' + lang + ':';
else if (dbname.includes('wikivoyage')) prefix = 'voy:' + lang + ':';
else if (dbname.includes('wikispecies')) prefix = 'wikispecies:';
else if (dbname.includes('wiktionary')) prefix = 'wikt:' + lang + ':';
else if (dbname.includes('wikinews')) prefix = 'n:' + lang + ':';
else if (dbname.includes('commonswiki')) prefix = 'commons:';
else if (dbname.includes('metawiki')) prefix = 'm:';
else if (dbname.includes('mediawiki')) prefix = 'mw:';
else prefix = lang + ':';
var formatted = '* [[:' + prefix + page + ']]: Broken redirect. <small>[[:m:User:PieWriter/BR.js|BR]]</small> ~~~~';
metaApi.postWithToken('csrf', {
action: 'edit',
title: 'Global sysops/Requests',
summary: 'Requesting speedy deletion of broken redirect [[User:PieWriter/BR.js|using tool]]',
appendtext: '\n' + formatted
}).done(function () {
alert('Deletion request added for ' + page + ' on Meta-Wiki');
});
}
function addDeleteTag(page, ussr) {
var tagText = ussr ? '{{delete|Broken redirect|delete ussr}}' : '{{delete|Broken redirect}}';
localApi.postWithToken('csrf', {
action: 'edit',
title: page,
summary: 'Tagging broken redirect for deletion',
prependtext: tagText + '\n'
}).done(function () {
alert('Added deletion tag to ' + page + (ussr ? ' (with ussr)' : ''));
});
}
addButton();
});
// </nowiki>
ptc6y1w90oph8oeob8cisxwi4tshlh7
735987
735985
2026-04-02T10:16:43Z
PieAlt
73198
735987
javascript
text/javascript
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
var localApi = new mw.Api();
var metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php');
function addButton() {
mw.util.addPortletLink(
'p-tb',
'#',
'Find redirects',
't-findredirects',
'List broken redirects'
);
$('#t-findredirects').on('click', function (e) {
e.preventDefault();
showBrokenRedirects();
});
}
function showBrokenRedirects() {
localApi.get({
action: 'query',
list: 'querypage',
qppage: 'BrokenRedirects',
qplimit: 'max'
}).done(function (data) {
var redirects = data.query.querypage.results;
var overlay = $('<div>').css({
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: '100%',
background: 'rgba(0,0,0,0.5)',
'z-index': 9998
});
var menu = $('<div>').css({
position: 'fixed',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
background: '#fff',
border: '1px solid #ccc',
padding: '1.5em',
'z-index': 9999,
'max-height': '80%',
'max-width': '600px',
overflow: 'auto',
'box-shadow': '0 4px 12px rgba(0,0,0,0.3)',
'border-radius': '8px'
});
var header = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '1em'
});
header.append($('<h3>').text('Broken redirects').css({ margin: 0 }));
var closeBtn = $('<button>').text('✖').css({
border: 'none',
background: 'transparent',
'font-size': '1.2em',
cursor: 'pointer'
}).on('click', function () {
overlay.remove();
menu.remove();
});
header.append(closeBtn);
menu.append(header);
redirects.forEach(function (item) {
var page = item.title;
var ns = item.ns;
if (ns === 2 || ns === 3 || ns === 118) {
return;
}
localApi.get({
action: 'query',
titles: page,
prop: 'info'
}).done(function (check) {
var pages = check.query.pages;
var exists = true;
$.each(pages, function (id, p) {
if (p.missing !== undefined) {
exists = false;
}
});
if (!exists) {
return;
}
var entry = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '0.5em',
'padding': '0.3em 0',
'border-bottom': '1px solid #eee'
});
entry.append($('<span>').text(page));
// Button: Request deletion (current behavior)
var btnRequest = $('<button>').text('Request deletion').css({
'margin-left': '1em'
}).on('click', function () {
requestDeletion(page);
});
entry.append(btnRequest);
// Button: Add delete+gsr tag
var btnGSR = $('<button>').text('Add delete+gsr tag').css({
'margin-left': '0.5em'
}).on('click', function () {
addDeleteTag(page, true);
});
entry.append(btnGSR);
// Button: Add only delete tag
var btnOnlyDelete = $('<button>').text('Add only delete tag').css({
'margin-left': '0.5em'
}).on('click', function () {
addDeleteTag(page, false);
});
entry.append(btnOnlyDelete);
menu.append(entry);
});
});
$('body').append(overlay).append(menu);
});
}
function requestDeletion(page) {
var lang = mw.config.get('wgContentLanguage');
var dbname = mw.config.get('wgDBname');
var prefix = '';
if (dbname.includes('wikibooks')) prefix = 'b:' + lang + ':';
else if (dbname.includes('wikiquote')) prefix = 'q:' + lang + ':';
else if (dbname.includes('wikiversity')) prefix = 'wikiversity:' + lang + ':';
else if (dbname.includes('wikisource')) prefix = 'wikisource:' + lang + ':';
else if (dbname.includes('wikivoyage')) prefix = 'voy:' + lang + ':';
else if (dbname.includes('wikispecies')) prefix = 'wikispecies:';
else if (dbname.includes('wiktionary')) prefix = 'wikt:' + lang + ':';
else if (dbname.includes('wikinews')) prefix = 'n:' + lang + ':';
else if (dbname.includes('commonswiki')) prefix = 'commons:';
else if (dbname.includes('metawiki')) prefix = 'm:';
else if (dbname.includes('mediawiki')) prefix = 'mw:';
else prefix = lang + ':';
var formatted = '* [[:' + prefix + page + ']]: Broken redirect. <small>[[:m:User:PieWriter/BR.js|BR]]</small> ~~~~';
metaApi.postWithToken('csrf', {
action: 'edit',
title: 'Global sysops/Requests',
summary: 'Requesting speedy deletion of broken redirect [[User:PieWriter/BR.js|using tool]]',
appendtext: '\n' + formatted
}).done(function () {
alert('Deletion request added for ' + page + ' on Meta-Wiki');
});
}
function addDeleteTag(page, gsr) {
var tagText = gsr ? '{{delete|Broken redirect|delete gsr}}' : '{{delete|Broken redirect}}';
localApi.postWithToken('csrf', {
action: 'edit',
title: page,
summary: 'Tagging broken redirect for deletion',
prependtext: tagText + '\n'
}).done(function () {
alert('Added deletion tag to ' + page + (gsr ? ' (with gsr)' : ''));
});
}
addButton();
});
// </nowiki>
c9a38kmkphaiypl0ngozkcqhjp9qjf7
735989
735987
2026-04-02T10:17:52Z
PieAlt
73198
735989
javascript
text/javascript
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
var localApi = new mw.Api();
var metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php');
function addButton() {
mw.util.addPortletLink(
'p-tb',
'#',
'Find redirects',
't-findredirects',
'List broken redirects'
);
$('#t-findredirects').on('click', function (e) {
e.preventDefault();
showBrokenRedirects();
});
}
function showBrokenRedirects() {
localApi.get({
action: 'query',
list: 'querypage',
qppage: 'BrokenRedirects',
qplimit: 'max'
}).done(function (data) {
var redirects = data.query.querypage.results;
var overlay = $('<div>').css({
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: '100%',
background: 'rgba(0,0,0,0.5)',
'z-index': 9998
});
var menu = $('<div>').css({
position: 'fixed',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
background: '#fff',
border: '1px solid #ccc',
padding: '1.5em',
'z-index': 9999,
'max-height': '80%',
'max-width': '600px',
overflow: 'auto',
'box-shadow': '0 4px 12px rgba(0,0,0,0.3)',
'border-radius': '8px'
});
var header = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '1em'
});
header.append($('<h3>').text('Broken redirects').css({ margin: 0 }));
var closeBtn = $('<button>').text('✖').css({
border: 'none',
background: 'transparent',
'font-size': '1.2em',
cursor: 'pointer'
}).on('click', function () {
overlay.remove();
menu.remove();
});
header.append(closeBtn);
menu.append(header);
redirects.forEach(function (item) {
var page = item.title;
var ns = item.ns;
if (ns === 2 || ns === 3 || ns === 118) {
return;
}
localApi.get({
action: 'query',
titles: page,
prop: 'info'
}).done(function (check) {
var pages = check.query.pages;
var exists = true;
$.each(pages, function (id, p) {
if (p.missing !== undefined) {
exists = false;
}
});
if (!exists) {
return;
}
var entry = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '0.5em',
'padding': '0.3em 0',
'border-bottom': '1px solid #eee'
});
entry.append($('<span>').text(page));
// Button: Request deletion (current behavior)
var btnRequest = $('<button>').text('Request deletion').css({
'margin-left': '1em'
}).on('click', function () {
requestDeletion(page);
});
entry.append(btnRequest);
// Button: Add delete+gsr tag
var btnGSR = $('<button>').text('Add delete+gsr tag').css({
'margin-left': '0.5em'
}).on('click', function () {
addDeleteTag(page, true);
});
entry.append(btnGSR);
// Button: Add only delete tag
var btnOnlyDelete = $('<button>').text('Add only delete tag').css({
'margin-left': '0.5em'
}).on('click', function () {
addDeleteTag(page, false);
});
entry.append(btnOnlyDelete);
menu.append(entry);
});
});
$('body').append(overlay).append(menu);
});
}
function requestDeletion(page) {
var lang = mw.config.get('wgContentLanguage');
var dbname = mw.config.get('wgDBname');
var prefix = '';
if (dbname.includes('wikibooks')) prefix = 'b:' + lang + ':';
else if (dbname.includes('wikiquote')) prefix = 'q:' + lang + ':';
else if (dbname.includes('wikiversity')) prefix = 'wikiversity:' + lang + ':';
else if (dbname.includes('wikisource')) prefix = 'wikisource:' + lang + ':';
else if (dbname.includes('wikivoyage')) prefix = 'voy:' + lang + ':';
else if (dbname.includes('wikispecies')) prefix = 'wikispecies:';
else if (dbname.includes('wiktionary')) prefix = 'wikt:' + lang + ':';
else if (dbname.includes('wikinews')) prefix = 'n:' + lang + ':';
else if (dbname.includes('commonswiki')) prefix = 'commons:';
else if (dbname.includes('metawiki')) prefix = 'm:';
else if (dbname.includes('mediawiki')) prefix = 'mw:';
else prefix = lang + ':';
var formatted = '* [[:' + prefix + page + ']]: Broken redirect. <small>[[:m:User:PieWriter/BR.js|BR]]</small> ~~~~';
metaApi.postWithToken('csrf', {
action: 'edit',
title: 'Global sysops/Requests',
summary: 'Requesting speedy deletion of broken redirect [[User:PieWriter/BR.js|using tool]]',
appendtext: '\n' + formatted
}).done(function () {
alert('Deletion request added for ' + page + ' on Meta-Wiki');
});
}
function addDeleteTag(page, gsr) {
var tagText = gsr ? '{{delete|Broken redirect|delete gsr}}' : '{{delete|Broken redirect}}';
localApi.postWithToken('csrf', {
action: 'edit',
title: page,
summary: 'Tagging broken redirect for deletion using [[:m:User:PieWriter/BR.js]]',
prependtext: tagText + '\n'
}).done(function () {
alert('Added deletion tag to ' + page + (gsr ? ' (with gsr)' : ''));
});
}
addButton();
});
// </nowiki>
kzq7t3siovgqgeip188edp5vf3x4tc1
735991
735989
2026-04-02T10:19:07Z
PieAlt
73198
735991
javascript
text/javascript
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
var localApi = new mw.Api();
var metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php');
function addButton() {
mw.util.addPortletLink(
'p-tb',
'#',
'Find redirects',
't-findredirects',
'List broken redirects'
);
$('#t-findredirects').on('click', function (e) {
e.preventDefault();
showBrokenRedirects();
});
}
function showBrokenRedirects() {
localApi.get({
action: 'query',
list: 'querypage',
qppage: 'BrokenRedirects',
qplimit: 'max'
}).done(function (data) {
var redirects = data.query.querypage.results;
var overlay = $('<div>').css({
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: '100%',
background: 'rgba(0,0,0,0.5)',
'z-index': 9998
});
var menu = $('<div>').css({
position: 'fixed',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
background: '#fff',
border: '1px solid #ccc',
padding: '1.5em',
'z-index': 9999,
'max-height': '80%',
'max-width': '600px',
overflow: 'auto',
'box-shadow': '0 4px 12px rgba(0,0,0,0.3)',
'border-radius': '8px'
});
var header = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '1em'
});
header.append($('<h3>').text('Broken redirects').css({ margin: 0 }));
var closeBtn = $('<button>').text('✖').css({
border: 'none',
background: 'transparent',
'font-size': '1.2em',
cursor: 'pointer'
}).on('click', function () {
overlay.remove();
menu.remove();
});
header.append(closeBtn);
menu.append(header);
redirects.forEach(function (item) {
var page = item.title;
var ns = item.ns;
if (ns === 2 || ns === 3 || ns === 118) {
return;
}
localApi.get({
action: 'query',
titles: page,
prop: 'info'
}).done(function (check) {
var pages = check.query.pages;
var exists = true;
$.each(pages, function (id, p) {
if (p.missing !== undefined) {
exists = false;
}
});
if (!exists) {
return;
}
var entry = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '0.5em',
'padding': '0.3em 0',
'border-bottom': '1px solid #eee'
});
entry.append($('<span>').text(page));
// Button: Request deletion (current behavior)
var btnRequest = $('<button>').text('Request deletion').css({
'margin-left': '1em'
}).on('click', function () {
requestDeletion(page);
});
entry.append(btnRequest);
// Button: Add delete+gsr tag
var btnGSR = $('<button>').text('Add delete+gsr tag').css({
'margin-left': '0.5em'
}).on('click', function () {
addDeleteTag(page, true);
});
entry.append(btnGSR);
// Button: Add only delete tag
var btnOnlyDelete = $('<button>').text('Add only delete tag').css({
'margin-left': '0.5em'
}).on('click', function () {
addDeleteTag(page, false);
});
entry.append(btnOnlyDelete);
menu.append(entry);
});
});
$('body').append(overlay).append(menu);
});
}
function requestDeletion(page) {
var lang = mw.config.get('wgContentLanguage');
var dbname = mw.config.get('wgDBname');
var prefix = '';
if (dbname.includes('wikibooks')) prefix = 'b:' + lang + ':';
else if (dbname.includes('wikiquote')) prefix = 'q:' + lang + ':';
else if (dbname.includes('wikiversity')) prefix = 'wikiversity:' + lang + ':';
else if (dbname.includes('wikisource')) prefix = 'wikisource:' + lang + ':';
else if (dbname.includes('wikivoyage')) prefix = 'voy:' + lang + ':';
else if (dbname.includes('wikispecies')) prefix = 'wikispecies:';
else if (dbname.includes('wiktionary')) prefix = 'wikt:' + lang + ':';
else if (dbname.includes('wikinews')) prefix = 'n:' + lang + ':';
else if (dbname.includes('commonswiki')) prefix = 'commons:';
else if (dbname.includes('metawiki')) prefix = 'm:';
else if (dbname.includes('mediawiki')) prefix = 'mw:';
else prefix = lang + ':';
var formatted = '* [[:' + prefix + page + ']]: Broken redirect. <small>[[:m:User:PieWriter/BR.js|BR]]</small> ~~~~';
metaApi.postWithToken('csrf', {
action: 'edit',
title: 'Global sysops/Requests',
summary: 'Requesting speedy deletion of broken redirect [[User:PieWriter/BR.js|using tool]]',
appendtext: '\n' + formatted
}).done(function () {
alert('Deletion request added for ' + page + ' on Meta-Wiki');
});
}
function addDeleteTag(page, gsr) {
var tagText = gsr ? '{{delete|Broken redirect|delete gsr}}' : '{{delete|Broken redirect}}';
localApi.postWithToken('csrf', {
action: 'edit',
title: page,
summary: 'Tagging broken redirect for deletion ([[:m:User:PieWriter/BR.js|BR]])',
prependtext: tagText + '\n'
}).done(function () {
alert('Added deletion tag to ' + page + (gsr ? ' (with gsr)' : ''));
});
}
addButton();
});
// </nowiki>
eevv4x4o5evkl1dyowqd1161417mjp4
735993
735991
2026-04-02T10:22:38Z
PieAlt
73198
minor
735993
javascript
text/javascript
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
var localApi = new mw.Api();
var metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php');
function addButton() {
mw.util.addPortletLink(
'p-tb',
'#',
'Find redirects',
't-findredirects',
'List broken redirects'
);
$('#t-findredirects').on('click', function (e) {
e.preventDefault();
showBrokenRedirects();
});
}
function showBrokenRedirects() {
localApi.get({
action: 'query',
list: 'querypage',
qppage: 'BrokenRedirects',
qplimit: 'max'
}).done(function (data) {
var redirects = data.query.querypage.results;
var overlay = $('<div>').css({
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: '100%',
background: 'rgba(0,0,0,0.5)',
'z-index': 9998
});
var menu = $('<div>').css({
position: 'fixed',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
background: '#fff',
border: '1px solid #ccc',
padding: '1.5em',
'z-index': 9999,
'max-height': '80%',
'max-width': '600px',
overflow: 'auto',
'box-shadow': '0 4px 12px rgba(0,0,0,0.3)',
'border-radius': '8px'
});
var header = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '1em'
});
header.append($('<h3>').text('Broken redirects').css({ margin: 0 }));
var closeBtn = $('<button>').text('✖').css({
border: 'none',
background: 'transparent',
'font-size': '1.2em',
cursor: 'pointer'
}).on('click', function () {
overlay.remove();
menu.remove();
});
header.append(closeBtn);
menu.append(header);
redirects.forEach(function (item) {
var page = item.title;
var ns = item.ns;
if (ns === 2 || ns === 3 || ns === 118) {
return;
}
localApi.get({
action: 'query',
titles: page,
prop: 'info'
}).done(function (check) {
var pages = check.query.pages;
var exists = true;
$.each(pages, function (id, p) {
if (p.missing !== undefined) {
exists = false;
}
});
if (!exists) {
return;
}
var entry = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '0.5em',
'padding': '0.3em 0',
'border-bottom': '1px solid #eee'
});
entry.append($('<span>').text(page));
var btnGSR = $('<button>').text('GSR').css({
'margin-left': '1em'
}).on('click', function () {
requestDeletion(page);
});
entry.append(btnGSR);
var btnGSRTag = $('<button>').text('GSR+tag').css({
'margin-left': '0.5em'
}).on('click', function () {
requestDeletion(page);
addDeleteTag(page, true);
});
entry.append(btnGSRTag);
var btnTag = $('<button>').text('Tag').css({
'margin-left': '0.5em'
}).on('click', function () {
addDeleteTag(page, false);
});
entry.append(btnTag);
menu.append(entry);
});
});
$('body').append(overlay).append(menu);
});
}
function requestDeletion(page) {
var lang = mw.config.get('wgContentLanguage');
var dbname = mw.config.get('wgDBname');
var prefix = '';
if (dbname.includes('wikibooks')) prefix = 'b:' + lang + ':';
else if (dbname.includes('wikiquote')) prefix = 'q:' + lang + ':';
else if (dbname.includes('wikiversity')) prefix = 'wikiversity:' + lang + ':';
else if (dbname.includes('wikisource')) prefix = 'wikisource:' + lang + ':';
else if (dbname.includes('wikivoyage')) prefix = 'voy:' + lang + ':';
else if (dbname.includes('wikispecies')) prefix = 'wikispecies:';
else if (dbname.includes('wiktionary')) prefix = 'wikt:' + lang + ':';
else if (dbname.includes('wikinews')) prefix = 'n:' + lang + ':';
else if (dbname.includes('commonswiki')) prefix = 'commons:';
else if (dbname.includes('metawiki')) prefix = 'm:';
else if (dbname.includes('mediawiki')) prefix = 'mw:';
else prefix = lang + ':';
var formatted = '* [[:' + prefix + page + ']]: Broken redirect. <small>[[:m:User:PieWriter/BR.js|BR]]</small> ~~~~';
metaApi.postWithToken('csrf', {
action: 'edit',
title: 'Global sysops/Requests',
summary: 'Requesting speedy deletion of broken redirect [[User:PieWriter/BR.js|using tool]]',
appendtext: '\n' + formatted
}).done(function () {
alert('Deletion request added for ' + page + ' on Meta-Wiki');
});
}
function addDeleteTag(page, gsr) {
var tagText = gsr ? '{{delete|Broken redirect|delete gsr}}' : '{{delete|Broken redirect}}';
localApi.postWithToken('csrf', {
action: 'edit',
title: page,
summary: 'Tagging broken redirect for deletion ([[:m:User:PieWriter/BR.js|BR]])',
prependtext: tagText + '\n'
}).done(function () {
alert('Added deletion tag to ' + page + (gsr ? ' (with gsr)' : ''));
});
}
addButton();
});
// </nowiki>
9qxv6n12t9h1f70ajcokio48gjvqpw3
735994
735993
2026-04-02T10:25:35Z
PieAlt
73198
735994
javascript
text/javascript
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
var localApi = new mw.Api();
var metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php');
function addButton() {
mw.util.addPortletLink(
'p-tb',
'#',
'Find redirects',
't-findredirects',
'List broken redirects'
);
$('#t-findredirects').on('click', function (e) {
e.preventDefault();
showBrokenRedirects();
});
}
function showBrokenRedirects() {
localApi.get({
action: 'query',
list: 'querypage',
qppage: 'BrokenRedirects',
qplimit: 'max'
}).done(function (data) {
var redirects = data.query.querypage.results;
var overlay = $('<div>').css({
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: '100%',
background: 'rgba(0,0,0,0.5)',
'z-index': 9998
});
var menu = $('<div>').css({
position: 'fixed',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
background: '#fff',
border: '1px solid #ccc',
padding: '1.5em',
'z-index': 9999,
'max-height': '80%',
'max-width': '600px',
overflow: 'auto',
'box-shadow': '0 4px 12px rgba(0,0,0,0.3)',
'border-radius': '8px'
});
var header = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '1em'
});
header.append($('<h3>').text('Broken redirects').css({ margin: 0 }));
var closeBtn = $('<button>').text('✖').css({
border: 'none',
background: 'transparent',
'font-size': '1.2em',
cursor: 'pointer'
}).on('click', function () {
overlay.remove();
menu.remove();
});
header.append(closeBtn);
menu.append(header);
redirects.forEach(function (item) {
var page = item.title;
var ns = item.ns;
if (ns === 2 || ns === 3 || ns === 118) {
return;
}
localApi.get({
action: 'query',
titles: page,
prop: 'info'
}).done(function (check) {
var pages = check.query.pages;
var exists = true;
$.each(pages, function (id, p) {
if (p.missing !== undefined) {
exists = false;
}
});
if (!exists) {
return;
}
var entry = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '0.5em',
'padding': '0.3em 0',
'border-bottom': '1px solid #eee'
});
entry.append($('<span>').text(page));
// Dropdown menu
var actionsBtn = $('<button>').text('Actions').css({
'margin-left': '1em'
});
var dropdown = $('<ul>').css({
position: 'absolute',
background: '#fff',
border: '1px solid #ccc',
padding: '0.5em',
'list-style': 'none',
margin: 0,
display: 'none'
});
var addOption = function(label, handler) {
$('<li>').text(label).css({
padding: '0.3em 0',
cursor: 'pointer'
}).on('click', function () {
dropdown.hide();
handler();
}).appendTo(dropdown);
};
addOption('GSR', function() { requestDeletion(page); });
addOption('GSR+tag', function() { requestDeletion(page); addDeleteTag(page, true); });
addOption('Tag', function() { addDeleteTag(page, false); });
actionsBtn.on('click', function () {
dropdown.toggle();
});
entry.append(actionsBtn).append(dropdown);
menu.append(entry);
});
});
$('body').append(overlay).append(menu);
});
}
function requestDeletion(page) {
var lang = mw.config.get('wgContentLanguage');
var dbname = mw.config.get('wgDBname');
var prefix = '';
if (dbname.includes('wikibooks')) prefix = 'b:' + lang + ':';
else if (dbname.includes('wikiquote')) prefix = 'q:' + lang + ':';
else if (dbname.includes('wikiversity')) prefix = 'wikiversity:' + lang + ':';
else if (dbname.includes('wikisource')) prefix = 'wikisource:' + lang + ':';
else if (dbname.includes('wikivoyage')) prefix = 'voy:' + lang + ':';
else if (dbname.includes('wikispecies')) prefix = 'wikispecies:';
else if (dbname.includes('wiktionary')) prefix = 'wikt:' + lang + ':';
else if (dbname.includes('wikinews')) prefix = 'n:' + lang + ':';
else if (dbname.includes('commonswiki')) prefix = 'commons:';
else if (dbname.includes('metawiki')) prefix = 'm:';
else if (dbname.includes('mediawiki')) prefix = 'mw:';
else prefix = lang + ':';
var formatted = '* [[:' + prefix + page + ']]: Broken redirect. <small>[[:m:User:PieWriter/BR.js|BR]]</small> ~~~~';
metaApi.postWithToken('csrf', {
action: 'edit',
title: 'Global sysops/Requests',
summary: 'Requesting speedy deletion of broken redirect [[User:PieWriter/BR.js|using tool]]',
appendtext: '\n' + formatted
}).done(function () {
alert('Deletion request added for ' + page + ' on Meta-Wiki');
});
}
function addDeleteTag(page, gsr) {
var tagText = gsr ? '{{delete|Broken redirect|delete gsr}}' : '{{delete|Broken redirect}}';
localApi.postWithToken('csrf', {
action: 'edit',
title: page,
summary: 'Tagging broken redirect for deletion ([[:m:User:PieWriter/BR.js|BR]])',
prependtext: tagText + '\n'
}).done(function () {
alert('Added deletion tag to ' + page + (gsr ? ' (with gsr)' : ''));
});
}
addButton();
});
// </nowiki>
01k579w8lrpsl7van9o9zu32nlg2h98
735995
735994
2026-04-02T10:27:32Z
PieAlt
73198
735995
javascript
text/javascript
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function () {
var localApi = new mw.Api();
var metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php');
function addButton() {
mw.util.addPortletLink(
'p-tb',
'#',
'Find redirects',
't-findredirects',
'List broken redirects'
);
$('#t-findredirects').on('click', function (e) {
e.preventDefault();
showBrokenRedirects();
});
}
function showBrokenRedirects() {
localApi.get({
action: 'query',
list: 'querypage',
qppage: 'BrokenRedirects',
qplimit: 'max'
}).done(function (data) {
var redirects = data.query.querypage.results;
var overlay = $('<div>').css({
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: '100%',
background: 'rgba(0,0,0,0.5)',
'z-index': 9998
});
var menu = $('<div>').css({
position: 'fixed',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
background: '#fff',
border: '1px solid #ccc',
padding: '1.5em',
'z-index': 9999,
'max-height': '80%',
'max-width': '600px',
overflow: 'auto',
'box-shadow': '0 4px 12px rgba(0,0,0,0.3)',
'border-radius': '8px'
});
var header = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '1em'
});
header.append($('<h3>').text('Broken redirects').css({ margin: 0 }));
var closeBtn = $('<button>').text('✖').css({
border: 'none',
background: 'transparent',
'font-size': '1.2em',
cursor: 'pointer'
}).on('click', function () {
overlay.remove();
menu.remove();
});
header.append(closeBtn);
menu.append(header);
redirects.forEach(function (item) {
var page = item.title;
var ns = item.ns;
if (ns === 2 || ns === 3 || ns === 118) {
return;
}
localApi.get({
action: 'query',
titles: page,
prop: 'info'
}).done(function (check) {
var pages = check.query.pages;
var exists = true;
$.each(pages, function (id, p) {
if (p.missing !== undefined) {
exists = false;
}
});
if (!exists) {
return;
}
var entry = $('<div>').css({
display: 'flex',
'justify-content': 'space-between',
'align-items': 'center',
'margin-bottom': '0.5em',
'padding': '0.3em 0',
'border-bottom': '1px solid #eee'
});
entry.append($('<span>').text(page));
var segmentContainer = $('<div>').css({
display: 'inline-flex',
border: '1px solid #ccc',
'border-radius': '4px',
overflow: 'hidden',
'margin-left': '1em'
});
var makeSegment = function(label, handler) {
return $('<button>').text(label).css({
padding: '0.3em 0.8em',
border: 'none',
background: '#f9f9f9',
cursor: 'pointer',
'border-right': '1px solid #ccc'
}).on('click', handler);
};
var gsrBtn = makeSegment('GSR', function() { requestDeletion(page); });
var gsrTagBtn = makeSegment('GSR+tag', function() { requestDeletion(page); addDeleteTag(page, true); });
var tagBtn = makeSegment('Tag', function() { addDeleteTag(page, false); });
tagBtn.css('border-right', 'none');
segmentContainer.append(gsrBtn, gsrTagBtn, tagBtn);
entry.append(segmentContainer);
menu.append(entry);
});
});
$('body').append(overlay).append(menu);
});
}
function requestDeletion(page) {
var lang = mw.config.get('wgContentLanguage');
var dbname = mw.config.get('wgDBname');
var prefix = '';
if (dbname.includes('wikibooks')) prefix = 'b:' + lang + ':';
else if (dbname.includes('wikiquote')) prefix = 'q:' + lang + ':';
else if (dbname.includes('wikiversity')) prefix = 'wikiversity:' + lang + ':';
else if (dbname.includes('wikisource')) prefix = 'wikisource:' + lang + ':';
else if (dbname.includes('wikivoyage')) prefix = 'voy:' + lang + ':';
else if (dbname.includes('wikispecies')) prefix = 'wikispecies:';
else if (dbname.includes('wiktionary')) prefix = 'wikt:' + lang + ':';
else if (dbname.includes('wikinews')) prefix = 'n:' + lang + ':';
else if (dbname.includes('commonswiki')) prefix = 'commons:';
else if (dbname.includes('metawiki')) prefix = 'm:';
else if (dbname.includes('mediawiki')) prefix = 'mw:';
else prefix = lang + ':';
var formatted = '* [[:' + prefix + page + ']]: Broken redirect. <small>[[:m:User:PieWriter/BR.js|BR]]</small> ~~~~';
metaApi.postWithToken('csrf', {
action: 'edit',
title: 'Global sysops/Requests',
summary: 'Requesting speedy deletion of broken redirect [[User:PieWriter/BR.js|using tool]]',
appendtext: '\n' + formatted
}).done(function () {
alert('Deletion request added for ' + page + ' on Meta-Wiki');
});
}
function addDeleteTag(page, gsr) {
var tagText = gsr ? '{{delete|Broken redirect|delete gsr}}' : '{{delete|Broken redirect}}';
localApi.postWithToken('csrf', {
action: 'edit',
title: page,
summary: 'Tagging broken redirect for deletion ([[:m:User:PieWriter/BR.js|BR]])',
prependtext: tagText + '\n'
}).done(function () {
alert('Added deletion tag to ' + page + (gsr ? ' (with gsr)' : ''));
});
}
addButton();
});
// </nowiki>
o1gus9bgmiyesjroeatwmpbseh1hk91
735997
735995
2026-04-02T10:28:27Z
PieAlt
73198
Done
735997
javascript
text/javascript
phoiac9h4m842xq45sp7s6u21eteeq1
User:MMunyoki (WMF)/Starter kit/Featured article
2
174593
735841
2026-04-01T16:08:14Z
MMunyoki (WMF)
53374
Created by StarterKit tool
735841
wikitext
text/x-wiki
<div style="border:1px solid #cef2e0;border-radius:4px;padding:8px;background:#f5fffa;margin-bottom:2px;">
<div style="padding:4px 12px;margin-bottom:8px;border:1px solid #a3bfb1;border-radius:4px;background:#cef2e0;">'''Featured article'''</div>
<!-- Add a short excerpt from any well-written article on your wiki.
No need to update daily — refresh when a new article is ready.
To add an image: [[File:Filename.jpg|112px|left|alt=description]] -->
Add article title here – Add a short excerpt here (2–3 sentences). Introduce the topic clearly so readers want to learn more.
<!-- Replace "Full article..." below with: [[Article name|Full article...]] -->
<small>(Full article...)</small>
</div>
[[Category:Starter Kit templates]][[Category:Main page templates]]
71r8xedkc3udt1z7tsqpnsksrn3brn8
735847
735841
2026-04-01T16:13:46Z
MMunyoki (WMF)
53374
735847
wikitext
text/x-wiki
<div style="border:1px solid #cef2e0;border-radius:4px;padding:8px;background:#f5fffa;margin-bottom:2px;">
<div style="padding:4px 12px;margin-bottom:8px;border:1px solid #a3bfb1;border-radius:4px;background:#cef2e0;">'''Featured article'''</div>
<!-- Add a short excerpt from any well-written article on your wiki.
No need to update daily — refresh when a new article is ready.
To add an image: [[File:Filename.jpg|112px|left|alt=description]] -->
Add article title here – Add a short excerpt here (2–3 sentences). Introduce the topic clearly so readers want to learn more.
<!-- Replace "Full article..." below with: [[Article name|Full article...]] -->
<small>(Full article...)</small>
https://en.wikipedia.org/wiki/Nairobi
</div>
[[Category:Starter Kit templates]][[Category:Main page templates]]
jevf9xjjbnj93a8bx3x4gfibcxg7ocz
735848
735847
2026-04-01T16:14:10Z
MMunyoki (WMF)
53374
Created by StarterKit tool
735848
wikitext
text/x-wiki
<div style="border:1px solid #cef2e0;border-radius:4px;padding:8px;background:#f5fffa;margin-bottom:2px;">
<div style="padding:4px 12px;margin-bottom:8px;border:1px solid #a3bfb1;border-radius:4px;background:#cef2e0;">'''Featured article'''</div>
<!-- Add a short excerpt from any well-written article on your wiki.
No need to update daily — refresh when a new article is ready.
To add an image: [[File:Filename.jpg|112px|left|alt=description]] -->
Add article title here – Add a short excerpt here (2–3 sentences). Introduce the topic clearly so readers want to learn more.
<!-- Replace "Full article..." below with: [[Article name|Full article...]] -->
<small>(Full article...)</small>
</div>
[[Category:Starter Kit templates]][[Category:Main page templates]]
71r8xedkc3udt1z7tsqpnsksrn3brn8
735849
735848
2026-04-01T16:30:23Z
MMunyoki (WMF)
53374
735849
wikitext
text/x-wiki
<div style="border:1px solid #cef2e0;border-radius:4px;padding:8px;background:#f5fffa;margin-bottom:2px;">
<div style="padding:4px 12px;margin-bottom:8px;border:1px solid #a3bfb1;border-radius:4px;background:#cef2e0;">'''Featured article'''</div>
<!-- Add a short excerpt from any well-written article on your wiki.
No need to update daily — refresh when a new article is ready.
To add an image: [[File:Filename.jpg|112px|left|alt=description]] -->
Add article title here – Add a short excerpt here (2–3 sentences). Introduce the topic clearly so readers want to learn more.
<!-- Replace "Full article..." below with: [[Article name|Full article...]] -->
<small>(Full article...)</small>
https://en.wikipedia.org/wiki/Nairobi
</div>
[[Category:Starter Kit templates]][[Category:Main page templates]]
dhxtsvhq6i3rr9jp0fpstfp4halagg3
735865
735849
2026-04-01T17:18:58Z
MMunyoki (WMF)
53374
Created by StarterKit tool
735865
wikitext
text/x-wiki
<div style="border:1px solid #cef2e0;border-radius:4px;padding:8px;background:#f5fffa;margin-bottom:2px;">
<div style="padding:4px 12px;margin-bottom:8px;border:1px solid #a3bfb1;border-radius:4px;background:#cef2e0;">'''Featured article'''</div>
<!-- Add a short excerpt from any well-written article on your wiki.
No need to update daily — refresh when a new article is ready.
To add an image: [[File:Filename.jpg|112px|left|alt=description]] -->
Add article title here – Add a short excerpt here (2–3 sentences). Introduce the topic clearly so readers want to learn more.
<!-- Replace "Full article..." below with: [[Article name|Full article...]] -->
<small>(Full article...)</small>
</div>
[[Category:Starter Kit templates]][[Category:Main page templates]]
71r8xedkc3udt1z7tsqpnsksrn3brn8
User:MMunyoki (WMF)/Starter kit/In the news
2
174594
735842
2026-04-01T16:08:15Z
MMunyoki (WMF)
53374
Created by StarterKit tool
735842
wikitext
text/x-wiki
<div style="border:1px solid #cedff2;border-radius:4px;padding:8px;background:#f5faff;margin-bottom:2px;">
<div style="padding:4px 12px;margin-bottom:8px;border:1px solid #a3b0bf;border-radius:4px;background:#cedff2;">'''In the news'''</div>
<!-- Add recent events or news relevant to your community or topic area.
No need to update daily — refresh when something noteworthy happens.
To add an image: [[File:Filename.jpg|64px|right|alt=description]] -->
* Add a recent event or news item and link to a relevant article here.
* Add a recent event or news item and link to a relevant article here.
* Add a recent event or news item and link to a relevant article here.
</div>
[[Category:Starter Kit templates]][[Category:Main page templates]]
ov78wfo8w8x7fjlnuahoq193ccbon5i
User:MMunyoki (WMF)/Starter kit/Did you know
2
174595
735843
2026-04-01T16:08:16Z
MMunyoki (WMF)
53374
Created by StarterKit tool
735843
wikitext
text/x-wiki
<div style="border:1px solid #cef2e0;border-radius:4px;padding:8px;background:#f5fffa;margin-bottom:2px;">
<div style="padding:4px 12px;margin-bottom:8px;border:1px solid #a3bfb1;border-radius:4px;background:#cef2e0;">'''Did you know ...'''</div>
<!-- Update with 3–5 interesting facts from recently created or expanded articles.
No need to update daily — refresh when new articles are added.
To add an image: [[File:Filename.jpg|80px|left|alt=description]] -->
* ... that add an interesting fact and link to a relevant article here?
* ... that add an interesting fact and link to a relevant article here?
* ... that add an interesting fact and link to a relevant article here?
</div>
[[Category:Starter Kit templates]][[Category:Main page templates]]
185eq1k742wroqupsei3ywveh6zrug6
User:MMunyoki (WMF)/Starter kit/On this day
2
174596
735844
2026-04-01T16:08:17Z
MMunyoki (WMF)
53374
Created by StarterKit tool
735844
wikitext
text/x-wiki
<div style="border:1px solid #cedff2;border-radius:4px;padding:8px;background:#f5faff;margin-bottom:2px;">
<div style="padding:4px 12px;margin-bottom:8px;border:1px solid #a3b0bf;border-radius:4px;background:#cedff2;">'''On this day'''</div>
<!-- Add 2–3 historical events relevant to your community or topic area.
No need to update daily — refresh occasionally as your wiki grows.
To add an image: [[File:Filename.jpg|80px|right|alt=description]] -->
Add a date here
* Add a historical event and link to a relevant article here.
* Add a historical event and link to a relevant article here.
</div>
[[Category:Starter Kit templates]][[Category:Main page templates]]
oawkmcoyobjvtr2l018429c6lkvtbv7
User:MMunyoki (WMF)/Starter kit/Featured picture
2
174597
735845
2026-04-01T16:08:18Z
MMunyoki (WMF)
53374
Created by StarterKit tool
735845
wikitext
text/x-wiki
<div style="border:1px solid #ddcef2;border-radius:4px;padding:8px;background:#faf5ff;margin-top:4px;">
<div style="padding:4px 12px;margin-bottom:8px;border:1px solid #afa3bf;border-radius:4px;background:#ddcef2;">'''Featured picture'''</div>
<!-- Add any image that represents your wiki well — from Commons or locally uploaded.
No need to update daily — refresh whenever a good image is available.
To add the image: [[File:Filename.jpg|320px|left|alt=description]] -->
Add image title here
Add a description of the image here (2–3 sentences).
<small>''Credit: Add photographer or source credit here''</small>
</div>
[[Category:Starter Kit templates]][[Category:Main page templates]]
nqlnpy7xrae21ukmzbnpqluop5cyxq6
User:Yahya/MTD.js
2
174599
735873
2026-04-01T18:16:05Z
Yahya
44996
Created page with "/****************************************************************************** MoveToDraft ------------- Version 2.6.0 ------------- A script to move unsourced articles to draft space, including cleanup and author notification. - Moves page to draftspace - Checks if any files used are non-free - Checks if any redirects pointed to the page - Comments out non-free files, turn categories into links, add afc draft template, add redirects - Adds notification message on auth..."
735873
javascript
text/javascript
/******************************************************************************
MoveToDraft
-------------
Version 2.6.0
-------------
A script to move unsourced articles to draft space, including cleanup and author notification.
- Moves page to draftspace
- Checks if any files used are non-free
- Checks if any redirects pointed to the page
- Comments out non-free files, turn categories into links, add afc draft template, add redirects
- Adds notification message on author talk page
- Updates talk page banners
- Logs draftification in user subpage
Derived from https://en.wikipedia.org/wiki/User:Evad37/MoveToDraft.js
Mobile-friendly modernized version.
******************************************************************************/
/* jshint laxbreak: true, undef: true, maxerr:999 */
/* globals console, window, document, $, mw */
// <nowiki>
( function () {
'use strict';
// Script info
window.mtd = {
config: {
script: {
location: 'User:Yahya/MTD',
version: '2.6.0'
}
}
};
window.API = null;
$.when(
mw.loader.using( [ 'mediawiki.util', 'mediawiki.api', 'mediawiki.Title' ] ),
$.ready
).then( function () {
/* ========== Config ======================================================= */
window.mtd.config.mw = mw.config.get( [
'wgArticleId',
'wgCurRevisionId',
'wgPageName',
'wgUserGroups',
'wgUserName',
'wgMonthNames',
'wgNamespaceNumber',
'wgTitle',
'wgArticlePath',
'wgIsMainPage',
'wgIsRedirect'
] );
/* ========== API ========================================================== */
window.API = new mw.Api( {
ajax: {
headers: {
'Api-User-Agent': 'MoveToDraft/' + window.mtd.config.script.version +
' ( https://bn.wikipedia.org/wiki/User:Yahya/MTD )'
}
}
} );
var dynamicallyLoadScript = function ( url ) {
return $.getScript( url + '?action=raw&ctype=text/javascript' );
};
/* ========== Setup ======================================================== */
var isDraftifyLogPage = window.mtd.config.mw.wgPageName.indexOf( 'Special:খসড়া_লগ' ) === 0;
var isUserPage = window.mtd.config.mw.wgNamespaceNumber === 2 ||
window.mtd.config.mw.wgNamespaceNumber === 3;
if ( isDraftifyLogPage ) {
dynamicallyLoadScript(
window.mtd.config.mw.wgArticlePath.replace(
'$1', 'User:Yahya/MTD/draftifyLog.js'
)
);
return;
} else if ( isUserPage ) {
var user = window.mtd.config.mw.wgTitle.split( '/' )[ 0 ];
var url = mw.util.getUrl( 'Special:খসড়া_লগ/' + user );
mw.util.addPortletLink(
( window.m2d_portlet || 'p-personal' ),
url, 'খসড়া লগ', 'ca-m2dlog', null, null, null
);
return;
}
// Only operate in article namespace
if ( window.mtd.config.mw.wgNamespaceNumber !== 0 ) { return; }
// Don't draftify MainPage
if ( window.mtd.config.mw.wgIsMainPage === true ) { return; }
// Only operate for existing pages
if ( window.mtd.config.mw.wgCurRevisionId === 0 ) { return; }
// Only for articles
if ( window.mtd.config.mw.wgIsRedirect === true ) { return; }
dynamicallyLoadScript(
window.mtd.config.mw.wgArticlePath.replace(
'$1', 'User:Yahya/MTD/core.js'
)
);
} );
}() );
// </nowiki>
8nmc5auxlwczpcjiomy8e38d4adpsg7
User:Enbi/LTA-undo.js
2
174603
735883
2026-04-01T19:22:16Z
Enbi
72574
create (mostly inspired from [[w:en:user:LuniZunie/scripts/LTA-rollback.js]])
735883
javascript
text/javascript
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('.mw-rollback-link');
for (let i = 0; i < undoSpans.length; i++) {
processUndoLink(undoSpans[i]);
}
});
et755w5rmz0tmqi3euizw596c8ibbh4
735884
735883
2026-04-01T19:22:56Z
Enbi
72574
735884
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('.mw-rollback-link');
for (let i = 0; i < undoSpans.length; i++) {
processUndoLink(undoSpans[i]);
}
});
// </nowiki>
5jsiyx5a19kt9y4q321mly0v049rau6
735888
735884
2026-04-01T19:33:52Z
Enbi
72574
735888
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw.revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLink(undoSpans[i]);
}
function addLink(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid !== mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span'),
el = document.createElement('a');
el.addEventListener('click', function() {
el.className = 'restorer-loading';
restore(revid).always(function() {
el.className = '';
});
});
}
});
// </nowiki>
kqu7iwi7e8x747ifpoab90yybn9tei4
735890
735888
2026-04-01T19:35:34Z
Enbi
72574
735890
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLink(undoSpans[i]);
}
function addLink(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid !== mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span'),
el = document.createElement('a');
el.addEventListener('click', function() {
el.className = 'restorer-loading';
restore(revid).always(function() {
el.className = '';
});
});
}
});
// </nowiki>
hm6x5a5qd8mr7yqtn5q08n7aialbyey
735895
735890
2026-04-01T19:43:23Z
Enbi
72574
735895
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('.mw-history-undo');
for (let i in Array.from(undoSpans)) {
i.insertAdjacentHTML('afterend', 'LTA Testing testing');
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
96i3yfdkooy6isnzuf9sver0pad0nwn
735897
735895
2026-04-01T19:43:53Z
Enbi
72574
735897
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('.mw-history-undo');
for (let i in undoSpans) {
i.insertAdjacentHTML('afterend', 'LTA Testing testing');
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
ssxi9fmfu625exdh7a8xm8cefbsyk9f
735903
735897
2026-04-01T19:47:49Z
Enbi
72574
735903
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i in undoSpans) {
addLink(i);
}
function addLink(item) {
const revid = item.getAttribute('data-mw-revid');
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
hg1bn161sjjy9cdxuf9z6sqaj89e98e
735906
735903
2026-04-01T19:48:54Z
Enbi
72574
735906
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (var i = 0; i < undoSpans.length; i++) {
addLink(undoSpans[i]);
}
function addLink(item) {
const revid = item.getAttribute('data-mw-revid');
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
eq5o4e7c4bl3rhxvxb9afer1aj9dtt2
735910
735906
2026-04-01T19:50:36Z
Enbi
72574
735910
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (var i = 0; i < undoSpans.length; i++) {
addLinkHist(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid == mw.config.get('wgCurRevisionId')) return;
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
5n9e6yyhujorxyzbh01je41k2njpxvf
735914
735910
2026-04-01T19:55:53Z
Enbi
72574
735914
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkHist(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid == mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
}
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
gcyhgbm3b78ysufxbk5zzw569bw6oay
735915
735914
2026-04-01T19:56:19Z
Enbi
72574
735915
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkHist(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid == mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
nwtfol38aurvzxu4gnoy4kxjbozzaa7
735916
735915
2026-04-01T19:57:03Z
Enbi
72574
735916
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkHist(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid !== mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
2xn5qqq7s9tkb7cbwf0ixalfseaxb9f
735918
735916
2026-04-01T19:58:07Z
Enbi
72574
735918
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkHist(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
4umjkvrhl9uux4btl2avjahos2wvqkm
735920
735918
2026-04-01T20:02:11Z
Enbi
72574
735920
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
const isCurrent = item.querySelector('span.mw-uctop');
if (!isCurrent) return;
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
alnyhu6kkw1tgbo5rxifjkbg9e5uc4c
735921
735920
2026-04-01T20:05:59Z
Enbi
72574
735921
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
p3017ezn5qd68sahdk9it0v1gbzm0ge
735922
735921
2026-04-01T20:07:19Z
Enbi
72574
735922
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
//if (!isCurrent) return;
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
1zfc2gil0xfxq3woc8a8ldqe68nhahd
735923
735922
2026-04-01T20:07:50Z
Enbi
72574
735923
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
//if (!isCurrent) return;
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
h0fls7uysz4u2khike3kvr8ooss8w7g
735924
735923
2026-04-01T20:09:23Z
Enbi
72574
735924
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
//if (!isCurrent) return;
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
qqwpzqqu83e84yc300a9to0f2ufzci8
735926
735924
2026-04-01T20:11:02Z
Enbi
72574
735926
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
nb24ybb17fxi9hxftdi2vj3pgdzfuoz
735927
735926
2026-04-01T20:11:49Z
Enbi
72574
735927
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
n3qex17glllmg2qvgw1ycjsu6bno6cl
735928
735927
2026-04-01T20:12:26Z
Enbi
72574
735928
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
console.log('ah');
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
28evke6fmcgi4qxjuobv5wts57y4prg
735930
735928
2026-04-01T20:14:31Z
Enbi
72574
735930
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
console.log('ah');
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-uctop .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
qmtn83p8ys89bcjz2ft0ml0zuxpa3va
735931
735930
2026-04-01T20:15:02Z
Enbi
72574
735931
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
console.log('ah');
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-uctop + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
m9gqld56pfl7wdsv2csqo98of8whnky
735933
735931
2026-04-01T20:17:22Z
Enbi
72574
735933
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
console.log('ah');
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-uctop + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
console.log(mw.config.get('wgCanonicalSpecialPageName'));
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
tjox0wnxkgj52i0b5u8k46fe5cv1tqz
735934
735933
2026-04-01T20:18:21Z
Enbi
72574
735934
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
console.log(mw.config.get('wgCanonicalSpecialPageName'));
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
console.log('ah');
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-uctop + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
cgxcgw089e6e3r6x5t0953o7d7hnvcl
735935
735934
2026-04-01T20:21:01Z
Enbi
72574
735935
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
if (mw.config.get('wgCanonicalSpecialPageName' !== 'Contributions')) console.log('i');
console.log(mw.config.get('wgAction'));
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
console.log('ah');
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-uctop + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
hdgskk4qw9u4pvumg86zlroe6a482os
735936
735935
2026-04-01T20:22:31Z
Enbi
72574
735936
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
if (mw.config.get('wgCanonicalSpecialPageName' !== 'Contributions') && mw.config.get('wgAction') !== 'history') {
console.log('NOTHERE');
return;
}
console.log(mw.config.get('wgAction'));
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
console.log('ah');
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-uctop + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
a1sn980ea9hbq69rtjy2ncr11x64qd6
735937
735936
2026-04-01T20:24:00Z
Enbi
72574
735937
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
if (mw.config.get('wgCanonicalSpecialPageName' !== 'Contributions') && mw.config.get('wgAction') !== 'history') {
console.log('NOTHEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
return;
}
console.log(mw.config.get('wgAction'));
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
console.log('ah');
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-uctop + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
hygszq3mdxr6zx5jxdxpg83y0nqjsr3
735939
735937
2026-04-01T20:25:15Z
Enbi
72574
735939
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
if (mw.config.get('wgCanonicalSpecialPageName') !== 'Contributions' && mw.config.get('wgAction') !== 'history') {
console.log('NOTHEREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
return;
} else {
console.log()
}
console.log(mw.config.get('wgAction'));
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
addLinkContrib(undoSpans[i]);
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
console.log('ah');
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-uctop + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
tkrw741ifxus26pegf02tfpd42l9416
735942
735939
2026-04-01T20:34:24Z
Enbi
72574
735942
javascript
text/javascript
// {{lowercase title}}
// <nowiki>
mw.loader.using(['mediawiki.util', 'mediawiki.api'], async () => {
if (!(mw.config.get('wgCanonicalSpecialPageName') === 'Contributions' || (mw.config.get('wgAction') === 'history' && !mw.config.get('wgPageIsProbablyEditable')))) {
return;
}
console.log(mw.config.get('wgAction'));
const isDiff = mw.config.get('wgDiffOldId');
const isContribs = mw.config.get('wgCanonicalSpecialPageName') === 'Contributions';
if (mw.config.get('wgAction') !== 'history' && !isDiff && !isContribs) return;
const api = new mw.Api();
const pageName = mw.config.get('wgPageName');
function processUndoLink(undoSpan) {
const container = undoSpan.closest(isDiff ? 'td' : 'li');
if (!container) return;
const userLinkElem = container.querySelector('.mw-userlink') || document.querySelector('#firstHeading bdi');
if (!userLinkElem) return;
const revisionUser = userLinkElem.textContent;
let targetPage = pageName;
if (isContribs) {
const pageLinkElem = container.querySelector('.mw-contributions-title');
if (pageLinkElem) {
targetPage = pageLinkElem.textContent;
}
}
const ltaButton = document.createElement('a');
ltaButton.textContent = 'LTA';
ltaButton.href = '#';
ltaButton.addEventListener('click', async function(event) {
event.preventDefault();
ltaButton.style.color = 'gray';
ltaButton.textContent = 'Rolling back...';
try {
await api.postWithToken('rollback', {
action: 'rollback',
title: targetPage,
user: revisionUser,
summary: 'rv lta',
});
mw.notify('Revision successfully rolled back, reloading...', { type: 'success' });
window.location.reload();
} catch (error) {
mw.notify('Error rolling back revision: ' + error, { type: 'error' });
setTimeout(() => window.location.reload(), 2000);
}
});
const span = document.createElement('span');
if (isDiff) {
span.append(document.createTextNode('('));
span.append(ltaButton);
span.append(document.createTextNode(')'));
undoSpan.after(document.createTextNode(' '));
undoSpan.after(span);
} else {
span.append(ltaButton);
if (undoSpan.parentElement) undoSpan.parentElement.after(span);
}
}
const undoSpans = document.querySelectorAll('li[data-mw-revid]');
for (let i = 0; i < undoSpans.length; i++) {
if (mw.config.get('wgCanonicalSpecialPageName') === 'Contributions') {
addLinkContrib(undoSpans[i]);
} else {
addLinkHist(undoSpans[i]);
}
}
function addLinkHist(item) {
const revid = item.getAttribute('data-mw-revid');
if (revid != mw.config.get('wgCurRevisionId')) return;
const links = item.querySelector('.comment + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
function addLinkContrib(item) {
console.log(item);
const isCurrent = item.querySelector('span.mw-uctop');
console.log(isCurrent);
if (!isCurrent) return;
console.log('ah');
const revid = item.getAttribute('data-mw-revid');
const links = item.querySelector('.mw-uctop + .mw-changeslist-links');
if (!links) return;
const parent = document.createElement('span')
const el = document.createElement('a');
el.textContent = 'LTA undo';
parent.appendChild(el);
links.appendChild(parent);
console.log(revid);
}
// function addLink(item) {
// const spans = document.query
// }
});
// </nowiki>
grjxck14fbf3ym3pkj7mn1uzez24u5v
User:BDavis (WMF)/Sandbox/Intbar
2
174607
735925
2026-04-01T20:11:00Z
BDavis (WMF)
23231
Copied from https://de.wikipedia.beta.wmcloud.org/wiki/Special:Permalink/36253
735925
wikitext
text/x-wiki
Diese Seite wird genutzt, um Darstellungsvarianten von Wiki-TeX zu testen.
== Große Symbole ==
=== Normale Integrale über einer Menge ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
| Normales Integral
| <code>\int_A f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\int_A f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\int_A f(x) \mathrm{d} x</math>
| <math>\int_A f(x) \mathrm{d} x</math>
|-
| Normales Integral im Displaystyle
| <code>\displaystyle \int_A f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\displaystyle \int_A f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\displaystyle \int_A f(x) \mathrm{d} x</math>
| <math>\displaystyle \int_A f(x) \mathrm{d} x</math>
|-
| Normales Integral im Textstyle
| <code>\textstyle \int_A f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\textstyle \int_A f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\textstyle \int_A f(x) \mathrm{d} x</math>
| <math>\textstyle \int_A f(x) \mathrm{d} x</math>
|-
| Normales Integral im Displaystyle und Limits
| <code>\displaystyle \int\limits_A f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\displaystyle \int\limits_A f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\displaystyle \int\limits_A f(x) \mathrm{d} x</math>
| <math>\displaystyle \int\limits_A f(x) \mathrm{d} x</math>
|-
| Normales Integral im Textstyle mit Limits
| <code>\textstyle \int\limits_A f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\textstyle \int\limits_A f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\textstyle \int\limits_A f(x) \mathrm{d} x</math>
| <math>\textstyle \int\limits_A f(x) \mathrm{d} x</math>
|}
<math>\int\limits_{Q_{j}}^{}</math>
=== Normale Integrale mit zwei Grenzen ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
| Normales Integral
| <code>\int_0^\infty f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\int_0^\infty f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\int_0^\infty f(x) \mathrm{d} x</math>
| <math>\int_0^\infty f(x) \mathrm{d} x</math>
|-
| Normales Integral im Displaystyle
| <code>\displaystyle \int_0^\infty f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\displaystyle \int_0^\infty f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\displaystyle \int_0^\infty f(x) \mathrm{d} x</math>
| <math>\displaystyle \int_0^\infty f(x) \mathrm{d} x</math>
|-
| Normales Integral im Textstyle
| <code>\textstyle \int_0^\infty f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\textstyle \int_0^\infty f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\textstyle \int_0^\infty f(x) \mathrm{d} x</math>
| <math>\textstyle \int_0^\infty f(x) \mathrm{d} x</math>
|-
| Normales Integral im Displaystyle und Limits
| <code>\displaystyle \int\limits_0^\infty f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\displaystyle \int\limits_0^\infty f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\displaystyle \int\limits_0^\infty f(x) \mathrm{d} x</math>
| <math>\displaystyle \int\limits_0^\infty f(x) \mathrm{d} x</math>
|-
| Normales Integral im Textstyle mit Limits
| <code>\textstyle \int\limits_0^\infty f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\textstyle \int\limits_0^\infty f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\textstyle \int\limits_0^\infty f(x) \mathrm{d} x</math>
| <math>\textstyle \int\limits_0^\infty f(x) \mathrm{d} x</math>
|}
=== Umlaufintegral ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
| Umlaufintegral
| <code>\oint_\gamma f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\oint_\gamma f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\oint_\gamma f(x) \mathrm{d} x</math>
| <math>\oint_\gamma f(x) \mathrm{d} x</math>
|-
| Umlaufintegral im Displaystyle
| <code>\displaystyle \oint_\gamma f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\displaystyle \oint_\gamma f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\displaystyle \oint_\gamma f(x) \mathrm{d} x</math>
| <math>\displaystyle \oint_\gamma f(x) \mathrm{d} x</math>
|-
| Umlaufintegral im Textstyle
| <code>\textstyle \oint_\gamma f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\textstyle \oint_\gamma f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\textstyle \oint_\gamma f(x) \mathrm{d} x</math>
| <math>\textstyle \oint_\gamma f(x) \mathrm{d} x</math>
|-
| Umlaufintegral im Displaystyle und Limits
| <code>\displaystyle \oint\limits_\gamma f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\displaystyle \oint\limits_\gamma f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\displaystyle \oint\limits_\gamma f(x) \mathrm{d} x</math>
| <math>\displaystyle \oint\limits_\gamma f(x) \mathrm{d} x</math>
|-
| Umlaufintegral im Textstyle mit Limits
| <code>\textstyle \oint\limits_\gamma f(x) \mathrm{d} x</code>
| <math forcemathmode="mathml">\textstyle \oint\limits_\gamma f(x) \mathrm{d} x</math>
| <math forcemathmode="native">\textstyle \oint\limits_\gamma f(x) \mathrm{d} x</math>
| <math>\textstyle \oint\limits_\gamma f(x) \mathrm{d} x</math>
|}
=== Mittelwertintegrale ===
==== Serverseitiges MathMl als SVG ====
* Integral mit zwei Strichen: <math forcemathmode="mathml">\intBar_A f(x) \mathrm{d} x </math>
* Integral mit einem Strich: <math forcemathmode="mathml">\intbar_A f(x) \mathrm{d} x </math>
* Integral mit einem Strich in Textstyle: <math forcemathmode="mathml">\textstyle \intbar_A f(x) \mathrm{d} x </math>
* Integral mit einem Strich und mit Limits: <math forcemathmode="mathml">\intBar\limits_A f(x) \mathrm{d} x </math>
==== Natives MathMl ====
*intbar in native mode mit textstyle <math forcemathmode="native">\textstyle \intbar \intBar</math>
* intbar in native mode mit displaystyle <math forcemathmode="native">\displaystyle \intbar \intBar</math>
* intbar in native mode mit displaystyle und limits <math forcemathmode="native">\displaystyle \intbar\limits_0^\infty \intBar</math>
=== Weitere Integrale ===
==== Serverseitiges MathMl als SVG ====
# <math forcemathmode="mathml">\oint_{\partial \Sigma} \langle F, \tau \rangle \,\mathrm{d} s = \iint_\Sigma \langle \operatorname{rot} \,F, \nu \rangle \,\mathrm{d} S = \iint_\Sigma\left( \frac{\partial v_2}{\partial x} - \frac{\partial v_1}{\partial y} \right) \mathrm{d} x \mathrm{d} y</math>
# <math forcemathmode="mathml">\iiint_{V_\mathrm{Kart}} f(x, y, z) \,\mathrm dx \mathrm dy \mathrm dz
= \iiint_{V_\mathrm{Kug}} \tilde f(r, \theta, \varphi) \cdot r^2 \sin\theta \,\mathrm{d}r \mathrm{d}\theta \mathrm{d}\varphi </math>
==== Natives MathMl ====
# <math forcemathmode="native">\oint_{\partial \Sigma} \langle F, \tau \rangle \,\mathrm{d} s = \iint_\Sigma \langle \operatorname{rot} \,F, \nu \rangle \,\mathrm{d} S = \iint_\Sigma\left( \frac{\partial v_2}{\partial x} - \frac{\partial v_1}{\partial y} \right) \mathrm{d} x \mathrm{d} y</math> [[phab:T382684|<s>phab:T382684</s>]], [[phab:T413713|<s>phab:T413713</s>]]
# <math forcemathmode="native">\iiint_{V_\mathrm{Kart}} f(x, y, z) \,\mathrm dx \mathrm dy \mathrm dz
= \iiint_{V_\mathrm{Kug}} \tilde f(r, \theta, \varphi) \cdot r^2 \sin\theta \,\mathrm{d}r \mathrm{d}\theta \mathrm{d}\varphi </math> [[phab:T413713|<s>phab:T413713</s>]]
=== Volumen und Kurvenintegrale aus Stix macros ===
* <math>\oiiint_A f(x) \mathrm{d} x </math>
* <math>\oiint_A f(x) \mathrm{d} x </math>
* <math>\ointctrclockwise_A f(x) \mathrm{d} x </math>
* <math>\ointctrclockwise_A f(x) \mathrm{d} x </math>
* <math>\varointclockwise_A f(x) \mathrm{d} x </math>
* <math>\varointclockwise_A f(x) \mathrm{d} x </math>
=== Standardsummenzeichen ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
| Summenzeichen
| <code>\sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</code>
| <math forcemathmode="mathml">\sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
| <math forcemathmode="native">\sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
| <math>\sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
|-
| Summenzeichen im Displaystyle
| <code>\displaystyle \sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</code>
| <math forcemathmode="mathml">\displaystyle \sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
| <math forcemathmode="native">\displaystyle \sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
| <math>\displaystyle \sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
|-
| Summenzeichen im Textstyle
| <code>\textstyle \sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</code>
| <math forcemathmode="mathml">\textstyle \sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
| <math forcemathmode="native">\textstyle \sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
| <math>\textstyle \sum_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
|-
| Summenzeichen im Displaystyle und Nolimits
| <code>\displaystyle \sum\nolimits_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</code>
| <math forcemathmode="mathml">\displaystyle \sum\nolimits_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
| <math forcemathmode="native">\displaystyle \sum\nolimits_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
| <math>\displaystyle \sum\nolimits_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
|-
| Summenzeichen im Textstyle mit Limits
| <code>\textstyle \sum\limits_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</code>
| <math forcemathmode="mathml">\textstyle \sum\limits_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
| <math forcemathmode="native">\textstyle \sum\limits_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
| <math>\textstyle \sum\limits_{n=1}^{\infty} \frac{\sin (2\pi nx )}{n}</math>
|}
=== Summen ===
==== Oplus-Summe ====
===== Serverseitiges MathML =====
# <math forcemathmode="mathml">\mathrm T^{(n)}(V) := \bigoplus_{i=0}^nV^{\otimes i}</math>
===== Natives MathMl =====
# <math forcemathmode="native">\mathrm T^{(n)}(V) := \bigoplus_{i=0}^nV^{\otimes i}</math>
==== Weitere Summen und Produkte ====
===== Serverseitiges MathML =====
# <math forcemathmode="mathml"> F_N(s)=\prod_{{p \leq N \atop p \ \text{Primzahl}}} \sum_{k=0}^{\infty} \frac{f(p^k)}{p^{ks}} </math>
# <math forcemathmode="mathml"> F_N(s)=\prod\limits_{{p \leq N \atop p \ \text{Primzahl}}} \sum_{k=0}^{\infty} \frac{f(p^k)}{p^{ks}} </math>
# <math forcemathmode="mathml"> \sum_{I,J} f_{I,J} \mathrm{d} z_I \wedge \mathrm{d} \overline{z}_J := \sum^{}_{\stackrel{1\leq i_1<\ldots<i_p\leq p}{1\leq j_1<\ldots<j_q\leq q}} f_{i_1, \ldots i_p, j_1, \ldots j_q} \mathrm{d}z_{i_1} \wedge \cdots \wedge \mathrm{d}z_{i_p} \wedge \mathrm{d} \overline{z}_{j_1} \wedge \cdots \wedge \mathrm{d} \overline{z}_{j_q}</math>
# <math forcemathmode="mathml">\begin{align}
\vartheta_1(z,q) &= \sum_{n=-\infty}^{\infty} \\
\vartheta_2(z,q) &= \sum\limits_{n=-\infty}^{\infty}
\end{align}</math>
===== Natives MathMl =====
# <math forcemathmode="native"> F_N(s)=\prod_{{p \leq N \atop p \ \text{Primzahl}}} \sum_{k=0}^{\infty} \frac{f(p^k)}{p^{ks}} </math>
# <math forcemathmode="native"> F_N(s)=\prod\limits_{{p \leq N \atop p \ \text{Primzahl}}} \sum_{k=0}^{\infty} \frac{f(p^k)}{p^{ks}} </math>
# <math forcemathmode="native"> \sum_{I,J} f_{I,J} \mathrm{d} z_I \wedge \mathrm{d} \overline{z}_J := \sum^{}_{\stackrel{1\leq i_1<\ldots<i_p\leq p}{1\leq j_1<\ldots<j_q\leq q}} f_{i_1, \ldots i_p, j_1, \ldots j_q} \mathrm{d}z_{i_1} \wedge \cdots \wedge \mathrm{d}z_{i_p} \wedge \mathrm{d} \overline{z}_{j_1} \wedge \cdots \wedge \mathrm{d} \overline{z}_{j_q}</math>
# <math forcemathmode="native">\begin{align}
\vartheta_1(z,q) &= \sum_{n=-\infty}^{\infty} \\
\vartheta_2(z,q) &= \sum\limits_{n=-\infty}^{\infty}
\end{align}</math>
== Grenzwerte ==
=== Limes ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
| Limes
| <code>\lim_{\delta_\tau \to 0}</code>
| <math forcemathmode="mathml">\lim_{\delta_\tau \to 0}</math>
| <math forcemathmode="native">\lim_{\delta_\tau \to 0}</math>
| <math>\lim_{\delta_\tau \to 0}</math>
|-
| Limes
| <code>\lim\nolimits_{\delta_\tau \to 0}</code>
| <math forcemathmode="mathml">\lim\nolimits_{\delta_\tau \to 0}</math>
| <math forcemathmode="native">\lim\nolimits_{\delta_\tau \to 0}</math>
| <math>\lim\nolimits_{\delta_\tau \to 0}</math>
|-
| Limes
| <code>\lim\limits_{\delta_\tau \to 0}</code>
| <math forcemathmode="mathml">\lim\limits_{\delta_\tau \to 0}</math>
| <math forcemathmode="native">\lim\limits_{\delta_\tau \to 0}</math>
| <math>\lim\limits_{\delta_\tau \to 0}</math>
|-
| Limes
| <code>\displaystyle \lim\nolimits_{\delta_\tau \to 0}</code>
| <math forcemathmode="mathml">\displaystyle \lim\nolimits_{\delta_\tau \to 0}</math>
| <math forcemathmode="native">\displaystyle \lim\nolimits_{\delta_\tau \to 0}</math>
| <math>\displaystyle \lim\nolimits_{\delta_\tau \to 0}</math>
|-
| Limes
| <code>\textstyle \lim_{\delta_\tau \to 0}</code>
| <math forcemathmode="mathml">\textstyle \lim_{\delta_\tau \to 0}</math>
| <math forcemathmode="native">\textstyle \lim_{\delta_\tau \to 0}</math>
| <math>\textstyle \lim_{\delta_\tau \to 0}</math>
|-
| Limes
| <code>\textstyle \lim\limits_{\delta_\tau \to 0}</code>
| <math forcemathmode="mathml">\textstyle \lim\limits_{\delta_\tau \to 0}</math>
| <math forcemathmode="native">\textstyle \lim\limits_{\delta_\tau \to 0}</math>
| <math>\textstyle \lim\limits_{\delta_\tau \to 0}</math>
|}
<math>f'(x) = \frac{\mathrm d}{\mathrm dx} f(x) = \lim \limits_{\Delta x \to 0} \left( \frac{\Delta f(x)}{\Delta x} \right)</math>
=== Direkter Limes ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
| Direkter Limes
| <code>\varinjlim_{n}</code>
| <math forcemathmode="mathml">\varinjlim_{n}</math>
| <math forcemathmode="native">\varinjlim_{n}</math>
| <math>\varinjlim_{n}</math>
|-
| Direkter Limes
| <code>\varinjlim\nolimits_{n}</code>
| <math forcemathmode="mathml">\varinjlim\nolimits_{n}</math>
| <math forcemathmode="native">\varinjlim\nolimits_{n}</math>
| <math>\varinjlim\nolimits_{n}</math>
|-
| Direkter Limes
| <code>\varinjlim\limits_{n}</code>
| <math forcemathmode="mathml">\varinjlim\limits_{n}</math>
| <math forcemathmode="native">\varinjlim\limits_{n}</math>
| <math>\varinjlim\limits_{n}</math>
|-
| Direkter Limes
| <code>\displaystyle \varinjlim\nolimits_{n}</code>
| <math forcemathmode="mathml">\displaystyle \varinjlim\nolimits_{n}</math>
| <math forcemathmode="native">\displaystyle \varinjlim\nolimits_{n}</math>
| <math>\displaystyle \varinjlim\nolimits_{n}</math>
|-
| Direkter Limes
| <code>\textstyle \varinjlim_{n}</code>
| <math forcemathmode="mathml">\textstyle \varinjlim_{n}</math>
| <math forcemathmode="native">\textstyle \varinjlim_{n}</math>
| <math>\textstyle \varinjlim_{n}</math>
|-
| Direkter Limes
| <code>\textstyle \varinjlim\limits_{n}</code>
| <math forcemathmode="mathml">\textstyle \varinjlim\limits_{n}</math>
| <math forcemathmode="native">\textstyle \varinjlim\limits_{n}</math>
| <math>\textstyle \varinjlim\limits_{n}</math>
|}
== Brüche ==
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
| Bruch
| <code>c + \frac{a}{b}</code>
| <math forcemathmode="mathml">c + \frac{a}{b}</math>
| <math forcemathmode="native">c + \frac{a}{b}</math>
| <math>c + \frac{a}{b}</math>
|-
| Bruch
| <code>c + \dfrac{a}{b}</code>
| <math forcemathmode="mathml">c + \dfrac{a}{b}</math>
| <math forcemathmode="native">c + \dfrac{a}{b}</math>
| <math>c + \dfrac{a}{b}</math>
|-
| Bruch
| <code>c + \tfrac{a}{b}</code>
| <math forcemathmode="mathml">c + \tfrac{a}{b}</math>
| <math forcemathmode="native">c + \tfrac{a}{b}</math>
| <math>c + \tfrac{a}{b}</math>
|-
| Bruch
| <code>d+ \frac{2}{c + \frac{a}{b}}</code>
| <math forcemathmode="mathml">d+ \frac{2}{c + \frac{a}{b}}</math>
| <math forcemathmode="native">d+ \frac{2}{c + \frac{a}{b}}</math>
| <math>d+ \frac{2}{c + \frac{a}{b}}</math>
|-
| Bruch
| <code>d+ \frac{2}{c + \dfrac{a}{b}}</code>
| <math forcemathmode="mathml">d+ \dfrac{2}{c + \dfrac{a}{b}}</math>
| <math forcemathmode="native">d+ \dfrac{2}{c + \dfrac{a}{b}}</math>
| <math>d+ \dfrac{2}{c + \dfrac{a}{b}}</math>
|-
| Bruch
| <code>d+ \tfrac{2}{c + \tfrac{a}{b}}</code>
| <math forcemathmode="mathml">d+ \tfrac{2}{c + \tfrac{a}{b}}</math>
| <math forcemathmode="native">d+ \tfrac{2}{c + \tfrac{a}{b}}</math>
| <math>d+ \tfrac{2}{c + \tfrac{a}{b}}</math>
|-
| Bruch
| <code>\frac{2}{4} = 0.5 \qquad \frac{2}{c + \frac{2}{d + \frac{2}{4}}} = a</code>
| <math forcemathmode="mathml">\frac{2}{4} = 0.5 \qquad \frac{2}{c + \frac{2}{d + \frac{2}{4}}} = a</math>
| <math forcemathmode="native">\frac{2}{4} = 0.5 \qquad \frac{2}{c + \frac{2}{d + \frac{2}{4}}} = a</math>
| <math>\frac{2}{4} = 0.5 \qquad \frac{2}{c + \frac{2}{d + \frac{2}{4}}} = a</math>
|-
| Bruch
| <code>\dfrac{2}{4} = 0.5 \qquad \dfrac{2}{c + \dfrac{2}{d + \dfrac{2}{4}}} = a</code>
| <math forcemathmode="mathml">\dfrac{2}{4} = 0.5 \qquad \dfrac{2}{c + \dfrac{2}{d + \dfrac{2}{4}}} = a</math>
| <math forcemathmode="native">\dfrac{2}{4} = 0.5 \qquad \dfrac{2}{c + \dfrac{2}{d + \dfrac{2}{4}}} = a</math>
| <math>\dfrac{2}{4} = 0.5 \qquad \dfrac{2}{c + \dfrac{2}{d + \dfrac{2}{4}}} = a</math>
|-
| Bruch
| <code>\tfrac{2}{4} = 0.5 \qquad \tfrac{2}{c + \tfrac{2}{d + \tfrac{2}{4}}} = a</code>
| <math forcemathmode="mathml">\tfrac{2}{4} = 0.5 \qquad \tfrac{2}{c + \tfrac{2}{d + \tfrac{2}{4}}} = a</math>
| <math forcemathmode="native">\tfrac{2}{4} = 0.5 \qquad \tfrac{2}{c + \tfrac{2}{d + \tfrac{2}{4}}} = a</math>
| <math>\tfrac{2}{4} = 0.5 \qquad \tfrac{2}{c + \tfrac{2}{d + \tfrac{2}{4}}} = a</math>
|}
== Klammern ==
=== Eckige Klammern ===
==== Serverseitiges MathML ====
# <math forcemathmode="mathml">\gamma \,x + \ln\bigl[\Gamma(x + 1)\bigr]= \sum_{n=1}^{\infty}\biggl[ \frac{x}{n} - \ln\biggl(1 + \frac{x}{n}\biggr) \biggr]</math>
==== Natives MathMl ====
# <math forcemathmode="native">\gamma \,x + \ln\bigl[\Gamma(x + 1)\bigr]= \sum_{n=1}^{\infty}\biggl[ \frac{x}{n} - \ln\biggl(1 + \frac{x}{n}\biggr) \biggr]</math>
=== Runde Klammern ===
==== Serverseitiges MathML ====
# <math forcemathmode="mathml">\bigvee\limits_{i\in I} \mathcal{A}_i=\sigma\left(\bigcup\limits_{i\in I} \mathcal{A}_i\right)</math>
==== Natives MathMl ====
# <math forcemathmode="native"> \bigvee\limits_{i\in I} \mathcal{A}_i=\sigma\left(\bigcup\limits_{i\in I} \mathcal{A}_i\right)</math>
=== Runde Biggr-Klammern ===
==== Serverseitiges MathML ====
# <math forcemathmode="mathml"> \biggl(_i \frac{1}{n} \biggr)</math>
# <math forcemathmode="mathml">\bigcap_{n\in\N} A_n = \biggl(\bigcup_{n\in\N} A_n^{\mathsf c}\biggr)^{\!\!\mathsf c}</math>
==== Natives MathMl ====
# <math forcemathmode="native"> \biggl(_i \frac{1}{n} \biggr)</math> [[phab:T352946]]
# <math forcemathmode="native">\bigcap_{n\in\N} A_n = \biggl(\bigcup_{n\in\N} A_n^{\mathsf c}\biggr)^{\!\!\mathsf c}</math> [[phab:T352946]]
=== Geschweifte Klammern ===
==== Serverseitiges MathMl ====
# <math forcemathmode="mathml">\left\{
\begin{array}{rl}
\frac {1} {2 \pi} \ln {|x|}\ ,&n = 2,\\
-\frac {1} {(n-2)\,\omega_n} \frac {1} {|x|^{n-2}}\ ,&n > 2\\
\end{array}
\right. </math>
==== Natives MathMl ====
# <math forcemathmode="native">\left\{
\begin{array}{rl}
\frac {1} {2 \pi} \ln {|x|}\ ,&n = 2,\\
-\frac {1} {(n-2)\,\omega_n} \frac {1} {|x|^{n-2}}\ ,&n > 2\\
\end{array}
\right. </math>
=== Angle-Klammern ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
| Angle-Klammern
| <code>\left\langle \begin{pmatrix} 1\\ -1 \\ 0 \\ 1 \end{pmatrix}, \begin{pmatrix} 0 \\ 0 \\ 1 \\ -1 \end{pmatrix} \right\rangle</code>
| <math forcemathmode="mathml">\left\langle \begin{pmatrix} 1\\ -1 \\ 0 \\ 1 \end{pmatrix}, \begin{pmatrix} 0 \\ 0 \\ 1 \\ -1 \end{pmatrix} \right\rangle</math>
| <math forcemathmode="native">\left\langle \begin{pmatrix} 1\\ -1 \\ 0 \\ 1 \end{pmatrix}, \begin{pmatrix} 0 \\ 0 \\ 1 \\ -1 \end{pmatrix} \right\rangle</math>
| <math>\left\langle \begin{pmatrix} 1\\ -1 \\ 0 \\ 1 \end{pmatrix}, \begin{pmatrix} 0 \\ 0 \\ 1 \\ -1 \end{pmatrix} \right\rangle</math>
|}
== Binomialkoeffizienten ==
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
| Binomialkoeffizient
| <code>\binom{n}{k}</code>
| <math forcemathmode="mathml">\binom{n}{k}</math>
| <math forcemathmode="native">\binom{n}{k}</math>
| <math>\binom{n}{k}</math>
|-
| Binomialkoeffizient in Algin-Umgebung
| <code>\begin{align} \binom{n}{k} &= \frac{n!}{k! \cdot (n-k)!}\end{align}</code>
| <math forcemathmode="mathml">\begin{align}
\binom{n}{k} &= \frac{n!}{k! \cdot (n-k)!}
\end{align}</math>
| <math forcemathmode="native">\begin{align}
\binom{n}{k} &= \frac{n!}{k! \cdot (n-k)!}
\end{align}</math>
| <math>\begin{align}
\binom{n}{k} &= \frac{n!}{k! \cdot (n-k)!}
\end{align}</math>
|-
| Binomialkoeffizient mit Textstyle
| <code>\tbinom{n}{k}</code>
| <math forcemathmode="mathml">\tbinom{n}{k}</math>
| <math forcemathmode="native">\tbinom{n}{k}</math>
| <math>\tbinom{n}{k}</math>
|-
| Binomialkoeffizient in Algin-Umgebung mit Textstyle
| <code>\begin{align} \tbinom{n}{k} &= \frac{n!}{k! \cdot (n-k)!}\end{align}</code>
| <math forcemathmode="mathml">\begin{align}
\tbinom{n}{k} &= \tfrac{n!}{k! \cdot (n-k)!}
\end{align}</math>
| <math forcemathmode="native">\begin{align}
\tbinom{n}{k} &= \tfrac{n!}{k! \cdot (n-k)!}
\end{align}</math>
| <math>\begin{align}
\tbinom{n}{k} &= \tfrac{n!}{k! \cdot (n-k)!}
\end{align}</math>
|-
| alter Binomialkoeffizient
| <code>{n \choose k}</code>
| <math forcemathmode="mathml">{n \choose k}</math>
| <math forcemathmode="native">{n \choose k}</math>
| <math>{n \choose k}</math>
|-
| alter Binomialkoeffizient in Algin-Umgebung
| <code>\begin{align} {n \choose k} &= \frac{n!}{k! \cdot (n-k)!}\end{align}</code>
| <math forcemathmode="mathml">\begin{align}
{n \choose k} &= \frac{n!}{k! \cdot (n-k)!}
\end{align}</math>
| <math forcemathmode="native">\begin{align}
{n \choose k} &= \frac{n!}{k! \cdot (n-k)!}
\end{align}</math>
| <math>\begin{align}
{n \choose k} &= \frac{n!}{k! \cdot (n-k)!}
\end{align}</math>
|-
| alter Binomialkoeffizient mit Strichen geklammert
| <code>\left|{M\choose k}\right|</code>
| <math forcemathmode="mathml">\left|{M\choose k}\right|</math>
| <math forcemathmode="native">\left|{M\choose k}\right|</math>
| <math>\left|{M\choose k}\right|</math>
|}
== Buchstaben ==
=== Operatorname ===
==== Serverseitiges MathML ====
# <math forcemathmode="mathml">\operatorname{Hom}</math>
==== Natives MathMl ====
# <math forcemathmode="native">\operatorname{Hom}</math>
=== Bf-Stil ===
==== Serverseitiges MathML ====
# <math forcemathmode="mathml">{\bf Spec}, \bf A, \bf B, \bf C, \bf D, \bf E, \bf F, \bf G, \bf a, \bf 1, \bf{2 3 4 5 6 7 8 9}</math>
==== Natives MathMl ====
# <math forcemathmode="native">{\bf Spec}, \bf A, \bf B, \bf C, \bf D, \bf E, \bf F, \bf G, \bf a, \bf 1, \bf{2 3 4 5 6 7 8 9}</math> [[phab:T382672|<s>phab:T382672</s>]]
=== Mathbb ===
==== Serverseitiges MathML ====
# <math forcemathmode="mathml">\mathbb{N}, \mathbb{Z}, \mathbb{Q}, \mathbb{R}, \R, \mathbb{C}, \Complex, \mathbb{H}, \mathbb{a}, \mathbb{1}</math> [[phab:T279805]]
==== Natives MathMl ====
# <math forcemathmode="native">\mathbb{N}, \mathbb{Z}, \mathbb{Q}, \mathbb{R}, \R, \mathbb{C}, \Complex, \mathbb{H}, \mathbb{a}, \mathbb{1}</math>
=== Mathcal ===
==== Serverseitiges MathML ====
# <math forcemathmode="mathml">\mathcal{A B C D E F G H I J K L M} \mathcal{N} \mathcal{a} \mathcal{1}</math>
==== Natives MathMl ====
# <math forcemathmode="native">\mathcal{A B C D E F G H I J K L M} \mathcal{N} \mathcal{a} \mathcal{1}</math>
== Sonderzeichen ==
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
|D’Alembert-Operator
|<code>\square</code>
|<math forcemathmode="mathml">\square</math>
|<math forcemathmode="native">\square</math> [[phab:T382681]]
|<math>\square</math>
|-
|Bindestrich
|<code>\text{-}</code>
|<math forcemathmode="mathml">\text{-}</math>
|<math forcemathmode="native">\text{-}</math>
|<math>\text{-}</math>
|-
|Nicht in
|<code>\notin</code>
|<math forcemathmode="mathml">\notin</math>
|<math forcemathmode="native">\notin</math>
|<math>\notin</math>
|-
|Nicht in
|<code>\not\in</code>
|<math forcemathmode="mathml">\not\in</math>
|<math forcemathmode="native">\not\in</math>
|<math>\not\in</math>
|-
|Ungleich
|<code>\neq</code>
|<math forcemathmode="mathml">\neq</math>
|<math forcemathmode="native">\neq</math>
|<math>\neq</math>
|-
|Ungleich
|<code>\not=</code>
|<math forcemathmode="mathml">\not=</math>
|<math forcemathmode="native">\not=</math>
|<math>\not=</math>
|-
|Nicht kleiner
|<code>\not<</code>
|<math forcemathmode="mathml">\not<</math>
|<math forcemathmode="native">\not<</math>
|<math>\not<</math>
|-
|Nicht größer
|<code>\not></code>
|<math forcemathmode="mathml">\not></math>
|<math forcemathmode="native">\not></math>
|<math>\not></math>
|-
|Nicht kleiner-gleich
|<code>\not\leq</code>
|<math forcemathmode="mathml">\not\leq</math>
|<math forcemathmode="native">\not\leq</math>
|<math>\not\leq</math>
|}
== Funktionen ==
=== Determinante mit Potenz und Nolimits===
==== Serverseitiges MathMl ====
#<math>\det\nolimits^{\frac{1}{2}}</math>
==== Natives MathMl ====
#<math forcemathmode="native">\det\nolimits^{\frac{1}{2}}</math> [[phab:T382716|<s>phab:T382716</s>]] [[phab:T378257|<s>phab:T378257</s>]] [[phab:T382813|<s>phab:T382813</s>]]
=== Determinante mit Potenz ohne Nolimits ===
==== Serverseitiges MathMl ====
#<math>\det^{\frac{1}{2}}</math>
==== Natives MathMl ====
#<math forcemathmode="native">\det^{\frac{1}{2}}</math>
=== Supremum ===
==== Serverseitiges MathMl ====
<math>\mathrm{ess} \sup</math>
==== Natives MathMl ====
<math forcemathmode="native">\mathrm{ess} \sup</math>
=== Wurzel ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
|Wurzel
|<code>\sqrt{27}</code>
|<math forcemathmode="mathml">\sqrt{27}</math>
|<math forcemathmode="native">\sqrt{27}</math>
|<math>\sqrt{27}</math>
|-
|3. Wurzel
|<code>\sqrt[3]{27}</code>
|<math forcemathmode="mathml">\sqrt[3]{27}</math>
|<math forcemathmode="native">\sqrt[3]{27}</math>
|<math>\sqrt[3]{27}</math>
|}
== Matrizen ==
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
|Pmatrix
|<code>\begin{pmatrix} 3 & 2 & 1 \\ 1 & 0 & 2 \end{pmatrix} \in \R^{2 \times 3}</code>
|<math forcemathmode="mathml">\begin{pmatrix} 3 & 2 & 1 \\ 1 & 0 & 2 \end{pmatrix} \in \R^{2 \times 3}</math>
|<math forcemathmode="native">\begin{pmatrix} 3 & 2 & 1 \\ 1 & 0 & 2 \end{pmatrix} \in \R^{2 \times 3}</math>
|<math>\begin{pmatrix} 3 & 2 & 1 \\ 1 & 0 & 2 \end{pmatrix} \in \R^{2 \times 3}</math>
|-
|Smallmatrix
|<code>\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)</code>
|<math forcemathmode="mathml">\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)</math>
|<math forcemathmode="native">\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)</math>
|<math>\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)</math>
|}
== Fließtext (Satz von Atkinson) ==
=== MathMl ===
Nach dem [[Satz von Atkinson]] ist ein Operator <math>A \colon X\to Y</math> genau dann ein Fredholm-Operator, wenn es Operatoren <math> B_1, B_2</math> und [[Kompakter Operator|kompakte Operatoren]] <math> K_1, K_2</math> gibt, so dass <math> AB_1=I_Y-K_1</math> und <math> B_2A=I_X-K_2</math> gilt, das heißt wenn <math> A</math> modulo kompakter Operatoren invertierbar ist. Insbesondere ist ein beschränkter Operator <math> A \colon X\to X</math> genau dann ein Fredholm-Operator, wenn seine Klasse <math>[A]_{\mathcal{C}(X)}</math> in der [[Calkin-Algebra]] <math>\mathcal{B}(X)/\mathcal{C}(X)</math> invertierbar ist.
=== Native ===
Nach dem [[Satz von Atkinson]] ist ein Operator <math forcemathmode="native">A \colon X\to Y</math> genau dann ein Fredholm-Operator, wenn es Operatoren <math forcemathmode="native"> B_1, B_2</math> und [[Kompakter Operator|kompakte Operatoren]] <math forcemathmode="native"> K_1, K_2</math> gibt, so dass <math forcemathmode="native"> AB_1=I_Y-K_1</math> und <math forcemathmode="native"> B_2A=I_X-K_2</math> gilt, das heißt wenn <math forcemathmode="native"> A</math> modulo kompakter Operatoren invertierbar ist. Insbesondere ist ein beschränkter Operator <math forcemathmode="native"> A \colon X\to X</math> genau dann ein Fredholm-Operator, wenn seine Klasse <math forcemathmode="native">[A]_{\mathcal{C}(X)}</math> in der [[Calkin-Algebra]] <math forcemathmode="native">\mathcal{B}(X)/\mathcal{C}(X)</math> invertierbar ist.
== Widetilde & Overline ==
=== Widetilde ===
==== Serverseitiges Rendering ====
:<math forcemathmode="mathml">\widetilde{\operatorname{div}}T=\operatorname{\widetilde{div}}T=\operatorname{div}(T^\top)</math>
==== Natives MathMl ====
:<math forcemathmode="native">\widetilde{\operatorname{div}}T=\operatorname{\widetilde{div}}T=\operatorname{div}(T^\top)</math> [[phab:T352609]] und [[phab:T382674]]
=== Adjungierter Dolbeault-Operator ===
==== Serverseitiges Rendering ====
:<math forcemathmode="mathml">\overline{\partial}^*</math>
==== Natives MathMl ====
:<math forcemathmode="native">\overline{\partial}^*</math> [[phab:T382796|<s>phab:T382796</s>]]
=== Overarc ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
|Vec
|<code>\vec v</code>
|<math forcemathmode="mathml">\vec v</math>
|<math forcemathmode="native">\vec v</math>
|<math>\vec v</math>
|-
|Overarc
|<code>0,\overarc{142857}</code>
|<math forcemathmode="mathml">0,\overarc{142857}</math>
|<math forcemathmode="native">0,\overarc{142857}</math>
|<math>0,\overarc{142857}</math>
|-
|Overline
|<code>\frac17 = 0,\overline{142857}</code>
|<math forcemathmode="mathml">\frac17 = 0,\overline{142857}</math>
|<math forcemathmode="native">\frac17 = 0,\overline{142857}</math> [[phab:T352698]]
|<math>\frac17 = 0,\overline{142857}</math>
|-
|}
== Potenzen & Indizes ==
=== MathMl ===
# <math forcemathmode=mathml>\sigma_a^2</math>
# <math forcemathmode=mathml>z = \operatorname{erf}^{-1}(p)</math>
# <math forcemathmode=mathml>f^\sharp</math>
=== Native ===
# <math forcemathmode="native">\sigma_a^2</math>
# <math forcemathmode="native">z = \operatorname{erf}^{-1}(p)</math>
# <math forcemathmode="native">f^\sharp</math>
=== Partial ===
==== Serverseitiges MathMl ====
<math forcemathmode=mathml>\partial_x^\alpha</math>
==== Natives MathMl ====
<math forcemathmode="native">\partial_x^\alpha</math>
=== Prime ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
|Strich
|<code>'</code>
|<math forcemathmode="mathml">'</math>
|<math forcemathmode="native">'</math>
|<math>'</math>
|-
|Strich
|<code>\prime</code>
|<math forcemathmode="mathml">\prime</math>
|<math forcemathmode="native">\prime</math>
|<math>\prime</math>
|-
|Buchstabe mit Strich
|<code>a' a'' f' \mu'</code>
|<math forcemathmode=mathml>a' a'' f' \mu'</math>
|<math forcemathmode="native">a' a'' f' \mu'</math> [[phab:T385948]]
|<math>a' a'' f' \mu'</math>
|-
|Buchstabe mit Prime-Operator
|<code>a^\prime a^{\prime \prime} f^\prime \mu^\prime</code>
|<math forcemathmode="mathml">a^\prime a^{\prime \prime} f^\prime \mu^\prime</math>
|<math forcemathmode="native">a^\prime a^{\prime \prime} f^\prime \mu^\prime</math>
|<math>a^\prime a^{\prime \prime} f^\prime \mu^\prime</math>
|-
|Overset Prime
|<code>\overset{\,\prime}{x}</code>
|<math forcemathmode="mathml">\overset{\,\prime}{x}</math>
|<math forcemathmode="native">\overset{\,\prime}{x}</math>
|<math>\overset{\,\prime}{x}</math>
|-
|Overset Prime
|<code>\overset{\prime}{x}</code>
|<math forcemathmode="mathml">\overset{\prime}{x}</math>
|<math forcemathmode="native">\overset{\prime}{x}</math>
|<math>\overset{\prime}{x}</math>
|-
|Mehrfach Prime
|<code>\operatorname{sl}'(a)\cdot\operatorname{sl}'(b)</code>
|<math forcemathmode="mathml">\operatorname{sl}'(a)\cdot\operatorname{sl}'(b)</math>
|<math forcemathmode="native">\operatorname{sl}'(a)\cdot\operatorname{sl}'(b)</math>
|<math>\operatorname{sl}'(a)\cdot\operatorname{sl}'(b)</math>
|}
=== Prime nach Determinante ===
==== Serverseitiges MathMl ====
# <math forcemathmode=mathml>\det'</math>
# <math forcemathmode=mathml>\det^\prime</math>
==== Natives MathMl ====
# <math forcemathmode="native">\det'</math> [[phab:T386562|<s>phab:T386562</s>]]
# <math forcemathmode="native">\det^\prime</math>
=== Prime nach Operatorname ===
==== Serverseitiges MathMl ====
# <math forcemathmode=mathml>\operatorname{determinante}'</math>
# <math forcemathmode=mathml>\operatorname{determinante}^\prime</math>
==== Natives MathMl ====
# <math forcemathmode="native">\operatorname{determinante}'</math>
# <math forcemathmode="native">\operatorname{determinante}^\prime</math>
=== Viele Indizes ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
|Indizes
|<code>\mathrm d\omega|_p=\sum_{1\leq i_1<\ldots<i_k\leq n} \sum_{i=1}^n \left. \frac{\partial a_{i_1,\ldots,i_k}}{\partial x_{i}}\right|_p \mathrm d x_{i}\wedge\mathrm dx_{i_1}\wedge\ldots\wedge\mathrm dx_{i_k}</code>
|<math forcemathmode=mathml>\mathrm d\omega|_p=\sum_{1\leq i_1<\ldots<i_k\leq n} \sum_{i=1}^n \left. \frac{\partial a_{i_1,\ldots,i_k}}{\partial x_{i}}\right|_p \mathrm d x_{i}\wedge\mathrm dx_{i_1}\wedge\ldots\wedge\mathrm dx_{i_k}</math>
|<math forcemathmode="native">\mathrm d\omega|_p=\sum_{1\leq i_1<\ldots<i_k\leq n} \sum_{i=1}^n \left. \frac{\partial a_{i_1,\ldots,i_k}}{\partial x_{i}}\right|_p \mathrm d x_{i}\wedge\mathrm dx_{i_1}\wedge\ldots\wedge\mathrm dx_{i_k}</math>
|<math>\mathrm d\omega|_p=\sum_{1\leq i_1<\ldots<i_k\leq n} \sum_{i=1}^n \left. \frac{\partial a_{i_1,\ldots,i_k}}{\partial x_{i}}\right|_p \mathrm d x_{i}\wedge\mathrm dx_{i_1}\wedge\ldots\wedge\mathrm dx_{i_k}</math>
|-
|Indizes
|<code>\begin{align}\mathrm d\omega|_p=\sum_{1\leq i_1<\ldots<i_k\leq n} \sum_{i=1}^n \left. \frac{\partial a_{i_1,\ldots,i_k}}{\partial x_{i}}\right|_p \mathrm d x_{i}\wedge\mathrm dx_{i_1}\wedge\ldots\wedge\mathrm dx_{i_k}\end{align}</code>
|<math forcemathmode=mathml>\begin{align}\mathrm d\omega|_p=\sum_{1\leq i_1<\ldots<i_k\leq n} \sum_{i=1}^n \left. \frac{\partial a_{i_1,\ldots,i_k}}{\partial x_{i}}\right|_p \mathrm d x_{i}\wedge\mathrm dx_{i_1}\wedge\ldots\wedge\mathrm dx_{i_k}\end{align}</math>
|<math forcemathmode="native">\begin{align}\mathrm d\omega|_p=\sum_{1\leq i_1<\ldots<i_k\leq n} \sum_{i=1}^n \left. \frac{\partial a_{i_1,\ldots,i_k}}{\partial x_{i}}\right|_p \mathrm d x_{i}\wedge\mathrm dx_{i_1}\wedge\ldots\wedge\mathrm dx_{i_k}\end{align}</math>
|<math>\begin{align}\mathrm d\omega|_p=\sum_{1\leq i_1<\ldots<i_k\leq n} \sum_{i=1}^n \left. \frac{\partial a_{i_1,\ldots,i_k}}{\partial x_{i}}\right|_p \mathrm d x_{i}\wedge\mathrm dx_{i_1}\wedge\ldots\wedge\mathrm dx_{i_k}\end{align}</math>
|}
== Abstände ==
=== Minus als Vorzeichen ===
==== Serverseitiges MathMl ====
# <math forcemathmode=mathml>\sqrt{-1}</math>
# <math forcemathmode=mathml>-5</math>
# <math forcemathmode=mathml>-A</math>
# <math forcemathmode=mathml>x - \mathrm{i}y</math>
==== Natives MathMl ====
# <math forcemathmode="native">\sqrt{-1}</math>
# <math forcemathmode="native">-5</math>
# <math forcemathmode="native">-A</math>
# <math forcemathmode="native">x - \mathrm{i}y</math>
=== Definition ===
==== Serverseitiges MathMl ====
# <math forcemathmode="mathml">i:=e_1 e_2</math>
==== Natives MathMl ====
# <math forcemathmode="native">i:=e_1 e_2</math> [[phab:T382680|<s>phab:T382680</s>]]
=== Faktor und Funktion ===
==== Serverseitiges MathMl ====
:<math forcemathmode="mathml">A \exp(x)</math>
==== Natives MathMl ====
:<math forcemathmode="native">A \exp(x)</math> [[phab:T382642]]
=== Klammer und senkrechter Strich ===
==== Serverseitiges MathMl ====
:<math forcemathmode="mathml">\max_{|z| \le 1}( |P'(z)| ) \le n\cdot\max_{|z| \le 1}( |P(z)| )</math>
==== Natives MathMl ====
:<math forcemathmode="native">\max_{|z| \le 1}( |P'(z)| ) \le n\cdot\max_{|z| \le 1}( |P(z)| )</math> [[:phab:T395582]]
=== Colon und Doppelpunkt ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
|Abstand Colon
|<code>\gamma \colon I \to M</code>
|<math forcemathmode="mathml">\gamma \colon I \to M</math>
|<math forcemathmode="native">\gamma \colon I \to M</math>
|<math>\gamma \colon I \to M</math>
|}
=== Zweistellige Operatoren ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
|Abstand bigsqcup
|<code>A \bigsqcup B</code>
|<math forcemathmode=mathml>A \bigsqcup B</math>
|<math forcemathmode="native">A \bigsqcup B</math>
|<math>A \bigsqcup B</math>
|-
|Abstand bigsqcup
|<code>A {\bigsqcup} B</code>
|<math forcemathmode="mathml">A {\bigsqcup} B</math>
|<math forcemathmode="native">A {\bigsqcup} B</math>
|<math>A {\bigsqcup} B</math>
|-
|Abstand bigsqcup
|<code>A \sqcup B</code>
|<math forcemathmode=mathml>A \sqcup B</math>
|<math forcemathmode="native">A \sqcup B</math>
|<math>A \sqcup B</math>
|-
|Abstand bigsqcup
|<code>A {\sqcup} B</code>
|<math forcemathmode="mathml">A {\sqcup} B</math>
|<math forcemathmode="native">A {\sqcup} B</math>
|<math>A {\sqcup} B</math>
|}
== Weiteres ==
<math>||\left(\sum_{n=1}^N \bf P_{\rm n}\rm\right) ||^2 = \left(\sum_n \frac{E_n}{c}\right)^2 - \left(\sum_n^N \bf p_{\rm n}\rm \right)^2</math>
== Was gar nicht funktioniert ==
=== Substack ===
{| class="wikitable"
|+
!
!Tex
!SVG
!Natives MathMl
!Default
|-
|Substack
|<code>\sum^{}_{\substack{1\leq i_1<\ldots<i_p\leq n \\ 1\leq j_1<\ldots<j_q\leq n}} f_{i_1, \ldots i_p, j_1, \ldots j_q} \mathrm{d}z_{i_1} \wedge \cdots \wedge \mathrm{d}z_{i_p} \wedge \mathrm{d} \overline{z}_{j_1} \wedge \cdots \wedge \mathrm{d} \overline{z}_{j_q}</code>
|<math forcemathmode=mathml>\sum_{\substack{1\leq i_1<\ldots<i_p\leq n \\ 1\leq j_1<\ldots<j_q\leq n}} f_{i_1, \ldots i_p, j_1, \ldots j_q} \mathrm{d}z_{i_1} \wedge \cdots \wedge \mathrm{d}z_{i_p} \wedge \mathrm{d} \overline{z}_{j_1} \wedge \cdots \wedge \mathrm{d} \overline{z}_{j_q}</math>
|<math forcemathmode="native">\sum^{}_{\substack{1\leq i_1<\ldots<i_p\leq n \\ 1\leq j_1<\ldots<j_q\leq n}} f_{i_1, \ldots i_p, j_1, \ldots j_q} \mathrm{d}z_{i_1} \wedge \cdots \wedge \mathrm{d}z_{i_p} \wedge \mathrm{d} \overline{z}_{j_1} \wedge \cdots \wedge \mathrm{d} \overline{z}_{j_q}</math>
|<math>\sum^{}_{\substack{1\leq i_1<\ldots<i_p\leq n \\ 1\leq j_1<\ldots<j_q\leq n}} f_{i_1, \ldots i_p, j_1, \ldots j_q} \mathrm{d}z_{i_1} \wedge \cdots \wedge \mathrm{d}z_{i_p} \wedge \mathrm{d} \overline{z}_{j_1} \wedge \cdots \wedge \mathrm{d} \overline{z}_{j_q}</math>
|}
=== Kommutative Diagramme ===
<math>
\begin{tikzcd}
A \arrow[r, "f"] \arrow[d, "g"'] & B \arrow[d, "h"] \\
C \arrow[r, "k"] & D
\end{tikzcd}
</math>
<math forcemathmode="native">
\begin{tikzcd}
A \arrow[r, "f"] \arrow[d, "g"'] & B \arrow[d, "h"] \\
C \arrow[r, "k"] & D
\end{tikzcd}
</math>
<math>
\begin{CD}
A @>a>> B\\
@VVbV @VVcV\\
C @>d>> D
\end{CD}
</math>
<math forcemathmode="native">
\begin{CD}
A @>a>> B\\
@VVbV @VVcV\\
C @>d>> D
\end{CD}
</math>
<math forcemathmode="mathjax">
\begin{CD}
A @>a>> B\\
@VVbV @VVcV\\
C @>d>> D
\end{CD}
</math>
cs5lkom9v6alsoolomuc4kyn0oi7zoh