Wikipedia testwiki https://test.wikipedia.org/wiki/Main_Page MediaWiki 1.46.0-wmf.23 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 Template:Ambox 10 34472 737638 611286 2025-03-04T11:58:31Z en>RMCD bot 0 Removing notice of move discussion 611285 wikitext text/x-wiki {{#invoke:Message box|ambox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> mbfrv60doj3koropyon4zrq5dhk4lij 737639 737638 2026-04-11T19:54:17Z Novem Linguae 49714 1 revision imported from [[:en:Template:Ambox]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 611285 wikitext text/x-wiki {{#invoke:Message box|ambox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> mbfrv60doj3koropyon4zrq5dhk4lij Template:See also 10 44240 737642 637535 2025-05-28T13:34:51Z en>Ahecht 0 ifexists={{{ifexists|true}}} 737642 wikitext text/x-wiki <includeonly>{{#invoke:Labelled list hatnote|labelledList|See also|ifexists={{{ifexists|true}}}}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> iscw165d4olefvh2e2w9vsrt2yr0h51 737643 737642 2026-04-11T19:54:17Z Novem Linguae 49714 1 revision imported from [[:en:Template:See_also]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737642 wikitext text/x-wiki <includeonly>{{#invoke:Labelled list hatnote|labelledList|See also|ifexists={{{ifexists|true}}}}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> iscw165d4olefvh2e2w9vsrt2yr0h51 Template:Pp-protected 10 48667 737630 517191 2024-10-31T22:49:43Z en>Primefac 0 /* top */ avoid double redir 737630 wikitext text/x-wiki #REDIRECT [[Template:Protection padlock]] {{Rcat shell| {{R from move}} {{R from long name}} {{R with history}} }} [[Category:Top icon protection templates]] fggdzzf86ur8bq36yd27gkfxl333uwg 737631 737630 2026-04-11T19:54:07Z Novem Linguae 49714 1 revision imported from [[:en:Template:Pp-protected]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737630 wikitext text/x-wiki #REDIRECT [[Template:Protection padlock]] {{Rcat shell| {{R from move}} {{R from long name}} {{R with history}} }} [[Category:Top icon protection templates]] fggdzzf86ur8bq36yd27gkfxl333uwg Template:Subst only 10 69172 737646 455878 2025-11-04T11:40:16Z en>Paine Ellsworth 0 add [[WP:RCAT|rcat template]] 737646 wikitext text/x-wiki #REDIRECT [[Template:Always substitute]] {{Redirect category shell| {{R from move}} {{R from alternative name}} {{R from template shortcut}} }} h8a8l7037j484rw6db641a909aq5ttq 737647 737646 2026-04-11T19:54:19Z Novem Linguae 49714 1 revision imported from [[:en:Template:Subst_only]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737646 wikitext text/x-wiki #REDIRECT [[Template:Always substitute]] {{Redirect category shell| {{R from move}} {{R from alternative name}} {{R from template shortcut}} }} h8a8l7037j484rw6db641a909aq5ttq Switch 0 69228 737591 662772 2026-04-11T14:13:33Z Nacaru 54746 Añadiendo plantilla de borrado mediante [[WP:Twinkle Lite|Twinkle Lite]] 737591 wikitext text/x-wiki {{destruir|g6|g7}} Nintendo Switch 2 delayed in US. Trump did that! kv4wk1wvi9laxaijjua8xgn86vqricz Translate test 0 80899 737599 581312 2026-04-11T16:15:14Z Tanbiruzzaman 57483 Test 737599 wikitext text/x-wiki <languages/> {{formatnum|10}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|<translate><!--T:1--> MediaWiki documentation</translate>]] <translate> <!--T:2--> This is a '''technical manual for the MediaWiki software'''.</translate> <translate> <!--T:3--> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. <!--T:4--> This manual is '''not for end users''' of MediaWiki.</translate> <translate> <!--T:5--> If you are looking for '''documentation to help you use MediaWiki, read the [[<tvar|help>Special:MyLanguage/Help:Contents</>|MediaWiki Handbook]].''' ==Main sections== <!--T:6--> </translate> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <translate> === For system administrators === <!--T:7--> </translate> ; [[Special:MyLanguage/Manual:Installation guide|<translate><!--T:8--> Installation</translate>]] : <translate><!--T:9--> Guide to setting up a new MediaWiki installation.</translate> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<translate><!--T:10--> Installing</translate>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<translate><!--T:11--> Initial configuration</translate>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<translate><!--T:12--> Alphabetical list of settings</translate>]] | [[Special:MyLanguage/Manual:Configuration settings|<translate><!--T:13--> Settings listed by function</translate>]] ; {{ll|Manual:System administration|nsp=0}} : <translate><!--T:14--> Guide to do administrative tasks on your wiki.</translate> : [[Special:MyLanguage/Manual:Backing up a wiki|<translate><!--T:15--> Backing up</translate>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <translate><!--T:16--> Guide to upgrade your MediaWiki installation.</translate> ''<translate><!--T:17--> More on <tvar|hub>{{ll|Sysadmin hub}}</>.</translate>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <translate> === For developers === <!--T:18--> </translate> ; <translate><!--T:19--> Architecture</translate> : <translate><!--T:20--> An overview of the key parts of MediaWiki's source code.</translate> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <translate><!--T:21--> Doxygen-generated documentation</translate>] ; {{ll|Manual:Database layout|nsp=0}} : <translate><!--T:22--> Details about the database architecture used by MediaWiki.</translate> : <translate><!--T:23--> <tvar|mysql>{{ll|Manual:MySQL|nsp=0}}</> | <tvar|pgsql>{{ll|Manual:PostgreSQL|nsp=0}}</> | <tvar|sqlite>{{ll|Manual:SQLite|nsp=0}}</> | <tvar|db2>{{ll|Manual:IBM DB2|nsp=0}}</> engines</translate> ; {{ll|Manual:Developing extensions|nsp=0}} : <translate><!--T:24--> An overview of the ways to create a new MediaWiki extension.</translate> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<translate><!--T:25--> Tag</translate>]] | [[Special:MyLanguage/Manual:Special pages|<translate><!--T:26--> Special page</translate>]] | {{ll|Manual:Skins|nsp=0}} ; <translate><!--T:27--> Web access</translate> : <translate><!--T:28--> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts.</translate> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<translate><!--T:29--> More on <tvar|hub>{{ll|Developer hub}}</>.</translate>'' |} <translate> === Others === <!--T:30--> </translate> ; [[Special:MyLanguage/Manual:FAQ|<translate><!--T:31--> MediaWiki FAQ</translate>]] : <translate><!--T:32--> Frequently asked questions about MediaWiki.</translate> <translate> == Browsing the manual == <!--T:33--> <!--T:34--> There are multiple ways to browse through the documentation.</translate> <translate> <!--T:35--> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </translate> * [[Special:Allpages/Manual:]] - <translate><!--T:36--> An automatically generated list of all pages in the Manual: namespace.</translate> * [[:Category:Manual]] - <translate><!--T:37--> the top-level Manual category</translate> <translate> == Improving the manual == <!--T:38--> <!--T:39--> * There are still a lot of holes in this manual!</translate> <translate><!--T:40--> See the [[<tvar|todo>Special:MyLanguage/Manual:Contents/To do</>|'to do' page]] for details.</translate> <translate> <!--T:41--> * There is still content on <tvar|url>http://meta.wikimedia.org</> which may need to be migrated.</translate> <translate><!--T:42--> If you can't find information on a particular issue in this documentation, please visit <tvar|faq>[[meta:MediaWiki_FAQ]]</> and <tvar|help>[[meta:Help:Contents]]</>.</translate> <translate> <!--T:43--> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace.</translate> <translate> <!--T:44--> * See also <tvar|issues>[[Project:Current issues]]</>. == MediaWiki Virtual Library == <!--T:45--> <!--T:46--> * '''[[<tvar|cat>:Category:MediaWiki Virtual Library (MVL)</>|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </translate> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] n8fm45wlp6zm20govuiaagrcd2361a1 737606 737599 2026-04-11T16:19:45Z Tanbiruzzaman 57483 737606 wikitext text/x-wiki <languages/> {{formatnum|10|{{SUBPAGENAME}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|<translate><!--T:1--> MediaWiki documentation</translate>]] <translate> <!--T:2--> This is a '''technical manual for the MediaWiki software'''.</translate> <translate> <!--T:3--> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. <!--T:4--> This manual is '''not for end users''' of MediaWiki.</translate> <translate> <!--T:5--> If you are looking for '''documentation to help you use MediaWiki, read the [[<tvar|help>Special:MyLanguage/Help:Contents</>|MediaWiki Handbook]].''' ==Main sections== <!--T:6--> </translate> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <translate> === For system administrators === <!--T:7--> </translate> ; [[Special:MyLanguage/Manual:Installation guide|<translate><!--T:8--> Installation</translate>]] : <translate><!--T:9--> Guide to setting up a new MediaWiki installation.</translate> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<translate><!--T:10--> Installing</translate>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<translate><!--T:11--> Initial configuration</translate>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<translate><!--T:12--> Alphabetical list of settings</translate>]] | [[Special:MyLanguage/Manual:Configuration settings|<translate><!--T:13--> Settings listed by function</translate>]] ; {{ll|Manual:System administration|nsp=0}} : <translate><!--T:14--> Guide to do administrative tasks on your wiki.</translate> : [[Special:MyLanguage/Manual:Backing up a wiki|<translate><!--T:15--> Backing up</translate>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <translate><!--T:16--> Guide to upgrade your MediaWiki installation.</translate> ''<translate><!--T:17--> More on <tvar|hub>{{ll|Sysadmin hub}}</>.</translate>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <translate> === For developers === <!--T:18--> </translate> ; <translate><!--T:19--> Architecture</translate> : <translate><!--T:20--> An overview of the key parts of MediaWiki's source code.</translate> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <translate><!--T:21--> Doxygen-generated documentation</translate>] ; {{ll|Manual:Database layout|nsp=0}} : <translate><!--T:22--> Details about the database architecture used by MediaWiki.</translate> : <translate><!--T:23--> <tvar|mysql>{{ll|Manual:MySQL|nsp=0}}</> | <tvar|pgsql>{{ll|Manual:PostgreSQL|nsp=0}}</> | <tvar|sqlite>{{ll|Manual:SQLite|nsp=0}}</> | <tvar|db2>{{ll|Manual:IBM DB2|nsp=0}}</> engines</translate> ; {{ll|Manual:Developing extensions|nsp=0}} : <translate><!--T:24--> An overview of the ways to create a new MediaWiki extension.</translate> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<translate><!--T:25--> Tag</translate>]] | [[Special:MyLanguage/Manual:Special pages|<translate><!--T:26--> Special page</translate>]] | {{ll|Manual:Skins|nsp=0}} ; <translate><!--T:27--> Web access</translate> : <translate><!--T:28--> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts.</translate> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<translate><!--T:29--> More on <tvar|hub>{{ll|Developer hub}}</>.</translate>'' |} <translate> === Others === <!--T:30--> </translate> ; [[Special:MyLanguage/Manual:FAQ|<translate><!--T:31--> MediaWiki FAQ</translate>]] : <translate><!--T:32--> Frequently asked questions about MediaWiki.</translate> <translate> == Browsing the manual == <!--T:33--> <!--T:34--> There are multiple ways to browse through the documentation.</translate> <translate> <!--T:35--> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </translate> * [[Special:Allpages/Manual:]] - <translate><!--T:36--> An automatically generated list of all pages in the Manual: namespace.</translate> * [[:Category:Manual]] - <translate><!--T:37--> the top-level Manual category</translate> <translate> == Improving the manual == <!--T:38--> <!--T:39--> * There are still a lot of holes in this manual!</translate> <translate><!--T:40--> See the [[<tvar|todo>Special:MyLanguage/Manual:Contents/To do</>|'to do' page]] for details.</translate> <translate> <!--T:41--> * There is still content on <tvar|url>http://meta.wikimedia.org</> which may need to be migrated.</translate> <translate><!--T:42--> If you can't find information on a particular issue in this documentation, please visit <tvar|faq>[[meta:MediaWiki_FAQ]]</> and <tvar|help>[[meta:Help:Contents]]</>.</translate> <translate> <!--T:43--> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace.</translate> <translate> <!--T:44--> * See also <tvar|issues>[[Project:Current issues]]</>. == MediaWiki Virtual Library == <!--T:45--> <!--T:46--> * '''[[<tvar|cat>:Category:MediaWiki Virtual Library (MVL)</>|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </translate> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] ecjr1v06lldx8783cqr4vbuw5rs1ajl 737613 737606 2026-04-11T16:25:13Z Tanbiruzzaman 57483 737613 wikitext text/x-wiki <languages/> {{formatnum|10|{{PAGELANGUAGE}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|<translate><!--T:1--> MediaWiki documentation</translate>]] <translate> <!--T:2--> This is a '''technical manual for the MediaWiki software'''.</translate> <translate> <!--T:3--> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. <!--T:4--> This manual is '''not for end users''' of MediaWiki.</translate> <translate> <!--T:5--> If you are looking for '''documentation to help you use MediaWiki, read the [[<tvar|help>Special:MyLanguage/Help:Contents</>|MediaWiki Handbook]].''' ==Main sections== <!--T:6--> </translate> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <translate> === For system administrators === <!--T:7--> </translate> ; [[Special:MyLanguage/Manual:Installation guide|<translate><!--T:8--> Installation</translate>]] : <translate><!--T:9--> Guide to setting up a new MediaWiki installation.</translate> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<translate><!--T:10--> Installing</translate>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<translate><!--T:11--> Initial configuration</translate>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<translate><!--T:12--> Alphabetical list of settings</translate>]] | [[Special:MyLanguage/Manual:Configuration settings|<translate><!--T:13--> Settings listed by function</translate>]] ; {{ll|Manual:System administration|nsp=0}} : <translate><!--T:14--> Guide to do administrative tasks on your wiki.</translate> : [[Special:MyLanguage/Manual:Backing up a wiki|<translate><!--T:15--> Backing up</translate>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <translate><!--T:16--> Guide to upgrade your MediaWiki installation.</translate> ''<translate><!--T:17--> More on <tvar|hub>{{ll|Sysadmin hub}}</>.</translate>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <translate> === For developers === <!--T:18--> </translate> ; <translate><!--T:19--> Architecture</translate> : <translate><!--T:20--> An overview of the key parts of MediaWiki's source code.</translate> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <translate><!--T:21--> Doxygen-generated documentation</translate>] ; {{ll|Manual:Database layout|nsp=0}} : <translate><!--T:22--> Details about the database architecture used by MediaWiki.</translate> : <translate><!--T:23--> <tvar|mysql>{{ll|Manual:MySQL|nsp=0}}</> | <tvar|pgsql>{{ll|Manual:PostgreSQL|nsp=0}}</> | <tvar|sqlite>{{ll|Manual:SQLite|nsp=0}}</> | <tvar|db2>{{ll|Manual:IBM DB2|nsp=0}}</> engines</translate> ; {{ll|Manual:Developing extensions|nsp=0}} : <translate><!--T:24--> An overview of the ways to create a new MediaWiki extension.</translate> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<translate><!--T:25--> Tag</translate>]] | [[Special:MyLanguage/Manual:Special pages|<translate><!--T:26--> Special page</translate>]] | {{ll|Manual:Skins|nsp=0}} ; <translate><!--T:27--> Web access</translate> : <translate><!--T:28--> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts.</translate> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<translate><!--T:29--> More on <tvar|hub>{{ll|Developer hub}}</>.</translate>'' |} <translate> === Others === <!--T:30--> </translate> ; [[Special:MyLanguage/Manual:FAQ|<translate><!--T:31--> MediaWiki FAQ</translate>]] : <translate><!--T:32--> Frequently asked questions about MediaWiki.</translate> <translate> == Browsing the manual == <!--T:33--> <!--T:34--> There are multiple ways to browse through the documentation.</translate> <translate> <!--T:35--> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </translate> * [[Special:Allpages/Manual:]] - <translate><!--T:36--> An automatically generated list of all pages in the Manual: namespace.</translate> * [[:Category:Manual]] - <translate><!--T:37--> the top-level Manual category</translate> <translate> == Improving the manual == <!--T:38--> <!--T:39--> * There are still a lot of holes in this manual!</translate> <translate><!--T:40--> See the [[<tvar|todo>Special:MyLanguage/Manual:Contents/To do</>|'to do' page]] for details.</translate> <translate> <!--T:41--> * There is still content on <tvar|url>http://meta.wikimedia.org</> which may need to be migrated.</translate> <translate><!--T:42--> If you can't find information on a particular issue in this documentation, please visit <tvar|faq>[[meta:MediaWiki_FAQ]]</> and <tvar|help>[[meta:Help:Contents]]</>.</translate> <translate> <!--T:43--> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace.</translate> <translate> <!--T:44--> * See also <tvar|issues>[[Project:Current issues]]</>. == MediaWiki Virtual Library == <!--T:45--> <!--T:46--> * '''[[<tvar|cat>:Category:MediaWiki Virtual Library (MVL)</>|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </translate> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] s15881azbdwrlg4r6cx9iilfwu3nl9g Translate test/bn 0 80903 737602 721842 2026-04-11T16:15:31Z FuzzyBot 18251 Updating to match new version of source page 737602 wikitext text/x-wiki <languages/> {{formatnum|10}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|<div class="mw-translate-fuzzy"> test </div>]] <div lang="en" dir="ltr" class="mw-content-ltr"> This is a '''technical manual for the MediaWiki software'''. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ==Main sections== </div> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] fwchxro19gy6z0y5ictptyu8l43n08g 737608 737602 2026-04-11T16:20:03Z FuzzyBot 18251 Updating to match new version of source page 737608 wikitext text/x-wiki <languages/> {{formatnum|10|{{SUBPAGENAME}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|<div class="mw-translate-fuzzy"> test </div>]] <div lang="en" dir="ltr" class="mw-content-ltr"> This is a '''technical manual for the MediaWiki software'''. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ==Main sections== </div> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] debqij5pa7eroh031299khhjzyagu8x 737616 737608 2026-04-11T16:25:28Z FuzzyBot 18251 Updating to match new version of source page 737616 wikitext text/x-wiki <languages/> {{formatnum|10|{{PAGELANGUAGE}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|<div class="mw-translate-fuzzy"> test </div>]] <div lang="en" dir="ltr" class="mw-content-ltr"> This is a '''technical manual for the MediaWiki software'''. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ==Main sections== </div> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] 8z9xcpzavjx3bivi6xnnd5jf5yczmia Translate test/en 0 85154 737600 721843 2026-04-11T16:15:31Z FuzzyBot 18251 Updating to match new version of source page 737600 wikitext text/x-wiki <languages/> {{formatnum|10}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|MediaWiki documentation]] This is a '''technical manual for the MediaWiki software'''. It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. This manual is '''not for end users''' of MediaWiki. If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' ==Main sections== {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings|Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} === Others === ; [[Special:MyLanguage/Manual:FAQ|MediaWiki FAQ]] : Frequently asked questions about MediaWiki. == Browsing the manual == There are multiple ways to browse through the documentation. Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. * [[Special:Allpages/Manual:]] - An automatically generated list of all pages in the Manual: namespace. * [[:Category:Manual]] - the top-level Manual category == Improving the manual == * There are still a lot of holes in this manual! See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. * There is still content on http://meta.wikimedia.org which may need to be migrated. If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. * See also [[Project:Current issues]]. == MediaWiki Virtual Library == * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] d0dkqa3ost000ffdmgrmel5xyjck9bk 737609 737600 2026-04-11T16:20:03Z FuzzyBot 18251 Updating to match new version of source page 737609 wikitext text/x-wiki <languages/> {{formatnum|10|{{SUBPAGENAME}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|MediaWiki documentation]] This is a '''technical manual for the MediaWiki software'''. It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. This manual is '''not for end users''' of MediaWiki. If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' ==Main sections== {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings|Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} === Others === ; [[Special:MyLanguage/Manual:FAQ|MediaWiki FAQ]] : Frequently asked questions about MediaWiki. == Browsing the manual == There are multiple ways to browse through the documentation. Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. * [[Special:Allpages/Manual:]] - An automatically generated list of all pages in the Manual: namespace. * [[:Category:Manual]] - the top-level Manual category == Improving the manual == * There are still a lot of holes in this manual! See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. * There is still content on http://meta.wikimedia.org which may need to be migrated. If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. * See also [[Project:Current issues]]. == MediaWiki Virtual Library == * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] dxo0f48oqevn8wyr4f2yl6da7uwf8ek 737615 737609 2026-04-11T16:25:28Z FuzzyBot 18251 Updating to match new version of source page 737615 wikitext text/x-wiki <languages/> {{formatnum|10|{{PAGELANGUAGE}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|MediaWiki documentation]] This is a '''technical manual for the MediaWiki software'''. It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. This manual is '''not for end users''' of MediaWiki. If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' ==Main sections== {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings|Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} === Others === ; [[Special:MyLanguage/Manual:FAQ|MediaWiki FAQ]] : Frequently asked questions about MediaWiki. == Browsing the manual == There are multiple ways to browse through the documentation. Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. * [[Special:Allpages/Manual:]] - An automatically generated list of all pages in the Manual: namespace. * [[:Category:Manual]] - the top-level Manual category == Improving the manual == * There are still a lot of holes in this manual! See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. * There is still content on http://meta.wikimedia.org which may need to be migrated. If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. * See also [[Project:Current issues]]. == MediaWiki Virtual Library == * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] nxoiv6yqklcpcpfqca7oshu4huob6z4 Translate test/uk 0 85207 737605 721847 2026-04-11T16:15:33Z FuzzyBot 18251 Updating to match new version of source page 737605 wikitext text/x-wiki <languages/> {{formatnum|10}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|Документація MediaWiki]] <div lang="en" dir="ltr" class="mw-content-ltr"> This is a '''technical manual for the MediaWiki software'''. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ==Main sections== </div> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] r9te3l7nxhzb82uk5iq749gp543zz4b 737612 737605 2026-04-11T16:20:05Z FuzzyBot 18251 Updating to match new version of source page 737612 wikitext text/x-wiki <languages/> {{formatnum|10|{{SUBPAGENAME}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|Документація MediaWiki]] <div lang="en" dir="ltr" class="mw-content-ltr"> This is a '''technical manual for the MediaWiki software'''. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ==Main sections== </div> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] fli16tmd6c1khboo24ucq9rro3f6gpn 737619 737612 2026-04-11T16:25:30Z FuzzyBot 18251 Updating to match new version of source page 737619 wikitext text/x-wiki <languages/> {{formatnum|10|{{PAGELANGUAGE}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|Документація MediaWiki]] <div lang="en" dir="ltr" class="mw-content-ltr"> This is a '''technical manual for the MediaWiki software'''. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ==Main sections== </div> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] 1jyk2cqdmp53w005vtfc59otj98g4s6 Template:Afd see also documentation 10 86138 737652 515956 2025-10-08T13:05:52Z en>FaviFake 0 FaviFake moved page [[Template:Afd see also documentation]] to [[Template:AfD templates]]: boldly moving to be consistent with the other templates, that is [[Template:PAM templates]] and [[Template:DRV templates]]. The naming structure of this template was inherited from how it looked when it was created in 2008, when the navbox template wasn't used and it was just a plain list of links: [[Special:Permalink/225448460]]. Now it's no longer a "See also" and is instead used as a navbox on templa... 737652 wikitext text/x-wiki #REDIRECT [[Template:AfD templates]] {{Redirect category shell| {{R from move}} }} kyhthzbewm70a7jcb7sp8vit9cxoeyg 737653 737652 2026-04-11T19:54:20Z Novem Linguae 49714 1 revision imported from [[:en:Template:Afd_see_also_documentation]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737652 wikitext text/x-wiki #REDIRECT [[Template:AfD templates]] {{Redirect category shell| {{R from move}} }} kyhthzbewm70a7jcb7sp8vit9cxoeyg Translate test/es 0 96703 737601 721844 2026-04-11T16:15:31Z FuzzyBot 18251 Updating to match new version of source page 737601 wikitext text/x-wiki <languages/> {{formatnum|10}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|MediaWiki Documentación]] <div lang="en" dir="ltr" class="mw-content-ltr"> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ==Main sections== </div> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] cb0g5jh2on3ji1s4uocvi1tnblbm5ck 737607 737601 2026-04-11T16:20:03Z FuzzyBot 18251 Updating to match new version of source page 737607 wikitext text/x-wiki <languages/> {{formatnum|10|{{SUBPAGENAME}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|MediaWiki Documentación]] <div lang="en" dir="ltr" class="mw-content-ltr"> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ==Main sections== </div> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] go5n4237x3012uvj1wrucvnc683pwjb 737614 737607 2026-04-11T16:25:28Z FuzzyBot 18251 Updating to match new version of source page 737614 wikitext text/x-wiki <languages/> {{formatnum|10|{{PAGELANGUAGE}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|MediaWiki Documentación]] <div lang="en" dir="ltr" class="mw-content-ltr"> It contains information for '''developers''' and '''system administrators''' on '''installing''', '''managing''' and '''developing''' for the MediaWiki software. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <div lang="en" dir="ltr" class="mw-content-ltr"> ==Main sections== </div> {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] 8phzvbfcwm9g01owx9wpkhh98127uk6 User:SD0001/twinkleoptions.js 2 101443 737733 727669 2026-04-12T07:38:48Z SD0001 26892 Saving Twinkle preferences: automatic edit from [[:Wikipedia:Twinkle/Preferences]] 737733 javascript text/javascript // twinkleoptions.js: personal Twinkle preferences file // // NOTE: The easiest way to change your Twinkle preferences is by using the // Twinkle preferences panel, at [[Wikipedia:Twinkle/Preferences]]. // // This file is AUTOMATICALLY GENERATED. Any changes you make (aside from // changing the configuration parameters in a valid-JavaScript way) will be // overwritten the next time you click "save" in the Twinkle preferences // panel. If modifying this file, make sure to use correct JavaScript. // <nowiki> window.Twinkle.prefs = { "optionsVersion": 2.1, "defaultToBlock64": true, "markProdPagesAsPatrolled": true, "logProdPages": true, "showRollbackLinks": [ "diff", "others", "recent", "history" ], "speedySelectionStyle": "radioClick", "watchSpeedyPages": [], "watchSpeedyExpiry": "no", "markSpeedyPagesAsPatrolled": true, "watchTaggedPages": "yes", "watchMergeDiscussions": "yes", "markTaggedPagesAsPatrolled": true, "customTagList": [ { "value": "Histmerge", "label": "Histmerge" }, { "value": "Film IMDb refimprove|only=yes", "label": "Film IMDb refimprove|only=yes" }, { "value": "Wikipedia:trout", "label": "Wikipedia:trout" }, { "value": "Wikipedia:trout|help=on", "label": "Wikipedia:trout|help=on" } ], "customRedirectTagList": [ { "value": "TNAME", "label": "text display" } ] }; // </nowiki> // End of twinkleoptions.js fc9wf4rgbfyw8tgdxajkn96dlsf0wme Wikipedia:Article alerts/Bot use warning 4 101737 737670 487103 2026-03-26T21:56:24Z en>Ponyo 0 Reverted edit by [[Special:Contribs/Google9199009987|Google9199009987]] ([[User talk:Google9199009987|talk]]) to last version by FantasticWikiUser 737670 wikitext text/x-wiki {{#if: {{{short|}}} | [[User:AAlertBot|AAlertBot]] for [[Wikipedia:Article alerts|Article Alerts]] | {{mbox | image = [[File:Mail-send-receive.svg|50x40px|alt=|link=]] | text = If you plan to make breaking changes to this {{{1|{{lc:{{NAMESPACE}}}}}}}, including moving it, changing its scope, or nominating it for deletion or deprecation, please notify the [[Wikipedia:Article alerts|Article Alerts]] project at [[Wikipedia talk:Article alerts]] as a courtesy, as this page is used by the [[User:AAlertBot|AAlertBot]] bot to detect and report pages. Thank you!}}}}<noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> pu3isojka068w3op2pyhhkrbbou9vvq 737671 737670 2026-04-11T19:54:44Z Novem Linguae 49714 1 revision imported from [[:en:Wikipedia:Article_alerts/Bot_use_warning]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737670 wikitext text/x-wiki {{#if: {{{short|}}} | [[User:AAlertBot|AAlertBot]] for [[Wikipedia:Article alerts|Article Alerts]] | {{mbox | image = [[File:Mail-send-receive.svg|50x40px|alt=|link=]] | text = If you plan to make breaking changes to this {{{1|{{lc:{{NAMESPACE}}}}}}}, including moving it, changing its scope, or nominating it for deletion or deprecation, please notify the [[Wikipedia:Article alerts|Article Alerts]] project at [[Wikipedia talk:Article alerts]] as a courtesy, as this page is used by the [[User:AAlertBot|AAlertBot]] bot to detect and report pages. Thank you!}}}}<noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> pu3isojka068w3op2pyhhkrbbou9vvq Module:Find sources/templates/Find sources mainspace 828 101786 737640 371305 2022-03-01T07:33:51Z en>Primefac 0 Changed protection settings for "[[Module:Find sources/templates/Find sources mainspace]]": match main module ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)) 371304 Scribunto text/plain return { blurb = "''Find sources:''&nbsp;$1&nbsp;–&nbsp;$2", introLink = { code = 'google' }, links = { { code = 'google news', display = 'news' }, { code = 'google newspapers', display = 'newspapers' }, { code = 'google books', display = 'books' }, { code = 'google scholar', display = 'scholar' }, { code = 'jstor', display = 'JSTOR' } }, isUsedInMainspace = true } k39u38p2vc24ts3y9zywym3jkiq7787 737641 737640 2026-04-11T19:54:17Z Novem Linguae 49714 1 revision imported from [[:en:Module:Find_sources/templates/Find_sources_mainspace]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 371304 Scribunto text/plain return { blurb = "''Find sources:''&nbsp;$1&nbsp;–&nbsp;$2", introLink = { code = 'google' }, links = { { code = 'google news', display = 'news' }, { code = 'google newspapers', display = 'newspapers' }, { code = 'google books', display = 'books' }, { code = 'google scholar', display = 'scholar' }, { code = 'jstor', display = 'JSTOR' } }, isUsedInMainspace = true } k39u38p2vc24ts3y9zywym3jkiq7787 Template:Afd 10 101979 737626 374111 2024-02-02T01:53:41Z en>Paine Ellsworth 0 Pp template is not needed - it's included in the [[Template:Rcat shell|Rcat shell]] template 737626 wikitext text/x-wiki #REDIRECT [[Template:Article for deletion]] {{Redirect category shell| {{R from move}} {{R from template shortcut}} }} shsog6a0f5kox8j31ma0xzkjvyjecwp 737627 737626 2026-04-11T19:54:06Z Novem Linguae 49714 1 revision imported from [[:en:Template:Afd]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737626 wikitext text/x-wiki #REDIRECT [[Template:Article for deletion]] {{Redirect category shell| {{R from move}} {{R from template shortcut}} }} shsog6a0f5kox8j31ma0xzkjvyjecwp Template:Article for deletion 10 101980 737662 491423 2026-04-11T16:23:11Z en>Chaotic Enby 0 +params (outcome, target) 737662 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{<includeonly>subst:</includeonly>#ifeq:{{{1|a}}}|{{{1|b}}}||{{<includeonly>subst:</includeonly>#ifexist:Wikipedia:Articles for deletion/{{<includeonly>subst:</includeonly>PAGENAME}}|{{<includeonly>subst:</includeonly>lessthan}}!-- The nomination page for this article already existed when this tag was added. If this was because the article had been nominated for deletion before, and you wish to renominate it, please replace "page={{<includeonly>subst:</includeonly>PAGENAME}}" with "page={{<includeonly>subst:</includeonly>PAGENAME}} (2nd nomination)" below before proceeding with the nomination. -->}}}}{{Article for deletion/dated|page={{<includeonly>subst:</includeonly>#ifeq:{{{1|a}}}|{{{1|b}}}|{{{1}}}|{{<includeonly>subst:</includeonly>PAGENAME}}}}|timestamp={{<includeonly>subst:</includeonly>CURRENTTIMESTAMP}}|year={{<includeonly>subst:</includeonly>CURRENTYEAR}}|month={{<includeonly>subst:</includeonly>CURRENTMONTHNAMEGEN}}|day={{<includeonly>subst:</includeonly>CURRENTDAY}}|substed=yes{{<includeonly>subst:</includeonly>ns:0}}{{<includeonly>subst:</includeonly>#ifeq:{{{help|a}}}|{{{help|b}}}|{{<includeonly>subst:</includeonly>!}}help={{{help}}}}}{{<includeonly>subst:</includeonly>#ifeq:{{{outcome|a}}}|{{{outcome|b}}}|{{<includeonly>subst:</includeonly>!}}outcome={{{outcome}}}}}{{<includeonly>subst:</includeonly>#ifeq:{{{target|a}}}|{{{target|b}}}|{{<includeonly>subst:</includeonly>!}}target={{{target}}}}}}} {{<includeonly>subst:</includeonly>lessthan}}!-- Once discussion is closed, please place on talk page: {{Old AfD multi|page={{<includeonly>subst:</includeonly>#ifeq:{{{1|a}}}|{{{1|b}}}|{{{1}}}|{{<includeonly>subst:</includeonly>PAGENAME}}}}|date={{<includeonly>subst:</includeonly>#time:j F Y|{{<includeonly>subst:</includeonly>CURRENTTIMESTAMP}} }}|result='''keep'''}} --> <!-- End of AfD message, feel free to edit beyond this point --><noinclude> {{Documentation}}<!-- Add categories, documentation, and interwiki links to the /doc subpage, not here! --> </noinclude> 3iqcxrkjh3v8aa9tv4xodhbodu0o0zt 737663 737662 2026-04-11T19:54:41Z Novem Linguae 49714 1 revision imported from [[:en:Template:Article_for_deletion]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737662 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{<includeonly>subst:</includeonly>#ifeq:{{{1|a}}}|{{{1|b}}}||{{<includeonly>subst:</includeonly>#ifexist:Wikipedia:Articles for deletion/{{<includeonly>subst:</includeonly>PAGENAME}}|{{<includeonly>subst:</includeonly>lessthan}}!-- The nomination page for this article already existed when this tag was added. If this was because the article had been nominated for deletion before, and you wish to renominate it, please replace "page={{<includeonly>subst:</includeonly>PAGENAME}}" with "page={{<includeonly>subst:</includeonly>PAGENAME}} (2nd nomination)" below before proceeding with the nomination. -->}}}}{{Article for deletion/dated|page={{<includeonly>subst:</includeonly>#ifeq:{{{1|a}}}|{{{1|b}}}|{{{1}}}|{{<includeonly>subst:</includeonly>PAGENAME}}}}|timestamp={{<includeonly>subst:</includeonly>CURRENTTIMESTAMP}}|year={{<includeonly>subst:</includeonly>CURRENTYEAR}}|month={{<includeonly>subst:</includeonly>CURRENTMONTHNAMEGEN}}|day={{<includeonly>subst:</includeonly>CURRENTDAY}}|substed=yes{{<includeonly>subst:</includeonly>ns:0}}{{<includeonly>subst:</includeonly>#ifeq:{{{help|a}}}|{{{help|b}}}|{{<includeonly>subst:</includeonly>!}}help={{{help}}}}}{{<includeonly>subst:</includeonly>#ifeq:{{{outcome|a}}}|{{{outcome|b}}}|{{<includeonly>subst:</includeonly>!}}outcome={{{outcome}}}}}{{<includeonly>subst:</includeonly>#ifeq:{{{target|a}}}|{{{target|b}}}|{{<includeonly>subst:</includeonly>!}}target={{{target}}}}}}} {{<includeonly>subst:</includeonly>lessthan}}!-- Once discussion is closed, please place on talk page: {{Old AfD multi|page={{<includeonly>subst:</includeonly>#ifeq:{{{1|a}}}|{{{1|b}}}|{{{1}}}|{{<includeonly>subst:</includeonly>PAGENAME}}}}|date={{<includeonly>subst:</includeonly>#time:j F Y|{{<includeonly>subst:</includeonly>CURRENTTIMESTAMP}} }}|result='''keep'''}} --> <!-- End of AfD message, feel free to edit beyond this point --><noinclude> {{Documentation}}<!-- Add categories, documentation, and interwiki links to the /doc subpage, not here! --> </noinclude> 3iqcxrkjh3v8aa9tv4xodhbodu0o0zt Template:Article for deletion/dated 10 101981 737644 394999 2026-04-07T14:13:55Z en>Chaotic Enby 0 format links+reword 737644 wikitext text/x-wiki <!--{{AfDM}} begin-->{{#ifeq:{{{substed|yes}}}|yes|<!-- start {{afd}} subst'ed text -->{{#switch: {{#titleparts:{{FULLPAGENAME}}|1}} | Special:Undelete= | Template:Article for deletion = | Template:Afdx= | #default=<includeonly>{{#if: {{NAMESPACE}} | {{error:wrong namespace}} }}</includeonly> }}{{NOINDEX}}{{Ambox | type = {{Article for deletion/switch|{{{outcome|}}}|move|delete|delete|delete}} | class = mbox-afd | image = {{Article for deletion/switch|{{{outcome|}}}|[[File:Merge-arrow.svg|alt=|link=]]|none|none|none}} | text = '''An editor has nominated this article for {{Article for deletion/switch|{{{outcome|}}}|merging {{#if:{{{target|}}}|into {{format link|{{{target}}}}}}}|redirecting {{#if:{{{target|}}}|to {{format link|{{{target}}}}}}}|draftification|deletion}}.'''<br />You are welcome to participate in '''[[Wikipedia:Articles for deletion/{{{page|{{PAGENAME}}}}}|the {{Article for deletion/switch|{{{outcome|}}}|merging|redirecting|draftification|deletion}} discussion]]''', which will decide {{Article for deletion/switch|{{{outcome|}}}|whether to [[Wikipedia:Merging|merge]] it {{#if:{{{target|}}}|into {{format link|{{{target}}}}}}}|[[Wikipedia:Redirect|whether to redirect it]] {{#if:{{{target|}}}|to {{format link|{{{target}}}}}}}|whether to [[Wikipedia:Drafts#Moving articles to draftspace|draftify]] it|[[Wikipedia:Deletion policy|whether to keep it]]}}.<div class="hide-when-compact">Feel free to improve the article, but do not remove this notice before the discussion is closed. {{Article for deletion/switch|{{{outcome|}}}||For more information, see {{Section link|Wikipedia:Deletion policy#Redirection}}.||For more information, see the [[Wikipedia:guide to deletion|guide to deletion]].}}<br /><small>{{find sources mainspace}}</small><span id="delete-reason" style="display:none;">{{urlencode:[[Wikipedia:Articles for deletion/{{{page|{{PAGENAME}}}}}]]}}</span><span id="delete-criterion" style="display:none;">AFD</span> {{#ifeq: {{{help|}}} | off | | {{#ifexist:Wikipedia:Articles for deletion/{{{page|{{PAGENAME}}}}}||---- <div style="font-size: 85%;"> [[Template:Afd footer|Steps to list an article for {{Article for deletion/switch|{{{outcome|}}}|merging|redirecting|draftification|deletion}}]]: # {{tlx|Article for deletion|subst=yes}} # {{#ifeq:{{{page|{{PAGENAME}}}}}|{{PAGENAME}}|{{#ifexist:Wikipedia:Articles for deletion/{{{page|{{PAGENAME}}}}}||[{{fullurl:Wikipedia:Articles for deletion/{{PAGENAME}}|action=edit&preload=Template:Afd2+starter&editintro=Template:Afd3+starter}} Preloaded debate] ''OR''}}}} {{nowrap|{{tlx|afd2|subst=yes|2=pg={{PAGENAME}}|3=cat=|4=text=}} <nowiki>~~~~</nowiki>}} ([[:category:AfD debates|categories]]) # Place {{tlx|afd3|subst=yes|2=pg={{{page|{{PAGENAME}}}}} }} on the ''top'' of [{{fullurl:Wikipedia:Articles for deletion/Log/{{{logdate|{{{date|{{{year|{{CURRENTYEAR}}}}} {{{month|{{CURRENTMONTHNAMEGEN}}}}} {{{day|{{CURRENTDAY}}}}}}}}}}}|action=edit}} this list] # Please consider notifying the [{{fullurl:{{FULLPAGENAME}}|action=history}} author(s)] by placing {{nowrap|{{tlx|Afd notice|subst=yes|2={{PAGENAME}}{{#ifeq:{{{page|{{PAGENAME}}}}}|{{PAGENAME}}||<nowiki>|</nowiki>{{{page}}}}}{{#if:{{{outcome|}}}|<nowiki>|outcome=</nowiki>{{{outcome}}}{{#if:{{{target|}}}|<nowiki>|target=</nowiki>{{{target|}}}}}}} }} <nowiki>~~~~</nowiki>}} on their talk page(s). ---- Unregistered users placing this tag on an article cannot complete the nomination and should leave detailed reasons for {{Article for deletion/switch|{{{outcome|}}}|merging {{#if:{{{target|}}}|into {{format link|{{{target}}}}}}}|redirecting {{#if:{{{target|}}}|to {{format link|{{{target}}}}}}}|draftification|deletion}} on [[{{TALKPAGENAME}}]] and then request that someone else complete the process at [[Wikipedia talk:Articles for deletion]]. If the nomination is not completed and no message is left on the talk page, this tag may be removed.</div>}}}}</div>}} {{#switch: {{FULLPAGENAME}} | Template:Article for deletion= | Template:Afd= | Template:Afdx= | <includeonly>{{{category|[[Category:Articles for deletion]]}}}</includeonly> }}<!-- end {{afd}} subst'ed text -->|<!-- start {{afd}} template not subst'ed text -->{{error:not substituted|{{{origtag|afd}}}}}[[Category:Articles for deletion using wrong syntax]]<!-- end {{afd}} not subst'ed text -->}}<!--{{AfDM}} end--><noinclude> {{Documentation}} </noinclude> 5vtfp2g2z27pwpmalih3q6q7jq0qfpo 737645 737644 2026-04-11T19:54:18Z Novem Linguae 49714 1 revision imported from [[:en:Template:Article_for_deletion/dated]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737644 wikitext text/x-wiki <!--{{AfDM}} begin-->{{#ifeq:{{{substed|yes}}}|yes|<!-- start {{afd}} subst'ed text -->{{#switch: {{#titleparts:{{FULLPAGENAME}}|1}} | Special:Undelete= | Template:Article for deletion = | Template:Afdx= | #default=<includeonly>{{#if: {{NAMESPACE}} | {{error:wrong namespace}} }}</includeonly> }}{{NOINDEX}}{{Ambox | type = {{Article for deletion/switch|{{{outcome|}}}|move|delete|delete|delete}} | class = mbox-afd | image = {{Article for deletion/switch|{{{outcome|}}}|[[File:Merge-arrow.svg|alt=|link=]]|none|none|none}} | text = '''An editor has nominated this article for {{Article for deletion/switch|{{{outcome|}}}|merging {{#if:{{{target|}}}|into {{format link|{{{target}}}}}}}|redirecting {{#if:{{{target|}}}|to {{format link|{{{target}}}}}}}|draftification|deletion}}.'''<br />You are welcome to participate in '''[[Wikipedia:Articles for deletion/{{{page|{{PAGENAME}}}}}|the {{Article for deletion/switch|{{{outcome|}}}|merging|redirecting|draftification|deletion}} discussion]]''', which will decide {{Article for deletion/switch|{{{outcome|}}}|whether to [[Wikipedia:Merging|merge]] it {{#if:{{{target|}}}|into {{format link|{{{target}}}}}}}|[[Wikipedia:Redirect|whether to redirect it]] {{#if:{{{target|}}}|to {{format link|{{{target}}}}}}}|whether to [[Wikipedia:Drafts#Moving articles to draftspace|draftify]] it|[[Wikipedia:Deletion policy|whether to keep it]]}}.<div class="hide-when-compact">Feel free to improve the article, but do not remove this notice before the discussion is closed. {{Article for deletion/switch|{{{outcome|}}}||For more information, see {{Section link|Wikipedia:Deletion policy#Redirection}}.||For more information, see the [[Wikipedia:guide to deletion|guide to deletion]].}}<br /><small>{{find sources mainspace}}</small><span id="delete-reason" style="display:none;">{{urlencode:[[Wikipedia:Articles for deletion/{{{page|{{PAGENAME}}}}}]]}}</span><span id="delete-criterion" style="display:none;">AFD</span> {{#ifeq: {{{help|}}} | off | | {{#ifexist:Wikipedia:Articles for deletion/{{{page|{{PAGENAME}}}}}||---- <div style="font-size: 85%;"> [[Template:Afd footer|Steps to list an article for {{Article for deletion/switch|{{{outcome|}}}|merging|redirecting|draftification|deletion}}]]: # {{tlx|Article for deletion|subst=yes}} # {{#ifeq:{{{page|{{PAGENAME}}}}}|{{PAGENAME}}|{{#ifexist:Wikipedia:Articles for deletion/{{{page|{{PAGENAME}}}}}||[{{fullurl:Wikipedia:Articles for deletion/{{PAGENAME}}|action=edit&preload=Template:Afd2+starter&editintro=Template:Afd3+starter}} Preloaded debate] ''OR''}}}} {{nowrap|{{tlx|afd2|subst=yes|2=pg={{PAGENAME}}|3=cat=|4=text=}} <nowiki>~~~~</nowiki>}} ([[:category:AfD debates|categories]]) # Place {{tlx|afd3|subst=yes|2=pg={{{page|{{PAGENAME}}}}} }} on the ''top'' of [{{fullurl:Wikipedia:Articles for deletion/Log/{{{logdate|{{{date|{{{year|{{CURRENTYEAR}}}}} {{{month|{{CURRENTMONTHNAMEGEN}}}}} {{{day|{{CURRENTDAY}}}}}}}}}}}|action=edit}} this list] # Please consider notifying the [{{fullurl:{{FULLPAGENAME}}|action=history}} author(s)] by placing {{nowrap|{{tlx|Afd notice|subst=yes|2={{PAGENAME}}{{#ifeq:{{{page|{{PAGENAME}}}}}|{{PAGENAME}}||<nowiki>|</nowiki>{{{page}}}}}{{#if:{{{outcome|}}}|<nowiki>|outcome=</nowiki>{{{outcome}}}{{#if:{{{target|}}}|<nowiki>|target=</nowiki>{{{target|}}}}}}} }} <nowiki>~~~~</nowiki>}} on their talk page(s). ---- Unregistered users placing this tag on an article cannot complete the nomination and should leave detailed reasons for {{Article for deletion/switch|{{{outcome|}}}|merging {{#if:{{{target|}}}|into {{format link|{{{target}}}}}}}|redirecting {{#if:{{{target|}}}|to {{format link|{{{target}}}}}}}|draftification|deletion}} on [[{{TALKPAGENAME}}]] and then request that someone else complete the process at [[Wikipedia talk:Articles for deletion]]. If the nomination is not completed and no message is left on the talk page, this tag may be removed.</div>}}}}</div>}} {{#switch: {{FULLPAGENAME}} | Template:Article for deletion= | Template:Afd= | Template:Afdx= | <includeonly>{{{category|[[Category:Articles for deletion]]}}}</includeonly> }}<!-- end {{afd}} subst'ed text -->|<!-- start {{afd}} template not subst'ed text -->{{error:not substituted|{{{origtag|afd}}}}}[[Category:Articles for deletion using wrong syntax]]<!-- end {{afd}} not subst'ed text -->}}<!--{{AfDM}} end--><noinclude> {{Documentation}} </noinclude> 5vtfp2g2z27pwpmalih3q6q7jq0qfpo Template:Article for deletion/doc 10 101982 737674 374391 2025-11-05T09:42:08Z en>Beland 0 /* Usage */ whoops 737674 wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Subst only|auto=yes}} {{Twinkle standard installation}} {{XFDcloser standard installation}} {{Wikipedia:Article alerts/Bot use warning}} {{Main|Wikipedia:Articles for deletion}} {{Template shortcut|Afd|pre=subst:}} This template will categorise articles into [[:Category:Articles for deletion]]. This [[Wikipedia:Template messages|template]] is a [[Wikipedia:Manual of Style/Self-references to avoid|self-reference]] and so is part of the Wikipedia project rather than the encyclopedic content. This template should always be [[Wikipedia:Substitution|substituted]] onto pages it appears on, because it requires that the <nowiki>{{PAGENAME}}</nowiki> [[Help:Variable|variable]] be substituted. (This is so that the link to the AFD discussion does not break when the page is renamed during AFD discussions.) If this template is not substituted, a warning message will be shown instead. This template results in 3 lines of wikitext that make use of {{tl|AfDM}}. == Usage == For [[Wikipedia:Proposed deletion|proposed deletion]], use {{tl|proposed deletion}} or {{tl|prod}}. [[WP:PROD]] takes load off [[WP:AFD]] and should always be used instead, if reasonable. {{tl|Current event AFD}} can be used for appropriate articles as an alternative with a more specific message designed to prevent unnecessary alarm among readers. {{tlxs|article for deletion}} or {{tlxs|afd}} : This template will place a notice that the page has been nominated for deletion. It should be placed at the top of the page and substituted. {{tlxs|afd|Weather in London}} {{tlxs|afd|Weather in London (2nd nomination)}} : The parameter will link to a specific AFD discussion sub-page. Use this for linking multiple articles to a single AFD discussion page (bulk nominations) or for re-nominations of articles that have already been nominated for deletion before. (For the latter purpose, the {{tl|afdx}} template can also be used. ) ==TemplateData== {{TemplateData header}} <templatedata> { "params": { "1": { "label": "Page name", "description": "Page name that the subpage of WP:AfD is called, if not equal to the article's title.", "example": "Weather in London (2nd nomination)", "type": "string" } }, "description": "Template used to nominate an article for AfD (Articles for Deletion)" } </templatedata> == See also == {{afd see also documentation|state=uncollapsed}} <includeonly>{{sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Articles for deletion templates]] [[Category:Deletion tags]] }}</includeonly> g7cksav3ed06zj74f1cmjzhs3mtz3b5 737675 737674 2026-04-11T19:54:44Z Novem Linguae 49714 1 revision imported from [[:en:Template:Article_for_deletion/doc]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737674 wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Subst only|auto=yes}} {{Twinkle standard installation}} {{XFDcloser standard installation}} {{Wikipedia:Article alerts/Bot use warning}} {{Main|Wikipedia:Articles for deletion}} {{Template shortcut|Afd|pre=subst:}} This template will categorise articles into [[:Category:Articles for deletion]]. This [[Wikipedia:Template messages|template]] is a [[Wikipedia:Manual of Style/Self-references to avoid|self-reference]] and so is part of the Wikipedia project rather than the encyclopedic content. This template should always be [[Wikipedia:Substitution|substituted]] onto pages it appears on, because it requires that the <nowiki>{{PAGENAME}}</nowiki> [[Help:Variable|variable]] be substituted. (This is so that the link to the AFD discussion does not break when the page is renamed during AFD discussions.) If this template is not substituted, a warning message will be shown instead. This template results in 3 lines of wikitext that make use of {{tl|AfDM}}. == Usage == For [[Wikipedia:Proposed deletion|proposed deletion]], use {{tl|proposed deletion}} or {{tl|prod}}. [[WP:PROD]] takes load off [[WP:AFD]] and should always be used instead, if reasonable. {{tl|Current event AFD}} can be used for appropriate articles as an alternative with a more specific message designed to prevent unnecessary alarm among readers. {{tlxs|article for deletion}} or {{tlxs|afd}} : This template will place a notice that the page has been nominated for deletion. It should be placed at the top of the page and substituted. {{tlxs|afd|Weather in London}} {{tlxs|afd|Weather in London (2nd nomination)}} : The parameter will link to a specific AFD discussion sub-page. Use this for linking multiple articles to a single AFD discussion page (bulk nominations) or for re-nominations of articles that have already been nominated for deletion before. (For the latter purpose, the {{tl|afdx}} template can also be used. ) ==TemplateData== {{TemplateData header}} <templatedata> { "params": { "1": { "label": "Page name", "description": "Page name that the subpage of WP:AfD is called, if not equal to the article's title.", "example": "Weather in London (2nd nomination)", "type": "string" } }, "description": "Template used to nominate an article for AfD (Articles for Deletion)" } </templatedata> == See also == {{afd see also documentation|state=uncollapsed}} <includeonly>{{sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Articles for deletion templates]] [[Category:Deletion tags]] }}</includeonly> g7cksav3ed06zj74f1cmjzhs3mtz3b5 Template:Old AfD multi 10 101984 737664 392628 2022-05-01T02:45:10Z en>Steel1943 0 Add {{[[Template:XFDcloser standard installation|XFDcloser standard installation]]}} since XFDcloser uses this redirect instead of the target for some reason... 737664 wikitext text/x-wiki #REDIRECT [[Template:Old XfD multi]] {{Redirect category shell| {{R from move}} }} {{XFDcloser standard installation}} qhvzdnkmaj2pxh15bml3j94wgvyoquu 737665 737664 2026-04-11T19:54:43Z Novem Linguae 49714 1 revision imported from [[:en:Template:Old_AfD_multi]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737664 wikitext text/x-wiki #REDIRECT [[Template:Old XfD multi]] {{Redirect category shell| {{R from move}} }} {{XFDcloser standard installation}} qhvzdnkmaj2pxh15bml3j94wgvyoquu Template:R from move/except 10 102639 737628 591997 2024-05-08T00:57:29Z en>SilverLocust 0 Have that R2 tracking category also show a message 737628 wikitext text/x-wiki <noinclude>This is the exception page for {{tl|R from move}}. This page makes exceptions that include certain pages that should not inhabit either {{cat|Unsynchronized talk page redirects}} or {{cat|Redirects from moves}}. If necessary, new exceptions may be added with no need to edit the main template, {{tl|R from move}}. </noinclude>{{#switch: {{FULLPAGENAME}} |MediaWiki:Move-redirect-text= |Template:R from move/except= |#default=[[Category:Redirects from moves]] }}{{#switch: {{NAMESPACENUMBER}} |1={{#ifeq: {{#invoke:redirect|isRedirect|{{FULLPAGENAME}}}}|yes| {{#ifeq: {{#invoke:redirect|isRedirect|{{SUBJECTPAGENAME}}}}|yes| {{#ifeq: {{PAGENAME:{{#invoke:redirect|main|{{TALKPAGENAME}}}}}}|{{PAGENAME:{{#invoke:redirect|main|{{SUBJECTPAGENAME}}}}}}|| {{#ifeq: {{FULLPAGENAME}}|{{SUBJECTPAGENAME}}|| {{#ifeq: {{Str left|{{PAGENAME}}|16}}|List of ships of||[[Category:Unsynchronized talk page redirects]] }} }} }} |{{#ifexist:{{SUBJECTPAGENAME}}| {{#ifeq: {{SUBJECTPAGENAME}}|{{Target of|{{SUBJECTPAGENAME:{{Target of|{{FULLPAGENAME}}}}}}}}|[[Category:Articles with unsynchronized talk page redirects]]| {{#ifexpr: {{#invoke:string|find|{{#invoke:page|getContent|{{SUBJECTPAGENAME}}|as=raw}}|:Rfd}}|[[Category:Redirects for discussion with talk page redirects]]|[[Category:Articles with talk page redirects]]}}}} }} }} |{{error|Page is not a redirect, misplaced [[Template:R from move]]}} }} |0={{#switch:{{NAMESPACENUMBER:{{#invoke:redirect|main|{{FULLPAGENAME}}}}}}|0|4|10|12|14|100=|#default={{R from move/Cross-namespace}}}} }}<noinclude> {{Documentation|Template:R from move/doc}} </noinclude> 2a82jzb8kp50itnyti0qkq1qte99dnn 737629 737628 2026-04-11T19:54:07Z Novem Linguae 49714 1 revision imported from [[:en:Template:R_from_move/except]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737628 wikitext text/x-wiki <noinclude>This is the exception page for {{tl|R from move}}. This page makes exceptions that include certain pages that should not inhabit either {{cat|Unsynchronized talk page redirects}} or {{cat|Redirects from moves}}. If necessary, new exceptions may be added with no need to edit the main template, {{tl|R from move}}. </noinclude>{{#switch: {{FULLPAGENAME}} |MediaWiki:Move-redirect-text= |Template:R from move/except= |#default=[[Category:Redirects from moves]] }}{{#switch: {{NAMESPACENUMBER}} |1={{#ifeq: {{#invoke:redirect|isRedirect|{{FULLPAGENAME}}}}|yes| {{#ifeq: {{#invoke:redirect|isRedirect|{{SUBJECTPAGENAME}}}}|yes| {{#ifeq: {{PAGENAME:{{#invoke:redirect|main|{{TALKPAGENAME}}}}}}|{{PAGENAME:{{#invoke:redirect|main|{{SUBJECTPAGENAME}}}}}}|| {{#ifeq: {{FULLPAGENAME}}|{{SUBJECTPAGENAME}}|| {{#ifeq: {{Str left|{{PAGENAME}}|16}}|List of ships of||[[Category:Unsynchronized talk page redirects]] }} }} }} |{{#ifexist:{{SUBJECTPAGENAME}}| {{#ifeq: {{SUBJECTPAGENAME}}|{{Target of|{{SUBJECTPAGENAME:{{Target of|{{FULLPAGENAME}}}}}}}}|[[Category:Articles with unsynchronized talk page redirects]]| {{#ifexpr: {{#invoke:string|find|{{#invoke:page|getContent|{{SUBJECTPAGENAME}}|as=raw}}|:Rfd}}|[[Category:Redirects for discussion with talk page redirects]]|[[Category:Articles with talk page redirects]]}}}} }} }} |{{error|Page is not a redirect, misplaced [[Template:R from move]]}} }} |0={{#switch:{{NAMESPACENUMBER:{{#invoke:redirect|main|{{FULLPAGENAME}}}}}}|0|4|10|12|14|100=|#default={{R from move/Cross-namespace}}}} }}<noinclude> {{Documentation|Template:R from move/doc}} </noinclude> 2a82jzb8kp50itnyti0qkq1qte99dnn Template:Afdx 10 102645 737636 381005 2026-04-11T16:24:13Z en>Chaotic Enby 0 +extra params 737636 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{AfDM|page={{<includeonly>subst:</includeonly>PAGENAME}} ({{<includeonly>subst:</includeonly>#ifeq:{{{1|a}}}|{{{1|b}}}|{{{1}}}|2nd}} nomination)|year={{<includeonly>subst:</includeonly>CURRENTYEAR}}|month={{<includeonly>subst:</includeonly>CURRENTMONTHNAMEGEN}}|day={{<includeonly>subst:</includeonly>CURRENTDAY}}|substed=yes{{<includeonly>subst:</includeonly>ns:0}}|origtag=afdx{{<includeonly>subst:</includeonly>#ifeq:{{{help|a}}}|{{{help|b}}}|{{<includeonly>subst:</includeonly>!}}help={{{help}}}}}{{<includeonly>subst:</includeonly>#ifeq:{{{outcome|a}}}|{{{outcome|b}}}|{{<includeonly>subst:</includeonly>!}}outcome={{{outcome}}}}}{{<includeonly>subst:</includeonly>#ifeq:{{{target|a}}}|{{{target|b}}}|{{<includeonly>subst:</includeonly>!}}target={{{target}}}}}}} <!-- End of AfD message, feel free to edit beyond this point --><noinclude> {{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> dgezkllqp45z98ovhbbqzmj1s7p6bvs 737637 737636 2026-04-11T19:54:16Z Novem Linguae 49714 1 revision imported from [[:en:Template:Afdx]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737636 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{AfDM|page={{<includeonly>subst:</includeonly>PAGENAME}} ({{<includeonly>subst:</includeonly>#ifeq:{{{1|a}}}|{{{1|b}}}|{{{1}}}|2nd}} nomination)|year={{<includeonly>subst:</includeonly>CURRENTYEAR}}|month={{<includeonly>subst:</includeonly>CURRENTMONTHNAMEGEN}}|day={{<includeonly>subst:</includeonly>CURRENTDAY}}|substed=yes{{<includeonly>subst:</includeonly>ns:0}}|origtag=afdx{{<includeonly>subst:</includeonly>#ifeq:{{{help|a}}}|{{{help|b}}}|{{<includeonly>subst:</includeonly>!}}help={{{help}}}}}{{<includeonly>subst:</includeonly>#ifeq:{{{outcome|a}}}|{{{outcome|b}}}|{{<includeonly>subst:</includeonly>!}}outcome={{{outcome}}}}}{{<includeonly>subst:</includeonly>#ifeq:{{{target|a}}}|{{{target|b}}}|{{<includeonly>subst:</includeonly>!}}target={{{target}}}}}}} <!-- End of AfD message, feel free to edit beyond this point --><noinclude> {{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> dgezkllqp45z98ovhbbqzmj1s7p6bvs Template:AfDM 10 102646 737650 381008 2024-02-02T00:07:17Z en>Paine Ellsworth 0 per edit request on talk page - add [[WP:RCAT|rcat template]]s 737650 wikitext text/x-wiki #REDIRECT [[Template:Article for deletion/dated]] {{Redirect category shell| {{R from move}} {{R from template shortcut}} {{R to subpage}} }} 5y7m8r236la7p80ac5j9opgzl8nxgdg 737651 737650 2026-04-11T19:54:19Z Novem Linguae 49714 1 revision imported from [[:en:Template:AfDM]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737650 wikitext text/x-wiki #REDIRECT [[Template:Article for deletion/dated]] {{Redirect category shell| {{R from move}} {{R from template shortcut}} {{R to subpage}} }} 5y7m8r236la7p80ac5j9opgzl8nxgdg Template:Afdx/doc 10 102647 737654 381020 2020-04-23T22:10:53Z en>Vanisaac 0 /* See also */clean up per [[WP:CAT#T]] and [[WP:AWBREQ]] add template:Sandbox other 737654 wikitext text/x-wiki {{documentation subpage}} {{Subst only|auto=yes}} {{Twinkle standard installation}} {{main|Wikipedia:Articles for deletion}} This template will categorise articles into [[:Category:Articles for deletion]]. This [[Wikipedia:Template|template]] is a [[Wikipedia:Avoid self-references|self-reference]] and so is part of the Wikipedia project rather than the encyclopedic content. This template should always be [[Wikipedia:Template substitution|substituted]] onto pages it appears on, because it requires that the <nowiki>{{PAGENAME}}</nowiki> [[Help:Variable|variable]] be substituted. (This is so that the link to the AFD discussion does not break when the page is renamed during AFD discussions.) If the template is not substituted, a warning message is shown instead. This template results in 3 lines of wikitext that make use of {{tl|AfDM}}. This template is intended for renominating articles that have already been nominated for deletion before. For nominating articles for the first time, use the {{tl|afd}} template instead. === Usage === For [[Wikipedia:Proposed deletion]] use {{[[Template:Prod|Prod]]}}. [[WP:PROD]] takes load off [[WP:AFD]] and should always be used instead if reasonable. <nowiki>{{subst:afdx}}</nowiki> <nowiki>{{subst:afdx|3rd}}</nowiki> <nowiki>{{subst:afdx|4th}}</nowiki> This template will place a notice that the page has been nominated for deletion. It should be placed at the top of the page and substituted. Equivalent results can also be achieved using the normal {{tl|afd}} template, at the cost of some extra typing. Specifically, the three examples above produce exactly the same results as: <nowiki>{{subst:afd|</nowiki>''PAGENAME'' (2nd nomination)}} <nowiki>{{subst:afd|</nowiki>''PAGENAME'' (3rd nomination)}} <nowiki>{{subst:afd|</nowiki>''PAGENAME'' (4th nomination)}} Where <code>''PAGENAME''</code> is the title of the page the template is being placed on. === See also === * [[Wikipedia:Criteria for speedy deletion|Criteria for speedy deletion]] {{Afd see also documentation}} <includeonly>{{Sandbox other|| <!-- categories and interwiki links --> [[Category:Articles for deletion templates]] [[Category:Deletion tags]] }}</includeonly> 84r6b943537xg7vseyi209punii4yra 737655 737654 2026-04-11T19:54:20Z Novem Linguae 49714 1 revision imported from [[:en:Template:Afdx/doc]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737654 wikitext text/x-wiki {{documentation subpage}} {{Subst only|auto=yes}} {{Twinkle standard installation}} {{main|Wikipedia:Articles for deletion}} This template will categorise articles into [[:Category:Articles for deletion]]. This [[Wikipedia:Template|template]] is a [[Wikipedia:Avoid self-references|self-reference]] and so is part of the Wikipedia project rather than the encyclopedic content. This template should always be [[Wikipedia:Template substitution|substituted]] onto pages it appears on, because it requires that the <nowiki>{{PAGENAME}}</nowiki> [[Help:Variable|variable]] be substituted. (This is so that the link to the AFD discussion does not break when the page is renamed during AFD discussions.) If the template is not substituted, a warning message is shown instead. This template results in 3 lines of wikitext that make use of {{tl|AfDM}}. This template is intended for renominating articles that have already been nominated for deletion before. For nominating articles for the first time, use the {{tl|afd}} template instead. === Usage === For [[Wikipedia:Proposed deletion]] use {{[[Template:Prod|Prod]]}}. [[WP:PROD]] takes load off [[WP:AFD]] and should always be used instead if reasonable. <nowiki>{{subst:afdx}}</nowiki> <nowiki>{{subst:afdx|3rd}}</nowiki> <nowiki>{{subst:afdx|4th}}</nowiki> This template will place a notice that the page has been nominated for deletion. It should be placed at the top of the page and substituted. Equivalent results can also be achieved using the normal {{tl|afd}} template, at the cost of some extra typing. Specifically, the three examples above produce exactly the same results as: <nowiki>{{subst:afd|</nowiki>''PAGENAME'' (2nd nomination)}} <nowiki>{{subst:afd|</nowiki>''PAGENAME'' (3rd nomination)}} <nowiki>{{subst:afd|</nowiki>''PAGENAME'' (4th nomination)}} Where <code>''PAGENAME''</code> is the title of the page the template is being placed on. === See also === * [[Wikipedia:Criteria for speedy deletion|Criteria for speedy deletion]] {{Afd see also documentation}} <includeonly>{{Sandbox other|| <!-- categories and interwiki links --> [[Category:Articles for deletion templates]] [[Category:Deletion tags]] }}</includeonly> 84r6b943537xg7vseyi209punii4yra Template:Article for deletion/dated/doc 10 102806 737678 382036 2026-04-03T20:10:01Z en>Chaotic Enby 0 /* TemplateData */ my hot take is that most people are lazy, including myself 737678 wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Nosubst}} {{Wikipedia:Article alerts/Bot use warning}} This template is used to nominate an article for deletion at [[Wikipedia:Articles for deletion]]. Do '''not''' use this template directly. Instead, use this code: <syntaxhighlight lang="wikitext">{{subst:afd}}</syntaxhighlight> The {{tl|afd}} template will automatically transclude this template once it has been [[WP:substituted|substituted]]. Better yet, use [[WP:Twinkle|Twinkle]] to nominate articles for deletion, since the nomination process has several other steps as well (creating the deletion discussion page, adding it to the daily log pages, adding it to the deletion sorting pages maintained by [[Wikipedia:WikiProject Deletion sorting]]. == Redirects == * [[Template:AfDM]] * [[Template:Afd/dated]] == TemplateData == {{TemplateData header}} <templatedata> { "params": { "substed": { "label": "Substituted?", "description": "If this value is anything but \"yes\", the template produces the error message \"This template must be substituted. Replace {{afd with {{subst:afd.\" DO NOT set this parameter manually, as Template:Afd does this automatically instead.", "example": "yes", "type": "string", "suggestedvalues": [ "yes", "no" ], "required": true }, "page": { "label": "Article to delete", "description": "The title of the article being deleted, if not the article that this template is being transcluded on. If not specified, this template defaults to assuming that the page it's on is the one being deleted.", "example": "Weather in London", "type": "wiki-page-name", "autovalue": "{{PAGENAME}}", "suggested": true }, "help": { "label": "Display help?", "description": "If the value is anything but \"off\" (or omitted entirely), a message on the steps to nominate an article for deletion is provided.", "example": "on", "type": "string", "suggestedvalues": [ "off", "on" ] }, "logdate": { "aliases": [ "date" ], "label": "Log date", "description": "The date for which the AfD discussion page should be added to the corresponding daily AfD log. This must be given in year-month-day format, with the month's name specified. Only used if the help message is shown. If used, the \"year\", \"month\", and \"day\" parameters are not needed.", "example": "2024 February 12", "type": "string", "autovalue": "{{subst:CURRENTYEAR}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}", "suggested": true }, "year": { "label": "Year", "description": "The YEAR in which the article is being nominated for deletion, for the purpose of adding to the AfD daily logpage. Don't use this if you're using the \"logdate\" parameter.", "example": "2024", "type": "number", "autovalue": "{{subst:CURRENTYEAR}}", "suggested": true }, "month": { "label": "Month", "description": "The MONTH in which the article is being nominated for deletion, for the purpose of adding to the AfD daily logpage. Don't use this if you're using the \"logdate\" parameter.", "example": "February", "type": "string", "suggestedvalues": [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], "autovalue": "{{subst:CURRENTMONTHNAME}}", "suggested": true }, "day": { "label": "Day", "description": "The DAY in which the article is being nominated for deletion, for the purpose of adding to the AfD daily logpage. Don't use this if you're using the \"logdate\" parameter.", "example": "12", "type": "number", "autovalue": "{{subst:CURRENTDAY}}", "suggestedvalues": [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" ], "suggested": true }, "category": { "label": "Category", "description": "If specified, this template adds the page to the corresponding category. PLEASE WIKILINK THE CATEGORY NAME, as the template does not work properly if you do not.", "example": "[[Category:Articles for deletion]]", "type": "content", "autovalue": "[[Category:Articles for deletion]]" }, "origtag": { "label": "Original tag", "description": "The original template that was used to invoke this template. DO NOT SPECIFY THIS PARAMETER MANUALLY! This parameter is usually omitted, but if it is set, it is almost always set to \"afd\".", "example": "afd", "type": "string", "suggestedvalues": [ "afd" ], "autovalue": "afd" }, "timestamp": { "label": "Timestamp", "description": "Timestamp that the article was nominated for deletion.", "suggested": true }, "outcome": { "label": "Outcome", "description": "Desired outcome of the process.", "type": "string", "suggestedvalues": [ "deletion", "draft", "merging", "redirecting" ], "autovalue": "deletion" }, "target": { "label": "Target", "description": "Target of the process if merging or redirecting.", "type": "wiki-page-name" } }, "description": "A helper template to nominate articles for deletion. DO NOT transclude this template directly; instead, use {{subst:afd}}, which fills in the template automatically.", "format": "block" }</templatedata> == See also == {{Template:Afd see also documentation}} <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Articles for deletion templates]] [[Category:Deletion tags]] }}</includeonly> h6tt8reoiblqgzsdnme66yezbamy56n 737679 737678 2026-04-11T19:54:54Z Novem Linguae 49714 1 revision imported from [[:en:Template:Article_for_deletion/dated/doc]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737678 wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Nosubst}} {{Wikipedia:Article alerts/Bot use warning}} This template is used to nominate an article for deletion at [[Wikipedia:Articles for deletion]]. Do '''not''' use this template directly. Instead, use this code: <syntaxhighlight lang="wikitext">{{subst:afd}}</syntaxhighlight> The {{tl|afd}} template will automatically transclude this template once it has been [[WP:substituted|substituted]]. Better yet, use [[WP:Twinkle|Twinkle]] to nominate articles for deletion, since the nomination process has several other steps as well (creating the deletion discussion page, adding it to the daily log pages, adding it to the deletion sorting pages maintained by [[Wikipedia:WikiProject Deletion sorting]]. == Redirects == * [[Template:AfDM]] * [[Template:Afd/dated]] == TemplateData == {{TemplateData header}} <templatedata> { "params": { "substed": { "label": "Substituted?", "description": "If this value is anything but \"yes\", the template produces the error message \"This template must be substituted. Replace {{afd with {{subst:afd.\" DO NOT set this parameter manually, as Template:Afd does this automatically instead.", "example": "yes", "type": "string", "suggestedvalues": [ "yes", "no" ], "required": true }, "page": { "label": "Article to delete", "description": "The title of the article being deleted, if not the article that this template is being transcluded on. If not specified, this template defaults to assuming that the page it's on is the one being deleted.", "example": "Weather in London", "type": "wiki-page-name", "autovalue": "{{PAGENAME}}", "suggested": true }, "help": { "label": "Display help?", "description": "If the value is anything but \"off\" (or omitted entirely), a message on the steps to nominate an article for deletion is provided.", "example": "on", "type": "string", "suggestedvalues": [ "off", "on" ] }, "logdate": { "aliases": [ "date" ], "label": "Log date", "description": "The date for which the AfD discussion page should be added to the corresponding daily AfD log. This must be given in year-month-day format, with the month's name specified. Only used if the help message is shown. If used, the \"year\", \"month\", and \"day\" parameters are not needed.", "example": "2024 February 12", "type": "string", "autovalue": "{{subst:CURRENTYEAR}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}", "suggested": true }, "year": { "label": "Year", "description": "The YEAR in which the article is being nominated for deletion, for the purpose of adding to the AfD daily logpage. Don't use this if you're using the \"logdate\" parameter.", "example": "2024", "type": "number", "autovalue": "{{subst:CURRENTYEAR}}", "suggested": true }, "month": { "label": "Month", "description": "The MONTH in which the article is being nominated for deletion, for the purpose of adding to the AfD daily logpage. Don't use this if you're using the \"logdate\" parameter.", "example": "February", "type": "string", "suggestedvalues": [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], "autovalue": "{{subst:CURRENTMONTHNAME}}", "suggested": true }, "day": { "label": "Day", "description": "The DAY in which the article is being nominated for deletion, for the purpose of adding to the AfD daily logpage. Don't use this if you're using the \"logdate\" parameter.", "example": "12", "type": "number", "autovalue": "{{subst:CURRENTDAY}}", "suggestedvalues": [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" ], "suggested": true }, "category": { "label": "Category", "description": "If specified, this template adds the page to the corresponding category. PLEASE WIKILINK THE CATEGORY NAME, as the template does not work properly if you do not.", "example": "[[Category:Articles for deletion]]", "type": "content", "autovalue": "[[Category:Articles for deletion]]" }, "origtag": { "label": "Original tag", "description": "The original template that was used to invoke this template. DO NOT SPECIFY THIS PARAMETER MANUALLY! This parameter is usually omitted, but if it is set, it is almost always set to \"afd\".", "example": "afd", "type": "string", "suggestedvalues": [ "afd" ], "autovalue": "afd" }, "timestamp": { "label": "Timestamp", "description": "Timestamp that the article was nominated for deletion.", "suggested": true }, "outcome": { "label": "Outcome", "description": "Desired outcome of the process.", "type": "string", "suggestedvalues": [ "deletion", "draft", "merging", "redirecting" ], "autovalue": "deletion" }, "target": { "label": "Target", "description": "Target of the process if merging or redirecting.", "type": "wiki-page-name" } }, "description": "A helper template to nominate articles for deletion. DO NOT transclude this template directly; instead, use {{subst:afd}}, which fills in the template automatically.", "format": "block" }</templatedata> == See also == {{Template:Afd see also documentation}} <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Articles for deletion templates]] [[Category:Deletion tags]] }}</includeonly> h6tt8reoiblqgzsdnme66yezbamy56n Template:Old XfD multi 10 104184 737666 392708 2019-09-22T15:02:21Z en>Primefac 0 [[Wikipedia:Templates for discussion/Log/2019 September 9#Template:Old AfD]] closed as merge ([[WP:XFDC|XFDcloser]]) 737666 wikitext text/x-wiki {{#invoke:Old XfD multi|main}}<noinclude> {{documentation}} </noinclude> 0wemxrhj17bozbsuvnm6g83uio03yqw 737667 737666 2026-04-11T19:54:43Z Novem Linguae 49714 1 revision imported from [[:en:Template:Old_XfD_multi]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737666 wikitext text/x-wiki {{#invoke:Old XfD multi|main}}<noinclude> {{documentation}} </noinclude> 0wemxrhj17bozbsuvnm6g83uio03yqw Wikipedia:Sandbox 4 107092 737731 736690 2026-04-12T04:19:33Z ~2026-22423-73 73516 737731 wikitext text/x-wiki <noinclude>{{Sandbox}}</noinclude> test == Please start your testing below this line == olrjlr0kpuzl4qdbivn0zio7lq8kdol Translate test/fr 0 113093 737603 721845 2026-04-11T16:15:33Z FuzzyBot 18251 Updating to match new version of source page 737603 wikitext text/x-wiki <languages/> {{formatnum|10}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|Documentation de MediaWiki]] Vous êtes dans un '''manuel technique pour le logiciel MediaWiki'''. Celui-ci contient des informations pour les '''développeurs''' et les '''administrateurs système''' concernant l’'''installation''', la '''gestion''' et le '''développement''' du logiciel MediaWiki. <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <span id="Main_sections"></span> ==Rubriques principales== {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] 1rhup65y02j7u7on5gfer0jg7rc98s6 737611 737603 2026-04-11T16:20:05Z FuzzyBot 18251 Updating to match new version of source page 737611 wikitext text/x-wiki <languages/> {{formatnum|10|{{SUBPAGENAME}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|Documentation de MediaWiki]] Vous êtes dans un '''manuel technique pour le logiciel MediaWiki'''. Celui-ci contient des informations pour les '''développeurs''' et les '''administrateurs système''' concernant l’'''installation''', la '''gestion''' et le '''développement''' du logiciel MediaWiki. <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <span id="Main_sections"></span> ==Rubriques principales== {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] k7nzc7z4fx9pal9f0chnjnxndhesvyr 737617 737611 2026-04-11T16:25:30Z FuzzyBot 18251 Updating to match new version of source page 737617 wikitext text/x-wiki <languages/> {{formatnum|10|{{PAGELANGUAGE}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|Documentation de MediaWiki]] Vous êtes dans un '''manuel technique pour le logiciel MediaWiki'''. Celui-ci contient des informations pour les '''développeurs''' et les '''administrateurs système''' concernant l’'''installation''', la '''gestion''' et le '''développement''' du logiciel MediaWiki. <div lang="en" dir="ltr" class="mw-content-ltr"> This manual is '''not for end users''' of MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you are looking for '''documentation to help you use MediaWiki, read the [[Special:MyLanguage/Help:Contents|MediaWiki Handbook]].''' </div> <span id="Main_sections"></span> ==Rubriques principales== {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For system administrators === </div> ; [[Special:MyLanguage/Manual:Installation guide|<div lang="en" dir="ltr" class="mw-content-ltr"> Installation </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to setting up a new MediaWiki installation. </div> : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Installing </div>]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Initial configuration </div>]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|<div lang="en" dir="ltr" class="mw-content-ltr"> Alphabetical list of settings </div>]] | [[Special:MyLanguage/Manual:Configuration settings|<div lang="en" dir="ltr" class="mw-content-ltr"> Settings listed by function </div>]] ; {{ll|Manual:System administration|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to do administrative tasks on your wiki. </div> : [[Special:MyLanguage/Manual:Backing up a wiki|<div lang="en" dir="ltr" class="mw-content-ltr"> Backing up </div>]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Guide to upgrade your MediaWiki installation. </div> ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Sysadmin hub}}. </div>'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <div lang="en" dir="ltr" class="mw-content-ltr"> === For developers === </div> ; <div lang="en" dir="ltr" class="mw-content-ltr"> Architecture </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the key parts of MediaWiki's source code. </div> : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ <div lang="en" dir="ltr" class="mw-content-ltr"> Doxygen-generated documentation </div>] ; {{ll|Manual:Database layout|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about the database architecture used by MediaWiki. </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines </div> ; {{ll|Manual:Developing extensions|nsp=0}} : <div lang="en" dir="ltr" class="mw-content-ltr"> An overview of the ways to create a new MediaWiki extension. </div> : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|<div lang="en" dir="ltr" class="mw-content-ltr"> Tag </div>]] | [[Special:MyLanguage/Manual:Special pages|<div lang="en" dir="ltr" class="mw-content-ltr"> Special page </div>]] | {{ll|Manual:Skins|nsp=0}} ; <div lang="en" dir="ltr" class="mw-content-ltr"> Web access </div> : <div lang="en" dir="ltr" class="mw-content-ltr"> Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. </div> : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''<div lang="en" dir="ltr" class="mw-content-ltr"> More on {{ll|Developer hub}}. </div>'' |} <div lang="en" dir="ltr" class="mw-content-ltr"> === Others === </div> ; [[Special:MyLanguage/Manual:FAQ|<div lang="en" dir="ltr" class="mw-content-ltr"> MediaWiki FAQ </div>]] : <div lang="en" dir="ltr" class="mw-content-ltr"> Frequently asked questions about MediaWiki. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Browsing the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> There are multiple ways to browse through the documentation. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> Readers having trouble finding a particular topic in the section above may find the following ways of browsing to be helpful. </div> * [[Special:Allpages/Manual:]] - <div lang="en" dir="ltr" class="mw-content-ltr"> An automatically generated list of all pages in the Manual: namespace. </div> * [[:Category:Manual]] - <div lang="en" dir="ltr" class="mw-content-ltr"> the top-level Manual category </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == Improving the manual == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There are still a lot of holes in this manual! </div> <div lang="en" dir="ltr" class="mw-content-ltr"> See the [[Special:MyLanguage/Manual:Contents/To do|'to do' page]] for details. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * There is still content on http://meta.wikimedia.org which may need to be migrated. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> If you can't find information on a particular issue in this documentation, please visit [[meta:MediaWiki_FAQ]] and [[meta:Help:Contents]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[Project:Manual]]''' is a place to discuss and co-ordinate the development of the Manual: namespace. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * See also [[Project:Current issues]]. </div> <div lang="en" dir="ltr" class="mw-content-ltr"> == MediaWiki Virtual Library == </div> <div lang="en" dir="ltr" class="mw-content-ltr"> * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)''' has manuals, guides, and collections of selected articles in PDF form you create on-the-fly </div> [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] 040076ftpf824d3dwflaxytxu35n06f Trenbolone 0 113504 737730 562967 2026-04-12T00:03:26Z InternetArchiveBot 34092 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 737730 wikitext text/x-wiki {{Distinguish|Trestolone}} {{Drugbox | Verifiedfields = changed | Watchedfields = changed | verifiedrevid = 470612755 | IUPAC_name = (8''S'',13''S'',14''S'',17''S'')-17-Hydroxy-13-methyl-2,6,7,8,14,15,16,17-octahydro-1''H''-cyclopenta[''a'']phenanthren-3-one | image = Trenbolone.svg | width = 225px <!--Clinical data--> | tradename = | Drugs.com = {{Drugs.com|international|trenbolone}} | pregnancy_category = X | legal_CA = Schedule IV | legal_US = Schedule III | legal_status = | routes_of_administration = [[Intramuscular injection]] (as [[trenbolone ester|ester]]s) | class = [[Androgen]]; [[Anabolic steroid]]; [[Progestogen]] <!--Pharmacokinetic data--> | bioavailability = [[Intramuscular injection|Intramuscular]]: 100%{{Citation needed|date=November 2017}} | protein_bound = | metabolism = [[Liver]] | elimination_half-life = 48–72 hours{{Citation needed|date=November 2017}} | excretion = [[Urine]] <!--Identifiers--> | CAS_number_Ref = {{cascite|changed|??}} | CAS_number = 10161-33-8 | ATC_prefix = None | PubChem = 25015 | DrugBank_Ref = {{drugbankcite|correct|drugbank}} | ChemSpiderID_Ref = {{chemspidercite|correct|chemspider}} | ChemSpiderID = 23383 | UNII_Ref = {{fdacite|correct|FDA}} | UNII = P53R4420TR | synonyms = Trienolone; Trienbolone; RU-2341; Δ<sup>9,11</sup>-Nandrolone; 19-Nor-δ<sup>9,11</sup>-testosterone; Estra-4,9,11-trien-17β-ol-3-one <!--Chemical data--> | C=18 | H=22 | O=2 | SMILES = O=C4\C=C2/C(=C1/C=C\[C@@]3([C@@H](O)CC[C@H]3[C@@H]1CC2)C)CC4 | StdInChI_Ref = {{stdinchicite|correct|chemspider}} | StdInChI = 1S/C18H22O2/c1-18-9-8-14-13-5-3-12(19)10-11(13)2-4-15(14)16(18)6-7-17(18)20/h8-10,15-17,20H,2-7H2,1H3/t15-,16+,17+,18+/m1/s1 | StdInChIKey_Ref = {{stdinchicite|correct|chemspider}} | StdInChIKey = MEHHPFQKXOUFFV-OWSLCNJRSA-N }} '''Trenbolone''' is an [[androgen]] and [[anabolic steroid]] (AAS) of the [[nandrolone]] group which itself was never marketed.<ref name="Elks2014">{{cite book|author=J. Elks|title=The Dictionary of Drugs: Chemical Data: Chemical Data, Structures and Bibliographies|url=https://books.google.com/books?id=0vXTBwAAQBAJ|date=14 November 2014|publisher=Springer|isbn=978-1-4757-2085-3}}</ref><ref name="IndexNominum2000">{{cite book|title=Index Nominum 2000: International Drug Directory|url=https://books.google.com/books?id=5GpcTQD_L2oC&pg=PA1636|date=January 2000|publisher=Taylor & Francis|isbn=978-3-88763-075-1|page=1591}}</ref><ref name="MortonHall2012">{{cite book|author1=I.K. Morton|author2=Judith M. Hall|title=Concise Dictionary of Pharmacological Agents: Properties and Synonyms|url=https://books.google.com/books?id=tsjrCAAAQBAJ&pg=PA279|date=6 December 2012|publisher=Springer Science & Business Media|isbn=978-94-011-4439-1|pages=279–}}</ref><ref name="Drugs.com">{{Cite web |url=https://www.drugs.com/international/trenbolone.html |title=Archived copy |access-date=2020-07-06 |archive-date=2020-07-07 |archive-url=https://web.archive.org/web/20200707053342/https://www.drugs.com/international/trenbolone.html |url-status=dead }}</ref><ref name="Llewellyn2011">{{cite book|author=William Llewellyn|title=Anabolics|url=https://books.google.com/books?id=afKLA-6wW0oC&pg=PT618|year=2011|publisher=Molecular Nutrition Llc|isbn=978-0-9828280-1-4|pages=491–499, 618–,724–}}</ref> [[Trenbolone ester]] [[prodrug]]s, including [[trenbolone acetate]] (brand names '''Finajet''', '''Finaplix''', others) and [[trenbolone hexahydrobenzylcarbonate]] (brand names '''Parabolan''', '''Hexabolan'''), are or have been marketed for veterinary and clinical use.<ref name="Elks2014" /><ref name="IndexNominum2000" /><ref name="MortonHall2012" /><ref name="Llewellyn2011" /><ref name="Nichols2012">{{cite web | title = Implant Strategies for Finishing Cattle using Revalor® (trenbolone acetate and estradiol), Finaplix® (trenbolone) and/or Ralgro® (zeranol)| url = http://www.depts.ttu.edu/afs/implantdb/dbhome/Revalor%20Tech%20Bulletin%2012.pdf | publisher = Merck Animal Health | last1 = Nichols | first1 = Wade | last2 = Hutcheson | first2 = John | last3 = Streeter | first3 = Marshall | last4 = Corrigan | first4 = Mark | last5 = Nuttelman | first5 = Brandon }}</ref><ref name="Kicman2008">{{cite journal|last1=Kicman|first1=A T|title=Pharmacology of anabolic steroids|journal=British Journal of Pharmacology|volume=154|issue=3|year=2008|pages=502–521|issn=0007-1188|doi=10.1038/bjp.2008.165|pmid=18500378|pmc=2439524}}</ref> Trenbolone acetate is used in [[veterinary medicine]] in [[livestock]] to increase [[myotrophy|muscle growth]] and [[appetite]], while trenbolone hexahydrobenzylcarbonate was formerly used clinically in humans but is now no longer marketed.<ref name="Elks2014" /><ref name="IndexNominum2000" /><ref name="MortonHall2012" /><ref name="Llewellyn2011" /> In addition, although it is not approved for clinical or veterinary use, [[trenbolone enanthate]] is sometimes sold on the [[black market]] under the nickname '''Trenabol'''.<ref name="Llewellyn2011" /> [[File:A vial of injectable Trenbolone..jpg|thumb|223x223px|A vial of injectable [[trenbolone acetate]].]] ==Uses== ===Veterinary=== Trenbolone, as trenbolone acetate, improves [[muscle]] mass, feed efficiency, and mineral absorption in [[cattle]].<ref name="Llewellyn2011" /> ==Side effects== {{See also|Anabolic steroid#Adverse effects}} ==Pharmacology== ===Pharmacodynamics=== Trenbolone has both [[anabolic]] and [[androgenic]] effects.<ref name="Llewellyn2011" /> Once [[metabolized]], trenbolone esters have the effect of increasing [[ammonium]] ion uptake by muscles, leading to an increase in the rate of [[protein synthesis]]. It may also have the secondary effects of stimulating appetite and decreasing the rate of [[catabolism]], as all [[anabolic steroids]] are believed to; however, catabolism likely increases significantly once the steroid is no longer taken.<ref>http://www.sportsci.org/encyc/anabster/anabster.html{{full citation needed|date=December 2012}}</ref> At least one study in rats has shown trenbolone to cause [[gene expression]] of the [[androgen receptor]] (AR) at least as potent as [[dihydrotestosterone]] (DHT). This evidence tends to indicate trenbolone can cause an increase in male [[secondary sex characteristic]]s without the need to convert to a more potent androgen in the body.<ref>{{cite journal |doi=10.1093/toxsci/70.2.202 |title=In Vitro and in Vivo Effects of 17beta-Trenbolone: A Feedlot Effluent Contaminant |year=2002 |last1=Wilson |first1=V. S. |journal=[[Toxicological Sciences]] |volume=70 |issue=2 |pages=202–11 |pmid=12441365 |last2=Lambright |first2=C |last3=Ostby |first3=J |last4=Gray Jr |first4=LE|doi-access=free }}</ref> Studies on metabolism are mixed, with some studies showing that it is metabolized by [[aromatase]] or [[5α-reductase]] into [[estrogen (medication)|estrogen]]ic compounds, or into 5α-reduced androgenic compounds, respectively.<ref>{{cite journal |doi=10.1016/j.steroids.2010.01.019 |title=Tissue selectivity and potential clinical applications of trenbolone (17β-hydroxyestra-4,9,11-trien-3-one): A potent anabolic steroid with reduced androgenic and estrogenic activity |year=2010 |last1=Yarrow |first1=Joshua F. |last2=McCoy |first2=Sean C. |last3=Borst |first3=Stephen E. |journal=Steroids |volume=75 |issue=6 |pages=377–89 |pmid=20138077}}</ref><ref>{{cite journal |pmid=6361192 |year=1984 |last1=Gettys |first1=TW |last2=d'Occhio |first2=MJ |last3=Henricks |first3=DM |last4=Schanbacher |first4=BD |title=Suppression of LH secretion by oestradiol, dihydrotestosterone and trenbolone acetate in the acutely castrated bull |volume=100 |issue=1 |pages=107–12 |journal=The Journal of Endocrinology |doi=10.1677/joe.0.1000107}}</ref> Trenbolone has potency five times as high as that of [[testosterone (medication)|testosterone]].<ref name="Llewellyn2011"/><ref name="Mascie-TaylorRosetta2011">{{cite book|author1=C. G. Nicholas Mascie-Taylor|author2=Lyliane Rosetta|title=Reproduction and Adaptation: Topics in Human Reproductive Ecology|url=https://books.google.com/books?id=7eVVK3vfAc0C&pg=PA69|date=13 January 2011|publisher=Cambridge University Press|isbn=978-1-139-49430-4|pages=69–}}</ref> Trenbolone also binds with high [[affinity (pharmacology)|affinity]] to the [[progesterone receptor]],<ref name="Llewellyn2011" /><ref name="Mascie-TaylorRosetta2011" /><ref name="APMIS2001">{{cite book|title=APMIS.: Supplementum|url=https://books.google.com/books?id=szFYAAAAYAAJ|year=2001|publisher=Munksgaard|page=5339}}</ref><ref name="McKerns2013">{{cite book|author=Kenneth W. McKerns|title=Reproductive Processes and Contraception|url=https://books.google.com/books?id=JM6oBwAAQBAJ&pg=PA171|date=13 March 2013|publisher=Springer Science & Business Media|isbn=978-1-4684-3824-6|pages=171–}}</ref> Trenbolone binds to the [[glucocorticoid receptor]], as well.<ref name="APMIS2001" /> ===Pharmacokinetics=== To prolong its [[elimination half-life]], trenbolone is administered as a [[prodrug]] as an [[ester]] conjugate such as [[trenbolone acetate]], [[trenbolone enanthate]], or [[trenbolone hexahydrobenzylcarbonate]].<ref name="Elks2014" /><ref name="IndexNominum2000" /><ref name="MortonHall2012" /><ref name="Llewellyn2011" /> Plasma [[lipase]]s then cleave the ester group in the bloodstream leaving free trenbolone.{{citation needed|date=June 2016}} Trenbolone and 17-epitrenbolone are both excreted in urine as conjugates that can be hydrolyzed with beta-glucuronidase.<ref>{{cite journal |pmid=8674183 |year=1996 |last1=Schänzer |first1=W |title=Metabolism of anabolic androgenic steroids |volume=42 |issue=7 |pages=1001–20 |journal=Clinical Chemistry |doi=10.1093/clinchem/42.7.1001|doi-access=free }}</ref> This implies that trenbolone leaves the body as beta-[[glucuronide]]s or [[sulfate]]s. test123456 ==Chemistry== {{See also|List of androgens/anabolic steroids}} Trenbolone, also known as 19-nor-δ<sup>9,11</sup>-testosterone or as estra-4,9,11-trien-17β-ol-3-one, is a [[synthetic compound|synthetic]] [[estrane]] [[steroid]] a [[chemical derivative|derivative]] of [[nandrolone]] (19-nortestosterone).<ref name="Elks2014" /><ref name="IndexNominum2000" /><ref name="Llewellyn2011" /> It is specifically nandrolone with two additional [[double bond]]s in the steroid nucleus.<ref name="Elks2014" /><ref name="IndexNominum2000" /><ref name="Llewellyn2011" /> [[Trenbolone ester]]s, which have an [[ester]] at the C17β position, include [[trenbolone acetate]], [[trenbolone enanthate]], [[trenbolone hexahydrobenzylcarbonate]], and [[trenbolone undecanoate]].<ref name="Elks2014" /><ref name="IndexNominum2000" /><ref name="Llewellyn2011" /><ref name=":0">{{Cite journal|last=Borodi|first=Gheorghe|last2=Turza|first2=Alexandru|last3=Camarasan|first3=Paula Alexandra|last4=Ulici|first4=Adelina|date=2020|title=Structural studies of Trenbolone, Trenbolone Acetate, Hexahydrobenzylcarbonate and Enanthate esters|url=http://dx.doi.org/10.1016/j.molstruc.2020.128127|journal=Journal of Molecular Structure|volume=1212|pages=128127|doi=10.1016/j.molstruc.2020.128127|issn=0022-2860|via=}}</ref> {| class="wikitable" |+Basic information about different types steroids included base trenbolone inside structure. !Name: !Trenbolone ![[Trenbolone acetate]] ![[Trenbolone enanthate]] ![[Trenbolone hexahydrobenzylcarbonate]] (cyclohexylmethylcarbonate) |- |Structural<ref name=":0" /> |[[File:Trenbolone.png|frameless]] |[[File:Trenbolone acetate.svg|frameless]] |[[File:Trenbolone enanthate.svg|frameless]] |[[File:Trenbolone cyclohexylmethylcarbonate.svg|frameless]] |- |Formula |C<sub>18</sub>H<sub>22</sub>O<sub>2</sub> |C<sub>20</sub>H<sub>24</sub>O<sub>3</sub> |C<sub>25</sub>H<sub>34</sub>O<sub>3</sub> |C<sub>26</sub>H<sub>34</sub>O<sub>4</sub> |- |Crystal system<ref name=":0" /> | |monocrystalic |monocrystalic |monocrystalic |- |Elimination half life |48-72 hours<sup>[''[[wikipedia:Citation needed|citation needed]]'']</sup> |short 1-2 days<ref name=":0" />; 3 days<ref>{{Cite book|last=Ruiz|first=Pedro|url=https://books.google.pl/books?id=w4ZUJAdleTsC&pg=PA358&redir_esc=y#v=onepage&q&f=false|title=Lowinson and Ruiz's Substance Abuse: A Comprehensive Textbook|last2=Strain|first2=Eric C.|date=2011|publisher=Lippincott Williams & Wilkins|isbn=978-1-60547-277-5|language=en}}</ref> |long 11 days<ref name=":0" /> |8 days<ref name=":0" /> |} ==History== Trenbolone was first [[chemical synthesis|synthesized]] in 1963.<ref name="pmid8674183">{{cite journal | vauthors = Schänzer W | title = Metabolism of anabolic androgenic steroids | journal = Clin. Chem. | volume = 42 | issue = 7 | pages = 1001–20 | year = 1996 | pmid = 8674183 | doi = 10.1093/clinchem/42.7.1001| url = | doi-access = free }}</ref> ==Society and culture== ===Generic names=== ''Trenbolone'' is the [[generic term|generic name]] of the drug and its {{abbrlink|INN|International Nonproprietary Name}} and {{abbrlink|BAN|British Approved Name}}.<ref name="Elks2014" /><ref name="IndexNominum2000" /><ref name="MortonHall2012" /> It has also been referred to as ''trienolone'' or ''trienbolone''.<ref name="Elks2014" /><ref name="IndexNominum2000" /><ref name="MortonHall2012" /><ref name="Nations1990">{{cite book|author=Food and Agriculture Organization of the United Nations|title=Residues of Some Veterinary Drugs in Animals and Foods: Monographs Prepared by the Thirty-Fourth Meeting of the Joint FAO/WHO Expert Committee on Food Additives, Geneva, 30 January-8 February 1989|url=https://books.google.com/books?id=BCw1OUlrT-QC&pg=PA88|year=1990|publisher=Food & Agriculture Org.|isbn=978-92-5-102933-6|pages=88–}}</ref> ===Legal status=== Some [[bodybuilder]]s and [[athlete]]s use trenbolone esters for their muscle-building and otherwise performance-enhancing effects.<ref name="Llewellyn2011" /> Such use is illegal in the [[United States]] and many other countries, in [[Europe]] and [[Asia]]. The DEA classifies trenbolone and its esters as [[Controlled Substances Act#Schedule III controlled substances|Schedule III controlled substance]]s under the [[Controlled Substances Act]].<ref name="FDA2009">{{cite web | title=Controlled Substances Act | url=https://www.fda.gov/regulatoryinformation/legislation/ucm148726.htm | publisher=United States Food and Drug Administration | date=11 June 2009 | accessdate=17 June 2016}}</ref> Trenbolone is classified as a Schedule 4 drug in [[Canada]]<ref>{{Cite web |url=http://laws-lois.justice.gc.ca/eng/acts/C-38.8/page-24.html?term=steroids#sched4 |title=Archived copy |access-date=2020-07-06 |archive-date=2015-02-23 |archive-url=https://web.archive.org/web/20150223001354/http://laws-lois.justice.gc.ca/eng/acts/C-38.8/page-24.html?term=steroids#sched4 |url-status=dead }}</ref> and a class C drug with no penalty for personal use or possession in the [[United Kingdom]].<ref>http://www.homeoffice.gov.uk/publications/alcohol-drugs/drugs/acmd1/anabolic-steroids-report/anabolic-steroids?view=Binary {{Webarchive|url=https://web.archive.org/web/20110922230656/http://www.homeoffice.gov.uk/publications/alcohol-drugs/drugs/acmd1/anabolic-steroids-report/anabolic-steroids?view=Binary |date=2011-09-22 }}.</ref> Use or possession of steroids without a prescription is a crime in [[Australia]].<ref>{{Cite web |url=http://www.aic.gov.au/en/crime_types/drugs_alcohol/drug_types/steroids.aspx |title=Archived copy |access-date=2020-07-06 |archive-date=2012-03-23 |archive-url=https://web.archive.org/web/20120323114641/http://www.aic.gov.au/en/crime_types/drugs_alcohol/drug_types/steroids.aspx |url-status=dead }}</ref> ===Doping in sports=== {{See also|List of doping in sport cases#Trenbolone esters}} There are known cases of doping in sports with trenbolone esters by [[professional sports|professional]] [[athlete]]s. ==References== {{Reflist|2}} ==Further reading== * {{cite journal | vauthors = Meyer HH | title = Biochemistry and physiology of anabolic hormones used for improvement of meat production | journal = APMIS | volume = 109 | issue = 1 | pages = 1–8 | year = 2001 | pmid = 11297191 | doi = 10.1111/j.1600-0463.2001.tb05785.x| url = }} * {{cite journal | vauthors = Yarrow JF, McCoy SC, Borst SE | title = Tissue selectivity and potential clinical applications of trenbolone (17beta-hydroxyestra-4,9,11-trien-3-one): A potent anabolic steroid with reduced androgenic and estrogenic activity | journal = Steroids | volume = 75 | issue = 6 | pages = 377–89 | year = 2010 | pmid = 20138077 | doi = 10.1016/j.steroids.2010.01.019 | url = }} ==External links== * * {{Androgens and antiandrogens}} {{Progestogens and antiprogestogens}} {{Androgen receptor modulators}} {{Progesterone receptor modulators}} [[Category:Secondary alcohols]] [[Category:Androgens and anabolic steroids]] [[Category:Estranes]] [[Category:Ketones]] [[Category:Progestogens]] [[Category:World Anti-Doping Agency prohibited substances]] <noinclude> <small>This page was moved from [[:en:Trenbolone]]. Its edit history can be viewed at [[Trenbolone/edithistory]]</small></noinclude> 9irmc0acggq9uylubqwfaygwh9dnkts Wikipedia:Sockpuppet investigations/Test 4 115196 737710 735517 2026-04-11T20:04:29Z DatGuy 30264 Requesting admin action, comment (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737710 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|admin}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> 6w11hbahouyzqbpe0oewzx026oa1d7s 737712 737710 2026-04-11T20:04:44Z DatGuy 30264 Requesting clerk action (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737712 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|clerk}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|admin}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> imxpyronmyufys1184ml3xvfk16h4ok 737714 737712 2026-04-11T20:04:54Z DatGuy 30264 Update archivenotice (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737714 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test|moot=yes}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|admin}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> a1e29uh54e22kqrk8tg8ce2fkdhgrg0 737716 737714 2026-04-11T20:08:12Z DatGuy 30264 Requesting clerk action (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737716 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test|moot=yes}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|clerk}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> 865tc8h90n3euxix8elhpl4b5b2dfyb 737718 737716 2026-04-11T20:08:20Z DatGuy 30264 Update archivenotice (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737718 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|admin}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> 6w11hbahouyzqbpe0oewzx026oa1d7s 737720 737718 2026-04-11T20:11:09Z DatGuy 30264 Requesting clerk action (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737720 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|clerk}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ka3hfy47kc5x11c0y3j2s8h6dr11dz5 737722 737720 2026-04-11T20:11:23Z DatGuy 30264 Update archivenotice (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737722 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test|moot=yes}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|admin}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> a1e29uh54e22kqrk8tg8ce2fkdhgrg0 737724 737722 2026-04-11T20:13:18Z DatGuy 30264 Requesting clerk action (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737724 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test|moot=yes}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|clerk}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> 865tc8h90n3euxix8elhpl4b5b2dfyb 737726 737724 2026-04-11T20:15:04Z DatGuy 30264 Requesting admin action (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737726 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test|moot=yes}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|admin}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> a1e29uh54e22kqrk8tg8ce2fkdhgrg0 737727 737726 2026-04-11T20:15:25Z DatGuy 30264 Update archivenotice (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737727 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|clerk}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ka3hfy47kc5x11c0y3j2s8h6dr11dz5 737728 737727 2026-04-11T20:24:47Z DatGuy 30264 Requesting admin action (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737728 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|admin}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> 6w11hbahouyzqbpe0oewzx026oa1d7s 737729 737728 2026-04-11T20:25:05Z DatGuy 30264 Update archivenotice (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737729 wikitext text/x-wiki <noinclude>__TOC__</noinclude> {{SPI archive notice|1=Test|moot=yes}} {{SPIpriorcases}} ===08 July 2020=== {{SPI case status|closed}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 2}} ({{clerknote}} original case name) * {{checkuser|1=Test 2013-02-21 3}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Test SPI while GeneralNotability is working on some spihelper changes [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:43, 8 July 2020 (UTC) * This is an open report. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:59, 9 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Trying to comment. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:08, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 12:39, 21 August 2020 (UTC) *test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:13, 21 August 2020 (UTC) *Test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:05, 21 August 2020 (UTC) *{{onhold}} - Test test test [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:07, 21 August 2020 (UTC) * This is a test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:18, 8 January 2026 (UTC) * Test. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 16:12, 9 January 2026 (UTC) * Foo [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 13:55, 9 March 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|cuhold}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 4}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{onhold}} – asd [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 11:31, 28 January 2026 (UTC) * {{onhold}} – [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 05:12, 15 February 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> ===09 July 2020=== {{SPI case status|admin}} ====Suspected sockpuppets==== * {{checkuser|1=Test 2013-02-21 5}} <!-- You may duplicate the templates above ({{checkuser}} and {{checkIP}}) to list more accounts--> *'''Tools''': <span class="plainlinks">[https://tools.wmflabs.org/sigma/editorinteract.py?users={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Editor interaction utility] • [https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user={{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}} Interaction Timeline] • [https://tools.wmflabs.org/betacommand-dev/UserCompare/{{urlencode:{{#titleparts:{{SUBPAGENAME}}}}}}.html User compare report]</span> <small>''Auto-generated every hour.''</small> Closed section. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 15:35, 10 July 2020 (UTC) ====<big>Comments by other users</big>==== <small>''Accused parties may also comment/discuss in this section below. See [[Wikipedia:Sockpuppet investigations/SPI/Guidance#Defending yourself against claims|Defending yourself against claims]].''</small> *Test again. [[User:GeneralNotability|GeneralNotability]] ([[User talk:GeneralNotability|talk]]) 16:10, 13 August 2020 (UTC) ====<big>Clerk, CheckUser, and/or patrolling admin comments</big>==== * {{Clerk Request}} – Test [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 14:54, 17 March 2026 (UTC) * Testing [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 21:03, 20 March 2026 (UTC) * {{awaitingadmin}} Testing. [[User:DatGuy|DatGuy]] ([[User talk:DatGuy|talk]]) 20:04, 11 April 2026 (UTC) ----<!--- All comments go ABOVE this line, please. --> a1e29uh54e22kqrk8tg8ce2fkdhgrg0 Template:Always substitute 10 116782 737648 691182 2026-02-21T11:02:47Z en>Mathglot 0 Populate [[Category:Templates with matching hidden id]]. 737648 wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Unsubst|main|$B= {{Ombox | name = Subst only | type = notice | text = This template <strong>{{#switch:{{{yesnomaybe|}}}|may=may be [[Help:Substitution|substituted]]</strong>|never=should <em>not</em> be [[Help:Substitution|substituted]]</strong>||#default=should always be [[Help:Substitution|substituted]]</strong> – use <!-- -->{{{actualtemplate|{{template other|{{Tlsp|code=yes|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{BASEPAGENAME}}|{{PAGENAME}}}}}}|{{Tlsu|code=yes|{{FULLPAGENAME}}}}}}}}}}}. <!-- -->{{#if:{{yesno|{{{auto|no}}}}} |Any accidental transclusions will be automatically substituted by a bot.{{{1|}}}{{#if:{{yesno|{{{nocat|}}}}}|<!--no categorization-->|{{#switch:{{SUBPAGENAME}}|doc|sandbox=|[[Category:Wikipedia templates to be automatically substituted]]}}}}}} <!-- -->{{#if:{{{alt|}}} |For transcluding, use {{Tl|{{{alt|}}}}} instead.}} }}{{#if:{{yesno|{{{nocat|<noinclude>true</noinclude>}}}}}|<!--no categorization-->|{{#switch:{{SUBPAGENAME}}|doc|sandbox=|{{#switch:{{{yesnomaybe|}}} |never=[[Category:Wikipedia never-substituted templates]] |may=<!--No applicable category--> |#default=[[Category:Wikipedia substituted templates]]{{#ifexpr: 0{{Find page text |text=<!%-%- *{{NAMESPACE}}:[{{lc:{{str left|{{Lua escape|{{{1|{{PAGENAME}}}}}}}|1}}}}{{uc:{{str left|{{Lua escape|{{{1|{{PAGENAME}}}}}}}|1}}}}]{{str right|{{Lua escape|{{{1|{{PAGENAME}}}}}}}|1}} *%-%-> |title={{FULLPAGENAME}} |plain=f}} > 0 | [[Category:Templates with matching hidden id]]}} }}}}}}}}<includeonly>__EXPECTUNUSEDTEMPLATE__</includeonly><noinclude>{{Documentation}}</noinclude> ssapjo4e6wqrews6hmk46191pq0p9h9 737649 737648 2026-04-11T19:54:19Z Novem Linguae 49714 1 revision imported from [[:en:Template:Always_substitute]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737648 wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Unsubst|main|$B= {{Ombox | name = Subst only | type = notice | text = This template <strong>{{#switch:{{{yesnomaybe|}}}|may=may be [[Help:Substitution|substituted]]</strong>|never=should <em>not</em> be [[Help:Substitution|substituted]]</strong>||#default=should always be [[Help:Substitution|substituted]]</strong> – use <!-- -->{{{actualtemplate|{{template other|{{Tlsp|code=yes|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{BASEPAGENAME}}|{{PAGENAME}}}}}}|{{Tlsu|code=yes|{{FULLPAGENAME}}}}}}}}}}}. <!-- -->{{#if:{{yesno|{{{auto|no}}}}} |Any accidental transclusions will be automatically substituted by a bot.{{{1|}}}{{#if:{{yesno|{{{nocat|}}}}}|<!--no categorization-->|{{#switch:{{SUBPAGENAME}}|doc|sandbox=|[[Category:Wikipedia templates to be automatically substituted]]}}}}}} <!-- -->{{#if:{{{alt|}}} |For transcluding, use {{Tl|{{{alt|}}}}} instead.}} }}{{#if:{{yesno|{{{nocat|<noinclude>true</noinclude>}}}}}|<!--no categorization-->|{{#switch:{{SUBPAGENAME}}|doc|sandbox=|{{#switch:{{{yesnomaybe|}}} |never=[[Category:Wikipedia never-substituted templates]] |may=<!--No applicable category--> |#default=[[Category:Wikipedia substituted templates]]{{#ifexpr: 0{{Find page text |text=<!%-%- *{{NAMESPACE}}:[{{lc:{{str left|{{Lua escape|{{{1|{{PAGENAME}}}}}}}|1}}}}{{uc:{{str left|{{Lua escape|{{{1|{{PAGENAME}}}}}}}|1}}}}]{{str right|{{Lua escape|{{{1|{{PAGENAME}}}}}}}|1}} *%-%-> |title={{FULLPAGENAME}} |plain=f}} > 0 | [[Category:Templates with matching hidden id]]}} }}}}}}}}<includeonly>__EXPECTUNUSEDTEMPLATE__</includeonly><noinclude>{{Documentation}}</noinclude> ssapjo4e6wqrews6hmk46191pq0p9h9 Template:Never substitute 10 119990 737676 621004 2026-02-11T06:29:25Z en>Whyiseverythingalreadyused 0 [[WP:BOLD]] anti-substitution measure (see [[Module:Unsubst]]) 737676 wikitext text/x-wiki {{safesubst:<noinclude />#invoke: Unsubst||$B= {{Always substitute|yesnomaybe=never|nocat={{{nocat|}}}}} }}<noinclude> {{Documentation}} </noinclude> 005dtztzvg05qoc5xxjmbf6rdz2qi8t 737677 737676 2026-04-11T19:54:54Z Novem Linguae 49714 1 revision imported from [[:en:Template:Never_substitute]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737676 wikitext text/x-wiki {{safesubst:<noinclude />#invoke: Unsubst||$B= {{Always substitute|yesnomaybe=never|nocat={{{nocat|}}}}} }}<noinclude> {{Documentation}} </noinclude> 005dtztzvg05qoc5xxjmbf6rdz2qi8t Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Archivo/Miscelánea/Actual 4 120313 737584 737573 2026-04-11T13:53:21Z Nacaru 54746 Resolviendo solicitud «[[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscelánea/Actual#Situación_extraña_con_tinte_político|Situación extraña con tinte político]]» mediante [[WP:TL|Twinkle Lite]] 737584 wikitext text/x-wiki <!-- AVISO: No semiproteger la miscelánea del tablón pues aquí redirigen muchas plantillas y avisos en páginas varias para que los novatos puedan aportar o realizar consultas que sólo bibliotecarios pueden resolver --> <noinclude>{{Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Plantillas/Cabecera}} {{Archivado automático |Destino=Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Archivo/Miscelánea/AAAA/MM |Días a mantener=7 }} == Situación extraña con tinte político == ; Asunto Desde 2019 aproximadamente se ha visto un grupo de IPv6 dentro del rango {{u|2804:14C:0:0:0:0:0:0/32}} editando y tratando de manipular contenidos políticos controvertidos (específicamente en [[Fascismo en América]] y otros más), de hecho por lo que se ve [[Discusión:Fascismo en América|aquí]] el anónimo se expresa de una manera particular sin saber siquiera español y sólo deja links sin mayor explicación. Adicionalmente, el anónimo está constantemente dejando mensajes a {{u2|Raimundo57br}} haciendo una serie de solicitudes de modificaciones a artículos de tinte político (sobre todo si son relativos a la derecha o izquierda política). Pero cuando vemos más a profundidad, vemos otras IPs como {{u|187.20.115.154}} dejando lo mismo al usuario, o este [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:Raimundo57br&diff=prev&oldid=150518775 mensaje] de Raimundo57br dirigido a otra cuenta haciendo ping, pero en su propia discusión en un intento de coordinación de su desbloqueo. Hago acotar que Raimundo57br [https://pt.wikipedia.org/wiki/Especial:Contribui%C3%A7%C3%B5es/Raimundo57br está expulsado de la Wikipedia portuguesa desde el 2022], luego de múltiples problemas allá y numerosos bloqueos temporales. También, que la Wikipedia portuguesa maneja estrictamente el uso de direcciones anónimas y [https://pt.wikipedia.org/wiki/Usu%C3%A1rio(a):2804:14C:0:0:0:0:0:0/32 todo el rango 2804:0:0:0:0:0:0:0/19] se encuenta bloqueado desde 2020. Existe una posibilidad de que haya una inusual coordinación entre anónimos y Raimundo57br para manipular artículos de política en Wikipedia en español y la Wikipedia portuguesa (a partir de una tercera cuenta), ante la imposibilidad de ambos entes (ya que se les hace más cómodo intervenir acá). Incluyo al reporte que [https://es.wikipedia.org/w/index.php?title=Discusi%C3%B3n:Fascismo_en_Am%C3%A9rica&diff=prev&oldid=168802559 con estos] [https://es.wikipedia.org/w/index.php?title=Discusi%C3%B3n:Fascismo_en_Am%C3%A9rica&diff=prev&oldid=168803824 diffs en específico], no sólo Raimundo57br está involucrado, también {{u|Auréola}} (quien también pasó por un proceso de expulsión, aunque no está autoconfirmado acá) y {{u|Luizpuodzius}} (quien fue sancionado también allá, pero no expulsado; tampoco autoconfirmado acá). Aquí [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ALuizpuodzius&diff=159046847&oldid=152503114 una interacción entre usuarios hablando de temas referentes a pt.wiki]. De esta situación, se confirma que se esté usando nuestra Wikipedia para cuestiones ajenas de un proyecto que los sancionó y expulsó. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 17:04 4 ago 2025 (UTC) ;Comentarios #'''Sobre los mensajes que recibo del IP''': no tengo contacto fuera de la wiki con este IP que me envía solicitudes para editar determinados artículos y, por regla general, no atiendo estas solicitudes; #'''En cuanto a mis problemas en la wiki-pt''', aclaro que no se deben a ediciones que hice en el dominio principal de esa versión de la wiki (donde se borraron pocos artículos y se revirtieron pocas ediciones), sino a una larga rivalidad con determinados administradores. No creo que sea oportuno traer ese debate aquí, pero si insisten, daré las aclaraciones que consideren oportunas. #'''Sobre mi contacto con Luizpuodzius''': entiendo que fue un acto aislado sin mayores repercusiones, hace mucho tiempo que no interactúo con esa persona. #'''Sobre mi interacción con Anhabete''': entiendo que fue un acto aislado sin mayores repercusiones, después de eso no volví a interactuar con esa persona. :--[[Usuario:Raimundo57br|Raimundo57br]] ([[Usuario Discusión:Raimundo57br|discusión]]) 12:35 5 ago 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver petición|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC)|3=}} == Solicito traslado de páginas == * Por favor trasladar las siguientes páginas # {{a|Dover}} ... a ... {{a|Dover (desambiguación)}} # {{a|Dover (Kent)}} ... a... {{a|Dover}} ;Motivo * Por favor indicar el motivo: La ciudad de Inglaterra es el uso principal del término. La página de desambiguación tenía cientos de enlaces ambiguos. ;Usuario que lo solicita Firmado: [[Usuario:Rondador|Ronda]][[Usuario Discusión:Rondador|dor]] 09:39 2 sep 2025 (UTC) ;Coentarios * Personalmente estoy de acuerdo, vamos a solicitar las opiniones de otros que quieran opinar. Un saludo. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 10:45 2 sep 2025 (UTC) * Con permiso, {{u2|Rondador}}, he detallado los dos traslados que estás pidiendo; estoy de acuerdo con el traslado, y también con la solicitud de opiniones (quizá en algún lado haya algo muy relevante llamado localmente Dover). --[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 12:09 2 sep 2025 (UTC) * Si pongo Dover en el buscador de Google, [[google:dover|el primer resultado]] (y siguientes) es para el grupo musical español (algo que sospechaba, ya que en mi mente sucede lo mismo). [[Usuario:MiguelAlanCS|<b style="color: #990099;">MiguelAlanCS</b>]] >>> [[Archivo:PICOL icon Mail.svg|15px|link=Usuario discusión:MiguelAlanCS]] 12:13 2 sep 2025 (UTC) :: En mi caso sale la ciudad, pero bueno, también es un argumento a tener en cuenta. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 20:23 2 sep 2025 (UTC) :::{{no|}} Lo que no se puede hacer es trasladar y despues solicitar, como hizo unilateralmente el editor. Lo revertí a la espera de otra respuesta. Aunque mejor que en el tablón de bibliotecarios donde solo responden bibliotecarios, es preguntar en el café. A mi, si me preguntan por Dover me vienen muchas cosas a parte de la propia ciudad por lo que hay que buscar un consenso clarone indicarlo en la resolución y posibles traslados para que no hay discusiones en el futuro. --[[Usuario:Geom|<b style="background:purple;color:yellow;font-size:80%;border-radius:9px 0 0 9px;padding:2px 5px;">Geom</b>]][[Usuario discusión:Geom|<span style="font-size:80%;color: gray;">'''(discusión)'''</span>]] 09:35 3 sep 2025 (UTC) ::::{{No|Punto metiche}}, del otro lado del charco lo metí a San Gugul y lo primero que me salió es la banda. [[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 20:54 24 sep 2025 (UTC) ;Respuesta {{admintab|$0}} == Gersoncharles == ; Asunto Durante el corto tiempo de la CAB del usuario {{u2|Gersoncharles}} señalé una [https://es.wikipedia.org/w/index.php?title=Wikipedia_discusi%C3%B3n:Candidaturas_a_bibliotecario/Gersoncharles&diff=prev&oldid=169411042 situación que considero ineludible], a pesar que el usuario trató de desvincularse sin mayor sustento y prefirió cancelar la CAB. El usuario a pesar que fue sancionado en 2021 por este servidor, [https://xtools.wmcloud.org/pages/es.wikipedia.org/Gersoncharles?uselang=es ha retomado desde hace un año] en la creación de entradas de concursos de belleza de México con muy pocas notas de referencia: si observamos los artículos creados, sólo una fracción de cada artículo puede ser revisado en sus referencias, pero hay gran parte de la información que parece manejar el usuario de [[WP:FP|una manera que lo conoce en exclusiva]], por lo que no ha concedido en los requerimientos mínimos que se necesita para seguir editando en Wikipedia. De hecho, le han borrado 8 artículos en apenas un par de meses atrás. Sé que me adelanto en especulaciones, pero ante la ausencia de motivos que le llevaron a la CAB, sospecharía que [[WP:NSW|estaba buscando alguna forma de restaurar contenidos borrados, o disputar decisiones administrativas]]. El usuario se comporta virtualmente como una [[WP:CPP|CPP]] y el 100% de sus contribuciones en artículos están fijados en un tema cerradísimo como este, me hacen entreveer que el usuario requiere algún correctivo de prohibición editorial, al menos, para que empiece a entender su posición como editor, ya que alguien con 15 años en Wikipedia (y unos 8 años editando con cierta actividad), es rarísimo que siga comportándose como una CPP. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 05:12 10 sep 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver esta petición para ver si se reproduce el fallo.|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:12, 11 April 2026 (UTC)|3=}} ==Status quo Stonewalling== ; Usuarios implicados * {{u|Aroblesm}} ;Artículo [[Amarillos por Chile]] (ahora, pero es un comportamiento habitual) ; Motivo Aunque el usuario hace un buen trabajo de patrullaje contra vandalismo, tiene un comportamiento habitual de lo que se denomina [[:en:WP:Status quo stonewalling]]. El usuario revierte todo lo que no le parece y no debate. Trata a cualquier usuario, experimentado o no como si fuera un vándalo o una CPP. Le va dando al botón, llegando siempre al límite de 3RR (en que el status quo tiene prioridad) y no pasa a la búsqueda de consenso. Y lo peor de todo, es que no maneja bien las políticas y hace SQS de manera incorrecta. <br /> En este caso particular está cometiendo un error obvio, porque en la plantilla: parámetro ideología, está usando un fuente que no se puede, ya que no es independiente. Concretamente a [https://www.laizquierdadiario.cl/Chile La Izquierda Diario], que es el órgano oficial del [[Partido de Trabajadores Revolucionarios]] y como tal no es un medio independiente al juzgar la posición de otro partido político (le explique en la PD y en su propio PD, y se limita a indicar en su reversión que ''no se puede eliminar referencias simplemente porque no nos gusta''. Esto es una abierta contravención a [[WP:FF]].<br /> Aún así, no quiero que esta denuncia se centre en ese artículo, ya que es un comportamiento habitual (basta ver su [https://es.wikipedia.org/w/index.php?title=Especial%3AContribuciones&target=Aroblesm&namespace=all&tagfilter=&start=&end=&limit=1000 historial]). Como digo arriba, muchas veces actúa así con vándalos y CPP, pero le pasa la máquina a lo que venga por delante y sin debatir (basta mirar su PD), y tampoco evidenciando un buen conocimiento de las políticas. Como indico arriba es un comportamiento habitual textbook de [[:en:WP:Status quo stonewalling]]. Solicito que se le indique al usuario lo incorrecto del proceder y que se le deje una clara advertencia respecto a SQS. ; Usuario que lo solicita * [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 11:04 10 sep 2025 (UTC) ;Comentarios {{comentario}}: SFBB omite que está eliminando referencias del artículo por mero gusto personal y sin justificación alguna. Se le propuso debatir pero no espera el debate. Yo solo he mantenido el artículo a su versión estable. Además, de todos los editores del artículo es el único que ha objetado una referencia y eso es raro en mi opinión. Me dedico a combatir el vandalismo y las ediciones arbitrarias sin consenso previo. No veo problemas en aquello. SFBB solo busca poder mantener su eliminación de referencias por mero gusto personal sin importar. --[[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 16:13 10 sep 2025 (UTC) ::No hombre....es un patrón de conducta. siempre que no te gusta algo movís a "versión estable" sin discutir nada hasta aburrir a la contraparte...eso es precisamente SQS. Tenís la PD llena de quejas por eso y seguís creyendo que lo estái haciendo bien, meramente porque aburrís al resto que le da lata pelear con vos (a mí mismo muchas veces me hai aburrido). Sin esta denuncia ni siquiera te habríai dignado a opinar...le diste dos veces más al botón (y sólo opinaste después de la denuncia y no dijiste nada en serio, salvo que estaba en la referencia...pff...nadie lo ha puesto en duda)...y lo que calificái como "arbitrariedad" lo hacís sin entender profundamente el funcionamiento de wikipeida. Es una obviedad que esa fuente no se puede usar lo que está siendo usada, no es "gusto personal" son las polítcas: por n-sima vez: lee [[WP:FF]]. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 19:17 10 sep 2025 (UTC) :::'''Comentario'''. Al usuario se le explica porqué cierta fuerte [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=169577342&oldid=169428682 absolutamente no] es [[WP:FF]] desde ningún punto de vista e ipso facto y sin explicación alguna entra en guerra de ediciones instantánea [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=169577348&oldid=169577342 (1)] [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=next&oldid=169577358 (2)]. Así no se puede, y preocupa si un revisor actúa así en otras páginas no analizadas. [[Usuario:XavierItzm|XavierItzm]] ([[Usuario Discusión:XavierItzm|discusión]]) 01:11 20 sep 2025 (UTC) ::::Quiero agregar que cuando el usuario se encontró con una clara mayoría de usuarios que cuestionaba su actuar, fue a pedir [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Amarillos_por_Chile_2 la protección de la página en su versión]. Nuevamente, esto es parte del comportamiento habitual de usuario ([https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual&action=history ver el historial de ese tablón]): el usuario trata cualquier diferencia de opinión con la suya como si fuera vandalismo y utiliza ese tablón para cementar su versión (yo mismo lo he sufrido con anterioridad, aunque es difícil buscar un acto específico en ese tablón). Quiero agregar que esta denuncia <u>no es por este caso en particular</u> sino que contra el comportamiento habitual de manipular el sistema para mantener sus versiones de status quo, sin siquiera entrar a discutir y tratar cualquier tipo de edición (que no concuerde con su visión) como si fuera vandalismo. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 09:35 20 sep 2025 (UTC) :::::Otro antecedente más del que ni siquiera estaba al tanto. Con anterioridad a su solicitud de protección de la página del 20 de agosto (rechazada por {{u2|Rafstr}}), cuando intentaba mantener así el status quo ante la presión de 5 usuarios (todos usuarios veteranos muy experimentados) que llegaron independientemente a esa PD - <small>tras mención general del problema en el café</small>, el usuario ya había exigido una [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Amarillos_por_Chile protección similar el 8 de agosto], con anterioridad a esta denuncia y con posterioridad a que yo haya iniciado una discusión en la PD (que el ignoró al igual que los mensajes que le dejé en su PD personal, mientras seguía dándole al botón revertir). Es un perfecto ejemplo de cómo el usuario consistentemente [[WP:NSW|abusa de las reglas del sistema]], a sabiendas de que si revierte 3 veces, puede denunciar a la contraparte por 3R, y pedir protecciones. Y, bueno...le sigue dando al botón sin intentar si quiera debatir. :::::[https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/3RR/Actual&diff=prev&oldid=149513602#Aroblesm Ya ha sido denunciado anteriormente por exactamente lo mismo] y (como decía anteriormente) tiene la PD llena de quejas por lo mismo, pero la mayoría simplemente nos hartamos - yo ya muchas veces - y nos vamos a otra cosa sin denunciar...'''<u>pero este comportamiento tiene que parar de una vez por todas</u>'''. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 00:50 22 sep 2025 (UTC) ::::::Otro ejemplo (y sin buscar mucho): hace unos días atrás hizo lo mismo con {{u2|GKLakers02}} en el artículo [[Línea 6 del Metro de Santiago]] y terminó denunciando al usuario [https://es.wikipedia.org/w/index.php?title=Wikipedia:Vandalismo_en_curso&diff=prev&oldid=169275648 por un presunto vandalismo]. En en intertanto GKLakers02 intentaba discutir en la [https://es.wikipedia.org/wiki/Discusi%C3%B3n:L%C3%ADnea_6_del_Metro_de_Santiago#Tensi%C3%B3n_Incorrecta. PD del artículo] proveyendo fuentes correctas, pero siendo completamente ignorado pro el usuario. El asunto terminó cuando el artículo fue protegido, manteniendo el status quo (incorrecto) que tozudamente forzaba Aroblesm dándole al botón. ::::::Pero bueno...este el sólo otro ejemplo pero son cientos. Alguien tiene que parar al usuario (que es buenísimo combatiendo vandalismo, pero termina tratando a todo el mundo cual si fueran vándalos). [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 01:07 22 sep 2025 (UTC) :a sabiendas que está denuncia aún no se resuelve, intenté corregir lo de la [[Línea 6 del Metro de Santiago]], siendo nuevamente revertido [https://es.wikipedia.org/w/index.php?title=L%C3%ADnea_6_del_Metro_de_Santiago&diff=prev&oldid=169740888 1] y [https://es.wikipedia.org/w/index.php?title=Línea_6_del_Metro_de_Santiago&diff=prev&oldid=169740854 2] oportunidades (en rápidisimo; me reveritió dos veces, antes de que pudiese agregar la info sobre las otras líneas, para las cuales existe similar documentación) por el usuario que no duda un segundo en entrar en GE para defender el status quo sobre la base de una referencia absolutamente obsoleta del año 2016 (sí, hace 9 años, el metro sí operaba a 750 Vcc). Lo peor es que revierte e indica que hay que ir a la PD donde ya se le ha explicado con lujo de detalles que está equivocado.<br /> :Por favor: alguien tiene que frenar a este usuario ya que le hace mucho daño a eswiki (piensen en todas las IPs/usuarios que él determina unilateralmente que son vándalos). Yo por mi parte, voy a intentar evitarlo hasta que se resuelva esto (y voy a dejar los artículos sobre le Metro de Santiago con un voltaje incorrecto por el momento), aunque es altamente probable que me revierta en otros lados (ya vigila una enorme proporción de los artículos sobre contingencia chilena); si lo hace, no voy a insistir y voy a dejar las cosas de manera incorrecta. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 23:40 29 sep 2025 (UTC) Agregro otro antecendente: En [[Línea 6 del Metro de Santiago]] y [[Línea 3 del Metro de Santiago]], el usuario entró nuevamente (como ya ha ocurrido en muchas oportunidades con anterioridad) en conflicto con IPs. Las IPs tiene razón, pero el usuario las revierte. Como las IP insisten en agregar <u>la info corrrecta</u> (bien referencianda y discutida de la IP del artículo - aunque le usuario lo ignore y le siga dando al botón), el usuario va al TAb a pedir protección de ambas [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#L%C3%ADnea_6_del_Metro_de_Santiago] [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#L%C3%ADnea_3_del_Metro_de_Santiago] y {{u2|Virum Mundi}} terminó protegiendo ambas por 3 meses. <br /> Esto pone en evidencia una vez más, el mal que está haciendo el usuario de las reglas y los tablones. Las IPs (porque son dos creo) han hecho todo bien: han agregado info correcta, han referenciado y han ido a la PD....y el usario le sigue dando al botón para imponer una fuente obsoleta de 2016. Y recurre a cuatánto tablón haya para denunciar a supuesto vándalos..<br /> '''Por favor que alguien haga algo y pronto....o al menostenga en consideración este accionar permanente y dejen de validar los reportes del usuario.''' [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 02:59 6 oct 2025 (UTC) ;Respueta al comentario de abajo ::(no quiero que esto sea un foreo, pero hago este comentario para que esta denuncia <u>no se vaya por la ramas del caso puntual</u> sobre el que versa la respuesta) {{pg|Virum Mundi}}: Aunque la denuncia no pasa por ahí, pero la tensión en el Metro de Santiago se ha cambiado de 750 Vcc a 1500 Vcc y de vuelta múltiples veces. Los cambios se realizan con relativa celeridad y la única documentación que queda disponible es precisamente la licitación y la especificación técnica de la misma (que fue lo provisto)...pero, vamos que estaremos de acuerdo que borrar todo pq hay un fuente obsoleta que no dice que en 2016 era diferente? ::Pero nuevamente, la denuncia no pasa por ahí. Esto es un ejemplo igual al caso de AxCh (descrito arriba) y muchísimso similares (que he visto/sufrido con el usuario y de los cuales hay una retahíla de protestas es su PD), en que revierte todo, trata a todo el mundo como vándalo, dice que hay que ir a la PD, y (si se digna a opinar en la PD - generalmente no lo hace), se limita a decir que tiene una fuente (por muy mala/obsoleta que sea) e ignora los argumentos en la discusión. Y luego recurre a tablones para pedir protecciones, denunciar vandalismo y así afianzar su versión. Es un mal uso y no te culpo a ti ni ningún sysop, porque es muy difícil darse cuenta del mal uso (repetitivo) que hace y a primera vista sí puede parecer correcto (y obviamente cómo el usuario hace múltiples denuncias que sí correctas...bueno...es más mucho difícil)...y por eso les pido por favor mucha atención con el usuario que le está haciendo daño a wikipedia. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 11:47 6 oct 2025 (UTC) ;Comentario admin * No es mi intención intervenir en esta denuncia. Pero sí quiero aclarar, ya que fui mencionado por nombre, que la semiprotección de estos artículos se ha hecho por guerra de ediciones, pues no se puede llenar los historiales una y otra vez de modificaciones y reversiones. Aun así, antes de proteger el de la Línea 6, por pura curiosidad (me interesa el tema de ferrocarriles, aunque no particularmente el sistema metropolitano de Santiago de Chile), entré en una página de la compañía donde está indicado que actualmente los cables son "flexibles, unipolares, clase 5, de tensión de aislamiento de 750 V (fuerza) y 600 V (control) para 90ºC..." (y así sigue). También entré en la fuente proporcionada por las IP, un documento de finales del año pasado que detalla los pormenores de un proyecto (para mí, proyecto significa futuro). También leí la discusión, donde el denunciado de hecho sí intervino una vez, allí se proporciona como prueba una imagen realizada por el anónimo, almacenada en su Google Drive. Esta imagen de un visor digital colgado del techo no es una fuente creíble, no solo por ser fuente primaria, y no solo porque no se puede saber de dónde es (no pone el nombre del metro ni de la estación, solo un número colgado del techo, pero presumo de buena fe y asumo que es del lugar indicado), sino que en sí tampoco indica nada definitivo, puede estar por ejemplo en fase de pruebas o de desarrollo (teniendo en cuenta el poco tiempo transcurrido desde el documento mencionado) o de adaptación. Sí, obviamente puede ser también que ya está empleado, pero entonces hace falta una referencia que lo indique de verdad (no la de un proyecto). Insisto, no estoy aquí ni para debatir ni para valorar esta denuncia, solo dejar claro el motivo de la protección. las guerras de ediciones no pueden llevarse a cabo en los historiales de los artículos, invito a cualquiera a realizar las modificaciones necesarias en dichos artículos, si ha lugar, y/o participar en la discusión aportando las fuentes (al fin y al cabo estás páginas están semiprotegidas, cualquier usuario autoconfirmado puede intervenir en ellas). Por lo demás, lo dejo a otro admin. Saludos. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 05:10 6 oct 2025 (UTC) ;Continúa con más casos: :Nuevamente el usuario en acción. [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Historia_del_Metro_de_Santiago_2 Acá pidiendo protección en TAB] porque un "supuesto Vándalo" estaría agregando una imagen (absolutamente pertinente al artículo). Por favor dejen de ignorar esto y pónganle freno al usuario. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 16:59 2 nov 2025 (UTC) ; Respuesta {{admintab|1=Prueba|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:25, 9 February 2026 (UTC)|3=}} == Retomo reporte de CPP política == ; Asunto Hace menos de un mes [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Nombres_inapropiados_y_vandalismo_persistente/2025/09#CPP_pol%C3%ADtica reporté en el tablón] un caso de CPP política, que fue lamentablemente desestimado, pues el usuario {{u|Pptrc}} ha vuelto con lo mismo, controlar el artículo del partido chileno [[Evolución Política]] y ahora se crea una entrada con IA de [[Juan Manuel Santa Cruz]] sin mayor complicación, e incluso pasó por la revisión de un patrullero. Insisto en que esta cuenta no tiene otro objetivo que controlar y promover contenidos de políticos de la formación en la que tiene interés demasiado particular. :Por favor: por qué se espera para resolver estas cosas? es evidente que {{u2|Taichi}} tiene razón, y habiendo un proceso [[Elecciones parlamentarias de Chile de 2025|eleccionario en curso]], es evidente que la CPP está editando artículos con motivos propagandísticos...y que dada la coyuntura, se deben tomar medidas con celeridad. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 20:57 30 sep 2025 (UTC) <small>ps: aclaro que mi intervención acá fue para agregar el antecedente de la urgencia, dada la coyuntura</small> ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 15:17 17 sep 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver esta otra a ver si ocurre...|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:12, 11 April 2026 (UTC)|3=}} == Santos500p == ; Asunto Pido por favor que se tomen nuevas medidas para apaciguar el frenesí de ediciones del usuario {{u2|Santos500p}}, concernientes sobre todo con política de Perú, que [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ASantos500p&diff=169860726&oldid=169762965 en los últimos días] ha llegado al punto de tener varios artículos y categorías creadas por él en [[WP:CDB|consultas de borrado]], algunas teniendo consenso comunitario a favor del borrado. En una de las consultas señalé que [https://es.wikipedia.org/w/index.php?title=Wikipedia:Consultas_de_borrado/Deface_Per%C3%BA&diff=prev&oldid=169776828 el usuario lleva bastante rato desconociendo las líneas entre los diferentes proyectos], con varios intentos en el pasado de señalarle sobre ello, pero sigue en la mezcla de contenidos que podrían estar perfectamente en Wikinoticias, Wikisource e incluso Wikiquote, pero no hay nada que lo impida, aduciendo que puede entorugar cualquier cosa como artículo de Wikipedia, incluso riñendo con [[WP:REC]] o [[WP:SRA]]. De hecho, su página de discusión ha recibido en los últimos dos meses una cantidad difícil de cuantificar de [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ASantos500p&diff=169860726&oldid=168959821avisos de borrado rápido, avisos de consultas de borrado y artículos sin relevancia], varios de ellos siendo borrados. Esta situación ya suma a su <u>bloqueo parcial por dos años</u>, por lo que debería haber una restricción más certera que haga rectificar su proceder. Apelo a que el usuario pueda comprender que Wikipedia tiene bien delimitado [[WP:NO|sus noes]] y que debería él como usuario, ya no tan novato, entender esos límites. De lo contrario, dejo al encargo de un bibliotecario para que tome alguna medida extra para restringirlo. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 11:34 10 oct 2025 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Usuario reincidente == ; Asunto * En marzo de este año, acudí al TAB por una serie de problemas en numerosos artículos creados por el usuario {{u|Ángel Luis Alfaro}}, [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscel%C3%A1nea/2025/06#Creaci%C3%B3n_de_art%C3%ADculos_con_varios_problemas ver aquí]. Ahora ha editado el artículo [[Alto Renacimiento]] con los mismos problemas por el cual puse esa denuncia en el TAB. Exceso de fotografías (173), referencias en las propias fotografías. Cientos de enlaces internos, algunas secciones son toda azul. Mal formato de las referencias, fuentes citadas (Fuentes citadas en Maniera moderna), usar como referencia artículos de wikipedia, véase la referencia 26. La sección notas es casi tan grande como el propio artículo. Y para terminar, no ha corregido ni uno solo de los artículos que ha creado anteriormente. ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:20 14 oct 2025 (UTC) ;Comentario * {{ping|Ontzak}} No consigo entrar en el enlace (me va todo muy lento hoy), ¿es el mismo que resolví yo la última vez? &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 09:32 15 oct 2025 (UTC) * {{ping|Virum Mundi}} si, el mismo. [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 13:55 15 oct 2025 (UTC) ** Ya veo, bueno, me pongo a ello, puede que tarde un rato. {{ping|Ángel Luis Alfaro}} por favor evita más ediciones hasta que se resuelva esta denuncia. Un saludo. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 11:26 16 oct 2025 (UTC) ::{{comentario}} {{ping|Virum Mundi}}, a pesar del aviso, el usuario sigue [https://es.wikipedia.org/wiki/Especial:Contribuciones/%C3%81ngel_Luis_Alfaro editando]. [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:45 26 nov 2025 (UTC) ; Respuesta {{admintab|$0}} == Adrian Silvera == ; Usuarios implicados * {{u|Adrian silvera}} ; Motivo Hace una década que este usuario agrega contenido mal escrito, sin referencias y muchas veces innecesario. Lo bloquearon tres veces por este motivo. Estuve un año insistiendo para que activara el autocorrector y así por lo menos subsanar el tema de la ortografía. Lo hizo hace poco, creo, pero el remedio fue peor que la enfermedad: ahora confunde adjetivos, sustantivos y verbos, y pone tildes en cualquier parte. Esto no sería tan grave de no ser porque se le advertí unas tres veces y sigue igual. Hoy le mandé un mensaje por ese tema y lo primero que hizo fue [https://es.m.wikipedia.org/w/index.php?title=The_Matrix_Reloaded&diff=prev&oldid=170118708 esto]. En otro caso lo interpretaría como una tomadura de pelo, pero no creo que lo haga a propósito. De todas maneras, alguna consecuencia tiene que tener, para aprender. ; Usuario que lo solicita * [[Usuario:Minguu|Minguu]] ([[Usuario Discusión:Minguu|discusión]]) 20:16 22 oct 2025 (UTC) ; Respuesta {{admintab|1=aaaa|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:54, 9 February 2026 (UTC)|3=}} == Propuesta de desbloqueo para Lenis Felipe == ; Asunto * Hola. Por este medio quisiera proponer al colegio de bibliotecarios el desbloqueo local de {{u|Lenis Felipe}}, usuario bloqueado hace ya más de tres años por creación de páginas vandálicas. Lenis se encuentra con bloqueo global, por lo que para poder ser desbloqueado globalmente necesita ser desbloqueado de alguna de las wikis donde tiene bloqueos actualmente, entre ellas, Wikipedia en español. :La propuesta la planteo porque, habiendo pasado un tiempo prudencial, puedo atestiguar que Lenis pareciera haber enmendado su rumbo y ha colaborado en reportar vía IRC, de manera privada, vandalismos, evasores de bloqueo y hasta sugerir cambios a filtros antiabusos para detener algunos abusadores de largo plazo. Particularmente lo ha hecho desde enero de 2024. Me parece que tal y como fue el caso de Sargento de Hierro (perdón que le nombre, pero me gusta destacar casos de usuarios que se corrigieron :)), podría ser positivo darle una segunda oportunidad para convertirse en un elemento positivo para la comunidad. Ante ello, propongo su desbloqueo local y quedo atento a cualquier propuesta de términos para ello, en cuenta restricción de crear páginas nuevas, o similares. Saludos, ; Usuario que lo solicita * '''[[Usuario:Jake Park|''Jake Park'']]''' [[Archivo:Coat of arms of Costa Rica.svg|20 px]] [[Usuario Discusión:Jake Park|<span style="color: red;">'''Problem?'''</span>]] 01:00 29 oct 2025 (UTC) ;Comentarios de biblios * Desde mi punto de vista, los usuarios que no hayan tenido actitudes vandálicas sistemáticas posteriores al bloqueo no deberían permanecer bloqueados más de tres años. '''Apoyo''' el posible desbloqueo. De todos modos, consulto: ¿sabes qué edad tiene el usuario? Porque no es lo mismo alguien que hizo esas tonterías a los 16 años que a los 60; en el primer caso, puede haber madurado rápidamente, mientras que si fuera ''"mayorcito"'' como quien escribe, los aprendizajes de comportamientos son más difíciles. --[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 02:03 29 oct 2025 (UTC) * EMHO todos son susceptibles de cambiar, no quiere decir que todos lo hagan, pero uno de los 5 pilares nos pide presumir buena fe. {{Ok|Votum pro}}. [[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:00 30 oct 2025 (UTC) * ; Respuesta (a rellenar por un bibliotecario) == Unmuybuenusuario == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> {{u|Unmuybuenusuario}} se registró el 28 de octubre de 2025, o sea hace 12 días. Desde el primer momento se dedicó a hacer mantenimiento y mandar artículos a borrar. El segundo día ya [https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Permisos/Actual&diff=prev&oldid=170247444 solicitó el flag de reversor con el argumento de : '' pese a mi muy breve tiempo en Wikipedia, desearía poseer el permiso de reversor para revertir de manera más fácil que usando el botón deshacer''], o sea que asegura que hace poco tiempo que está en Wikipedia pero ya conoce los tipos de flags que existen y dónde solicitarlos. @[[Usuario:Edslov|Edslov]], le negó el permiso, obviamente, ya que en ese momento tenía menos de 48 horas de creada la cuenta, pero no solamente opina que la decisión no fue justa sino que además conoce perfectamente el Café y fue directamente a quejarse porque no se le dio el permiso, para preguntar [https://es.wikipedia.org/w/index.php?title=Wikipedia:Caf%C3%A9/Archivo/Ayuda/Actual&diff=prev&oldid=170287227 ''¿Cuánto tiempo desde mi registro tiene que transcurrir para poder recibir el flag de reversor? ¿O cuántas ediciones?'']. Le pedí al usuario [https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:Unmuybuenusuario que dejara de hacer mantenimiento] y él me dejó un mensaje protestando por que [https://es.wikipedia.org/w/index.php?title=Usuaria_discusi%C3%B3n:Jaluj&diff=prev&oldid=170408787 no encuentra ninguna política que prohíba a un editor nuevo deshacer vandalismos o colocar plantillas de borrado rápido a artículos que cumplan alguno de los criterios de borrado rápido], lo cual es cierto, como tampoco hay ninguna política que prohiba a un usuario nuevo tener el flag de reversor, pero suponemos que para hacer este tipo de tareas se necesita tener experiencia y haber demostrado tener conocimientos para hacerlas bien. Por eso le pedí que se detenga y deje de hacer mantenimiento, porque si es un novato no podemos confiar en que lo haga. Entonces me [https://es.wikipedia.org/w/index.php?title=Usuaria_discusi%C3%B3n:Jaluj&diff=prev&oldid=170408787 acusó de estar violando la políticas al morder a los novatos y no presumir buena fe]. Morder a los novatos es cuando se trata de una persona sin experiencia que todavía no conoce las normas y políticas de Wikipedia. Una persona novata no sabe ni que existe un Café, ni que existe un tablón para solicitar flags, ni que existe el flag de reversor ni que existe el "deshacer". Pero a la vez me acusa de no presumir buena fe al sospechar que no es novato. Entonces, ¿en qué quedamos? Porque si es un novato, no debería estar haciendo mantenimiento y si no lo es, entonces yo no estaría presumiendo mala fe al sospechar que no lo es. Esta cuenta me está difamando al dejar mensajes como [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:A.piquerasm&diff=prev&oldid=170408867 este], porque además de acusarme de morder a un novato y de presumir mala fe me acusa por haber solicitado una VU y de haberlo "intimidado". Ahora resulta que por haberle pedido que deje de hacer mantenimiento y por haber pedido una VU yo soy la que viola las políticas y lo estoy "intimidando". Yo no lo acusé acusé ''gravemente de abuso a largo plazo'', yo solicité una VU porque sospecho que puede ser una LTA. Si no lo es, no tiene nada de qué preocuparse y si es un novato mucho menos. Solicito que se le haga un llamado de atención para que deje de difamarme a mis espaldas, ya que ni siquiera me enlazó para que yo no me enterara. ; Usuario que lo solicita * [[Usuario:Jaluj|Jalu]] ([[Usuario Discusión:Jaluj|discusión]]) 18:17 10 nov 2025 (UTC) * Te pido amablemente usuaria [[Usuario:Jaluj|Jalu]] una solución a este problema, porque yo no te estoy difamando, si conozco el café, el tablón, si se hacer reversiones, es porque fui anónimo y como usuario anónimo ya me dedicaba a hacer estas cosas, un usuario me sugiero visitar la página de cambios recientes y eso es lo que estoy haciendo, visitar los cambios recientes ¿Tengo prohibido deshacer vandalismos encontrados? Por cierto, no me indicaste cuales son las ediciones supuestamente arbitrarias, las ediciones que he hecho han sido deshacer vandalismos, yo no soy ni títere, ni evasor, ni mucho menos abuso a largo plazo, soy usuario completamente nuevo y esta es mi primera cuenta, y te recuerdo un fragmento de la página de usuarios títeres: '''Puede ser fácil identificar a un usuario títere, si muestra un conocimiento de las políticas, convenciones de Wikipedia y técnicas avanzadas de edición que no es de esperar en un novato (aunque debe presumirse buena fe: es posible que sea un usuario que haya colaborado en otra edición de Wikipedia, en alguna otra wiki o <u>que haya participado mucho tiempo como anónimo</u>)''' (subrayado mío). Si conozco como deshacer vandalismos, es porque antes editaba como anónimo, y esta cuenta fue creada para ayudar a Wikipedia, de ninguna manera la cree para LTA o ediciones arbitrarias. ¿Cómo propones que se solucione este problema y que tipo de ediciones puedo hacer y que tipo de ediciones no puedo hacer? --[[Usuario:Unmuybuenusuario|Unmuybuenusuario]] ([[Usuario Discusión:Unmuybuenusuario|discusión]]) 23:27 10 nov 2025 (UTC) :{{comentario}}: [https://es.wikipedia.org/w/index.php?title=Wikipedia:Solicitudes_de_verificaci%C3%B3n_de_usuarios&oldid=170625007#Evasi%C3%B3n_de_bloqueo:_Cris2020 Resultado de la SVU]. --'''[[user:Stïnger|<span style="text-shadow:#FFD700 1px 1px 2px; class=texhtml"><span style="font-family:'Calibri';color:black">Stïnger</span></span>]]'''&nbsp; <sup>[[Archivo:Bureau kage.svg|15px|link=User talk:Stïnger]]</sup> 00:58 24 nov 2025 (UTC). ; Respuesta {{admintab|Al no ser un caso reciente (ya pasaron algunos días) apercibo a {{u2|Unmuybuenusuario}} de [[WP:PBF]] primeramente y posterior a [[WP:PPBF]]. Ambos juicios caen en violaciones a [[WP:E]] y [[WP:CIV]] (supongo al ya haber editado como IP sabrá por que, por lo que en caso de reincidencia podría haber sanción. En cuanto al flag, queda al criterio del bibliotecario que lo otorga, no hay tiempo ni cuota determinada, pero es bastante obvio que más sabe el diablo por viejo que por diablo, yo tampoco lo habría otorgado.|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:09 26 nov 2025 (UTC)}} == Expulsado de la Wikipedia en inglés viene acá a hacer lo mismo... == ;Usuarios * {{u|SocialQuote}} * {{u|2800:484:7380:0:0:0:0:0/44}} ; Asunto Tanto [https://en.wikipedia.org/wiki/Special:Contributions/SocialQuote la cuenta registrada] como [https://en.wikipedia.org/wiki/Special:Contributions/2800:484:7380:0:0:0:0:0/44 el rango IP] se encuentran sancionados desde septiembre en la Wikipedia en inglés, por ediciones conflictivas, reversiones sin sentido e incluso insultos y amenazas. Ya acá [[Usuario discusión:2800:484:7385:F0:95EE:CA0B:4429:B24C|ha causado problemas como anónimo en junio]] y la cuenta [https://es.wikipedia.org/w/index.php?title=Scarface_(pel%C3%ADcula_de_1983)&diff=prev&oldid=168285955 incluso ripostó contra un bibliotecario], y [https://es.wikipedia.org/w/index.php?title=Harry_Potter_y_el_c%C3%A1liz_de_fuego&diff=prev&oldid=169807011 está constantemente] [https://es.wikipedia.org/w/index.php?title=Dinero_negro&diff=prev&oldid=170282821 revirtiendo al bot de mantenimiento]. Nótese que los temas que edita tanto la cuenta como la IP son las mismas (series de TV y películas), y las sanciones aplicadas en en.wiki fueron hechas el mismo día. Debido a esta coincidencia y la situación que está persistiendo ahora en la Wikipedia en español, pido que se tomen medidas. :{{comentario}} Añado [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:Farisori&diff=prev&oldid=170531619 otro mensaje bastante incordiante contra otro bibliotecario] haciéndolo suponer entre líneas que no sabe redactar artículos. '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 00:10 18 nov 2025 (UTC) ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 04:18 17 nov 2025 (UTC) ; Respuesta {{Hecho|1=Bloqueado}} por Rafstr. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:40 19 nov 2025 (UTC) == Borrar y ocultar datos sensibles en página de usuario == ; Asunto Pido con carácter de urgencia que algún bibliotecario [https://es.wikipedia.org/w/index.php?title=Usuario:Dalma_Huerta_Mercado_Calder%C3%B3n&diff=prev&oldid=170526877 oculte datos sensibles y muy personales] de [[Usuario:Dalma Huerta Mercado Calderón|esta página de usuario]], ya que es aún una niña (ni siquiera es adolescente). No creo que sea consciente de que lo que hace es peligroso a su edad. Añado que ya [https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:Dalma_Huerta_Mercado_Calder%C3%B3n#Informaci%C3%B3n_personal no es la primera vez que la pillan colgando datos personales], el año pasado hizo lo mismo. Si toca hacer alguna medida administrativa que evite que la menor siga exponiendo sus datos sin cuidado, adelante. ; Comentarios No soy bibliotecario, pero {{ping|Taichi}} creo que lo mejor es mandar un correo a [[Wikipedia:Supresores|oversight]], o como mínimo realizar la solicitud en algún lugar menos visible (como IRC). --[[Usuario:Xacaranda|Xacaranda]] [[Usuario discusión:Xacaranda|(mensajes)]] 18:56 18 nov 2025 (UTC) ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 04:22 17 nov 2025 (UTC) ; Respuesta {{admintab|1={{Sí}}, dada la excesiva información personal y la imposibilidad de ocultar la última edición, opté por el borrado de la PU. También dejé un mensaje a la usuaria. En caso de reincidir, aplicaría una medida, como un bloqueo parcial, para impedir que vuelva a crear su página de usuario. Un saludo,|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:55 19 nov 2025 (UTC)}} == LTA == ; Usuarios implicados * {{u|Mauro08L}} ; Motivo Hmm, otra vez, otro títere más de {{u|Claudio1098}}. ; Usuario que lo solicita * —<span style="font-family:Trebuchet MS;font-size:95%">[[Usuario:Mαrti|<span style="color:#636;">Mαrti</span>]]&nbsp;<span style="color;background:#CBE2F7;border-radius:9px;">&nbsp;[[Usuario discusión:Mαrti|'''ϟ''']]&nbsp;</span></span> 20:23 18 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:42 19 nov 2025 (UTC)}} == Recreación reiterada == ; Asunto * El usuario {{u|Archivoteleditor}} insiste en recrear el mismo programa de televisión con distintas variaciones del título, véase [[Tentaculos]], [[Tentáculos]], [[Ni que fuéramos tentáculos]] y [[Ni Que Fuéramos Tentáculos]], contabilizo más de una docena de recreaciones, ya se le avisó de un posible conflicto de interés. :En cuanto al artículo, se trata de un programa que duró apenas 3 meses en antena, aunque El País y EuropaPress son referencias fiables, mencionan el programa superficialmente. ; Usuario que lo solicita *   '''C:\>''' [[Usuario:A.piquerasm|A.piquerasm]] '''[''' [[Usuario Discusión:A.piquerasm|Discusión]] ''']''' 16:43 19 nov 2025 (UTC) ; Respuesta {{admintab|{{hecho}}. Inhabilitado de crear páginas. Un saludo. |2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 19:49 19 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170580247]] ; Motivo Lenguaje soez ; Usuario que lo solicita * [[Usuario:Casisgaal|<span style="font-size:black 3px 1px 3px; font-variant:Corbel; color:blue; text-shadow:cyan 2px 1px 2px">Casisgaal</span>]] [[Usuario discusión:Casisgaal|(Discusión)]] 16:16 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada y cuenta bloqueada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:36 21 nov 2025 (UTC)}} == Anónimo escurridizo == ; Asunto Un anónimo que cambia de cuenta temporal y de IP lleva dos meses haciendo cambios sin sentido en partidos políticos de Colombia [https://es.wikipedia.org/w/index.php?title=Independientes_(Colombia)&action=history como este], [https://es.wikipedia.org/w/index.php?title=Partido_Comunista_de_Colombia_-_Marxista_Leninista&diff=prev&oldid=170580251 cambiando un «es» por «fue»] (haciendo entender que ya no existen), pero sin aportar pruebas que los partidos ya no están activos. Como no está aportando nada [[WP:VER|que lo sustente]], se le está revirtiendo pero insiste en reponerlo, llegando a una conducta que no se puede considerar como constructiva. Además, nos pone en prueba con el sistema de cuentas temporales ya que no sólo está cambiando de cuenta temporal, sino de IP, por lo que dejo en consideración que hacer. Estás serían las direcciones en cuestión: [https://es.wikipedia.org/wiki/Especial:IPContributions/191.108.3.30], [https://es.wikipedia.org/wiki/Especial:IPContributions/191.108.59.86], [https://es.wikipedia.org/wiki/Especial:IPContributions/152.201.226.108] y [https://es.wikipedia.org/wiki/Especial:IPContributions/152.202.79.18]. Previo a la instauración de cuentas temporales también editó con las siguientes IPs: * {{u|152.201.203.233}} * {{u|186.113.76.107}} * {{u|191.111.9.153}} Es posible que incluso se considere en semiproteger si en caso tal el anónimo siga por cambiar de IP y continúe con esta situación. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 16:49 20 nov 2025 (UTC) ; Respuesta {{admintab|{{prot|60}}|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:19 26 nov 2025 (UTC)}} == Acoso == ; Usuarios implicados * {{u|~2025-35257-44}} * {{u|~2025-35202-10}} ; Motivo Acoso a un usuario ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 21:57 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 16:49 21 nov 2025 (UTC)}} == Acoso == ; Usuarios implicados * {{u|Narsenopoulos}} ; Motivo {{diff|170585395|Acoso a un usuario}} ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 22:03 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Usuario bloqueado por Virum Mundi. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:28 21 nov 2025 (UTC)}} == Ocultar ediciones == ; Asunto * [[Especial:Diff/169433403]] * [[Especial:Diff/170587004]] ; Motivo El artículo suele ser vandalizado mediante la inclusión de nombres completos de particulares en esta lista, entiendo que motivados por algún tipo de rencilla personal. Creo que es conveniente ocultarlos ya que que, de lo contrario, esos nombres quedan indexados y accesibles por internet, asociados a una lista de violadores en serie, lo cual puede tener implicaciones en su vida personal. ; Usuario que lo solicita * [[Usuario:Nacaru|Nacaru]] [[Archivo:Noto Emoji KitKat 2601.svg|19px]] ([[Usuario_discusión:Nacaru|discusión]]) 00:23 21 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Ediciones ocultadas. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:39 21 nov 2025 (UTC)}} == Solicitud para corregir redirecciones dobles en [[Ciudad del Cuzco]] y [[Cusco, Perú]] == Hola. Por favor, ayúdenme a solucionar el problema de las redirecciones dobles en las páginas de redireccionamiento [[Ciudad del Cuzco]] y [[Cusco, Perú]]. Gracias. [[Especial:Contribuciones/&#126;2025-35342-08|&#126;2025-35342-08]] ([[Usuario discusión:&#126;2025-35342-08|discusión]]) 04:33 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 04:45 21 nov 2025 (UTC)}} == Me sentí acosada por Jaluj, por favor, paciencia con los novatos == ; Asunto Soy una nueva editora (bueno, era una nueva editora) estudiante de 5º de Veterinaria y entré en la wikipedia con mucha ilusión. Detecté un artículo escrito llamado “Comida para gatos” lleno de enlaces spam a marcas comerciales, así como un claro sesgo pro pienso alabando sus virtudes. Después de leerme todos los tutoriales edité el artículo intentando ser objetiva, eliminado enlaces spam y texto publicitario. Un editor deshizo todo mi trabajo dando la razón de que yo había eliminado referencias. https://es.wikipedia.org/w/index.php?title=Comida_para_gatos&diff=170390013&oldid=170376180 Vi la posibilidad de aprender de mis errores y le pregunté por que consideraba fiables (ya que repuso todos los enlaces spam) Eran enlaces a artículos como “los 8 mejores marcas de piensos” (que es publicidad de 8 marcas de piensos, con enlaces a afiliados de Amazon), o webs que no funcionaban etc etc Me contestó que había eliminado todo mi trabajo porque yo había añadido 1 referencia “por tratarse de blog y por tanto no considerarse fiable”. Era un enlace a un artículo de una clínica veterinaria como había 3 o 4 igual en el artículo. https://clinicaveterinarium.es/el-gato-es-omnivoro-o-carnivoro/ No entendí que para eliminar ese enlace se eliminara todo el trabajo realizado en el artículo, y sobre todo que se repusieran los enlaces spam, y por qué esos enlaces spam eran fuentes fiables. Para resumir, volví a poner el artículo tal y como yo lo había escrito (eliminado más de 10 enlaces spam) quitando el enlace a dicha clínica, sospechando que era ese el problema, y el editor me agradeció la edición. Seguí sin aprender. Pero no me quejo de este editor. Y aquí viene mi ruego. Posteriormente a todo esto, y tras muchos días después, apareció el editor Jaluj, https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:LaVeterinaria , donde me acusó de faltar a la etiqueta y falta de civismo al preguntar al editor. Pedí disculpas por mis preguntas si habían molestado y volví a decir que mi intención era aprender y por eso preguntaba. Tras mi respuesta, el editor Jaluj fue a una edición mía en otro artículo, y la eliminó, diciendo que no era una fuente fiable https://es.wikipedia.org/w/index.php?title=Perro_de_caza&curid=707821&diff=170565115&oldid=170545527 La ACCM es un organismo avalado por el Gobierno https://servicio.mapa.gob.es/arca/download.html?id=20338485&contentType=application/pdf que reconoce oficialmente a los perros de raza, así que supongo que son una fuente entendida del tema para hablar de razas. Además de eliminar esa información, me vuelve a acusar de falta de civismo y de etiqueta, por lo que me declaré Retirada y así se lo dije como respuesta, ya que no entendía nada, me di cuenta que no podía aprender y me sentía atacada. He recibido un email de wikipedia donde me avisa que el editor Jaluj obviando todas mis disculpas y petición de información sobre la organización oficial sólo me exige el nombre de mi mentor. Solo pido un poco de paciencia y empatía con los nuevos editores, necesitamos empatía y ayuda para editar, no acusaciones de mala fe y falta de civismo. Yo lo he intentado, cuiden a los que vengan nuevos detrás de mi. Gracias por leer. ; Usuario que lo solicita --[[Usuario:LaVeterinaria|LaVeterinaria]] ([[Usuario Discusión:LaVeterinaria|discusión]]) 14:01 21 nov 2025 (UTC) ;Comentario adicional Permito añadir que {{u2|Leoncastro}} y mi persona [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ALaVeterinaria&diff=170608554&oldid=170595929 hemos tratado separadamente de mediar en el asunto], pero la usuaria está demasiado a la defensiva e incluso [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ATaichi&diff=170606470&oldid=170599847 me dejó esta contestación], incluso cuando buscaba seriamente ayudarle. Lo que denoto en sus contestaciones además, es que ella como estudiante universitaria dice tener algún "mentor" en su universidad (pero no está adscrito acá), por lo que estoy deduciendo que hay alguna orientación mal ejecutada y pareciera que la estudiante está obligada a editar como sea, a expensas de que cualquier patrullero o bibliotecario sea maltratado de esta manera si le revisan sus contribuciones. Ojalá haya alguna forma de que se haga entender y ver ante las instancias de qué o quién movió institucionalmente a la alumna a que pasara esto. '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 14:35 22 nov 2025 (UTC) ; Respuesta {{admintab|1={{No}}. {{U|LaVeterinaria}}, no me parece que, en ningún momento, Jaluj o algún otro de los varios usuarios que han buscado orientarte te hayan «maltratado» o dado motivos para sentirte intimidada o acosada. Más bien, algunas de tus interacciones muestran que, ciertamente, pareces estar a la defensiva y que podrían malinterpretarse. Supongo que el primer mensaje de Jaluj estuvo motivado por una de tus respuestas a Casisgaal —«¿Por qué escribir texto apoyado en enlaces verificables como la universidad etc.? ¿La wikipedia española se basa en la inglesa y no podemos editar sino solo traducir?»—, que se alejó del [[Wikipedia:Civismo|civismo]] esperado en las interacciones entre usuarios en Wikipedia. Asumiste que el mensaje de Jaluj estuvo motivado por tu «insistencia por preguntar lo que no entendía», cuando claramente te explicó, de forma amable y con la paciencia que en varias ocasiones has pedido, que fue por tu tono. Coincido con Jaluj en que parece que no lees los mensajes completos. <br> Si preguntó Jaluj sobre tu «mentor», que tú misma mencionaste en la conversación con Casisgaal, es porque, ciertamente después de estas interacciones que has tenido, surge la duda de quién es, si es usuario de Wikipedia y si tiene conocimiento de las políticas que la rigen. Parece que no. Por ello, sería mejor que aprovecharas herramientas como el [[Wikipedia:Programa de tutoría|programa de tutoría]] —cabe destacar que {{u|Ezarate}} ya amablemente se ofreció a ayudarte con tus ediciones—. Todo lo anterior, ya te lo había explicado Leoncastro. Además, él te dejó un extenso mensaje donde explicó y trató de mediar. Tu respuesta y actuar subsecuente es, cuanto menos, desconcertante. <br> En suma, descarto la denuncia. {{U|LaVeterinaria}} no me parece que el tono que uses y la forma de interactuar que tienes con otros usuarios, que han intentando orientarte, sea adecuada o benéfica para la enciclopedia. Así como insistes en pedir paciencia, ofrécela a los demás y no acuses de intimidación o denuncies tan fácilmente. Aprovecha los mensajes en los que se te ha explicado un poco sobre la enciclopedia, aprovecha el programa de tutoría o los ofrecimientos de usuarios como Ezarate. No continúes con esta forma de actuar porque fomenta conflictos y puede conducir a medidas que nadie quiere que se tengan que tomar. Un saludo,|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 22:00 22 nov 2025 (UTC)}} == LTA == ; Usuarios implicados * {{u|Henrysmithwa5}} ; Motivo LTA aerolíneas ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:15 21 nov 2025 (UTC) ; Respuesta {{admintab|{{ok}} por Jake Park. |--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 00:38 22 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170607263]] ; Motivo Etiqueta ; Usuario que lo solicita * [[Usuario:CharlieRaMx|CharlieRaMx]] ([[Usuario Discusión:CharlieRaMx|discusión]]) 12:02 22 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 12:30 22 nov 2025 (UTC)}} == Ocultar ediciones == ; Usuarios implicados * {{u|Zanahorita Extraida}} ; Motivo Pido que se oculten todas las ediciones de este títere bloqueado, quien como siempre ha lanzado comentarios denigrantes, ofensivos y hasta insultos. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 18:08 23 nov 2025 (UTC) ; Respuesta {{Hecho}} por Saloca. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 20:00 23 nov 2025 (UTC) == LTA == ; Usuarios implicados * {{u|Patthenry5}} ; Motivo LTA aerolíneas ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 18:24 23 nov 2025 (UTC) ; Respuesta {{Hecho}} por MiguelAlanCS. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 19:59 23 nov 2025 (UTC) == Ocultar ediciones == ; Asunto * [[Especial:Diff/170589208]] * [[Especial:Diff/170589204]] ; Motivo Vandalismo ; Usuario que lo solicita * [[Usuario:CarlosEduardoPA|<span style="font-size:80%;background:#000;color:#fff;border-radius:25px;padding:3px 8px;">CarlosEduardoPA</span>]] [[Usuario discusión:CarlosEduardoPA|✉️]] 22:29 23 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Ediciones ocultadas. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:26 24 nov 2025 (UTC)}} == MediaWiki:Jsonconfig-use-category == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> ; Asunto * {{a|MediaWiki:Jsonconfig-use-category}} * Please delete the page as it is no longer necessary following [[:phab:T378352|T378352]] ([[:Category:Wikipedia:Páginas que usan la extensión JsonConfig|the category]] has already been deleted). See also [[:m:Steward requests/Miscellaneous#Category:Pages using the JsonConfig extension]]. ; Usuario que lo solicita * [[Usuario:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Usuario Discusión:NguoiDungKhongDinhDanh|discusión]]) 23:09 23 nov 2025 (UTC) ; Respuesta {{admintab|{{ok}}|--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 09:01 24 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170617475]] ; Motivo Vandalismo ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 23:46 23 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada por Virum Mundi. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:22 24 nov 2025 (UTC)}} == Plantillas mantenidas sin justificación en Conservatorio de Música de la Universidad Austral de Chile == ; Asunto Solicito la intervención de un bibliotecario respecto al artículo [[Conservatorio de Música de la Universidad Austral de Chile]]. El usuario Ontzak colocó dos plantillas (promocional e irrelevante) el día 18 de noviembre. Desde entonces el artículo ha sido completamente reescrito, reforzado con referencias académicas y eliminado el contenido que podía ser de estilo promocional e irrelevante. Conforme a lo indicado en las propias plantillas, abrí hilo en la página de discusión solicitando consenso para su retirada. El usuario no ha respondido pese a haber sido notificado y mencionado en dos ocasiones. ; Motivo El comportamiento observado, colocar plantillas, no responder a la discusión y bloquear de facto la retirada, encaja en lo descrito en [[WP:DUEÑO]]. A día de hoy las razones originales ya no se sostienen, pero las plantillas permanecen en el artículo sin justificación actual y el editor que las colocó evita participar en la discusión. ; Usuario que lo solicita [[Usuario:Hoppedup|Hoppedup]] ([[Usuario Discusión:Hoppedup|discusión]]) 12:26 24 nov 2025 (UTC) Solicito que un bibliotecario revise el caso: • si procede, retire las plantillas, • y si fuese necesario, recuerde al usuario implicado la obligación de participar cuando se cuestiona una plantilla mantenida. Gracias. ; Respuesta {{admintab|1={{Hecho}}. Por lo demás, todos sabemos cómo hace las cosas {{u2|Ontzak}}; sería mejor que las hiciera con un poco más de intercambio con los demás, pero no se le puede pedir a los editores lo que no pueden o no quieren aportar en Wikipedia (editar sigue siendo una actividad voluntaria, todavía). En mi personal opinión, es mejor tenerlo haciendo lo que hace que no tenerlo, de modo que lo más que podemos hacer es volverlo a invitar a ser un poco más comunicativo. En cuanto a lo de WP:DUEÑO, me parece que te has pasado de largo unos cuantos kilómetros en tu interpretación; un poco más de calma, por favor. Gracias por tu mensaje.|2=--[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 13:10 24 nov 2025 (UTC)}} == Spam incesante == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> ; Asunto * Rango con decenas de ediciones spam, al menos unas 34 desde marzo de este año. * {{u|89.214.0.0/17}} * [[Especial:IPContributions/89.214.0.0/17]] ; Usuario que lo solicita * [[Usuario:Xacaranda|Xacaranda]] [[Usuario discusión:Xacaranda|(mensajes)]] 18:58 25 nov 2025 (UTC) ; Respuesta {{admintab|{{Sí|He aplicado un bloqueo parcial a los artículos objeto de spam}}.|2=[[Usuario:Montgomery|Montgomery]] ([[Usuario Discusión:Montgomery|discusión]]) 19:04 25 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170663031]] ; Motivo Transgresión de las reglas de etiqueta. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 19:17 25 nov 2025 (UTC) ; Respuesta {{admintab|$oc|2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 20:09 25 nov 2025 (UTC)}} == Solicitar traslado == ; Asunto * Solicito el traslado de [[CITEDEF]] a [[Instituto de Investigaciones Científicas y Técnicas para la Defensa]], siguiendo la recomendación de la [[Wikipedia:Convenciones de títulos|convención de títulos]] de evitar el uso de acrónimos y siglas siempre que se pueda. ; Usuario que lo solicita * [[Usuario:Comecaballos|Comecaballos]] ([[Usuario Discusión:Comecaballos|discusión]]) 00:17 26 nov 2025 (UTC) ; Respuesta {{admintab|{{hecho}}|--[[Usuario:Ezarate|Esteban]] ([[Usuario Discusión:Ezarate|discusión]]) 11:58 26 nov 2025 (UTC)}} == Cuenta de "propósito particular" == ; Asunto * No tengo del todo claro si [https://es.wikipedia.org/w/index.php?title=Especial:Registro/block&page=Usuario%3AInfohisto esto va acá] o a esta altura debería reportarse como vandalismo. Ver sus ediciones de hoy, y sus resúmenes de edición, en {{a|Caporales}} y {{a|Tundiqui}}. Esta cuenta, que ya fue identificada como lo que es, definitivamente no tiene otro propósito aquí que el que ya es evidente. Y lo ha hecho ya en varios artículos. Mirando su página de usuario veo que tres administradores ya han interactuado con él. Así que aprovecho para citarlos: {{u|Tector}}, {{u|Saloca}} y {{u|Marcelo}} ; Usuario que lo solicita * [[Usuario:Rastamby|Rastamby]] ([[Usuario Discusión:Rastamby|discusión]]) 02:34 26 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}, ya fue suficiente: usuario expulsado y artículos protegidos a largo plazo. Gracias por el aviso.|2=--[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 02:43 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170670252]] ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 04:58 26 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 05:04 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170670276]] ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 05:00 26 nov 2025 (UTC) ; Respuesta {{admintab|1=Prueba|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:26, 9 February 2026 (UTC)|3=}} == Solicitud para corregir redirecciones dobles en [[Departamento de Cusco]] y [[Provincia de Cusco]] == Hola. Por favor, ayúdenme a solucionar el problema de las redirecciones dobles en las páginas de redireccionamiento [[Departamento de Cusco]] y [[Provincia de Cusco]]. Gracias. [[Especial:Contribuciones/&#126;2025-36297-96|&#126;2025-36297-96]] ([[Usuario discusión:&#126;2025-36297-96|discusión]]) 05:35 26 nov 2025 (UTC) == CDI == ; Usuarios implicados * {{u|JALGUERRERO}} ; Motivo Claro conflicto de interés. Sus ediciones se centran en el artículo que lleva su nombre ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 10:53 26 nov 2025 (UTC) ; Respuesta {{admintab|{{Ok}}, hecho por {{u2|Virum Mundi}}; no puedo creer nos duró 15 años.|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:27 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170680869]] ; Usuario que lo solicita * [[Usuario discusión:Divinations|Divinations]] 21:35 26 nov 2025 (UTC) ; Respuesta {{admintab|1=Ejemplo de resolución de solicitud que menciona a {{ping|Nacaru}}.|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:39, 9 February 2026 (UTC)|3=}} == varias ediciones == ; Asunto * [[Especial:Diff/619272]] ; Motivo Prueba de texto ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:45, 20 February 2026 (UTC) ; Respuesta {{admintab|1=Qué tal está petición de aquí??? {{Ok}}|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:13, 11 April 2026 (UTC)|3=}} == Ocultar edición [[Especial:Diff/619272|619272]] == ; Asunto * [[Especial:Diff/619272]] ; Motivo JHVBIKUHGVIK ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:47, 20 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar edición 619272 == ; Asunto * [[Especial:Diff/619272]] ; Motivo VXCV XZVZCVZC ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:48, 20 February 2026 (UTC) ; Respuesta {{admintab|1=OKIII|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:49, 20 February 2026 (UTC)|3=}} == Ocultar edición 684158 == ; Asunto * [[Especial:Diff/684158]] ; Motivo kjanxkajsncxa ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:34, 26 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Prueba de toro túitulo == ; Usuarios implicados * {{u|Sergio Enrollment 2}} ; Motivo Prueba de otra raźon ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:55, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Otra prueba de título más == ; Usuarios implicados * {{u|Sergio Enrollment 2}} ; Motivo Desarrollando razón ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:55, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == k,jnkjjn == ; Usuarios implicados * {{u|Dicto23456}} ; Motivo lknmlkj lkjlk jkl ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:59, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Otra denuncia la que sea == ; Usuarios implicados * {{u|Cenarium}} ; Motivo A ver qué tal ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 01:08, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74252,671081,671082 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/671081]] * [[Especial:Diff/671082]] ; Motivo Motivo cualquiera ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:43, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74252, 74251, 89098 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/74252]] * [[Especial:Diff/74251]] * [[Especial:Diff/89098]] ; Motivo Ejemplo ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:45, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar edición 74252 == ; Asunto * [[Especial:Diff/74252]] ; Motivo qeasdsa ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:46, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74251 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/74251]] ; Motivo asdAD SADAS ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:46, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74253, 74254, 74255, 74256 y 74252 == ; Asunto * [[Especial:Diff/74253]] * [[Especial:Diff/74254]] * [[Especial:Diff/74255]] * [[Especial:Diff/74256]] * [[Especial:Diff/74252]] ; Motivo A ver si aparecen en el mismo orden. ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:52, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) 6rykc6dqukh7z1fahxoov79zwhecjgj 737586 737584 2026-04-11T13:53:34Z Nacaru 54746 Resolviendo solicitud «[[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscelánea/Actual#Santos500p|Santos500p]]» mediante [[WP:TL|Twinkle Lite]] 737586 wikitext text/x-wiki <!-- AVISO: No semiproteger la miscelánea del tablón pues aquí redirigen muchas plantillas y avisos en páginas varias para que los novatos puedan aportar o realizar consultas que sólo bibliotecarios pueden resolver --> <noinclude>{{Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Plantillas/Cabecera}} {{Archivado automático |Destino=Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Archivo/Miscelánea/AAAA/MM |Días a mantener=7 }} == Situación extraña con tinte político == ; Asunto Desde 2019 aproximadamente se ha visto un grupo de IPv6 dentro del rango {{u|2804:14C:0:0:0:0:0:0/32}} editando y tratando de manipular contenidos políticos controvertidos (específicamente en [[Fascismo en América]] y otros más), de hecho por lo que se ve [[Discusión:Fascismo en América|aquí]] el anónimo se expresa de una manera particular sin saber siquiera español y sólo deja links sin mayor explicación. Adicionalmente, el anónimo está constantemente dejando mensajes a {{u2|Raimundo57br}} haciendo una serie de solicitudes de modificaciones a artículos de tinte político (sobre todo si son relativos a la derecha o izquierda política). Pero cuando vemos más a profundidad, vemos otras IPs como {{u|187.20.115.154}} dejando lo mismo al usuario, o este [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:Raimundo57br&diff=prev&oldid=150518775 mensaje] de Raimundo57br dirigido a otra cuenta haciendo ping, pero en su propia discusión en un intento de coordinación de su desbloqueo. Hago acotar que Raimundo57br [https://pt.wikipedia.org/wiki/Especial:Contribui%C3%A7%C3%B5es/Raimundo57br está expulsado de la Wikipedia portuguesa desde el 2022], luego de múltiples problemas allá y numerosos bloqueos temporales. También, que la Wikipedia portuguesa maneja estrictamente el uso de direcciones anónimas y [https://pt.wikipedia.org/wiki/Usu%C3%A1rio(a):2804:14C:0:0:0:0:0:0/32 todo el rango 2804:0:0:0:0:0:0:0/19] se encuenta bloqueado desde 2020. Existe una posibilidad de que haya una inusual coordinación entre anónimos y Raimundo57br para manipular artículos de política en Wikipedia en español y la Wikipedia portuguesa (a partir de una tercera cuenta), ante la imposibilidad de ambos entes (ya que se les hace más cómodo intervenir acá). Incluyo al reporte que [https://es.wikipedia.org/w/index.php?title=Discusi%C3%B3n:Fascismo_en_Am%C3%A9rica&diff=prev&oldid=168802559 con estos] [https://es.wikipedia.org/w/index.php?title=Discusi%C3%B3n:Fascismo_en_Am%C3%A9rica&diff=prev&oldid=168803824 diffs en específico], no sólo Raimundo57br está involucrado, también {{u|Auréola}} (quien también pasó por un proceso de expulsión, aunque no está autoconfirmado acá) y {{u|Luizpuodzius}} (quien fue sancionado también allá, pero no expulsado; tampoco autoconfirmado acá). Aquí [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ALuizpuodzius&diff=159046847&oldid=152503114 una interacción entre usuarios hablando de temas referentes a pt.wiki]. De esta situación, se confirma que se esté usando nuestra Wikipedia para cuestiones ajenas de un proyecto que los sancionó y expulsó. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 17:04 4 ago 2025 (UTC) ;Comentarios #'''Sobre los mensajes que recibo del IP''': no tengo contacto fuera de la wiki con este IP que me envía solicitudes para editar determinados artículos y, por regla general, no atiendo estas solicitudes; #'''En cuanto a mis problemas en la wiki-pt''', aclaro que no se deben a ediciones que hice en el dominio principal de esa versión de la wiki (donde se borraron pocos artículos y se revirtieron pocas ediciones), sino a una larga rivalidad con determinados administradores. No creo que sea oportuno traer ese debate aquí, pero si insisten, daré las aclaraciones que consideren oportunas. #'''Sobre mi contacto con Luizpuodzius''': entiendo que fue un acto aislado sin mayores repercusiones, hace mucho tiempo que no interactúo con esa persona. #'''Sobre mi interacción con Anhabete''': entiendo que fue un acto aislado sin mayores repercusiones, después de eso no volví a interactuar con esa persona. :--[[Usuario:Raimundo57br|Raimundo57br]] ([[Usuario Discusión:Raimundo57br|discusión]]) 12:35 5 ago 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver petición|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC)|3=}} == Solicito traslado de páginas == * Por favor trasladar las siguientes páginas # {{a|Dover}} ... a ... {{a|Dover (desambiguación)}} # {{a|Dover (Kent)}} ... a... {{a|Dover}} ;Motivo * Por favor indicar el motivo: La ciudad de Inglaterra es el uso principal del término. La página de desambiguación tenía cientos de enlaces ambiguos. ;Usuario que lo solicita Firmado: [[Usuario:Rondador|Ronda]][[Usuario Discusión:Rondador|dor]] 09:39 2 sep 2025 (UTC) ;Coentarios * Personalmente estoy de acuerdo, vamos a solicitar las opiniones de otros que quieran opinar. Un saludo. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 10:45 2 sep 2025 (UTC) * Con permiso, {{u2|Rondador}}, he detallado los dos traslados que estás pidiendo; estoy de acuerdo con el traslado, y también con la solicitud de opiniones (quizá en algún lado haya algo muy relevante llamado localmente Dover). --[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 12:09 2 sep 2025 (UTC) * Si pongo Dover en el buscador de Google, [[google:dover|el primer resultado]] (y siguientes) es para el grupo musical español (algo que sospechaba, ya que en mi mente sucede lo mismo). [[Usuario:MiguelAlanCS|<b style="color: #990099;">MiguelAlanCS</b>]] >>> [[Archivo:PICOL icon Mail.svg|15px|link=Usuario discusión:MiguelAlanCS]] 12:13 2 sep 2025 (UTC) :: En mi caso sale la ciudad, pero bueno, también es un argumento a tener en cuenta. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 20:23 2 sep 2025 (UTC) :::{{no|}} Lo que no se puede hacer es trasladar y despues solicitar, como hizo unilateralmente el editor. Lo revertí a la espera de otra respuesta. Aunque mejor que en el tablón de bibliotecarios donde solo responden bibliotecarios, es preguntar en el café. A mi, si me preguntan por Dover me vienen muchas cosas a parte de la propia ciudad por lo que hay que buscar un consenso clarone indicarlo en la resolución y posibles traslados para que no hay discusiones en el futuro. --[[Usuario:Geom|<b style="background:purple;color:yellow;font-size:80%;border-radius:9px 0 0 9px;padding:2px 5px;">Geom</b>]][[Usuario discusión:Geom|<span style="font-size:80%;color: gray;">'''(discusión)'''</span>]] 09:35 3 sep 2025 (UTC) ::::{{No|Punto metiche}}, del otro lado del charco lo metí a San Gugul y lo primero que me salió es la banda. [[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 20:54 24 sep 2025 (UTC) ;Respuesta {{admintab|$0}} == Gersoncharles == ; Asunto Durante el corto tiempo de la CAB del usuario {{u2|Gersoncharles}} señalé una [https://es.wikipedia.org/w/index.php?title=Wikipedia_discusi%C3%B3n:Candidaturas_a_bibliotecario/Gersoncharles&diff=prev&oldid=169411042 situación que considero ineludible], a pesar que el usuario trató de desvincularse sin mayor sustento y prefirió cancelar la CAB. El usuario a pesar que fue sancionado en 2021 por este servidor, [https://xtools.wmcloud.org/pages/es.wikipedia.org/Gersoncharles?uselang=es ha retomado desde hace un año] en la creación de entradas de concursos de belleza de México con muy pocas notas de referencia: si observamos los artículos creados, sólo una fracción de cada artículo puede ser revisado en sus referencias, pero hay gran parte de la información que parece manejar el usuario de [[WP:FP|una manera que lo conoce en exclusiva]], por lo que no ha concedido en los requerimientos mínimos que se necesita para seguir editando en Wikipedia. De hecho, le han borrado 8 artículos en apenas un par de meses atrás. Sé que me adelanto en especulaciones, pero ante la ausencia de motivos que le llevaron a la CAB, sospecharía que [[WP:NSW|estaba buscando alguna forma de restaurar contenidos borrados, o disputar decisiones administrativas]]. El usuario se comporta virtualmente como una [[WP:CPP|CPP]] y el 100% de sus contribuciones en artículos están fijados en un tema cerradísimo como este, me hacen entreveer que el usuario requiere algún correctivo de prohibición editorial, al menos, para que empiece a entender su posición como editor, ya que alguien con 15 años en Wikipedia (y unos 8 años editando con cierta actividad), es rarísimo que siga comportándose como una CPP. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 05:12 10 sep 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver esta petición para ver si se reproduce el fallo.|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:12, 11 April 2026 (UTC)|3=}} ==Status quo Stonewalling== ; Usuarios implicados * {{u|Aroblesm}} ;Artículo [[Amarillos por Chile]] (ahora, pero es un comportamiento habitual) ; Motivo Aunque el usuario hace un buen trabajo de patrullaje contra vandalismo, tiene un comportamiento habitual de lo que se denomina [[:en:WP:Status quo stonewalling]]. El usuario revierte todo lo que no le parece y no debate. Trata a cualquier usuario, experimentado o no como si fuera un vándalo o una CPP. Le va dando al botón, llegando siempre al límite de 3RR (en que el status quo tiene prioridad) y no pasa a la búsqueda de consenso. Y lo peor de todo, es que no maneja bien las políticas y hace SQS de manera incorrecta. <br /> En este caso particular está cometiendo un error obvio, porque en la plantilla: parámetro ideología, está usando un fuente que no se puede, ya que no es independiente. Concretamente a [https://www.laizquierdadiario.cl/Chile La Izquierda Diario], que es el órgano oficial del [[Partido de Trabajadores Revolucionarios]] y como tal no es un medio independiente al juzgar la posición de otro partido político (le explique en la PD y en su propio PD, y se limita a indicar en su reversión que ''no se puede eliminar referencias simplemente porque no nos gusta''. Esto es una abierta contravención a [[WP:FF]].<br /> Aún así, no quiero que esta denuncia se centre en ese artículo, ya que es un comportamiento habitual (basta ver su [https://es.wikipedia.org/w/index.php?title=Especial%3AContribuciones&target=Aroblesm&namespace=all&tagfilter=&start=&end=&limit=1000 historial]). Como digo arriba, muchas veces actúa así con vándalos y CPP, pero le pasa la máquina a lo que venga por delante y sin debatir (basta mirar su PD), y tampoco evidenciando un buen conocimiento de las políticas. Como indico arriba es un comportamiento habitual textbook de [[:en:WP:Status quo stonewalling]]. Solicito que se le indique al usuario lo incorrecto del proceder y que se le deje una clara advertencia respecto a SQS. ; Usuario que lo solicita * [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 11:04 10 sep 2025 (UTC) ;Comentarios {{comentario}}: SFBB omite que está eliminando referencias del artículo por mero gusto personal y sin justificación alguna. Se le propuso debatir pero no espera el debate. Yo solo he mantenido el artículo a su versión estable. Además, de todos los editores del artículo es el único que ha objetado una referencia y eso es raro en mi opinión. Me dedico a combatir el vandalismo y las ediciones arbitrarias sin consenso previo. No veo problemas en aquello. SFBB solo busca poder mantener su eliminación de referencias por mero gusto personal sin importar. --[[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 16:13 10 sep 2025 (UTC) ::No hombre....es un patrón de conducta. siempre que no te gusta algo movís a "versión estable" sin discutir nada hasta aburrir a la contraparte...eso es precisamente SQS. Tenís la PD llena de quejas por eso y seguís creyendo que lo estái haciendo bien, meramente porque aburrís al resto que le da lata pelear con vos (a mí mismo muchas veces me hai aburrido). Sin esta denuncia ni siquiera te habríai dignado a opinar...le diste dos veces más al botón (y sólo opinaste después de la denuncia y no dijiste nada en serio, salvo que estaba en la referencia...pff...nadie lo ha puesto en duda)...y lo que calificái como "arbitrariedad" lo hacís sin entender profundamente el funcionamiento de wikipeida. Es una obviedad que esa fuente no se puede usar lo que está siendo usada, no es "gusto personal" son las polítcas: por n-sima vez: lee [[WP:FF]]. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 19:17 10 sep 2025 (UTC) :::'''Comentario'''. Al usuario se le explica porqué cierta fuerte [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=169577342&oldid=169428682 absolutamente no] es [[WP:FF]] desde ningún punto de vista e ipso facto y sin explicación alguna entra en guerra de ediciones instantánea [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=169577348&oldid=169577342 (1)] [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=next&oldid=169577358 (2)]. Así no se puede, y preocupa si un revisor actúa así en otras páginas no analizadas. [[Usuario:XavierItzm|XavierItzm]] ([[Usuario Discusión:XavierItzm|discusión]]) 01:11 20 sep 2025 (UTC) ::::Quiero agregar que cuando el usuario se encontró con una clara mayoría de usuarios que cuestionaba su actuar, fue a pedir [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Amarillos_por_Chile_2 la protección de la página en su versión]. Nuevamente, esto es parte del comportamiento habitual de usuario ([https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual&action=history ver el historial de ese tablón]): el usuario trata cualquier diferencia de opinión con la suya como si fuera vandalismo y utiliza ese tablón para cementar su versión (yo mismo lo he sufrido con anterioridad, aunque es difícil buscar un acto específico en ese tablón). Quiero agregar que esta denuncia <u>no es por este caso en particular</u> sino que contra el comportamiento habitual de manipular el sistema para mantener sus versiones de status quo, sin siquiera entrar a discutir y tratar cualquier tipo de edición (que no concuerde con su visión) como si fuera vandalismo. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 09:35 20 sep 2025 (UTC) :::::Otro antecedente más del que ni siquiera estaba al tanto. Con anterioridad a su solicitud de protección de la página del 20 de agosto (rechazada por {{u2|Rafstr}}), cuando intentaba mantener así el status quo ante la presión de 5 usuarios (todos usuarios veteranos muy experimentados) que llegaron independientemente a esa PD - <small>tras mención general del problema en el café</small>, el usuario ya había exigido una [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Amarillos_por_Chile protección similar el 8 de agosto], con anterioridad a esta denuncia y con posterioridad a que yo haya iniciado una discusión en la PD (que el ignoró al igual que los mensajes que le dejé en su PD personal, mientras seguía dándole al botón revertir). Es un perfecto ejemplo de cómo el usuario consistentemente [[WP:NSW|abusa de las reglas del sistema]], a sabiendas de que si revierte 3 veces, puede denunciar a la contraparte por 3R, y pedir protecciones. Y, bueno...le sigue dando al botón sin intentar si quiera debatir. :::::[https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/3RR/Actual&diff=prev&oldid=149513602#Aroblesm Ya ha sido denunciado anteriormente por exactamente lo mismo] y (como decía anteriormente) tiene la PD llena de quejas por lo mismo, pero la mayoría simplemente nos hartamos - yo ya muchas veces - y nos vamos a otra cosa sin denunciar...'''<u>pero este comportamiento tiene que parar de una vez por todas</u>'''. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 00:50 22 sep 2025 (UTC) ::::::Otro ejemplo (y sin buscar mucho): hace unos días atrás hizo lo mismo con {{u2|GKLakers02}} en el artículo [[Línea 6 del Metro de Santiago]] y terminó denunciando al usuario [https://es.wikipedia.org/w/index.php?title=Wikipedia:Vandalismo_en_curso&diff=prev&oldid=169275648 por un presunto vandalismo]. En en intertanto GKLakers02 intentaba discutir en la [https://es.wikipedia.org/wiki/Discusi%C3%B3n:L%C3%ADnea_6_del_Metro_de_Santiago#Tensi%C3%B3n_Incorrecta. PD del artículo] proveyendo fuentes correctas, pero siendo completamente ignorado pro el usuario. El asunto terminó cuando el artículo fue protegido, manteniendo el status quo (incorrecto) que tozudamente forzaba Aroblesm dándole al botón. ::::::Pero bueno...este el sólo otro ejemplo pero son cientos. Alguien tiene que parar al usuario (que es buenísimo combatiendo vandalismo, pero termina tratando a todo el mundo cual si fueran vándalos). [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 01:07 22 sep 2025 (UTC) :a sabiendas que está denuncia aún no se resuelve, intenté corregir lo de la [[Línea 6 del Metro de Santiago]], siendo nuevamente revertido [https://es.wikipedia.org/w/index.php?title=L%C3%ADnea_6_del_Metro_de_Santiago&diff=prev&oldid=169740888 1] y [https://es.wikipedia.org/w/index.php?title=Línea_6_del_Metro_de_Santiago&diff=prev&oldid=169740854 2] oportunidades (en rápidisimo; me reveritió dos veces, antes de que pudiese agregar la info sobre las otras líneas, para las cuales existe similar documentación) por el usuario que no duda un segundo en entrar en GE para defender el status quo sobre la base de una referencia absolutamente obsoleta del año 2016 (sí, hace 9 años, el metro sí operaba a 750 Vcc). Lo peor es que revierte e indica que hay que ir a la PD donde ya se le ha explicado con lujo de detalles que está equivocado.<br /> :Por favor: alguien tiene que frenar a este usuario ya que le hace mucho daño a eswiki (piensen en todas las IPs/usuarios que él determina unilateralmente que son vándalos). Yo por mi parte, voy a intentar evitarlo hasta que se resuelva esto (y voy a dejar los artículos sobre le Metro de Santiago con un voltaje incorrecto por el momento), aunque es altamente probable que me revierta en otros lados (ya vigila una enorme proporción de los artículos sobre contingencia chilena); si lo hace, no voy a insistir y voy a dejar las cosas de manera incorrecta. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 23:40 29 sep 2025 (UTC) Agregro otro antecendente: En [[Línea 6 del Metro de Santiago]] y [[Línea 3 del Metro de Santiago]], el usuario entró nuevamente (como ya ha ocurrido en muchas oportunidades con anterioridad) en conflicto con IPs. Las IPs tiene razón, pero el usuario las revierte. Como las IP insisten en agregar <u>la info corrrecta</u> (bien referencianda y discutida de la IP del artículo - aunque le usuario lo ignore y le siga dando al botón), el usuario va al TAb a pedir protección de ambas [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#L%C3%ADnea_6_del_Metro_de_Santiago] [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#L%C3%ADnea_3_del_Metro_de_Santiago] y {{u2|Virum Mundi}} terminó protegiendo ambas por 3 meses. <br /> Esto pone en evidencia una vez más, el mal que está haciendo el usuario de las reglas y los tablones. Las IPs (porque son dos creo) han hecho todo bien: han agregado info correcta, han referenciado y han ido a la PD....y el usario le sigue dando al botón para imponer una fuente obsoleta de 2016. Y recurre a cuatánto tablón haya para denunciar a supuesto vándalos..<br /> '''Por favor que alguien haga algo y pronto....o al menostenga en consideración este accionar permanente y dejen de validar los reportes del usuario.''' [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 02:59 6 oct 2025 (UTC) ;Respueta al comentario de abajo ::(no quiero que esto sea un foreo, pero hago este comentario para que esta denuncia <u>no se vaya por la ramas del caso puntual</u> sobre el que versa la respuesta) {{pg|Virum Mundi}}: Aunque la denuncia no pasa por ahí, pero la tensión en el Metro de Santiago se ha cambiado de 750 Vcc a 1500 Vcc y de vuelta múltiples veces. Los cambios se realizan con relativa celeridad y la única documentación que queda disponible es precisamente la licitación y la especificación técnica de la misma (que fue lo provisto)...pero, vamos que estaremos de acuerdo que borrar todo pq hay un fuente obsoleta que no dice que en 2016 era diferente? ::Pero nuevamente, la denuncia no pasa por ahí. Esto es un ejemplo igual al caso de AxCh (descrito arriba) y muchísimso similares (que he visto/sufrido con el usuario y de los cuales hay una retahíla de protestas es su PD), en que revierte todo, trata a todo el mundo como vándalo, dice que hay que ir a la PD, y (si se digna a opinar en la PD - generalmente no lo hace), se limita a decir que tiene una fuente (por muy mala/obsoleta que sea) e ignora los argumentos en la discusión. Y luego recurre a tablones para pedir protecciones, denunciar vandalismo y así afianzar su versión. Es un mal uso y no te culpo a ti ni ningún sysop, porque es muy difícil darse cuenta del mal uso (repetitivo) que hace y a primera vista sí puede parecer correcto (y obviamente cómo el usuario hace múltiples denuncias que sí correctas...bueno...es más mucho difícil)...y por eso les pido por favor mucha atención con el usuario que le está haciendo daño a wikipedia. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 11:47 6 oct 2025 (UTC) ;Comentario admin * No es mi intención intervenir en esta denuncia. Pero sí quiero aclarar, ya que fui mencionado por nombre, que la semiprotección de estos artículos se ha hecho por guerra de ediciones, pues no se puede llenar los historiales una y otra vez de modificaciones y reversiones. Aun así, antes de proteger el de la Línea 6, por pura curiosidad (me interesa el tema de ferrocarriles, aunque no particularmente el sistema metropolitano de Santiago de Chile), entré en una página de la compañía donde está indicado que actualmente los cables son "flexibles, unipolares, clase 5, de tensión de aislamiento de 750 V (fuerza) y 600 V (control) para 90ºC..." (y así sigue). También entré en la fuente proporcionada por las IP, un documento de finales del año pasado que detalla los pormenores de un proyecto (para mí, proyecto significa futuro). También leí la discusión, donde el denunciado de hecho sí intervino una vez, allí se proporciona como prueba una imagen realizada por el anónimo, almacenada en su Google Drive. Esta imagen de un visor digital colgado del techo no es una fuente creíble, no solo por ser fuente primaria, y no solo porque no se puede saber de dónde es (no pone el nombre del metro ni de la estación, solo un número colgado del techo, pero presumo de buena fe y asumo que es del lugar indicado), sino que en sí tampoco indica nada definitivo, puede estar por ejemplo en fase de pruebas o de desarrollo (teniendo en cuenta el poco tiempo transcurrido desde el documento mencionado) o de adaptación. Sí, obviamente puede ser también que ya está empleado, pero entonces hace falta una referencia que lo indique de verdad (no la de un proyecto). Insisto, no estoy aquí ni para debatir ni para valorar esta denuncia, solo dejar claro el motivo de la protección. las guerras de ediciones no pueden llevarse a cabo en los historiales de los artículos, invito a cualquiera a realizar las modificaciones necesarias en dichos artículos, si ha lugar, y/o participar en la discusión aportando las fuentes (al fin y al cabo estás páginas están semiprotegidas, cualquier usuario autoconfirmado puede intervenir en ellas). Por lo demás, lo dejo a otro admin. Saludos. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 05:10 6 oct 2025 (UTC) ;Continúa con más casos: :Nuevamente el usuario en acción. [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Historia_del_Metro_de_Santiago_2 Acá pidiendo protección en TAB] porque un "supuesto Vándalo" estaría agregando una imagen (absolutamente pertinente al artículo). Por favor dejen de ignorar esto y pónganle freno al usuario. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 16:59 2 nov 2025 (UTC) ; Respuesta {{admintab|1=Prueba|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:25, 9 February 2026 (UTC)|3=}} == Retomo reporte de CPP política == ; Asunto Hace menos de un mes [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Nombres_inapropiados_y_vandalismo_persistente/2025/09#CPP_pol%C3%ADtica reporté en el tablón] un caso de CPP política, que fue lamentablemente desestimado, pues el usuario {{u|Pptrc}} ha vuelto con lo mismo, controlar el artículo del partido chileno [[Evolución Política]] y ahora se crea una entrada con IA de [[Juan Manuel Santa Cruz]] sin mayor complicación, e incluso pasó por la revisión de un patrullero. Insisto en que esta cuenta no tiene otro objetivo que controlar y promover contenidos de políticos de la formación en la que tiene interés demasiado particular. :Por favor: por qué se espera para resolver estas cosas? es evidente que {{u2|Taichi}} tiene razón, y habiendo un proceso [[Elecciones parlamentarias de Chile de 2025|eleccionario en curso]], es evidente que la CPP está editando artículos con motivos propagandísticos...y que dada la coyuntura, se deben tomar medidas con celeridad. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 20:57 30 sep 2025 (UTC) <small>ps: aclaro que mi intervención acá fue para agregar el antecedente de la urgencia, dada la coyuntura</small> ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 15:17 17 sep 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver esta otra a ver si ocurre...|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:12, 11 April 2026 (UTC)|3=}} == Santos500p == ; Asunto Pido por favor que se tomen nuevas medidas para apaciguar el frenesí de ediciones del usuario {{u2|Santos500p}}, concernientes sobre todo con política de Perú, que [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ASantos500p&diff=169860726&oldid=169762965 en los últimos días] ha llegado al punto de tener varios artículos y categorías creadas por él en [[WP:CDB|consultas de borrado]], algunas teniendo consenso comunitario a favor del borrado. En una de las consultas señalé que [https://es.wikipedia.org/w/index.php?title=Wikipedia:Consultas_de_borrado/Deface_Per%C3%BA&diff=prev&oldid=169776828 el usuario lleva bastante rato desconociendo las líneas entre los diferentes proyectos], con varios intentos en el pasado de señalarle sobre ello, pero sigue en la mezcla de contenidos que podrían estar perfectamente en Wikinoticias, Wikisource e incluso Wikiquote, pero no hay nada que lo impida, aduciendo que puede entorugar cualquier cosa como artículo de Wikipedia, incluso riñendo con [[WP:REC]] o [[WP:SRA]]. De hecho, su página de discusión ha recibido en los últimos dos meses una cantidad difícil de cuantificar de [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ASantos500p&diff=169860726&oldid=168959821avisos de borrado rápido, avisos de consultas de borrado y artículos sin relevancia], varios de ellos siendo borrados. Esta situación ya suma a su <u>bloqueo parcial por dos años</u>, por lo que debería haber una restricción más certera que haga rectificar su proceder. Apelo a que el usuario pueda comprender que Wikipedia tiene bien delimitado [[WP:NO|sus noes]] y que debería él como usuario, ya no tan novato, entender esos límites. De lo contrario, dejo al encargo de un bibliotecario para que tome alguna medida extra para restringirlo. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 11:34 10 oct 2025 (UTC) ; Respuesta {{admintab|1=Vamos a probar a resolver esta también|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC)|3=}} == Usuario reincidente == ; Asunto * En marzo de este año, acudí al TAB por una serie de problemas en numerosos artículos creados por el usuario {{u|Ángel Luis Alfaro}}, [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscel%C3%A1nea/2025/06#Creaci%C3%B3n_de_art%C3%ADculos_con_varios_problemas ver aquí]. Ahora ha editado el artículo [[Alto Renacimiento]] con los mismos problemas por el cual puse esa denuncia en el TAB. Exceso de fotografías (173), referencias en las propias fotografías. Cientos de enlaces internos, algunas secciones son toda azul. Mal formato de las referencias, fuentes citadas (Fuentes citadas en Maniera moderna), usar como referencia artículos de wikipedia, véase la referencia 26. La sección notas es casi tan grande como el propio artículo. Y para terminar, no ha corregido ni uno solo de los artículos que ha creado anteriormente. ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:20 14 oct 2025 (UTC) ;Comentario * {{ping|Ontzak}} No consigo entrar en el enlace (me va todo muy lento hoy), ¿es el mismo que resolví yo la última vez? &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 09:32 15 oct 2025 (UTC) * {{ping|Virum Mundi}} si, el mismo. [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 13:55 15 oct 2025 (UTC) ** Ya veo, bueno, me pongo a ello, puede que tarde un rato. {{ping|Ángel Luis Alfaro}} por favor evita más ediciones hasta que se resuelva esta denuncia. Un saludo. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 11:26 16 oct 2025 (UTC) ::{{comentario}} {{ping|Virum Mundi}}, a pesar del aviso, el usuario sigue [https://es.wikipedia.org/wiki/Especial:Contribuciones/%C3%81ngel_Luis_Alfaro editando]. [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:45 26 nov 2025 (UTC) ; Respuesta {{admintab|$0}} == Adrian Silvera == ; Usuarios implicados * {{u|Adrian silvera}} ; Motivo Hace una década que este usuario agrega contenido mal escrito, sin referencias y muchas veces innecesario. Lo bloquearon tres veces por este motivo. Estuve un año insistiendo para que activara el autocorrector y así por lo menos subsanar el tema de la ortografía. Lo hizo hace poco, creo, pero el remedio fue peor que la enfermedad: ahora confunde adjetivos, sustantivos y verbos, y pone tildes en cualquier parte. Esto no sería tan grave de no ser porque se le advertí unas tres veces y sigue igual. Hoy le mandé un mensaje por ese tema y lo primero que hizo fue [https://es.m.wikipedia.org/w/index.php?title=The_Matrix_Reloaded&diff=prev&oldid=170118708 esto]. En otro caso lo interpretaría como una tomadura de pelo, pero no creo que lo haga a propósito. De todas maneras, alguna consecuencia tiene que tener, para aprender. ; Usuario que lo solicita * [[Usuario:Minguu|Minguu]] ([[Usuario Discusión:Minguu|discusión]]) 20:16 22 oct 2025 (UTC) ; Respuesta {{admintab|1=aaaa|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:54, 9 February 2026 (UTC)|3=}} == Propuesta de desbloqueo para Lenis Felipe == ; Asunto * Hola. Por este medio quisiera proponer al colegio de bibliotecarios el desbloqueo local de {{u|Lenis Felipe}}, usuario bloqueado hace ya más de tres años por creación de páginas vandálicas. Lenis se encuentra con bloqueo global, por lo que para poder ser desbloqueado globalmente necesita ser desbloqueado de alguna de las wikis donde tiene bloqueos actualmente, entre ellas, Wikipedia en español. :La propuesta la planteo porque, habiendo pasado un tiempo prudencial, puedo atestiguar que Lenis pareciera haber enmendado su rumbo y ha colaborado en reportar vía IRC, de manera privada, vandalismos, evasores de bloqueo y hasta sugerir cambios a filtros antiabusos para detener algunos abusadores de largo plazo. Particularmente lo ha hecho desde enero de 2024. Me parece que tal y como fue el caso de Sargento de Hierro (perdón que le nombre, pero me gusta destacar casos de usuarios que se corrigieron :)), podría ser positivo darle una segunda oportunidad para convertirse en un elemento positivo para la comunidad. Ante ello, propongo su desbloqueo local y quedo atento a cualquier propuesta de términos para ello, en cuenta restricción de crear páginas nuevas, o similares. Saludos, ; Usuario que lo solicita * '''[[Usuario:Jake Park|''Jake Park'']]''' [[Archivo:Coat of arms of Costa Rica.svg|20 px]] [[Usuario Discusión:Jake Park|<span style="color: red;">'''Problem?'''</span>]] 01:00 29 oct 2025 (UTC) ;Comentarios de biblios * Desde mi punto de vista, los usuarios que no hayan tenido actitudes vandálicas sistemáticas posteriores al bloqueo no deberían permanecer bloqueados más de tres años. '''Apoyo''' el posible desbloqueo. De todos modos, consulto: ¿sabes qué edad tiene el usuario? Porque no es lo mismo alguien que hizo esas tonterías a los 16 años que a los 60; en el primer caso, puede haber madurado rápidamente, mientras que si fuera ''"mayorcito"'' como quien escribe, los aprendizajes de comportamientos son más difíciles. --[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 02:03 29 oct 2025 (UTC) * EMHO todos son susceptibles de cambiar, no quiere decir que todos lo hagan, pero uno de los 5 pilares nos pide presumir buena fe. {{Ok|Votum pro}}. [[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:00 30 oct 2025 (UTC) * ; Respuesta (a rellenar por un bibliotecario) == Unmuybuenusuario == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> {{u|Unmuybuenusuario}} se registró el 28 de octubre de 2025, o sea hace 12 días. Desde el primer momento se dedicó a hacer mantenimiento y mandar artículos a borrar. El segundo día ya [https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Permisos/Actual&diff=prev&oldid=170247444 solicitó el flag de reversor con el argumento de : '' pese a mi muy breve tiempo en Wikipedia, desearía poseer el permiso de reversor para revertir de manera más fácil que usando el botón deshacer''], o sea que asegura que hace poco tiempo que está en Wikipedia pero ya conoce los tipos de flags que existen y dónde solicitarlos. @[[Usuario:Edslov|Edslov]], le negó el permiso, obviamente, ya que en ese momento tenía menos de 48 horas de creada la cuenta, pero no solamente opina que la decisión no fue justa sino que además conoce perfectamente el Café y fue directamente a quejarse porque no se le dio el permiso, para preguntar [https://es.wikipedia.org/w/index.php?title=Wikipedia:Caf%C3%A9/Archivo/Ayuda/Actual&diff=prev&oldid=170287227 ''¿Cuánto tiempo desde mi registro tiene que transcurrir para poder recibir el flag de reversor? ¿O cuántas ediciones?'']. Le pedí al usuario [https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:Unmuybuenusuario que dejara de hacer mantenimiento] y él me dejó un mensaje protestando por que [https://es.wikipedia.org/w/index.php?title=Usuaria_discusi%C3%B3n:Jaluj&diff=prev&oldid=170408787 no encuentra ninguna política que prohíba a un editor nuevo deshacer vandalismos o colocar plantillas de borrado rápido a artículos que cumplan alguno de los criterios de borrado rápido], lo cual es cierto, como tampoco hay ninguna política que prohiba a un usuario nuevo tener el flag de reversor, pero suponemos que para hacer este tipo de tareas se necesita tener experiencia y haber demostrado tener conocimientos para hacerlas bien. Por eso le pedí que se detenga y deje de hacer mantenimiento, porque si es un novato no podemos confiar en que lo haga. Entonces me [https://es.wikipedia.org/w/index.php?title=Usuaria_discusi%C3%B3n:Jaluj&diff=prev&oldid=170408787 acusó de estar violando la políticas al morder a los novatos y no presumir buena fe]. Morder a los novatos es cuando se trata de una persona sin experiencia que todavía no conoce las normas y políticas de Wikipedia. Una persona novata no sabe ni que existe un Café, ni que existe un tablón para solicitar flags, ni que existe el flag de reversor ni que existe el "deshacer". Pero a la vez me acusa de no presumir buena fe al sospechar que no es novato. Entonces, ¿en qué quedamos? Porque si es un novato, no debería estar haciendo mantenimiento y si no lo es, entonces yo no estaría presumiendo mala fe al sospechar que no lo es. Esta cuenta me está difamando al dejar mensajes como [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:A.piquerasm&diff=prev&oldid=170408867 este], porque además de acusarme de morder a un novato y de presumir mala fe me acusa por haber solicitado una VU y de haberlo "intimidado". Ahora resulta que por haberle pedido que deje de hacer mantenimiento y por haber pedido una VU yo soy la que viola las políticas y lo estoy "intimidando". Yo no lo acusé acusé ''gravemente de abuso a largo plazo'', yo solicité una VU porque sospecho que puede ser una LTA. Si no lo es, no tiene nada de qué preocuparse y si es un novato mucho menos. Solicito que se le haga un llamado de atención para que deje de difamarme a mis espaldas, ya que ni siquiera me enlazó para que yo no me enterara. ; Usuario que lo solicita * [[Usuario:Jaluj|Jalu]] ([[Usuario Discusión:Jaluj|discusión]]) 18:17 10 nov 2025 (UTC) * Te pido amablemente usuaria [[Usuario:Jaluj|Jalu]] una solución a este problema, porque yo no te estoy difamando, si conozco el café, el tablón, si se hacer reversiones, es porque fui anónimo y como usuario anónimo ya me dedicaba a hacer estas cosas, un usuario me sugiero visitar la página de cambios recientes y eso es lo que estoy haciendo, visitar los cambios recientes ¿Tengo prohibido deshacer vandalismos encontrados? Por cierto, no me indicaste cuales son las ediciones supuestamente arbitrarias, las ediciones que he hecho han sido deshacer vandalismos, yo no soy ni títere, ni evasor, ni mucho menos abuso a largo plazo, soy usuario completamente nuevo y esta es mi primera cuenta, y te recuerdo un fragmento de la página de usuarios títeres: '''Puede ser fácil identificar a un usuario títere, si muestra un conocimiento de las políticas, convenciones de Wikipedia y técnicas avanzadas de edición que no es de esperar en un novato (aunque debe presumirse buena fe: es posible que sea un usuario que haya colaborado en otra edición de Wikipedia, en alguna otra wiki o <u>que haya participado mucho tiempo como anónimo</u>)''' (subrayado mío). Si conozco como deshacer vandalismos, es porque antes editaba como anónimo, y esta cuenta fue creada para ayudar a Wikipedia, de ninguna manera la cree para LTA o ediciones arbitrarias. ¿Cómo propones que se solucione este problema y que tipo de ediciones puedo hacer y que tipo de ediciones no puedo hacer? --[[Usuario:Unmuybuenusuario|Unmuybuenusuario]] ([[Usuario Discusión:Unmuybuenusuario|discusión]]) 23:27 10 nov 2025 (UTC) :{{comentario}}: [https://es.wikipedia.org/w/index.php?title=Wikipedia:Solicitudes_de_verificaci%C3%B3n_de_usuarios&oldid=170625007#Evasi%C3%B3n_de_bloqueo:_Cris2020 Resultado de la SVU]. --'''[[user:Stïnger|<span style="text-shadow:#FFD700 1px 1px 2px; class=texhtml"><span style="font-family:'Calibri';color:black">Stïnger</span></span>]]'''&nbsp; <sup>[[Archivo:Bureau kage.svg|15px|link=User talk:Stïnger]]</sup> 00:58 24 nov 2025 (UTC). ; Respuesta {{admintab|Al no ser un caso reciente (ya pasaron algunos días) apercibo a {{u2|Unmuybuenusuario}} de [[WP:PBF]] primeramente y posterior a [[WP:PPBF]]. Ambos juicios caen en violaciones a [[WP:E]] y [[WP:CIV]] (supongo al ya haber editado como IP sabrá por que, por lo que en caso de reincidencia podría haber sanción. En cuanto al flag, queda al criterio del bibliotecario que lo otorga, no hay tiempo ni cuota determinada, pero es bastante obvio que más sabe el diablo por viejo que por diablo, yo tampoco lo habría otorgado.|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:09 26 nov 2025 (UTC)}} == Expulsado de la Wikipedia en inglés viene acá a hacer lo mismo... == ;Usuarios * {{u|SocialQuote}} * {{u|2800:484:7380:0:0:0:0:0/44}} ; Asunto Tanto [https://en.wikipedia.org/wiki/Special:Contributions/SocialQuote la cuenta registrada] como [https://en.wikipedia.org/wiki/Special:Contributions/2800:484:7380:0:0:0:0:0/44 el rango IP] se encuentran sancionados desde septiembre en la Wikipedia en inglés, por ediciones conflictivas, reversiones sin sentido e incluso insultos y amenazas. Ya acá [[Usuario discusión:2800:484:7385:F0:95EE:CA0B:4429:B24C|ha causado problemas como anónimo en junio]] y la cuenta [https://es.wikipedia.org/w/index.php?title=Scarface_(pel%C3%ADcula_de_1983)&diff=prev&oldid=168285955 incluso ripostó contra un bibliotecario], y [https://es.wikipedia.org/w/index.php?title=Harry_Potter_y_el_c%C3%A1liz_de_fuego&diff=prev&oldid=169807011 está constantemente] [https://es.wikipedia.org/w/index.php?title=Dinero_negro&diff=prev&oldid=170282821 revirtiendo al bot de mantenimiento]. Nótese que los temas que edita tanto la cuenta como la IP son las mismas (series de TV y películas), y las sanciones aplicadas en en.wiki fueron hechas el mismo día. Debido a esta coincidencia y la situación que está persistiendo ahora en la Wikipedia en español, pido que se tomen medidas. :{{comentario}} Añado [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:Farisori&diff=prev&oldid=170531619 otro mensaje bastante incordiante contra otro bibliotecario] haciéndolo suponer entre líneas que no sabe redactar artículos. '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 00:10 18 nov 2025 (UTC) ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 04:18 17 nov 2025 (UTC) ; Respuesta {{Hecho|1=Bloqueado}} por Rafstr. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:40 19 nov 2025 (UTC) == Borrar y ocultar datos sensibles en página de usuario == ; Asunto Pido con carácter de urgencia que algún bibliotecario [https://es.wikipedia.org/w/index.php?title=Usuario:Dalma_Huerta_Mercado_Calder%C3%B3n&diff=prev&oldid=170526877 oculte datos sensibles y muy personales] de [[Usuario:Dalma Huerta Mercado Calderón|esta página de usuario]], ya que es aún una niña (ni siquiera es adolescente). No creo que sea consciente de que lo que hace es peligroso a su edad. Añado que ya [https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:Dalma_Huerta_Mercado_Calder%C3%B3n#Informaci%C3%B3n_personal no es la primera vez que la pillan colgando datos personales], el año pasado hizo lo mismo. Si toca hacer alguna medida administrativa que evite que la menor siga exponiendo sus datos sin cuidado, adelante. ; Comentarios No soy bibliotecario, pero {{ping|Taichi}} creo que lo mejor es mandar un correo a [[Wikipedia:Supresores|oversight]], o como mínimo realizar la solicitud en algún lugar menos visible (como IRC). --[[Usuario:Xacaranda|Xacaranda]] [[Usuario discusión:Xacaranda|(mensajes)]] 18:56 18 nov 2025 (UTC) ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 04:22 17 nov 2025 (UTC) ; Respuesta {{admintab|1={{Sí}}, dada la excesiva información personal y la imposibilidad de ocultar la última edición, opté por el borrado de la PU. También dejé un mensaje a la usuaria. En caso de reincidir, aplicaría una medida, como un bloqueo parcial, para impedir que vuelva a crear su página de usuario. Un saludo,|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:55 19 nov 2025 (UTC)}} == LTA == ; Usuarios implicados * {{u|Mauro08L}} ; Motivo Hmm, otra vez, otro títere más de {{u|Claudio1098}}. ; Usuario que lo solicita * —<span style="font-family:Trebuchet MS;font-size:95%">[[Usuario:Mαrti|<span style="color:#636;">Mαrti</span>]]&nbsp;<span style="color;background:#CBE2F7;border-radius:9px;">&nbsp;[[Usuario discusión:Mαrti|'''ϟ''']]&nbsp;</span></span> 20:23 18 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:42 19 nov 2025 (UTC)}} == Recreación reiterada == ; Asunto * El usuario {{u|Archivoteleditor}} insiste en recrear el mismo programa de televisión con distintas variaciones del título, véase [[Tentaculos]], [[Tentáculos]], [[Ni que fuéramos tentáculos]] y [[Ni Que Fuéramos Tentáculos]], contabilizo más de una docena de recreaciones, ya se le avisó de un posible conflicto de interés. :En cuanto al artículo, se trata de un programa que duró apenas 3 meses en antena, aunque El País y EuropaPress son referencias fiables, mencionan el programa superficialmente. ; Usuario que lo solicita *   '''C:\>''' [[Usuario:A.piquerasm|A.piquerasm]] '''[''' [[Usuario Discusión:A.piquerasm|Discusión]] ''']''' 16:43 19 nov 2025 (UTC) ; Respuesta {{admintab|{{hecho}}. Inhabilitado de crear páginas. Un saludo. |2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 19:49 19 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170580247]] ; Motivo Lenguaje soez ; Usuario que lo solicita * [[Usuario:Casisgaal|<span style="font-size:black 3px 1px 3px; font-variant:Corbel; color:blue; text-shadow:cyan 2px 1px 2px">Casisgaal</span>]] [[Usuario discusión:Casisgaal|(Discusión)]] 16:16 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada y cuenta bloqueada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:36 21 nov 2025 (UTC)}} == Anónimo escurridizo == ; Asunto Un anónimo que cambia de cuenta temporal y de IP lleva dos meses haciendo cambios sin sentido en partidos políticos de Colombia [https://es.wikipedia.org/w/index.php?title=Independientes_(Colombia)&action=history como este], [https://es.wikipedia.org/w/index.php?title=Partido_Comunista_de_Colombia_-_Marxista_Leninista&diff=prev&oldid=170580251 cambiando un «es» por «fue»] (haciendo entender que ya no existen), pero sin aportar pruebas que los partidos ya no están activos. Como no está aportando nada [[WP:VER|que lo sustente]], se le está revirtiendo pero insiste en reponerlo, llegando a una conducta que no se puede considerar como constructiva. Además, nos pone en prueba con el sistema de cuentas temporales ya que no sólo está cambiando de cuenta temporal, sino de IP, por lo que dejo en consideración que hacer. Estás serían las direcciones en cuestión: [https://es.wikipedia.org/wiki/Especial:IPContributions/191.108.3.30], [https://es.wikipedia.org/wiki/Especial:IPContributions/191.108.59.86], [https://es.wikipedia.org/wiki/Especial:IPContributions/152.201.226.108] y [https://es.wikipedia.org/wiki/Especial:IPContributions/152.202.79.18]. Previo a la instauración de cuentas temporales también editó con las siguientes IPs: * {{u|152.201.203.233}} * {{u|186.113.76.107}} * {{u|191.111.9.153}} Es posible que incluso se considere en semiproteger si en caso tal el anónimo siga por cambiar de IP y continúe con esta situación. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 16:49 20 nov 2025 (UTC) ; Respuesta {{admintab|{{prot|60}}|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:19 26 nov 2025 (UTC)}} == Acoso == ; Usuarios implicados * {{u|~2025-35257-44}} * {{u|~2025-35202-10}} ; Motivo Acoso a un usuario ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 21:57 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 16:49 21 nov 2025 (UTC)}} == Acoso == ; Usuarios implicados * {{u|Narsenopoulos}} ; Motivo {{diff|170585395|Acoso a un usuario}} ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 22:03 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Usuario bloqueado por Virum Mundi. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:28 21 nov 2025 (UTC)}} == Ocultar ediciones == ; Asunto * [[Especial:Diff/169433403]] * [[Especial:Diff/170587004]] ; Motivo El artículo suele ser vandalizado mediante la inclusión de nombres completos de particulares en esta lista, entiendo que motivados por algún tipo de rencilla personal. Creo que es conveniente ocultarlos ya que que, de lo contrario, esos nombres quedan indexados y accesibles por internet, asociados a una lista de violadores en serie, lo cual puede tener implicaciones en su vida personal. ; Usuario que lo solicita * [[Usuario:Nacaru|Nacaru]] [[Archivo:Noto Emoji KitKat 2601.svg|19px]] ([[Usuario_discusión:Nacaru|discusión]]) 00:23 21 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Ediciones ocultadas. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:39 21 nov 2025 (UTC)}} == Solicitud para corregir redirecciones dobles en [[Ciudad del Cuzco]] y [[Cusco, Perú]] == Hola. Por favor, ayúdenme a solucionar el problema de las redirecciones dobles en las páginas de redireccionamiento [[Ciudad del Cuzco]] y [[Cusco, Perú]]. Gracias. [[Especial:Contribuciones/&#126;2025-35342-08|&#126;2025-35342-08]] ([[Usuario discusión:&#126;2025-35342-08|discusión]]) 04:33 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 04:45 21 nov 2025 (UTC)}} == Me sentí acosada por Jaluj, por favor, paciencia con los novatos == ; Asunto Soy una nueva editora (bueno, era una nueva editora) estudiante de 5º de Veterinaria y entré en la wikipedia con mucha ilusión. Detecté un artículo escrito llamado “Comida para gatos” lleno de enlaces spam a marcas comerciales, así como un claro sesgo pro pienso alabando sus virtudes. Después de leerme todos los tutoriales edité el artículo intentando ser objetiva, eliminado enlaces spam y texto publicitario. Un editor deshizo todo mi trabajo dando la razón de que yo había eliminado referencias. https://es.wikipedia.org/w/index.php?title=Comida_para_gatos&diff=170390013&oldid=170376180 Vi la posibilidad de aprender de mis errores y le pregunté por que consideraba fiables (ya que repuso todos los enlaces spam) Eran enlaces a artículos como “los 8 mejores marcas de piensos” (que es publicidad de 8 marcas de piensos, con enlaces a afiliados de Amazon), o webs que no funcionaban etc etc Me contestó que había eliminado todo mi trabajo porque yo había añadido 1 referencia “por tratarse de blog y por tanto no considerarse fiable”. Era un enlace a un artículo de una clínica veterinaria como había 3 o 4 igual en el artículo. https://clinicaveterinarium.es/el-gato-es-omnivoro-o-carnivoro/ No entendí que para eliminar ese enlace se eliminara todo el trabajo realizado en el artículo, y sobre todo que se repusieran los enlaces spam, y por qué esos enlaces spam eran fuentes fiables. Para resumir, volví a poner el artículo tal y como yo lo había escrito (eliminado más de 10 enlaces spam) quitando el enlace a dicha clínica, sospechando que era ese el problema, y el editor me agradeció la edición. Seguí sin aprender. Pero no me quejo de este editor. Y aquí viene mi ruego. Posteriormente a todo esto, y tras muchos días después, apareció el editor Jaluj, https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:LaVeterinaria , donde me acusó de faltar a la etiqueta y falta de civismo al preguntar al editor. Pedí disculpas por mis preguntas si habían molestado y volví a decir que mi intención era aprender y por eso preguntaba. Tras mi respuesta, el editor Jaluj fue a una edición mía en otro artículo, y la eliminó, diciendo que no era una fuente fiable https://es.wikipedia.org/w/index.php?title=Perro_de_caza&curid=707821&diff=170565115&oldid=170545527 La ACCM es un organismo avalado por el Gobierno https://servicio.mapa.gob.es/arca/download.html?id=20338485&contentType=application/pdf que reconoce oficialmente a los perros de raza, así que supongo que son una fuente entendida del tema para hablar de razas. Además de eliminar esa información, me vuelve a acusar de falta de civismo y de etiqueta, por lo que me declaré Retirada y así se lo dije como respuesta, ya que no entendía nada, me di cuenta que no podía aprender y me sentía atacada. He recibido un email de wikipedia donde me avisa que el editor Jaluj obviando todas mis disculpas y petición de información sobre la organización oficial sólo me exige el nombre de mi mentor. Solo pido un poco de paciencia y empatía con los nuevos editores, necesitamos empatía y ayuda para editar, no acusaciones de mala fe y falta de civismo. Yo lo he intentado, cuiden a los que vengan nuevos detrás de mi. Gracias por leer. ; Usuario que lo solicita --[[Usuario:LaVeterinaria|LaVeterinaria]] ([[Usuario Discusión:LaVeterinaria|discusión]]) 14:01 21 nov 2025 (UTC) ;Comentario adicional Permito añadir que {{u2|Leoncastro}} y mi persona [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ALaVeterinaria&diff=170608554&oldid=170595929 hemos tratado separadamente de mediar en el asunto], pero la usuaria está demasiado a la defensiva e incluso [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ATaichi&diff=170606470&oldid=170599847 me dejó esta contestación], incluso cuando buscaba seriamente ayudarle. Lo que denoto en sus contestaciones además, es que ella como estudiante universitaria dice tener algún "mentor" en su universidad (pero no está adscrito acá), por lo que estoy deduciendo que hay alguna orientación mal ejecutada y pareciera que la estudiante está obligada a editar como sea, a expensas de que cualquier patrullero o bibliotecario sea maltratado de esta manera si le revisan sus contribuciones. Ojalá haya alguna forma de que se haga entender y ver ante las instancias de qué o quién movió institucionalmente a la alumna a que pasara esto. '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 14:35 22 nov 2025 (UTC) ; Respuesta {{admintab|1={{No}}. {{U|LaVeterinaria}}, no me parece que, en ningún momento, Jaluj o algún otro de los varios usuarios que han buscado orientarte te hayan «maltratado» o dado motivos para sentirte intimidada o acosada. Más bien, algunas de tus interacciones muestran que, ciertamente, pareces estar a la defensiva y que podrían malinterpretarse. Supongo que el primer mensaje de Jaluj estuvo motivado por una de tus respuestas a Casisgaal —«¿Por qué escribir texto apoyado en enlaces verificables como la universidad etc.? ¿La wikipedia española se basa en la inglesa y no podemos editar sino solo traducir?»—, que se alejó del [[Wikipedia:Civismo|civismo]] esperado en las interacciones entre usuarios en Wikipedia. Asumiste que el mensaje de Jaluj estuvo motivado por tu «insistencia por preguntar lo que no entendía», cuando claramente te explicó, de forma amable y con la paciencia que en varias ocasiones has pedido, que fue por tu tono. Coincido con Jaluj en que parece que no lees los mensajes completos. <br> Si preguntó Jaluj sobre tu «mentor», que tú misma mencionaste en la conversación con Casisgaal, es porque, ciertamente después de estas interacciones que has tenido, surge la duda de quién es, si es usuario de Wikipedia y si tiene conocimiento de las políticas que la rigen. Parece que no. Por ello, sería mejor que aprovecharas herramientas como el [[Wikipedia:Programa de tutoría|programa de tutoría]] —cabe destacar que {{u|Ezarate}} ya amablemente se ofreció a ayudarte con tus ediciones—. Todo lo anterior, ya te lo había explicado Leoncastro. Además, él te dejó un extenso mensaje donde explicó y trató de mediar. Tu respuesta y actuar subsecuente es, cuanto menos, desconcertante. <br> En suma, descarto la denuncia. {{U|LaVeterinaria}} no me parece que el tono que uses y la forma de interactuar que tienes con otros usuarios, que han intentando orientarte, sea adecuada o benéfica para la enciclopedia. Así como insistes en pedir paciencia, ofrécela a los demás y no acuses de intimidación o denuncies tan fácilmente. Aprovecha los mensajes en los que se te ha explicado un poco sobre la enciclopedia, aprovecha el programa de tutoría o los ofrecimientos de usuarios como Ezarate. No continúes con esta forma de actuar porque fomenta conflictos y puede conducir a medidas que nadie quiere que se tengan que tomar. Un saludo,|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 22:00 22 nov 2025 (UTC)}} == LTA == ; Usuarios implicados * {{u|Henrysmithwa5}} ; Motivo LTA aerolíneas ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:15 21 nov 2025 (UTC) ; Respuesta {{admintab|{{ok}} por Jake Park. |--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 00:38 22 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170607263]] ; Motivo Etiqueta ; Usuario que lo solicita * [[Usuario:CharlieRaMx|CharlieRaMx]] ([[Usuario Discusión:CharlieRaMx|discusión]]) 12:02 22 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 12:30 22 nov 2025 (UTC)}} == Ocultar ediciones == ; Usuarios implicados * {{u|Zanahorita Extraida}} ; Motivo Pido que se oculten todas las ediciones de este títere bloqueado, quien como siempre ha lanzado comentarios denigrantes, ofensivos y hasta insultos. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 18:08 23 nov 2025 (UTC) ; Respuesta {{Hecho}} por Saloca. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 20:00 23 nov 2025 (UTC) == LTA == ; Usuarios implicados * {{u|Patthenry5}} ; Motivo LTA aerolíneas ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 18:24 23 nov 2025 (UTC) ; Respuesta {{Hecho}} por MiguelAlanCS. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 19:59 23 nov 2025 (UTC) == Ocultar ediciones == ; Asunto * [[Especial:Diff/170589208]] * [[Especial:Diff/170589204]] ; Motivo Vandalismo ; Usuario que lo solicita * [[Usuario:CarlosEduardoPA|<span style="font-size:80%;background:#000;color:#fff;border-radius:25px;padding:3px 8px;">CarlosEduardoPA</span>]] [[Usuario discusión:CarlosEduardoPA|✉️]] 22:29 23 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Ediciones ocultadas. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:26 24 nov 2025 (UTC)}} == MediaWiki:Jsonconfig-use-category == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> ; Asunto * {{a|MediaWiki:Jsonconfig-use-category}} * Please delete the page as it is no longer necessary following [[:phab:T378352|T378352]] ([[:Category:Wikipedia:Páginas que usan la extensión JsonConfig|the category]] has already been deleted). See also [[:m:Steward requests/Miscellaneous#Category:Pages using the JsonConfig extension]]. ; Usuario que lo solicita * [[Usuario:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Usuario Discusión:NguoiDungKhongDinhDanh|discusión]]) 23:09 23 nov 2025 (UTC) ; Respuesta {{admintab|{{ok}}|--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 09:01 24 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170617475]] ; Motivo Vandalismo ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 23:46 23 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada por Virum Mundi. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:22 24 nov 2025 (UTC)}} == Plantillas mantenidas sin justificación en Conservatorio de Música de la Universidad Austral de Chile == ; Asunto Solicito la intervención de un bibliotecario respecto al artículo [[Conservatorio de Música de la Universidad Austral de Chile]]. El usuario Ontzak colocó dos plantillas (promocional e irrelevante) el día 18 de noviembre. Desde entonces el artículo ha sido completamente reescrito, reforzado con referencias académicas y eliminado el contenido que podía ser de estilo promocional e irrelevante. Conforme a lo indicado en las propias plantillas, abrí hilo en la página de discusión solicitando consenso para su retirada. El usuario no ha respondido pese a haber sido notificado y mencionado en dos ocasiones. ; Motivo El comportamiento observado, colocar plantillas, no responder a la discusión y bloquear de facto la retirada, encaja en lo descrito en [[WP:DUEÑO]]. A día de hoy las razones originales ya no se sostienen, pero las plantillas permanecen en el artículo sin justificación actual y el editor que las colocó evita participar en la discusión. ; Usuario que lo solicita [[Usuario:Hoppedup|Hoppedup]] ([[Usuario Discusión:Hoppedup|discusión]]) 12:26 24 nov 2025 (UTC) Solicito que un bibliotecario revise el caso: • si procede, retire las plantillas, • y si fuese necesario, recuerde al usuario implicado la obligación de participar cuando se cuestiona una plantilla mantenida. Gracias. ; Respuesta {{admintab|1={{Hecho}}. Por lo demás, todos sabemos cómo hace las cosas {{u2|Ontzak}}; sería mejor que las hiciera con un poco más de intercambio con los demás, pero no se le puede pedir a los editores lo que no pueden o no quieren aportar en Wikipedia (editar sigue siendo una actividad voluntaria, todavía). En mi personal opinión, es mejor tenerlo haciendo lo que hace que no tenerlo, de modo que lo más que podemos hacer es volverlo a invitar a ser un poco más comunicativo. En cuanto a lo de WP:DUEÑO, me parece que te has pasado de largo unos cuantos kilómetros en tu interpretación; un poco más de calma, por favor. Gracias por tu mensaje.|2=--[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 13:10 24 nov 2025 (UTC)}} == Spam incesante == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> ; Asunto * Rango con decenas de ediciones spam, al menos unas 34 desde marzo de este año. * {{u|89.214.0.0/17}} * [[Especial:IPContributions/89.214.0.0/17]] ; Usuario que lo solicita * [[Usuario:Xacaranda|Xacaranda]] [[Usuario discusión:Xacaranda|(mensajes)]] 18:58 25 nov 2025 (UTC) ; Respuesta {{admintab|{{Sí|He aplicado un bloqueo parcial a los artículos objeto de spam}}.|2=[[Usuario:Montgomery|Montgomery]] ([[Usuario Discusión:Montgomery|discusión]]) 19:04 25 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170663031]] ; Motivo Transgresión de las reglas de etiqueta. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 19:17 25 nov 2025 (UTC) ; Respuesta {{admintab|$oc|2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 20:09 25 nov 2025 (UTC)}} == Solicitar traslado == ; Asunto * Solicito el traslado de [[CITEDEF]] a [[Instituto de Investigaciones Científicas y Técnicas para la Defensa]], siguiendo la recomendación de la [[Wikipedia:Convenciones de títulos|convención de títulos]] de evitar el uso de acrónimos y siglas siempre que se pueda. ; Usuario que lo solicita * [[Usuario:Comecaballos|Comecaballos]] ([[Usuario Discusión:Comecaballos|discusión]]) 00:17 26 nov 2025 (UTC) ; Respuesta {{admintab|{{hecho}}|--[[Usuario:Ezarate|Esteban]] ([[Usuario Discusión:Ezarate|discusión]]) 11:58 26 nov 2025 (UTC)}} == Cuenta de "propósito particular" == ; Asunto * No tengo del todo claro si [https://es.wikipedia.org/w/index.php?title=Especial:Registro/block&page=Usuario%3AInfohisto esto va acá] o a esta altura debería reportarse como vandalismo. Ver sus ediciones de hoy, y sus resúmenes de edición, en {{a|Caporales}} y {{a|Tundiqui}}. Esta cuenta, que ya fue identificada como lo que es, definitivamente no tiene otro propósito aquí que el que ya es evidente. Y lo ha hecho ya en varios artículos. Mirando su página de usuario veo que tres administradores ya han interactuado con él. Así que aprovecho para citarlos: {{u|Tector}}, {{u|Saloca}} y {{u|Marcelo}} ; Usuario que lo solicita * [[Usuario:Rastamby|Rastamby]] ([[Usuario Discusión:Rastamby|discusión]]) 02:34 26 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}, ya fue suficiente: usuario expulsado y artículos protegidos a largo plazo. Gracias por el aviso.|2=--[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 02:43 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170670252]] ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 04:58 26 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 05:04 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170670276]] ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 05:00 26 nov 2025 (UTC) ; Respuesta {{admintab|1=Prueba|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:26, 9 February 2026 (UTC)|3=}} == Solicitud para corregir redirecciones dobles en [[Departamento de Cusco]] y [[Provincia de Cusco]] == Hola. Por favor, ayúdenme a solucionar el problema de las redirecciones dobles en las páginas de redireccionamiento [[Departamento de Cusco]] y [[Provincia de Cusco]]. Gracias. [[Especial:Contribuciones/&#126;2025-36297-96|&#126;2025-36297-96]] ([[Usuario discusión:&#126;2025-36297-96|discusión]]) 05:35 26 nov 2025 (UTC) == CDI == ; Usuarios implicados * {{u|JALGUERRERO}} ; Motivo Claro conflicto de interés. Sus ediciones se centran en el artículo que lleva su nombre ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 10:53 26 nov 2025 (UTC) ; Respuesta {{admintab|{{Ok}}, hecho por {{u2|Virum Mundi}}; no puedo creer nos duró 15 años.|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:27 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170680869]] ; Usuario que lo solicita * [[Usuario discusión:Divinations|Divinations]] 21:35 26 nov 2025 (UTC) ; Respuesta {{admintab|1=Ejemplo de resolución de solicitud que menciona a {{ping|Nacaru}}.|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:39, 9 February 2026 (UTC)|3=}} == varias ediciones == ; Asunto * [[Especial:Diff/619272]] ; Motivo Prueba de texto ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:45, 20 February 2026 (UTC) ; Respuesta {{admintab|1=Qué tal está petición de aquí??? {{Ok}}|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:13, 11 April 2026 (UTC)|3=}} == Ocultar edición [[Especial:Diff/619272|619272]] == ; Asunto * [[Especial:Diff/619272]] ; Motivo JHVBIKUHGVIK ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:47, 20 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar edición 619272 == ; Asunto * [[Especial:Diff/619272]] ; Motivo VXCV XZVZCVZC ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:48, 20 February 2026 (UTC) ; Respuesta {{admintab|1=OKIII|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:49, 20 February 2026 (UTC)|3=}} == Ocultar edición 684158 == ; Asunto * [[Especial:Diff/684158]] ; Motivo kjanxkajsncxa ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:34, 26 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Prueba de toro túitulo == ; Usuarios implicados * {{u|Sergio Enrollment 2}} ; Motivo Prueba de otra raźon ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:55, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Otra prueba de título más == ; Usuarios implicados * {{u|Sergio Enrollment 2}} ; Motivo Desarrollando razón ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:55, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == k,jnkjjn == ; Usuarios implicados * {{u|Dicto23456}} ; Motivo lknmlkj lkjlk jkl ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:59, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Otra denuncia la que sea == ; Usuarios implicados * {{u|Cenarium}} ; Motivo A ver qué tal ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 01:08, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74252,671081,671082 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/671081]] * [[Especial:Diff/671082]] ; Motivo Motivo cualquiera ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:43, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74252, 74251, 89098 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/74252]] * [[Especial:Diff/74251]] * [[Especial:Diff/89098]] ; Motivo Ejemplo ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:45, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar edición 74252 == ; Asunto * [[Especial:Diff/74252]] ; Motivo qeasdsa ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:46, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74251 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/74251]] ; Motivo asdAD SADAS ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:46, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74253, 74254, 74255, 74256 y 74252 == ; Asunto * [[Especial:Diff/74253]] * [[Especial:Diff/74254]] * [[Especial:Diff/74255]] * [[Especial:Diff/74256]] * [[Especial:Diff/74252]] ; Motivo A ver si aparecen en el mismo orden. ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:52, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) m4b9q13ttek6cmwpkbqebdd0nkwtlk9 737588 737586 2026-04-11T13:53:47Z Nacaru 54746 Resolviendo solicitud «[[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscelánea/Actual#Propuesta_de_desbloqueo_para_Lenis_Felipe|Propuesta de desbloqueo para Lenis Felipe]]» mediante [[WP:TL|Twinkle Lite]] 737588 wikitext text/x-wiki <!-- AVISO: No semiproteger la miscelánea del tablón pues aquí redirigen muchas plantillas y avisos en páginas varias para que los novatos puedan aportar o realizar consultas que sólo bibliotecarios pueden resolver --> <noinclude>{{Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Plantillas/Cabecera}} {{Archivado automático |Destino=Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Archivo/Miscelánea/AAAA/MM |Días a mantener=7 }} == Situación extraña con tinte político == ; Asunto Desde 2019 aproximadamente se ha visto un grupo de IPv6 dentro del rango {{u|2804:14C:0:0:0:0:0:0/32}} editando y tratando de manipular contenidos políticos controvertidos (específicamente en [[Fascismo en América]] y otros más), de hecho por lo que se ve [[Discusión:Fascismo en América|aquí]] el anónimo se expresa de una manera particular sin saber siquiera español y sólo deja links sin mayor explicación. Adicionalmente, el anónimo está constantemente dejando mensajes a {{u2|Raimundo57br}} haciendo una serie de solicitudes de modificaciones a artículos de tinte político (sobre todo si son relativos a la derecha o izquierda política). Pero cuando vemos más a profundidad, vemos otras IPs como {{u|187.20.115.154}} dejando lo mismo al usuario, o este [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:Raimundo57br&diff=prev&oldid=150518775 mensaje] de Raimundo57br dirigido a otra cuenta haciendo ping, pero en su propia discusión en un intento de coordinación de su desbloqueo. Hago acotar que Raimundo57br [https://pt.wikipedia.org/wiki/Especial:Contribui%C3%A7%C3%B5es/Raimundo57br está expulsado de la Wikipedia portuguesa desde el 2022], luego de múltiples problemas allá y numerosos bloqueos temporales. También, que la Wikipedia portuguesa maneja estrictamente el uso de direcciones anónimas y [https://pt.wikipedia.org/wiki/Usu%C3%A1rio(a):2804:14C:0:0:0:0:0:0/32 todo el rango 2804:0:0:0:0:0:0:0/19] se encuenta bloqueado desde 2020. Existe una posibilidad de que haya una inusual coordinación entre anónimos y Raimundo57br para manipular artículos de política en Wikipedia en español y la Wikipedia portuguesa (a partir de una tercera cuenta), ante la imposibilidad de ambos entes (ya que se les hace más cómodo intervenir acá). Incluyo al reporte que [https://es.wikipedia.org/w/index.php?title=Discusi%C3%B3n:Fascismo_en_Am%C3%A9rica&diff=prev&oldid=168802559 con estos] [https://es.wikipedia.org/w/index.php?title=Discusi%C3%B3n:Fascismo_en_Am%C3%A9rica&diff=prev&oldid=168803824 diffs en específico], no sólo Raimundo57br está involucrado, también {{u|Auréola}} (quien también pasó por un proceso de expulsión, aunque no está autoconfirmado acá) y {{u|Luizpuodzius}} (quien fue sancionado también allá, pero no expulsado; tampoco autoconfirmado acá). Aquí [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ALuizpuodzius&diff=159046847&oldid=152503114 una interacción entre usuarios hablando de temas referentes a pt.wiki]. De esta situación, se confirma que se esté usando nuestra Wikipedia para cuestiones ajenas de un proyecto que los sancionó y expulsó. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 17:04 4 ago 2025 (UTC) ;Comentarios #'''Sobre los mensajes que recibo del IP''': no tengo contacto fuera de la wiki con este IP que me envía solicitudes para editar determinados artículos y, por regla general, no atiendo estas solicitudes; #'''En cuanto a mis problemas en la wiki-pt''', aclaro que no se deben a ediciones que hice en el dominio principal de esa versión de la wiki (donde se borraron pocos artículos y se revirtieron pocas ediciones), sino a una larga rivalidad con determinados administradores. No creo que sea oportuno traer ese debate aquí, pero si insisten, daré las aclaraciones que consideren oportunas. #'''Sobre mi contacto con Luizpuodzius''': entiendo que fue un acto aislado sin mayores repercusiones, hace mucho tiempo que no interactúo con esa persona. #'''Sobre mi interacción con Anhabete''': entiendo que fue un acto aislado sin mayores repercusiones, después de eso no volví a interactuar con esa persona. :--[[Usuario:Raimundo57br|Raimundo57br]] ([[Usuario Discusión:Raimundo57br|discusión]]) 12:35 5 ago 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver petición|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC)|3=}} == Solicito traslado de páginas == * Por favor trasladar las siguientes páginas # {{a|Dover}} ... a ... {{a|Dover (desambiguación)}} # {{a|Dover (Kent)}} ... a... {{a|Dover}} ;Motivo * Por favor indicar el motivo: La ciudad de Inglaterra es el uso principal del término. La página de desambiguación tenía cientos de enlaces ambiguos. ;Usuario que lo solicita Firmado: [[Usuario:Rondador|Ronda]][[Usuario Discusión:Rondador|dor]] 09:39 2 sep 2025 (UTC) ;Coentarios * Personalmente estoy de acuerdo, vamos a solicitar las opiniones de otros que quieran opinar. Un saludo. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 10:45 2 sep 2025 (UTC) * Con permiso, {{u2|Rondador}}, he detallado los dos traslados que estás pidiendo; estoy de acuerdo con el traslado, y también con la solicitud de opiniones (quizá en algún lado haya algo muy relevante llamado localmente Dover). --[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 12:09 2 sep 2025 (UTC) * Si pongo Dover en el buscador de Google, [[google:dover|el primer resultado]] (y siguientes) es para el grupo musical español (algo que sospechaba, ya que en mi mente sucede lo mismo). [[Usuario:MiguelAlanCS|<b style="color: #990099;">MiguelAlanCS</b>]] >>> [[Archivo:PICOL icon Mail.svg|15px|link=Usuario discusión:MiguelAlanCS]] 12:13 2 sep 2025 (UTC) :: En mi caso sale la ciudad, pero bueno, también es un argumento a tener en cuenta. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 20:23 2 sep 2025 (UTC) :::{{no|}} Lo que no se puede hacer es trasladar y despues solicitar, como hizo unilateralmente el editor. Lo revertí a la espera de otra respuesta. Aunque mejor que en el tablón de bibliotecarios donde solo responden bibliotecarios, es preguntar en el café. A mi, si me preguntan por Dover me vienen muchas cosas a parte de la propia ciudad por lo que hay que buscar un consenso clarone indicarlo en la resolución y posibles traslados para que no hay discusiones en el futuro. --[[Usuario:Geom|<b style="background:purple;color:yellow;font-size:80%;border-radius:9px 0 0 9px;padding:2px 5px;">Geom</b>]][[Usuario discusión:Geom|<span style="font-size:80%;color: gray;">'''(discusión)'''</span>]] 09:35 3 sep 2025 (UTC) ::::{{No|Punto metiche}}, del otro lado del charco lo metí a San Gugul y lo primero que me salió es la banda. [[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 20:54 24 sep 2025 (UTC) ;Respuesta {{admintab|$0}} == Gersoncharles == ; Asunto Durante el corto tiempo de la CAB del usuario {{u2|Gersoncharles}} señalé una [https://es.wikipedia.org/w/index.php?title=Wikipedia_discusi%C3%B3n:Candidaturas_a_bibliotecario/Gersoncharles&diff=prev&oldid=169411042 situación que considero ineludible], a pesar que el usuario trató de desvincularse sin mayor sustento y prefirió cancelar la CAB. El usuario a pesar que fue sancionado en 2021 por este servidor, [https://xtools.wmcloud.org/pages/es.wikipedia.org/Gersoncharles?uselang=es ha retomado desde hace un año] en la creación de entradas de concursos de belleza de México con muy pocas notas de referencia: si observamos los artículos creados, sólo una fracción de cada artículo puede ser revisado en sus referencias, pero hay gran parte de la información que parece manejar el usuario de [[WP:FP|una manera que lo conoce en exclusiva]], por lo que no ha concedido en los requerimientos mínimos que se necesita para seguir editando en Wikipedia. De hecho, le han borrado 8 artículos en apenas un par de meses atrás. Sé que me adelanto en especulaciones, pero ante la ausencia de motivos que le llevaron a la CAB, sospecharía que [[WP:NSW|estaba buscando alguna forma de restaurar contenidos borrados, o disputar decisiones administrativas]]. El usuario se comporta virtualmente como una [[WP:CPP|CPP]] y el 100% de sus contribuciones en artículos están fijados en un tema cerradísimo como este, me hacen entreveer que el usuario requiere algún correctivo de prohibición editorial, al menos, para que empiece a entender su posición como editor, ya que alguien con 15 años en Wikipedia (y unos 8 años editando con cierta actividad), es rarísimo que siga comportándose como una CPP. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 05:12 10 sep 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver esta petición para ver si se reproduce el fallo.|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:12, 11 April 2026 (UTC)|3=}} ==Status quo Stonewalling== ; Usuarios implicados * {{u|Aroblesm}} ;Artículo [[Amarillos por Chile]] (ahora, pero es un comportamiento habitual) ; Motivo Aunque el usuario hace un buen trabajo de patrullaje contra vandalismo, tiene un comportamiento habitual de lo que se denomina [[:en:WP:Status quo stonewalling]]. El usuario revierte todo lo que no le parece y no debate. Trata a cualquier usuario, experimentado o no como si fuera un vándalo o una CPP. Le va dando al botón, llegando siempre al límite de 3RR (en que el status quo tiene prioridad) y no pasa a la búsqueda de consenso. Y lo peor de todo, es que no maneja bien las políticas y hace SQS de manera incorrecta. <br /> En este caso particular está cometiendo un error obvio, porque en la plantilla: parámetro ideología, está usando un fuente que no se puede, ya que no es independiente. Concretamente a [https://www.laizquierdadiario.cl/Chile La Izquierda Diario], que es el órgano oficial del [[Partido de Trabajadores Revolucionarios]] y como tal no es un medio independiente al juzgar la posición de otro partido político (le explique en la PD y en su propio PD, y se limita a indicar en su reversión que ''no se puede eliminar referencias simplemente porque no nos gusta''. Esto es una abierta contravención a [[WP:FF]].<br /> Aún así, no quiero que esta denuncia se centre en ese artículo, ya que es un comportamiento habitual (basta ver su [https://es.wikipedia.org/w/index.php?title=Especial%3AContribuciones&target=Aroblesm&namespace=all&tagfilter=&start=&end=&limit=1000 historial]). Como digo arriba, muchas veces actúa así con vándalos y CPP, pero le pasa la máquina a lo que venga por delante y sin debatir (basta mirar su PD), y tampoco evidenciando un buen conocimiento de las políticas. Como indico arriba es un comportamiento habitual textbook de [[:en:WP:Status quo stonewalling]]. Solicito que se le indique al usuario lo incorrecto del proceder y que se le deje una clara advertencia respecto a SQS. ; Usuario que lo solicita * [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 11:04 10 sep 2025 (UTC) ;Comentarios {{comentario}}: SFBB omite que está eliminando referencias del artículo por mero gusto personal y sin justificación alguna. Se le propuso debatir pero no espera el debate. Yo solo he mantenido el artículo a su versión estable. Además, de todos los editores del artículo es el único que ha objetado una referencia y eso es raro en mi opinión. Me dedico a combatir el vandalismo y las ediciones arbitrarias sin consenso previo. No veo problemas en aquello. SFBB solo busca poder mantener su eliminación de referencias por mero gusto personal sin importar. --[[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 16:13 10 sep 2025 (UTC) ::No hombre....es un patrón de conducta. siempre que no te gusta algo movís a "versión estable" sin discutir nada hasta aburrir a la contraparte...eso es precisamente SQS. Tenís la PD llena de quejas por eso y seguís creyendo que lo estái haciendo bien, meramente porque aburrís al resto que le da lata pelear con vos (a mí mismo muchas veces me hai aburrido). Sin esta denuncia ni siquiera te habríai dignado a opinar...le diste dos veces más al botón (y sólo opinaste después de la denuncia y no dijiste nada en serio, salvo que estaba en la referencia...pff...nadie lo ha puesto en duda)...y lo que calificái como "arbitrariedad" lo hacís sin entender profundamente el funcionamiento de wikipeida. Es una obviedad que esa fuente no se puede usar lo que está siendo usada, no es "gusto personal" son las polítcas: por n-sima vez: lee [[WP:FF]]. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 19:17 10 sep 2025 (UTC) :::'''Comentario'''. Al usuario se le explica porqué cierta fuerte [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=169577342&oldid=169428682 absolutamente no] es [[WP:FF]] desde ningún punto de vista e ipso facto y sin explicación alguna entra en guerra de ediciones instantánea [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=169577348&oldid=169577342 (1)] [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=next&oldid=169577358 (2)]. Así no se puede, y preocupa si un revisor actúa así en otras páginas no analizadas. [[Usuario:XavierItzm|XavierItzm]] ([[Usuario Discusión:XavierItzm|discusión]]) 01:11 20 sep 2025 (UTC) ::::Quiero agregar que cuando el usuario se encontró con una clara mayoría de usuarios que cuestionaba su actuar, fue a pedir [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Amarillos_por_Chile_2 la protección de la página en su versión]. Nuevamente, esto es parte del comportamiento habitual de usuario ([https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual&action=history ver el historial de ese tablón]): el usuario trata cualquier diferencia de opinión con la suya como si fuera vandalismo y utiliza ese tablón para cementar su versión (yo mismo lo he sufrido con anterioridad, aunque es difícil buscar un acto específico en ese tablón). Quiero agregar que esta denuncia <u>no es por este caso en particular</u> sino que contra el comportamiento habitual de manipular el sistema para mantener sus versiones de status quo, sin siquiera entrar a discutir y tratar cualquier tipo de edición (que no concuerde con su visión) como si fuera vandalismo. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 09:35 20 sep 2025 (UTC) :::::Otro antecedente más del que ni siquiera estaba al tanto. Con anterioridad a su solicitud de protección de la página del 20 de agosto (rechazada por {{u2|Rafstr}}), cuando intentaba mantener así el status quo ante la presión de 5 usuarios (todos usuarios veteranos muy experimentados) que llegaron independientemente a esa PD - <small>tras mención general del problema en el café</small>, el usuario ya había exigido una [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Amarillos_por_Chile protección similar el 8 de agosto], con anterioridad a esta denuncia y con posterioridad a que yo haya iniciado una discusión en la PD (que el ignoró al igual que los mensajes que le dejé en su PD personal, mientras seguía dándole al botón revertir). Es un perfecto ejemplo de cómo el usuario consistentemente [[WP:NSW|abusa de las reglas del sistema]], a sabiendas de que si revierte 3 veces, puede denunciar a la contraparte por 3R, y pedir protecciones. Y, bueno...le sigue dando al botón sin intentar si quiera debatir. :::::[https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/3RR/Actual&diff=prev&oldid=149513602#Aroblesm Ya ha sido denunciado anteriormente por exactamente lo mismo] y (como decía anteriormente) tiene la PD llena de quejas por lo mismo, pero la mayoría simplemente nos hartamos - yo ya muchas veces - y nos vamos a otra cosa sin denunciar...'''<u>pero este comportamiento tiene que parar de una vez por todas</u>'''. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 00:50 22 sep 2025 (UTC) ::::::Otro ejemplo (y sin buscar mucho): hace unos días atrás hizo lo mismo con {{u2|GKLakers02}} en el artículo [[Línea 6 del Metro de Santiago]] y terminó denunciando al usuario [https://es.wikipedia.org/w/index.php?title=Wikipedia:Vandalismo_en_curso&diff=prev&oldid=169275648 por un presunto vandalismo]. En en intertanto GKLakers02 intentaba discutir en la [https://es.wikipedia.org/wiki/Discusi%C3%B3n:L%C3%ADnea_6_del_Metro_de_Santiago#Tensi%C3%B3n_Incorrecta. PD del artículo] proveyendo fuentes correctas, pero siendo completamente ignorado pro el usuario. El asunto terminó cuando el artículo fue protegido, manteniendo el status quo (incorrecto) que tozudamente forzaba Aroblesm dándole al botón. ::::::Pero bueno...este el sólo otro ejemplo pero son cientos. Alguien tiene que parar al usuario (que es buenísimo combatiendo vandalismo, pero termina tratando a todo el mundo cual si fueran vándalos). [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 01:07 22 sep 2025 (UTC) :a sabiendas que está denuncia aún no se resuelve, intenté corregir lo de la [[Línea 6 del Metro de Santiago]], siendo nuevamente revertido [https://es.wikipedia.org/w/index.php?title=L%C3%ADnea_6_del_Metro_de_Santiago&diff=prev&oldid=169740888 1] y [https://es.wikipedia.org/w/index.php?title=Línea_6_del_Metro_de_Santiago&diff=prev&oldid=169740854 2] oportunidades (en rápidisimo; me reveritió dos veces, antes de que pudiese agregar la info sobre las otras líneas, para las cuales existe similar documentación) por el usuario que no duda un segundo en entrar en GE para defender el status quo sobre la base de una referencia absolutamente obsoleta del año 2016 (sí, hace 9 años, el metro sí operaba a 750 Vcc). Lo peor es que revierte e indica que hay que ir a la PD donde ya se le ha explicado con lujo de detalles que está equivocado.<br /> :Por favor: alguien tiene que frenar a este usuario ya que le hace mucho daño a eswiki (piensen en todas las IPs/usuarios que él determina unilateralmente que son vándalos). Yo por mi parte, voy a intentar evitarlo hasta que se resuelva esto (y voy a dejar los artículos sobre le Metro de Santiago con un voltaje incorrecto por el momento), aunque es altamente probable que me revierta en otros lados (ya vigila una enorme proporción de los artículos sobre contingencia chilena); si lo hace, no voy a insistir y voy a dejar las cosas de manera incorrecta. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 23:40 29 sep 2025 (UTC) Agregro otro antecendente: En [[Línea 6 del Metro de Santiago]] y [[Línea 3 del Metro de Santiago]], el usuario entró nuevamente (como ya ha ocurrido en muchas oportunidades con anterioridad) en conflicto con IPs. Las IPs tiene razón, pero el usuario las revierte. Como las IP insisten en agregar <u>la info corrrecta</u> (bien referencianda y discutida de la IP del artículo - aunque le usuario lo ignore y le siga dando al botón), el usuario va al TAb a pedir protección de ambas [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#L%C3%ADnea_6_del_Metro_de_Santiago] [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#L%C3%ADnea_3_del_Metro_de_Santiago] y {{u2|Virum Mundi}} terminó protegiendo ambas por 3 meses. <br /> Esto pone en evidencia una vez más, el mal que está haciendo el usuario de las reglas y los tablones. Las IPs (porque son dos creo) han hecho todo bien: han agregado info correcta, han referenciado y han ido a la PD....y el usario le sigue dando al botón para imponer una fuente obsoleta de 2016. Y recurre a cuatánto tablón haya para denunciar a supuesto vándalos..<br /> '''Por favor que alguien haga algo y pronto....o al menostenga en consideración este accionar permanente y dejen de validar los reportes del usuario.''' [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 02:59 6 oct 2025 (UTC) ;Respueta al comentario de abajo ::(no quiero que esto sea un foreo, pero hago este comentario para que esta denuncia <u>no se vaya por la ramas del caso puntual</u> sobre el que versa la respuesta) {{pg|Virum Mundi}}: Aunque la denuncia no pasa por ahí, pero la tensión en el Metro de Santiago se ha cambiado de 750 Vcc a 1500 Vcc y de vuelta múltiples veces. Los cambios se realizan con relativa celeridad y la única documentación que queda disponible es precisamente la licitación y la especificación técnica de la misma (que fue lo provisto)...pero, vamos que estaremos de acuerdo que borrar todo pq hay un fuente obsoleta que no dice que en 2016 era diferente? ::Pero nuevamente, la denuncia no pasa por ahí. Esto es un ejemplo igual al caso de AxCh (descrito arriba) y muchísimso similares (que he visto/sufrido con el usuario y de los cuales hay una retahíla de protestas es su PD), en que revierte todo, trata a todo el mundo como vándalo, dice que hay que ir a la PD, y (si se digna a opinar en la PD - generalmente no lo hace), se limita a decir que tiene una fuente (por muy mala/obsoleta que sea) e ignora los argumentos en la discusión. Y luego recurre a tablones para pedir protecciones, denunciar vandalismo y así afianzar su versión. Es un mal uso y no te culpo a ti ni ningún sysop, porque es muy difícil darse cuenta del mal uso (repetitivo) que hace y a primera vista sí puede parecer correcto (y obviamente cómo el usuario hace múltiples denuncias que sí correctas...bueno...es más mucho difícil)...y por eso les pido por favor mucha atención con el usuario que le está haciendo daño a wikipedia. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 11:47 6 oct 2025 (UTC) ;Comentario admin * No es mi intención intervenir en esta denuncia. Pero sí quiero aclarar, ya que fui mencionado por nombre, que la semiprotección de estos artículos se ha hecho por guerra de ediciones, pues no se puede llenar los historiales una y otra vez de modificaciones y reversiones. Aun así, antes de proteger el de la Línea 6, por pura curiosidad (me interesa el tema de ferrocarriles, aunque no particularmente el sistema metropolitano de Santiago de Chile), entré en una página de la compañía donde está indicado que actualmente los cables son "flexibles, unipolares, clase 5, de tensión de aislamiento de 750 V (fuerza) y 600 V (control) para 90ºC..." (y así sigue). También entré en la fuente proporcionada por las IP, un documento de finales del año pasado que detalla los pormenores de un proyecto (para mí, proyecto significa futuro). También leí la discusión, donde el denunciado de hecho sí intervino una vez, allí se proporciona como prueba una imagen realizada por el anónimo, almacenada en su Google Drive. Esta imagen de un visor digital colgado del techo no es una fuente creíble, no solo por ser fuente primaria, y no solo porque no se puede saber de dónde es (no pone el nombre del metro ni de la estación, solo un número colgado del techo, pero presumo de buena fe y asumo que es del lugar indicado), sino que en sí tampoco indica nada definitivo, puede estar por ejemplo en fase de pruebas o de desarrollo (teniendo en cuenta el poco tiempo transcurrido desde el documento mencionado) o de adaptación. Sí, obviamente puede ser también que ya está empleado, pero entonces hace falta una referencia que lo indique de verdad (no la de un proyecto). Insisto, no estoy aquí ni para debatir ni para valorar esta denuncia, solo dejar claro el motivo de la protección. las guerras de ediciones no pueden llevarse a cabo en los historiales de los artículos, invito a cualquiera a realizar las modificaciones necesarias en dichos artículos, si ha lugar, y/o participar en la discusión aportando las fuentes (al fin y al cabo estás páginas están semiprotegidas, cualquier usuario autoconfirmado puede intervenir en ellas). Por lo demás, lo dejo a otro admin. Saludos. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 05:10 6 oct 2025 (UTC) ;Continúa con más casos: :Nuevamente el usuario en acción. [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Historia_del_Metro_de_Santiago_2 Acá pidiendo protección en TAB] porque un "supuesto Vándalo" estaría agregando una imagen (absolutamente pertinente al artículo). Por favor dejen de ignorar esto y pónganle freno al usuario. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 16:59 2 nov 2025 (UTC) ; Respuesta {{admintab|1=Prueba|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:25, 9 February 2026 (UTC)|3=}} == Retomo reporte de CPP política == ; Asunto Hace menos de un mes [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Nombres_inapropiados_y_vandalismo_persistente/2025/09#CPP_pol%C3%ADtica reporté en el tablón] un caso de CPP política, que fue lamentablemente desestimado, pues el usuario {{u|Pptrc}} ha vuelto con lo mismo, controlar el artículo del partido chileno [[Evolución Política]] y ahora se crea una entrada con IA de [[Juan Manuel Santa Cruz]] sin mayor complicación, e incluso pasó por la revisión de un patrullero. Insisto en que esta cuenta no tiene otro objetivo que controlar y promover contenidos de políticos de la formación en la que tiene interés demasiado particular. :Por favor: por qué se espera para resolver estas cosas? es evidente que {{u2|Taichi}} tiene razón, y habiendo un proceso [[Elecciones parlamentarias de Chile de 2025|eleccionario en curso]], es evidente que la CPP está editando artículos con motivos propagandísticos...y que dada la coyuntura, se deben tomar medidas con celeridad. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 20:57 30 sep 2025 (UTC) <small>ps: aclaro que mi intervención acá fue para agregar el antecedente de la urgencia, dada la coyuntura</small> ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 15:17 17 sep 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver esta otra a ver si ocurre...|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:12, 11 April 2026 (UTC)|3=}} == Santos500p == ; Asunto Pido por favor que se tomen nuevas medidas para apaciguar el frenesí de ediciones del usuario {{u2|Santos500p}}, concernientes sobre todo con política de Perú, que [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ASantos500p&diff=169860726&oldid=169762965 en los últimos días] ha llegado al punto de tener varios artículos y categorías creadas por él en [[WP:CDB|consultas de borrado]], algunas teniendo consenso comunitario a favor del borrado. En una de las consultas señalé que [https://es.wikipedia.org/w/index.php?title=Wikipedia:Consultas_de_borrado/Deface_Per%C3%BA&diff=prev&oldid=169776828 el usuario lleva bastante rato desconociendo las líneas entre los diferentes proyectos], con varios intentos en el pasado de señalarle sobre ello, pero sigue en la mezcla de contenidos que podrían estar perfectamente en Wikinoticias, Wikisource e incluso Wikiquote, pero no hay nada que lo impida, aduciendo que puede entorugar cualquier cosa como artículo de Wikipedia, incluso riñendo con [[WP:REC]] o [[WP:SRA]]. De hecho, su página de discusión ha recibido en los últimos dos meses una cantidad difícil de cuantificar de [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ASantos500p&diff=169860726&oldid=168959821avisos de borrado rápido, avisos de consultas de borrado y artículos sin relevancia], varios de ellos siendo borrados. Esta situación ya suma a su <u>bloqueo parcial por dos años</u>, por lo que debería haber una restricción más certera que haga rectificar su proceder. Apelo a que el usuario pueda comprender que Wikipedia tiene bien delimitado [[WP:NO|sus noes]] y que debería él como usuario, ya no tan novato, entender esos límites. De lo contrario, dejo al encargo de un bibliotecario para que tome alguna medida extra para restringirlo. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 11:34 10 oct 2025 (UTC) ; Respuesta {{admintab|1=Vamos a probar a resolver esta también|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC)|3=}} == Usuario reincidente == ; Asunto * En marzo de este año, acudí al TAB por una serie de problemas en numerosos artículos creados por el usuario {{u|Ángel Luis Alfaro}}, [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscel%C3%A1nea/2025/06#Creaci%C3%B3n_de_art%C3%ADculos_con_varios_problemas ver aquí]. Ahora ha editado el artículo [[Alto Renacimiento]] con los mismos problemas por el cual puse esa denuncia en el TAB. Exceso de fotografías (173), referencias en las propias fotografías. Cientos de enlaces internos, algunas secciones son toda azul. Mal formato de las referencias, fuentes citadas (Fuentes citadas en Maniera moderna), usar como referencia artículos de wikipedia, véase la referencia 26. La sección notas es casi tan grande como el propio artículo. Y para terminar, no ha corregido ni uno solo de los artículos que ha creado anteriormente. ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:20 14 oct 2025 (UTC) ;Comentario * {{ping|Ontzak}} No consigo entrar en el enlace (me va todo muy lento hoy), ¿es el mismo que resolví yo la última vez? &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 09:32 15 oct 2025 (UTC) * {{ping|Virum Mundi}} si, el mismo. [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 13:55 15 oct 2025 (UTC) ** Ya veo, bueno, me pongo a ello, puede que tarde un rato. {{ping|Ángel Luis Alfaro}} por favor evita más ediciones hasta que se resuelva esta denuncia. Un saludo. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 11:26 16 oct 2025 (UTC) ::{{comentario}} {{ping|Virum Mundi}}, a pesar del aviso, el usuario sigue [https://es.wikipedia.org/wiki/Especial:Contribuciones/%C3%81ngel_Luis_Alfaro editando]. [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:45 26 nov 2025 (UTC) ; Respuesta {{admintab|$0}} == Adrian Silvera == ; Usuarios implicados * {{u|Adrian silvera}} ; Motivo Hace una década que este usuario agrega contenido mal escrito, sin referencias y muchas veces innecesario. Lo bloquearon tres veces por este motivo. Estuve un año insistiendo para que activara el autocorrector y así por lo menos subsanar el tema de la ortografía. Lo hizo hace poco, creo, pero el remedio fue peor que la enfermedad: ahora confunde adjetivos, sustantivos y verbos, y pone tildes en cualquier parte. Esto no sería tan grave de no ser porque se le advertí unas tres veces y sigue igual. Hoy le mandé un mensaje por ese tema y lo primero que hizo fue [https://es.m.wikipedia.org/w/index.php?title=The_Matrix_Reloaded&diff=prev&oldid=170118708 esto]. En otro caso lo interpretaría como una tomadura de pelo, pero no creo que lo haga a propósito. De todas maneras, alguna consecuencia tiene que tener, para aprender. ; Usuario que lo solicita * [[Usuario:Minguu|Minguu]] ([[Usuario Discusión:Minguu|discusión]]) 20:16 22 oct 2025 (UTC) ; Respuesta {{admintab|1=aaaa|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:54, 9 February 2026 (UTC)|3=}} == Propuesta de desbloqueo para Lenis Felipe == ; Asunto * Hola. Por este medio quisiera proponer al colegio de bibliotecarios el desbloqueo local de {{u|Lenis Felipe}}, usuario bloqueado hace ya más de tres años por creación de páginas vandálicas. Lenis se encuentra con bloqueo global, por lo que para poder ser desbloqueado globalmente necesita ser desbloqueado de alguna de las wikis donde tiene bloqueos actualmente, entre ellas, Wikipedia en español. :La propuesta la planteo porque, habiendo pasado un tiempo prudencial, puedo atestiguar que Lenis pareciera haber enmendado su rumbo y ha colaborado en reportar vía IRC, de manera privada, vandalismos, evasores de bloqueo y hasta sugerir cambios a filtros antiabusos para detener algunos abusadores de largo plazo. Particularmente lo ha hecho desde enero de 2024. Me parece que tal y como fue el caso de Sargento de Hierro (perdón que le nombre, pero me gusta destacar casos de usuarios que se corrigieron :)), podría ser positivo darle una segunda oportunidad para convertirse en un elemento positivo para la comunidad. Ante ello, propongo su desbloqueo local y quedo atento a cualquier propuesta de términos para ello, en cuenta restricción de crear páginas nuevas, o similares. Saludos, ; Usuario que lo solicita * '''[[Usuario:Jake Park|''Jake Park'']]''' [[Archivo:Coat of arms of Costa Rica.svg|20 px]] [[Usuario Discusión:Jake Park|<span style="color: red;">'''Problem?'''</span>]] 01:00 29 oct 2025 (UTC) ;Comentarios de biblios * Desde mi punto de vista, los usuarios que no hayan tenido actitudes vandálicas sistemáticas posteriores al bloqueo no deberían permanecer bloqueados más de tres años. '''Apoyo''' el posible desbloqueo. De todos modos, consulto: ¿sabes qué edad tiene el usuario? Porque no es lo mismo alguien que hizo esas tonterías a los 16 años que a los 60; en el primer caso, puede haber madurado rápidamente, mientras que si fuera ''"mayorcito"'' como quien escribe, los aprendizajes de comportamientos son más difíciles. --[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 02:03 29 oct 2025 (UTC) * EMHO todos son susceptibles de cambiar, no quiere decir que todos lo hagan, pero uno de los 5 pilares nos pide presumir buena fe. {{Ok|Votum pro}}. [[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:00 30 oct 2025 (UTC) * ; Respuesta {{admintab|1=Qué tal esta? la resolvemos??|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC)|3=}} == Unmuybuenusuario == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> {{u|Unmuybuenusuario}} se registró el 28 de octubre de 2025, o sea hace 12 días. Desde el primer momento se dedicó a hacer mantenimiento y mandar artículos a borrar. El segundo día ya [https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Permisos/Actual&diff=prev&oldid=170247444 solicitó el flag de reversor con el argumento de : '' pese a mi muy breve tiempo en Wikipedia, desearía poseer el permiso de reversor para revertir de manera más fácil que usando el botón deshacer''], o sea que asegura que hace poco tiempo que está en Wikipedia pero ya conoce los tipos de flags que existen y dónde solicitarlos. @[[Usuario:Edslov|Edslov]], le negó el permiso, obviamente, ya que en ese momento tenía menos de 48 horas de creada la cuenta, pero no solamente opina que la decisión no fue justa sino que además conoce perfectamente el Café y fue directamente a quejarse porque no se le dio el permiso, para preguntar [https://es.wikipedia.org/w/index.php?title=Wikipedia:Caf%C3%A9/Archivo/Ayuda/Actual&diff=prev&oldid=170287227 ''¿Cuánto tiempo desde mi registro tiene que transcurrir para poder recibir el flag de reversor? ¿O cuántas ediciones?'']. Le pedí al usuario [https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:Unmuybuenusuario que dejara de hacer mantenimiento] y él me dejó un mensaje protestando por que [https://es.wikipedia.org/w/index.php?title=Usuaria_discusi%C3%B3n:Jaluj&diff=prev&oldid=170408787 no encuentra ninguna política que prohíba a un editor nuevo deshacer vandalismos o colocar plantillas de borrado rápido a artículos que cumplan alguno de los criterios de borrado rápido], lo cual es cierto, como tampoco hay ninguna política que prohiba a un usuario nuevo tener el flag de reversor, pero suponemos que para hacer este tipo de tareas se necesita tener experiencia y haber demostrado tener conocimientos para hacerlas bien. Por eso le pedí que se detenga y deje de hacer mantenimiento, porque si es un novato no podemos confiar en que lo haga. Entonces me [https://es.wikipedia.org/w/index.php?title=Usuaria_discusi%C3%B3n:Jaluj&diff=prev&oldid=170408787 acusó de estar violando la políticas al morder a los novatos y no presumir buena fe]. Morder a los novatos es cuando se trata de una persona sin experiencia que todavía no conoce las normas y políticas de Wikipedia. Una persona novata no sabe ni que existe un Café, ni que existe un tablón para solicitar flags, ni que existe el flag de reversor ni que existe el "deshacer". Pero a la vez me acusa de no presumir buena fe al sospechar que no es novato. Entonces, ¿en qué quedamos? Porque si es un novato, no debería estar haciendo mantenimiento y si no lo es, entonces yo no estaría presumiendo mala fe al sospechar que no lo es. Esta cuenta me está difamando al dejar mensajes como [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:A.piquerasm&diff=prev&oldid=170408867 este], porque además de acusarme de morder a un novato y de presumir mala fe me acusa por haber solicitado una VU y de haberlo "intimidado". Ahora resulta que por haberle pedido que deje de hacer mantenimiento y por haber pedido una VU yo soy la que viola las políticas y lo estoy "intimidando". Yo no lo acusé acusé ''gravemente de abuso a largo plazo'', yo solicité una VU porque sospecho que puede ser una LTA. Si no lo es, no tiene nada de qué preocuparse y si es un novato mucho menos. Solicito que se le haga un llamado de atención para que deje de difamarme a mis espaldas, ya que ni siquiera me enlazó para que yo no me enterara. ; Usuario que lo solicita * [[Usuario:Jaluj|Jalu]] ([[Usuario Discusión:Jaluj|discusión]]) 18:17 10 nov 2025 (UTC) * Te pido amablemente usuaria [[Usuario:Jaluj|Jalu]] una solución a este problema, porque yo no te estoy difamando, si conozco el café, el tablón, si se hacer reversiones, es porque fui anónimo y como usuario anónimo ya me dedicaba a hacer estas cosas, un usuario me sugiero visitar la página de cambios recientes y eso es lo que estoy haciendo, visitar los cambios recientes ¿Tengo prohibido deshacer vandalismos encontrados? Por cierto, no me indicaste cuales son las ediciones supuestamente arbitrarias, las ediciones que he hecho han sido deshacer vandalismos, yo no soy ni títere, ni evasor, ni mucho menos abuso a largo plazo, soy usuario completamente nuevo y esta es mi primera cuenta, y te recuerdo un fragmento de la página de usuarios títeres: '''Puede ser fácil identificar a un usuario títere, si muestra un conocimiento de las políticas, convenciones de Wikipedia y técnicas avanzadas de edición que no es de esperar en un novato (aunque debe presumirse buena fe: es posible que sea un usuario que haya colaborado en otra edición de Wikipedia, en alguna otra wiki o <u>que haya participado mucho tiempo como anónimo</u>)''' (subrayado mío). Si conozco como deshacer vandalismos, es porque antes editaba como anónimo, y esta cuenta fue creada para ayudar a Wikipedia, de ninguna manera la cree para LTA o ediciones arbitrarias. ¿Cómo propones que se solucione este problema y que tipo de ediciones puedo hacer y que tipo de ediciones no puedo hacer? --[[Usuario:Unmuybuenusuario|Unmuybuenusuario]] ([[Usuario Discusión:Unmuybuenusuario|discusión]]) 23:27 10 nov 2025 (UTC) :{{comentario}}: [https://es.wikipedia.org/w/index.php?title=Wikipedia:Solicitudes_de_verificaci%C3%B3n_de_usuarios&oldid=170625007#Evasi%C3%B3n_de_bloqueo:_Cris2020 Resultado de la SVU]. --'''[[user:Stïnger|<span style="text-shadow:#FFD700 1px 1px 2px; class=texhtml"><span style="font-family:'Calibri';color:black">Stïnger</span></span>]]'''&nbsp; <sup>[[Archivo:Bureau kage.svg|15px|link=User talk:Stïnger]]</sup> 00:58 24 nov 2025 (UTC). ; Respuesta {{admintab|Al no ser un caso reciente (ya pasaron algunos días) apercibo a {{u2|Unmuybuenusuario}} de [[WP:PBF]] primeramente y posterior a [[WP:PPBF]]. Ambos juicios caen en violaciones a [[WP:E]] y [[WP:CIV]] (supongo al ya haber editado como IP sabrá por que, por lo que en caso de reincidencia podría haber sanción. En cuanto al flag, queda al criterio del bibliotecario que lo otorga, no hay tiempo ni cuota determinada, pero es bastante obvio que más sabe el diablo por viejo que por diablo, yo tampoco lo habría otorgado.|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:09 26 nov 2025 (UTC)}} == Expulsado de la Wikipedia en inglés viene acá a hacer lo mismo... == ;Usuarios * {{u|SocialQuote}} * {{u|2800:484:7380:0:0:0:0:0/44}} ; Asunto Tanto [https://en.wikipedia.org/wiki/Special:Contributions/SocialQuote la cuenta registrada] como [https://en.wikipedia.org/wiki/Special:Contributions/2800:484:7380:0:0:0:0:0/44 el rango IP] se encuentran sancionados desde septiembre en la Wikipedia en inglés, por ediciones conflictivas, reversiones sin sentido e incluso insultos y amenazas. Ya acá [[Usuario discusión:2800:484:7385:F0:95EE:CA0B:4429:B24C|ha causado problemas como anónimo en junio]] y la cuenta [https://es.wikipedia.org/w/index.php?title=Scarface_(pel%C3%ADcula_de_1983)&diff=prev&oldid=168285955 incluso ripostó contra un bibliotecario], y [https://es.wikipedia.org/w/index.php?title=Harry_Potter_y_el_c%C3%A1liz_de_fuego&diff=prev&oldid=169807011 está constantemente] [https://es.wikipedia.org/w/index.php?title=Dinero_negro&diff=prev&oldid=170282821 revirtiendo al bot de mantenimiento]. Nótese que los temas que edita tanto la cuenta como la IP son las mismas (series de TV y películas), y las sanciones aplicadas en en.wiki fueron hechas el mismo día. Debido a esta coincidencia y la situación que está persistiendo ahora en la Wikipedia en español, pido que se tomen medidas. :{{comentario}} Añado [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:Farisori&diff=prev&oldid=170531619 otro mensaje bastante incordiante contra otro bibliotecario] haciéndolo suponer entre líneas que no sabe redactar artículos. '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 00:10 18 nov 2025 (UTC) ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 04:18 17 nov 2025 (UTC) ; Respuesta {{Hecho|1=Bloqueado}} por Rafstr. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:40 19 nov 2025 (UTC) == Borrar y ocultar datos sensibles en página de usuario == ; Asunto Pido con carácter de urgencia que algún bibliotecario [https://es.wikipedia.org/w/index.php?title=Usuario:Dalma_Huerta_Mercado_Calder%C3%B3n&diff=prev&oldid=170526877 oculte datos sensibles y muy personales] de [[Usuario:Dalma Huerta Mercado Calderón|esta página de usuario]], ya que es aún una niña (ni siquiera es adolescente). No creo que sea consciente de que lo que hace es peligroso a su edad. Añado que ya [https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:Dalma_Huerta_Mercado_Calder%C3%B3n#Informaci%C3%B3n_personal no es la primera vez que la pillan colgando datos personales], el año pasado hizo lo mismo. Si toca hacer alguna medida administrativa que evite que la menor siga exponiendo sus datos sin cuidado, adelante. ; Comentarios No soy bibliotecario, pero {{ping|Taichi}} creo que lo mejor es mandar un correo a [[Wikipedia:Supresores|oversight]], o como mínimo realizar la solicitud en algún lugar menos visible (como IRC). --[[Usuario:Xacaranda|Xacaranda]] [[Usuario discusión:Xacaranda|(mensajes)]] 18:56 18 nov 2025 (UTC) ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 04:22 17 nov 2025 (UTC) ; Respuesta {{admintab|1={{Sí}}, dada la excesiva información personal y la imposibilidad de ocultar la última edición, opté por el borrado de la PU. También dejé un mensaje a la usuaria. En caso de reincidir, aplicaría una medida, como un bloqueo parcial, para impedir que vuelva a crear su página de usuario. Un saludo,|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:55 19 nov 2025 (UTC)}} == LTA == ; Usuarios implicados * {{u|Mauro08L}} ; Motivo Hmm, otra vez, otro títere más de {{u|Claudio1098}}. ; Usuario que lo solicita * —<span style="font-family:Trebuchet MS;font-size:95%">[[Usuario:Mαrti|<span style="color:#636;">Mαrti</span>]]&nbsp;<span style="color;background:#CBE2F7;border-radius:9px;">&nbsp;[[Usuario discusión:Mαrti|'''ϟ''']]&nbsp;</span></span> 20:23 18 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:42 19 nov 2025 (UTC)}} == Recreación reiterada == ; Asunto * El usuario {{u|Archivoteleditor}} insiste en recrear el mismo programa de televisión con distintas variaciones del título, véase [[Tentaculos]], [[Tentáculos]], [[Ni que fuéramos tentáculos]] y [[Ni Que Fuéramos Tentáculos]], contabilizo más de una docena de recreaciones, ya se le avisó de un posible conflicto de interés. :En cuanto al artículo, se trata de un programa que duró apenas 3 meses en antena, aunque El País y EuropaPress son referencias fiables, mencionan el programa superficialmente. ; Usuario que lo solicita *   '''C:\>''' [[Usuario:A.piquerasm|A.piquerasm]] '''[''' [[Usuario Discusión:A.piquerasm|Discusión]] ''']''' 16:43 19 nov 2025 (UTC) ; Respuesta {{admintab|{{hecho}}. Inhabilitado de crear páginas. Un saludo. |2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 19:49 19 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170580247]] ; Motivo Lenguaje soez ; Usuario que lo solicita * [[Usuario:Casisgaal|<span style="font-size:black 3px 1px 3px; font-variant:Corbel; color:blue; text-shadow:cyan 2px 1px 2px">Casisgaal</span>]] [[Usuario discusión:Casisgaal|(Discusión)]] 16:16 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada y cuenta bloqueada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:36 21 nov 2025 (UTC)}} == Anónimo escurridizo == ; Asunto Un anónimo que cambia de cuenta temporal y de IP lleva dos meses haciendo cambios sin sentido en partidos políticos de Colombia [https://es.wikipedia.org/w/index.php?title=Independientes_(Colombia)&action=history como este], [https://es.wikipedia.org/w/index.php?title=Partido_Comunista_de_Colombia_-_Marxista_Leninista&diff=prev&oldid=170580251 cambiando un «es» por «fue»] (haciendo entender que ya no existen), pero sin aportar pruebas que los partidos ya no están activos. Como no está aportando nada [[WP:VER|que lo sustente]], se le está revirtiendo pero insiste en reponerlo, llegando a una conducta que no se puede considerar como constructiva. Además, nos pone en prueba con el sistema de cuentas temporales ya que no sólo está cambiando de cuenta temporal, sino de IP, por lo que dejo en consideración que hacer. Estás serían las direcciones en cuestión: [https://es.wikipedia.org/wiki/Especial:IPContributions/191.108.3.30], [https://es.wikipedia.org/wiki/Especial:IPContributions/191.108.59.86], [https://es.wikipedia.org/wiki/Especial:IPContributions/152.201.226.108] y [https://es.wikipedia.org/wiki/Especial:IPContributions/152.202.79.18]. Previo a la instauración de cuentas temporales también editó con las siguientes IPs: * {{u|152.201.203.233}} * {{u|186.113.76.107}} * {{u|191.111.9.153}} Es posible que incluso se considere en semiproteger si en caso tal el anónimo siga por cambiar de IP y continúe con esta situación. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 16:49 20 nov 2025 (UTC) ; Respuesta {{admintab|{{prot|60}}|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:19 26 nov 2025 (UTC)}} == Acoso == ; Usuarios implicados * {{u|~2025-35257-44}} * {{u|~2025-35202-10}} ; Motivo Acoso a un usuario ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 21:57 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 16:49 21 nov 2025 (UTC)}} == Acoso == ; Usuarios implicados * {{u|Narsenopoulos}} ; Motivo {{diff|170585395|Acoso a un usuario}} ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 22:03 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Usuario bloqueado por Virum Mundi. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:28 21 nov 2025 (UTC)}} == Ocultar ediciones == ; Asunto * [[Especial:Diff/169433403]] * [[Especial:Diff/170587004]] ; Motivo El artículo suele ser vandalizado mediante la inclusión de nombres completos de particulares en esta lista, entiendo que motivados por algún tipo de rencilla personal. Creo que es conveniente ocultarlos ya que que, de lo contrario, esos nombres quedan indexados y accesibles por internet, asociados a una lista de violadores en serie, lo cual puede tener implicaciones en su vida personal. ; Usuario que lo solicita * [[Usuario:Nacaru|Nacaru]] [[Archivo:Noto Emoji KitKat 2601.svg|19px]] ([[Usuario_discusión:Nacaru|discusión]]) 00:23 21 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Ediciones ocultadas. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:39 21 nov 2025 (UTC)}} == Solicitud para corregir redirecciones dobles en [[Ciudad del Cuzco]] y [[Cusco, Perú]] == Hola. Por favor, ayúdenme a solucionar el problema de las redirecciones dobles en las páginas de redireccionamiento [[Ciudad del Cuzco]] y [[Cusco, Perú]]. Gracias. [[Especial:Contribuciones/&#126;2025-35342-08|&#126;2025-35342-08]] ([[Usuario discusión:&#126;2025-35342-08|discusión]]) 04:33 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 04:45 21 nov 2025 (UTC)}} == Me sentí acosada por Jaluj, por favor, paciencia con los novatos == ; Asunto Soy una nueva editora (bueno, era una nueva editora) estudiante de 5º de Veterinaria y entré en la wikipedia con mucha ilusión. Detecté un artículo escrito llamado “Comida para gatos” lleno de enlaces spam a marcas comerciales, así como un claro sesgo pro pienso alabando sus virtudes. Después de leerme todos los tutoriales edité el artículo intentando ser objetiva, eliminado enlaces spam y texto publicitario. Un editor deshizo todo mi trabajo dando la razón de que yo había eliminado referencias. https://es.wikipedia.org/w/index.php?title=Comida_para_gatos&diff=170390013&oldid=170376180 Vi la posibilidad de aprender de mis errores y le pregunté por que consideraba fiables (ya que repuso todos los enlaces spam) Eran enlaces a artículos como “los 8 mejores marcas de piensos” (que es publicidad de 8 marcas de piensos, con enlaces a afiliados de Amazon), o webs que no funcionaban etc etc Me contestó que había eliminado todo mi trabajo porque yo había añadido 1 referencia “por tratarse de blog y por tanto no considerarse fiable”. Era un enlace a un artículo de una clínica veterinaria como había 3 o 4 igual en el artículo. https://clinicaveterinarium.es/el-gato-es-omnivoro-o-carnivoro/ No entendí que para eliminar ese enlace se eliminara todo el trabajo realizado en el artículo, y sobre todo que se repusieran los enlaces spam, y por qué esos enlaces spam eran fuentes fiables. Para resumir, volví a poner el artículo tal y como yo lo había escrito (eliminado más de 10 enlaces spam) quitando el enlace a dicha clínica, sospechando que era ese el problema, y el editor me agradeció la edición. Seguí sin aprender. Pero no me quejo de este editor. Y aquí viene mi ruego. Posteriormente a todo esto, y tras muchos días después, apareció el editor Jaluj, https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:LaVeterinaria , donde me acusó de faltar a la etiqueta y falta de civismo al preguntar al editor. Pedí disculpas por mis preguntas si habían molestado y volví a decir que mi intención era aprender y por eso preguntaba. Tras mi respuesta, el editor Jaluj fue a una edición mía en otro artículo, y la eliminó, diciendo que no era una fuente fiable https://es.wikipedia.org/w/index.php?title=Perro_de_caza&curid=707821&diff=170565115&oldid=170545527 La ACCM es un organismo avalado por el Gobierno https://servicio.mapa.gob.es/arca/download.html?id=20338485&contentType=application/pdf que reconoce oficialmente a los perros de raza, así que supongo que son una fuente entendida del tema para hablar de razas. Además de eliminar esa información, me vuelve a acusar de falta de civismo y de etiqueta, por lo que me declaré Retirada y así se lo dije como respuesta, ya que no entendía nada, me di cuenta que no podía aprender y me sentía atacada. He recibido un email de wikipedia donde me avisa que el editor Jaluj obviando todas mis disculpas y petición de información sobre la organización oficial sólo me exige el nombre de mi mentor. Solo pido un poco de paciencia y empatía con los nuevos editores, necesitamos empatía y ayuda para editar, no acusaciones de mala fe y falta de civismo. Yo lo he intentado, cuiden a los que vengan nuevos detrás de mi. Gracias por leer. ; Usuario que lo solicita --[[Usuario:LaVeterinaria|LaVeterinaria]] ([[Usuario Discusión:LaVeterinaria|discusión]]) 14:01 21 nov 2025 (UTC) ;Comentario adicional Permito añadir que {{u2|Leoncastro}} y mi persona [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ALaVeterinaria&diff=170608554&oldid=170595929 hemos tratado separadamente de mediar en el asunto], pero la usuaria está demasiado a la defensiva e incluso [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ATaichi&diff=170606470&oldid=170599847 me dejó esta contestación], incluso cuando buscaba seriamente ayudarle. Lo que denoto en sus contestaciones además, es que ella como estudiante universitaria dice tener algún "mentor" en su universidad (pero no está adscrito acá), por lo que estoy deduciendo que hay alguna orientación mal ejecutada y pareciera que la estudiante está obligada a editar como sea, a expensas de que cualquier patrullero o bibliotecario sea maltratado de esta manera si le revisan sus contribuciones. Ojalá haya alguna forma de que se haga entender y ver ante las instancias de qué o quién movió institucionalmente a la alumna a que pasara esto. '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 14:35 22 nov 2025 (UTC) ; Respuesta {{admintab|1={{No}}. {{U|LaVeterinaria}}, no me parece que, en ningún momento, Jaluj o algún otro de los varios usuarios que han buscado orientarte te hayan «maltratado» o dado motivos para sentirte intimidada o acosada. Más bien, algunas de tus interacciones muestran que, ciertamente, pareces estar a la defensiva y que podrían malinterpretarse. Supongo que el primer mensaje de Jaluj estuvo motivado por una de tus respuestas a Casisgaal —«¿Por qué escribir texto apoyado en enlaces verificables como la universidad etc.? ¿La wikipedia española se basa en la inglesa y no podemos editar sino solo traducir?»—, que se alejó del [[Wikipedia:Civismo|civismo]] esperado en las interacciones entre usuarios en Wikipedia. Asumiste que el mensaje de Jaluj estuvo motivado por tu «insistencia por preguntar lo que no entendía», cuando claramente te explicó, de forma amable y con la paciencia que en varias ocasiones has pedido, que fue por tu tono. Coincido con Jaluj en que parece que no lees los mensajes completos. <br> Si preguntó Jaluj sobre tu «mentor», que tú misma mencionaste en la conversación con Casisgaal, es porque, ciertamente después de estas interacciones que has tenido, surge la duda de quién es, si es usuario de Wikipedia y si tiene conocimiento de las políticas que la rigen. Parece que no. Por ello, sería mejor que aprovecharas herramientas como el [[Wikipedia:Programa de tutoría|programa de tutoría]] —cabe destacar que {{u|Ezarate}} ya amablemente se ofreció a ayudarte con tus ediciones—. Todo lo anterior, ya te lo había explicado Leoncastro. Además, él te dejó un extenso mensaje donde explicó y trató de mediar. Tu respuesta y actuar subsecuente es, cuanto menos, desconcertante. <br> En suma, descarto la denuncia. {{U|LaVeterinaria}} no me parece que el tono que uses y la forma de interactuar que tienes con otros usuarios, que han intentando orientarte, sea adecuada o benéfica para la enciclopedia. Así como insistes en pedir paciencia, ofrécela a los demás y no acuses de intimidación o denuncies tan fácilmente. Aprovecha los mensajes en los que se te ha explicado un poco sobre la enciclopedia, aprovecha el programa de tutoría o los ofrecimientos de usuarios como Ezarate. No continúes con esta forma de actuar porque fomenta conflictos y puede conducir a medidas que nadie quiere que se tengan que tomar. Un saludo,|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 22:00 22 nov 2025 (UTC)}} == LTA == ; Usuarios implicados * {{u|Henrysmithwa5}} ; Motivo LTA aerolíneas ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:15 21 nov 2025 (UTC) ; Respuesta {{admintab|{{ok}} por Jake Park. |--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 00:38 22 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170607263]] ; Motivo Etiqueta ; Usuario que lo solicita * [[Usuario:CharlieRaMx|CharlieRaMx]] ([[Usuario Discusión:CharlieRaMx|discusión]]) 12:02 22 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 12:30 22 nov 2025 (UTC)}} == Ocultar ediciones == ; Usuarios implicados * {{u|Zanahorita Extraida}} ; Motivo Pido que se oculten todas las ediciones de este títere bloqueado, quien como siempre ha lanzado comentarios denigrantes, ofensivos y hasta insultos. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 18:08 23 nov 2025 (UTC) ; Respuesta {{Hecho}} por Saloca. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 20:00 23 nov 2025 (UTC) == LTA == ; Usuarios implicados * {{u|Patthenry5}} ; Motivo LTA aerolíneas ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 18:24 23 nov 2025 (UTC) ; Respuesta {{Hecho}} por MiguelAlanCS. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 19:59 23 nov 2025 (UTC) == Ocultar ediciones == ; Asunto * [[Especial:Diff/170589208]] * [[Especial:Diff/170589204]] ; Motivo Vandalismo ; Usuario que lo solicita * [[Usuario:CarlosEduardoPA|<span style="font-size:80%;background:#000;color:#fff;border-radius:25px;padding:3px 8px;">CarlosEduardoPA</span>]] [[Usuario discusión:CarlosEduardoPA|✉️]] 22:29 23 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Ediciones ocultadas. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:26 24 nov 2025 (UTC)}} == MediaWiki:Jsonconfig-use-category == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> ; Asunto * {{a|MediaWiki:Jsonconfig-use-category}} * Please delete the page as it is no longer necessary following [[:phab:T378352|T378352]] ([[:Category:Wikipedia:Páginas que usan la extensión JsonConfig|the category]] has already been deleted). See also [[:m:Steward requests/Miscellaneous#Category:Pages using the JsonConfig extension]]. ; Usuario que lo solicita * [[Usuario:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Usuario Discusión:NguoiDungKhongDinhDanh|discusión]]) 23:09 23 nov 2025 (UTC) ; Respuesta {{admintab|{{ok}}|--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 09:01 24 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170617475]] ; Motivo Vandalismo ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 23:46 23 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada por Virum Mundi. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:22 24 nov 2025 (UTC)}} == Plantillas mantenidas sin justificación en Conservatorio de Música de la Universidad Austral de Chile == ; Asunto Solicito la intervención de un bibliotecario respecto al artículo [[Conservatorio de Música de la Universidad Austral de Chile]]. El usuario Ontzak colocó dos plantillas (promocional e irrelevante) el día 18 de noviembre. Desde entonces el artículo ha sido completamente reescrito, reforzado con referencias académicas y eliminado el contenido que podía ser de estilo promocional e irrelevante. Conforme a lo indicado en las propias plantillas, abrí hilo en la página de discusión solicitando consenso para su retirada. El usuario no ha respondido pese a haber sido notificado y mencionado en dos ocasiones. ; Motivo El comportamiento observado, colocar plantillas, no responder a la discusión y bloquear de facto la retirada, encaja en lo descrito en [[WP:DUEÑO]]. A día de hoy las razones originales ya no se sostienen, pero las plantillas permanecen en el artículo sin justificación actual y el editor que las colocó evita participar en la discusión. ; Usuario que lo solicita [[Usuario:Hoppedup|Hoppedup]] ([[Usuario Discusión:Hoppedup|discusión]]) 12:26 24 nov 2025 (UTC) Solicito que un bibliotecario revise el caso: • si procede, retire las plantillas, • y si fuese necesario, recuerde al usuario implicado la obligación de participar cuando se cuestiona una plantilla mantenida. Gracias. ; Respuesta {{admintab|1={{Hecho}}. Por lo demás, todos sabemos cómo hace las cosas {{u2|Ontzak}}; sería mejor que las hiciera con un poco más de intercambio con los demás, pero no se le puede pedir a los editores lo que no pueden o no quieren aportar en Wikipedia (editar sigue siendo una actividad voluntaria, todavía). En mi personal opinión, es mejor tenerlo haciendo lo que hace que no tenerlo, de modo que lo más que podemos hacer es volverlo a invitar a ser un poco más comunicativo. En cuanto a lo de WP:DUEÑO, me parece que te has pasado de largo unos cuantos kilómetros en tu interpretación; un poco más de calma, por favor. Gracias por tu mensaje.|2=--[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 13:10 24 nov 2025 (UTC)}} == Spam incesante == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> ; Asunto * Rango con decenas de ediciones spam, al menos unas 34 desde marzo de este año. * {{u|89.214.0.0/17}} * [[Especial:IPContributions/89.214.0.0/17]] ; Usuario que lo solicita * [[Usuario:Xacaranda|Xacaranda]] [[Usuario discusión:Xacaranda|(mensajes)]] 18:58 25 nov 2025 (UTC) ; Respuesta {{admintab|{{Sí|He aplicado un bloqueo parcial a los artículos objeto de spam}}.|2=[[Usuario:Montgomery|Montgomery]] ([[Usuario Discusión:Montgomery|discusión]]) 19:04 25 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170663031]] ; Motivo Transgresión de las reglas de etiqueta. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 19:17 25 nov 2025 (UTC) ; Respuesta {{admintab|$oc|2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 20:09 25 nov 2025 (UTC)}} == Solicitar traslado == ; Asunto * Solicito el traslado de [[CITEDEF]] a [[Instituto de Investigaciones Científicas y Técnicas para la Defensa]], siguiendo la recomendación de la [[Wikipedia:Convenciones de títulos|convención de títulos]] de evitar el uso de acrónimos y siglas siempre que se pueda. ; Usuario que lo solicita * [[Usuario:Comecaballos|Comecaballos]] ([[Usuario Discusión:Comecaballos|discusión]]) 00:17 26 nov 2025 (UTC) ; Respuesta {{admintab|{{hecho}}|--[[Usuario:Ezarate|Esteban]] ([[Usuario Discusión:Ezarate|discusión]]) 11:58 26 nov 2025 (UTC)}} == Cuenta de "propósito particular" == ; Asunto * No tengo del todo claro si [https://es.wikipedia.org/w/index.php?title=Especial:Registro/block&page=Usuario%3AInfohisto esto va acá] o a esta altura debería reportarse como vandalismo. Ver sus ediciones de hoy, y sus resúmenes de edición, en {{a|Caporales}} y {{a|Tundiqui}}. Esta cuenta, que ya fue identificada como lo que es, definitivamente no tiene otro propósito aquí que el que ya es evidente. Y lo ha hecho ya en varios artículos. Mirando su página de usuario veo que tres administradores ya han interactuado con él. Así que aprovecho para citarlos: {{u|Tector}}, {{u|Saloca}} y {{u|Marcelo}} ; Usuario que lo solicita * [[Usuario:Rastamby|Rastamby]] ([[Usuario Discusión:Rastamby|discusión]]) 02:34 26 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}, ya fue suficiente: usuario expulsado y artículos protegidos a largo plazo. Gracias por el aviso.|2=--[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 02:43 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170670252]] ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 04:58 26 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 05:04 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170670276]] ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 05:00 26 nov 2025 (UTC) ; Respuesta {{admintab|1=Prueba|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:26, 9 February 2026 (UTC)|3=}} == Solicitud para corregir redirecciones dobles en [[Departamento de Cusco]] y [[Provincia de Cusco]] == Hola. Por favor, ayúdenme a solucionar el problema de las redirecciones dobles en las páginas de redireccionamiento [[Departamento de Cusco]] y [[Provincia de Cusco]]. Gracias. [[Especial:Contribuciones/&#126;2025-36297-96|&#126;2025-36297-96]] ([[Usuario discusión:&#126;2025-36297-96|discusión]]) 05:35 26 nov 2025 (UTC) == CDI == ; Usuarios implicados * {{u|JALGUERRERO}} ; Motivo Claro conflicto de interés. Sus ediciones se centran en el artículo que lleva su nombre ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 10:53 26 nov 2025 (UTC) ; Respuesta {{admintab|{{Ok}}, hecho por {{u2|Virum Mundi}}; no puedo creer nos duró 15 años.|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:27 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170680869]] ; Usuario que lo solicita * [[Usuario discusión:Divinations|Divinations]] 21:35 26 nov 2025 (UTC) ; Respuesta {{admintab|1=Ejemplo de resolución de solicitud que menciona a {{ping|Nacaru}}.|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:39, 9 February 2026 (UTC)|3=}} == varias ediciones == ; Asunto * [[Especial:Diff/619272]] ; Motivo Prueba de texto ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:45, 20 February 2026 (UTC) ; Respuesta {{admintab|1=Qué tal está petición de aquí??? {{Ok}}|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:13, 11 April 2026 (UTC)|3=}} == Ocultar edición [[Especial:Diff/619272|619272]] == ; Asunto * [[Especial:Diff/619272]] ; Motivo JHVBIKUHGVIK ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:47, 20 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar edición 619272 == ; Asunto * [[Especial:Diff/619272]] ; Motivo VXCV XZVZCVZC ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:48, 20 February 2026 (UTC) ; Respuesta {{admintab|1=OKIII|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:49, 20 February 2026 (UTC)|3=}} == Ocultar edición 684158 == ; Asunto * [[Especial:Diff/684158]] ; Motivo kjanxkajsncxa ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:34, 26 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Prueba de toro túitulo == ; Usuarios implicados * {{u|Sergio Enrollment 2}} ; Motivo Prueba de otra raźon ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:55, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Otra prueba de título más == ; Usuarios implicados * {{u|Sergio Enrollment 2}} ; Motivo Desarrollando razón ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:55, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == k,jnkjjn == ; Usuarios implicados * {{u|Dicto23456}} ; Motivo lknmlkj lkjlk jkl ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:59, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Otra denuncia la que sea == ; Usuarios implicados * {{u|Cenarium}} ; Motivo A ver qué tal ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 01:08, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74252,671081,671082 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/671081]] * [[Especial:Diff/671082]] ; Motivo Motivo cualquiera ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:43, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74252, 74251, 89098 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/74252]] * [[Especial:Diff/74251]] * [[Especial:Diff/89098]] ; Motivo Ejemplo ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:45, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar edición 74252 == ; Asunto * [[Especial:Diff/74252]] ; Motivo qeasdsa ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:46, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74251 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/74251]] ; Motivo asdAD SADAS ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:46, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74253, 74254, 74255, 74256 y 74252 == ; Asunto * [[Especial:Diff/74253]] * [[Especial:Diff/74254]] * [[Especial:Diff/74255]] * [[Especial:Diff/74256]] * [[Especial:Diff/74252]] ; Motivo A ver si aparecen en el mismo orden. ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:52, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) 5pda2tgb0vdstwmatd1762d9rz23w48 737590 737588 2026-04-11T13:54:07Z Nacaru 54746 Resolviendo solicitud «[[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscelánea/Actual#Ocultar_edición_74252|Ocultar edición 74252]]» mediante [[WP:TL|Twinkle Lite]] 737590 wikitext text/x-wiki <!-- AVISO: No semiproteger la miscelánea del tablón pues aquí redirigen muchas plantillas y avisos en páginas varias para que los novatos puedan aportar o realizar consultas que sólo bibliotecarios pueden resolver --> <noinclude>{{Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Plantillas/Cabecera}} {{Archivado automático |Destino=Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Archivo/Miscelánea/AAAA/MM |Días a mantener=7 }} == Situación extraña con tinte político == ; Asunto Desde 2019 aproximadamente se ha visto un grupo de IPv6 dentro del rango {{u|2804:14C:0:0:0:0:0:0/32}} editando y tratando de manipular contenidos políticos controvertidos (específicamente en [[Fascismo en América]] y otros más), de hecho por lo que se ve [[Discusión:Fascismo en América|aquí]] el anónimo se expresa de una manera particular sin saber siquiera español y sólo deja links sin mayor explicación. Adicionalmente, el anónimo está constantemente dejando mensajes a {{u2|Raimundo57br}} haciendo una serie de solicitudes de modificaciones a artículos de tinte político (sobre todo si son relativos a la derecha o izquierda política). Pero cuando vemos más a profundidad, vemos otras IPs como {{u|187.20.115.154}} dejando lo mismo al usuario, o este [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:Raimundo57br&diff=prev&oldid=150518775 mensaje] de Raimundo57br dirigido a otra cuenta haciendo ping, pero en su propia discusión en un intento de coordinación de su desbloqueo. Hago acotar que Raimundo57br [https://pt.wikipedia.org/wiki/Especial:Contribui%C3%A7%C3%B5es/Raimundo57br está expulsado de la Wikipedia portuguesa desde el 2022], luego de múltiples problemas allá y numerosos bloqueos temporales. También, que la Wikipedia portuguesa maneja estrictamente el uso de direcciones anónimas y [https://pt.wikipedia.org/wiki/Usu%C3%A1rio(a):2804:14C:0:0:0:0:0:0/32 todo el rango 2804:0:0:0:0:0:0:0/19] se encuenta bloqueado desde 2020. Existe una posibilidad de que haya una inusual coordinación entre anónimos y Raimundo57br para manipular artículos de política en Wikipedia en español y la Wikipedia portuguesa (a partir de una tercera cuenta), ante la imposibilidad de ambos entes (ya que se les hace más cómodo intervenir acá). Incluyo al reporte que [https://es.wikipedia.org/w/index.php?title=Discusi%C3%B3n:Fascismo_en_Am%C3%A9rica&diff=prev&oldid=168802559 con estos] [https://es.wikipedia.org/w/index.php?title=Discusi%C3%B3n:Fascismo_en_Am%C3%A9rica&diff=prev&oldid=168803824 diffs en específico], no sólo Raimundo57br está involucrado, también {{u|Auréola}} (quien también pasó por un proceso de expulsión, aunque no está autoconfirmado acá) y {{u|Luizpuodzius}} (quien fue sancionado también allá, pero no expulsado; tampoco autoconfirmado acá). Aquí [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ALuizpuodzius&diff=159046847&oldid=152503114 una interacción entre usuarios hablando de temas referentes a pt.wiki]. De esta situación, se confirma que se esté usando nuestra Wikipedia para cuestiones ajenas de un proyecto que los sancionó y expulsó. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 17:04 4 ago 2025 (UTC) ;Comentarios #'''Sobre los mensajes que recibo del IP''': no tengo contacto fuera de la wiki con este IP que me envía solicitudes para editar determinados artículos y, por regla general, no atiendo estas solicitudes; #'''En cuanto a mis problemas en la wiki-pt''', aclaro que no se deben a ediciones que hice en el dominio principal de esa versión de la wiki (donde se borraron pocos artículos y se revirtieron pocas ediciones), sino a una larga rivalidad con determinados administradores. No creo que sea oportuno traer ese debate aquí, pero si insisten, daré las aclaraciones que consideren oportunas. #'''Sobre mi contacto con Luizpuodzius''': entiendo que fue un acto aislado sin mayores repercusiones, hace mucho tiempo que no interactúo con esa persona. #'''Sobre mi interacción con Anhabete''': entiendo que fue un acto aislado sin mayores repercusiones, después de eso no volví a interactuar con esa persona. :--[[Usuario:Raimundo57br|Raimundo57br]] ([[Usuario Discusión:Raimundo57br|discusión]]) 12:35 5 ago 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver petición|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC)|3=}} == Solicito traslado de páginas == * Por favor trasladar las siguientes páginas # {{a|Dover}} ... a ... {{a|Dover (desambiguación)}} # {{a|Dover (Kent)}} ... a... {{a|Dover}} ;Motivo * Por favor indicar el motivo: La ciudad de Inglaterra es el uso principal del término. La página de desambiguación tenía cientos de enlaces ambiguos. ;Usuario que lo solicita Firmado: [[Usuario:Rondador|Ronda]][[Usuario Discusión:Rondador|dor]] 09:39 2 sep 2025 (UTC) ;Coentarios * Personalmente estoy de acuerdo, vamos a solicitar las opiniones de otros que quieran opinar. Un saludo. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 10:45 2 sep 2025 (UTC) * Con permiso, {{u2|Rondador}}, he detallado los dos traslados que estás pidiendo; estoy de acuerdo con el traslado, y también con la solicitud de opiniones (quizá en algún lado haya algo muy relevante llamado localmente Dover). --[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 12:09 2 sep 2025 (UTC) * Si pongo Dover en el buscador de Google, [[google:dover|el primer resultado]] (y siguientes) es para el grupo musical español (algo que sospechaba, ya que en mi mente sucede lo mismo). [[Usuario:MiguelAlanCS|<b style="color: #990099;">MiguelAlanCS</b>]] >>> [[Archivo:PICOL icon Mail.svg|15px|link=Usuario discusión:MiguelAlanCS]] 12:13 2 sep 2025 (UTC) :: En mi caso sale la ciudad, pero bueno, también es un argumento a tener en cuenta. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 20:23 2 sep 2025 (UTC) :::{{no|}} Lo que no se puede hacer es trasladar y despues solicitar, como hizo unilateralmente el editor. Lo revertí a la espera de otra respuesta. Aunque mejor que en el tablón de bibliotecarios donde solo responden bibliotecarios, es preguntar en el café. A mi, si me preguntan por Dover me vienen muchas cosas a parte de la propia ciudad por lo que hay que buscar un consenso clarone indicarlo en la resolución y posibles traslados para que no hay discusiones en el futuro. --[[Usuario:Geom|<b style="background:purple;color:yellow;font-size:80%;border-radius:9px 0 0 9px;padding:2px 5px;">Geom</b>]][[Usuario discusión:Geom|<span style="font-size:80%;color: gray;">'''(discusión)'''</span>]] 09:35 3 sep 2025 (UTC) ::::{{No|Punto metiche}}, del otro lado del charco lo metí a San Gugul y lo primero que me salió es la banda. [[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 20:54 24 sep 2025 (UTC) ;Respuesta {{admintab|$0}} == Gersoncharles == ; Asunto Durante el corto tiempo de la CAB del usuario {{u2|Gersoncharles}} señalé una [https://es.wikipedia.org/w/index.php?title=Wikipedia_discusi%C3%B3n:Candidaturas_a_bibliotecario/Gersoncharles&diff=prev&oldid=169411042 situación que considero ineludible], a pesar que el usuario trató de desvincularse sin mayor sustento y prefirió cancelar la CAB. El usuario a pesar que fue sancionado en 2021 por este servidor, [https://xtools.wmcloud.org/pages/es.wikipedia.org/Gersoncharles?uselang=es ha retomado desde hace un año] en la creación de entradas de concursos de belleza de México con muy pocas notas de referencia: si observamos los artículos creados, sólo una fracción de cada artículo puede ser revisado en sus referencias, pero hay gran parte de la información que parece manejar el usuario de [[WP:FP|una manera que lo conoce en exclusiva]], por lo que no ha concedido en los requerimientos mínimos que se necesita para seguir editando en Wikipedia. De hecho, le han borrado 8 artículos en apenas un par de meses atrás. Sé que me adelanto en especulaciones, pero ante la ausencia de motivos que le llevaron a la CAB, sospecharía que [[WP:NSW|estaba buscando alguna forma de restaurar contenidos borrados, o disputar decisiones administrativas]]. El usuario se comporta virtualmente como una [[WP:CPP|CPP]] y el 100% de sus contribuciones en artículos están fijados en un tema cerradísimo como este, me hacen entreveer que el usuario requiere algún correctivo de prohibición editorial, al menos, para que empiece a entender su posición como editor, ya que alguien con 15 años en Wikipedia (y unos 8 años editando con cierta actividad), es rarísimo que siga comportándose como una CPP. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 05:12 10 sep 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver esta petición para ver si se reproduce el fallo.|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:12, 11 April 2026 (UTC)|3=}} ==Status quo Stonewalling== ; Usuarios implicados * {{u|Aroblesm}} ;Artículo [[Amarillos por Chile]] (ahora, pero es un comportamiento habitual) ; Motivo Aunque el usuario hace un buen trabajo de patrullaje contra vandalismo, tiene un comportamiento habitual de lo que se denomina [[:en:WP:Status quo stonewalling]]. El usuario revierte todo lo que no le parece y no debate. Trata a cualquier usuario, experimentado o no como si fuera un vándalo o una CPP. Le va dando al botón, llegando siempre al límite de 3RR (en que el status quo tiene prioridad) y no pasa a la búsqueda de consenso. Y lo peor de todo, es que no maneja bien las políticas y hace SQS de manera incorrecta. <br /> En este caso particular está cometiendo un error obvio, porque en la plantilla: parámetro ideología, está usando un fuente que no se puede, ya que no es independiente. Concretamente a [https://www.laizquierdadiario.cl/Chile La Izquierda Diario], que es el órgano oficial del [[Partido de Trabajadores Revolucionarios]] y como tal no es un medio independiente al juzgar la posición de otro partido político (le explique en la PD y en su propio PD, y se limita a indicar en su reversión que ''no se puede eliminar referencias simplemente porque no nos gusta''. Esto es una abierta contravención a [[WP:FF]].<br /> Aún así, no quiero que esta denuncia se centre en ese artículo, ya que es un comportamiento habitual (basta ver su [https://es.wikipedia.org/w/index.php?title=Especial%3AContribuciones&target=Aroblesm&namespace=all&tagfilter=&start=&end=&limit=1000 historial]). Como digo arriba, muchas veces actúa así con vándalos y CPP, pero le pasa la máquina a lo que venga por delante y sin debatir (basta mirar su PD), y tampoco evidenciando un buen conocimiento de las políticas. Como indico arriba es un comportamiento habitual textbook de [[:en:WP:Status quo stonewalling]]. Solicito que se le indique al usuario lo incorrecto del proceder y que se le deje una clara advertencia respecto a SQS. ; Usuario que lo solicita * [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 11:04 10 sep 2025 (UTC) ;Comentarios {{comentario}}: SFBB omite que está eliminando referencias del artículo por mero gusto personal y sin justificación alguna. Se le propuso debatir pero no espera el debate. Yo solo he mantenido el artículo a su versión estable. Además, de todos los editores del artículo es el único que ha objetado una referencia y eso es raro en mi opinión. Me dedico a combatir el vandalismo y las ediciones arbitrarias sin consenso previo. No veo problemas en aquello. SFBB solo busca poder mantener su eliminación de referencias por mero gusto personal sin importar. --[[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 16:13 10 sep 2025 (UTC) ::No hombre....es un patrón de conducta. siempre que no te gusta algo movís a "versión estable" sin discutir nada hasta aburrir a la contraparte...eso es precisamente SQS. Tenís la PD llena de quejas por eso y seguís creyendo que lo estái haciendo bien, meramente porque aburrís al resto que le da lata pelear con vos (a mí mismo muchas veces me hai aburrido). Sin esta denuncia ni siquiera te habríai dignado a opinar...le diste dos veces más al botón (y sólo opinaste después de la denuncia y no dijiste nada en serio, salvo que estaba en la referencia...pff...nadie lo ha puesto en duda)...y lo que calificái como "arbitrariedad" lo hacís sin entender profundamente el funcionamiento de wikipeida. Es una obviedad que esa fuente no se puede usar lo que está siendo usada, no es "gusto personal" son las polítcas: por n-sima vez: lee [[WP:FF]]. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 19:17 10 sep 2025 (UTC) :::'''Comentario'''. Al usuario se le explica porqué cierta fuerte [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=169577342&oldid=169428682 absolutamente no] es [[WP:FF]] desde ningún punto de vista e ipso facto y sin explicación alguna entra en guerra de ediciones instantánea [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=169577348&oldid=169577342 (1)] [https://es.wikipedia.org/w/index.php?title=Amarillos_por_Chile&diff=next&oldid=169577358 (2)]. Así no se puede, y preocupa si un revisor actúa así en otras páginas no analizadas. [[Usuario:XavierItzm|XavierItzm]] ([[Usuario Discusión:XavierItzm|discusión]]) 01:11 20 sep 2025 (UTC) ::::Quiero agregar que cuando el usuario se encontró con una clara mayoría de usuarios que cuestionaba su actuar, fue a pedir [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Amarillos_por_Chile_2 la protección de la página en su versión]. Nuevamente, esto es parte del comportamiento habitual de usuario ([https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual&action=history ver el historial de ese tablón]): el usuario trata cualquier diferencia de opinión con la suya como si fuera vandalismo y utiliza ese tablón para cementar su versión (yo mismo lo he sufrido con anterioridad, aunque es difícil buscar un acto específico en ese tablón). Quiero agregar que esta denuncia <u>no es por este caso en particular</u> sino que contra el comportamiento habitual de manipular el sistema para mantener sus versiones de status quo, sin siquiera entrar a discutir y tratar cualquier tipo de edición (que no concuerde con su visión) como si fuera vandalismo. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 09:35 20 sep 2025 (UTC) :::::Otro antecedente más del que ni siquiera estaba al tanto. Con anterioridad a su solicitud de protección de la página del 20 de agosto (rechazada por {{u2|Rafstr}}), cuando intentaba mantener así el status quo ante la presión de 5 usuarios (todos usuarios veteranos muy experimentados) que llegaron independientemente a esa PD - <small>tras mención general del problema en el café</small>, el usuario ya había exigido una [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Amarillos_por_Chile protección similar el 8 de agosto], con anterioridad a esta denuncia y con posterioridad a que yo haya iniciado una discusión en la PD (que el ignoró al igual que los mensajes que le dejé en su PD personal, mientras seguía dándole al botón revertir). Es un perfecto ejemplo de cómo el usuario consistentemente [[WP:NSW|abusa de las reglas del sistema]], a sabiendas de que si revierte 3 veces, puede denunciar a la contraparte por 3R, y pedir protecciones. Y, bueno...le sigue dando al botón sin intentar si quiera debatir. :::::[https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/3RR/Actual&diff=prev&oldid=149513602#Aroblesm Ya ha sido denunciado anteriormente por exactamente lo mismo] y (como decía anteriormente) tiene la PD llena de quejas por lo mismo, pero la mayoría simplemente nos hartamos - yo ya muchas veces - y nos vamos a otra cosa sin denunciar...'''<u>pero este comportamiento tiene que parar de una vez por todas</u>'''. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 00:50 22 sep 2025 (UTC) ::::::Otro ejemplo (y sin buscar mucho): hace unos días atrás hizo lo mismo con {{u2|GKLakers02}} en el artículo [[Línea 6 del Metro de Santiago]] y terminó denunciando al usuario [https://es.wikipedia.org/w/index.php?title=Wikipedia:Vandalismo_en_curso&diff=prev&oldid=169275648 por un presunto vandalismo]. En en intertanto GKLakers02 intentaba discutir en la [https://es.wikipedia.org/wiki/Discusi%C3%B3n:L%C3%ADnea_6_del_Metro_de_Santiago#Tensi%C3%B3n_Incorrecta. PD del artículo] proveyendo fuentes correctas, pero siendo completamente ignorado pro el usuario. El asunto terminó cuando el artículo fue protegido, manteniendo el status quo (incorrecto) que tozudamente forzaba Aroblesm dándole al botón. ::::::Pero bueno...este el sólo otro ejemplo pero son cientos. Alguien tiene que parar al usuario (que es buenísimo combatiendo vandalismo, pero termina tratando a todo el mundo cual si fueran vándalos). [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 01:07 22 sep 2025 (UTC) :a sabiendas que está denuncia aún no se resuelve, intenté corregir lo de la [[Línea 6 del Metro de Santiago]], siendo nuevamente revertido [https://es.wikipedia.org/w/index.php?title=L%C3%ADnea_6_del_Metro_de_Santiago&diff=prev&oldid=169740888 1] y [https://es.wikipedia.org/w/index.php?title=Línea_6_del_Metro_de_Santiago&diff=prev&oldid=169740854 2] oportunidades (en rápidisimo; me reveritió dos veces, antes de que pudiese agregar la info sobre las otras líneas, para las cuales existe similar documentación) por el usuario que no duda un segundo en entrar en GE para defender el status quo sobre la base de una referencia absolutamente obsoleta del año 2016 (sí, hace 9 años, el metro sí operaba a 750 Vcc). Lo peor es que revierte e indica que hay que ir a la PD donde ya se le ha explicado con lujo de detalles que está equivocado.<br /> :Por favor: alguien tiene que frenar a este usuario ya que le hace mucho daño a eswiki (piensen en todas las IPs/usuarios que él determina unilateralmente que son vándalos). Yo por mi parte, voy a intentar evitarlo hasta que se resuelva esto (y voy a dejar los artículos sobre le Metro de Santiago con un voltaje incorrecto por el momento), aunque es altamente probable que me revierta en otros lados (ya vigila una enorme proporción de los artículos sobre contingencia chilena); si lo hace, no voy a insistir y voy a dejar las cosas de manera incorrecta. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 23:40 29 sep 2025 (UTC) Agregro otro antecendente: En [[Línea 6 del Metro de Santiago]] y [[Línea 3 del Metro de Santiago]], el usuario entró nuevamente (como ya ha ocurrido en muchas oportunidades con anterioridad) en conflicto con IPs. Las IPs tiene razón, pero el usuario las revierte. Como las IP insisten en agregar <u>la info corrrecta</u> (bien referencianda y discutida de la IP del artículo - aunque le usuario lo ignore y le siga dando al botón), el usuario va al TAb a pedir protección de ambas [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#L%C3%ADnea_6_del_Metro_de_Santiago] [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#L%C3%ADnea_3_del_Metro_de_Santiago] y {{u2|Virum Mundi}} terminó protegiendo ambas por 3 meses. <br /> Esto pone en evidencia una vez más, el mal que está haciendo el usuario de las reglas y los tablones. Las IPs (porque son dos creo) han hecho todo bien: han agregado info correcta, han referenciado y han ido a la PD....y el usario le sigue dando al botón para imponer una fuente obsoleta de 2016. Y recurre a cuatánto tablón haya para denunciar a supuesto vándalos..<br /> '''Por favor que alguien haga algo y pronto....o al menostenga en consideración este accionar permanente y dejen de validar los reportes del usuario.''' [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 02:59 6 oct 2025 (UTC) ;Respueta al comentario de abajo ::(no quiero que esto sea un foreo, pero hago este comentario para que esta denuncia <u>no se vaya por la ramas del caso puntual</u> sobre el que versa la respuesta) {{pg|Virum Mundi}}: Aunque la denuncia no pasa por ahí, pero la tensión en el Metro de Santiago se ha cambiado de 750 Vcc a 1500 Vcc y de vuelta múltiples veces. Los cambios se realizan con relativa celeridad y la única documentación que queda disponible es precisamente la licitación y la especificación técnica de la misma (que fue lo provisto)...pero, vamos que estaremos de acuerdo que borrar todo pq hay un fuente obsoleta que no dice que en 2016 era diferente? ::Pero nuevamente, la denuncia no pasa por ahí. Esto es un ejemplo igual al caso de AxCh (descrito arriba) y muchísimso similares (que he visto/sufrido con el usuario y de los cuales hay una retahíla de protestas es su PD), en que revierte todo, trata a todo el mundo como vándalo, dice que hay que ir a la PD, y (si se digna a opinar en la PD - generalmente no lo hace), se limita a decir que tiene una fuente (por muy mala/obsoleta que sea) e ignora los argumentos en la discusión. Y luego recurre a tablones para pedir protecciones, denunciar vandalismo y así afianzar su versión. Es un mal uso y no te culpo a ti ni ningún sysop, porque es muy difícil darse cuenta del mal uso (repetitivo) que hace y a primera vista sí puede parecer correcto (y obviamente cómo el usuario hace múltiples denuncias que sí correctas...bueno...es más mucho difícil)...y por eso les pido por favor mucha atención con el usuario que le está haciendo daño a wikipedia. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 11:47 6 oct 2025 (UTC) ;Comentario admin * No es mi intención intervenir en esta denuncia. Pero sí quiero aclarar, ya que fui mencionado por nombre, que la semiprotección de estos artículos se ha hecho por guerra de ediciones, pues no se puede llenar los historiales una y otra vez de modificaciones y reversiones. Aun así, antes de proteger el de la Línea 6, por pura curiosidad (me interesa el tema de ferrocarriles, aunque no particularmente el sistema metropolitano de Santiago de Chile), entré en una página de la compañía donde está indicado que actualmente los cables son "flexibles, unipolares, clase 5, de tensión de aislamiento de 750 V (fuerza) y 600 V (control) para 90ºC..." (y así sigue). También entré en la fuente proporcionada por las IP, un documento de finales del año pasado que detalla los pormenores de un proyecto (para mí, proyecto significa futuro). También leí la discusión, donde el denunciado de hecho sí intervino una vez, allí se proporciona como prueba una imagen realizada por el anónimo, almacenada en su Google Drive. Esta imagen de un visor digital colgado del techo no es una fuente creíble, no solo por ser fuente primaria, y no solo porque no se puede saber de dónde es (no pone el nombre del metro ni de la estación, solo un número colgado del techo, pero presumo de buena fe y asumo que es del lugar indicado), sino que en sí tampoco indica nada definitivo, puede estar por ejemplo en fase de pruebas o de desarrollo (teniendo en cuenta el poco tiempo transcurrido desde el documento mencionado) o de adaptación. Sí, obviamente puede ser también que ya está empleado, pero entonces hace falta una referencia que lo indique de verdad (no la de un proyecto). Insisto, no estoy aquí ni para debatir ni para valorar esta denuncia, solo dejar claro el motivo de la protección. las guerras de ediciones no pueden llevarse a cabo en los historiales de los artículos, invito a cualquiera a realizar las modificaciones necesarias en dichos artículos, si ha lugar, y/o participar en la discusión aportando las fuentes (al fin y al cabo estás páginas están semiprotegidas, cualquier usuario autoconfirmado puede intervenir en ellas). Por lo demás, lo dejo a otro admin. Saludos. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 05:10 6 oct 2025 (UTC) ;Continúa con más casos: :Nuevamente el usuario en acción. [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protecci%C3%B3n_de_art%C3%ADculos/Actual#Historia_del_Metro_de_Santiago_2 Acá pidiendo protección en TAB] porque un "supuesto Vándalo" estaría agregando una imagen (absolutamente pertinente al artículo). Por favor dejen de ignorar esto y pónganle freno al usuario. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 16:59 2 nov 2025 (UTC) ; Respuesta {{admintab|1=Prueba|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:25, 9 February 2026 (UTC)|3=}} == Retomo reporte de CPP política == ; Asunto Hace menos de un mes [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Nombres_inapropiados_y_vandalismo_persistente/2025/09#CPP_pol%C3%ADtica reporté en el tablón] un caso de CPP política, que fue lamentablemente desestimado, pues el usuario {{u|Pptrc}} ha vuelto con lo mismo, controlar el artículo del partido chileno [[Evolución Política]] y ahora se crea una entrada con IA de [[Juan Manuel Santa Cruz]] sin mayor complicación, e incluso pasó por la revisión de un patrullero. Insisto en que esta cuenta no tiene otro objetivo que controlar y promover contenidos de políticos de la formación en la que tiene interés demasiado particular. :Por favor: por qué se espera para resolver estas cosas? es evidente que {{u2|Taichi}} tiene razón, y habiendo un proceso [[Elecciones parlamentarias de Chile de 2025|eleccionario en curso]], es evidente que la CPP está editando artículos con motivos propagandísticos...y que dada la coyuntura, se deben tomar medidas con celeridad. [[Usuario:SFBB|SFBB]] ([[Usuario Discusión:SFBB|discusión]]) 20:57 30 sep 2025 (UTC) <small>ps: aclaro que mi intervención acá fue para agregar el antecedente de la urgencia, dada la coyuntura</small> ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 15:17 17 sep 2025 (UTC) ; Respuesta {{admintab|1=Probando a resolver esta otra a ver si ocurre...|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:12, 11 April 2026 (UTC)|3=}} == Santos500p == ; Asunto Pido por favor que se tomen nuevas medidas para apaciguar el frenesí de ediciones del usuario {{u2|Santos500p}}, concernientes sobre todo con política de Perú, que [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ASantos500p&diff=169860726&oldid=169762965 en los últimos días] ha llegado al punto de tener varios artículos y categorías creadas por él en [[WP:CDB|consultas de borrado]], algunas teniendo consenso comunitario a favor del borrado. En una de las consultas señalé que [https://es.wikipedia.org/w/index.php?title=Wikipedia:Consultas_de_borrado/Deface_Per%C3%BA&diff=prev&oldid=169776828 el usuario lleva bastante rato desconociendo las líneas entre los diferentes proyectos], con varios intentos en el pasado de señalarle sobre ello, pero sigue en la mezcla de contenidos que podrían estar perfectamente en Wikinoticias, Wikisource e incluso Wikiquote, pero no hay nada que lo impida, aduciendo que puede entorugar cualquier cosa como artículo de Wikipedia, incluso riñendo con [[WP:REC]] o [[WP:SRA]]. De hecho, su página de discusión ha recibido en los últimos dos meses una cantidad difícil de cuantificar de [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ASantos500p&diff=169860726&oldid=168959821avisos de borrado rápido, avisos de consultas de borrado y artículos sin relevancia], varios de ellos siendo borrados. Esta situación ya suma a su <u>bloqueo parcial por dos años</u>, por lo que debería haber una restricción más certera que haga rectificar su proceder. Apelo a que el usuario pueda comprender que Wikipedia tiene bien delimitado [[WP:NO|sus noes]] y que debería él como usuario, ya no tan novato, entender esos límites. De lo contrario, dejo al encargo de un bibliotecario para que tome alguna medida extra para restringirlo. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 11:34 10 oct 2025 (UTC) ; Respuesta {{admintab|1=Vamos a probar a resolver esta también|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC)|3=}} == Usuario reincidente == ; Asunto * En marzo de este año, acudí al TAB por una serie de problemas en numerosos artículos creados por el usuario {{u|Ángel Luis Alfaro}}, [https://es.wikipedia.org/wiki/Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscel%C3%A1nea/2025/06#Creaci%C3%B3n_de_art%C3%ADculos_con_varios_problemas ver aquí]. Ahora ha editado el artículo [[Alto Renacimiento]] con los mismos problemas por el cual puse esa denuncia en el TAB. Exceso de fotografías (173), referencias en las propias fotografías. Cientos de enlaces internos, algunas secciones son toda azul. Mal formato de las referencias, fuentes citadas (Fuentes citadas en Maniera moderna), usar como referencia artículos de wikipedia, véase la referencia 26. La sección notas es casi tan grande como el propio artículo. Y para terminar, no ha corregido ni uno solo de los artículos que ha creado anteriormente. ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:20 14 oct 2025 (UTC) ;Comentario * {{ping|Ontzak}} No consigo entrar en el enlace (me va todo muy lento hoy), ¿es el mismo que resolví yo la última vez? &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 09:32 15 oct 2025 (UTC) * {{ping|Virum Mundi}} si, el mismo. [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 13:55 15 oct 2025 (UTC) ** Ya veo, bueno, me pongo a ello, puede que tarde un rato. {{ping|Ángel Luis Alfaro}} por favor evita más ediciones hasta que se resuelva esta denuncia. Un saludo. &nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 11:26 16 oct 2025 (UTC) ::{{comentario}} {{ping|Virum Mundi}}, a pesar del aviso, el usuario sigue [https://es.wikipedia.org/wiki/Especial:Contribuciones/%C3%81ngel_Luis_Alfaro editando]. [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:45 26 nov 2025 (UTC) ; Respuesta {{admintab|$0}} == Adrian Silvera == ; Usuarios implicados * {{u|Adrian silvera}} ; Motivo Hace una década que este usuario agrega contenido mal escrito, sin referencias y muchas veces innecesario. Lo bloquearon tres veces por este motivo. Estuve un año insistiendo para que activara el autocorrector y así por lo menos subsanar el tema de la ortografía. Lo hizo hace poco, creo, pero el remedio fue peor que la enfermedad: ahora confunde adjetivos, sustantivos y verbos, y pone tildes en cualquier parte. Esto no sería tan grave de no ser porque se le advertí unas tres veces y sigue igual. Hoy le mandé un mensaje por ese tema y lo primero que hizo fue [https://es.m.wikipedia.org/w/index.php?title=The_Matrix_Reloaded&diff=prev&oldid=170118708 esto]. En otro caso lo interpretaría como una tomadura de pelo, pero no creo que lo haga a propósito. De todas maneras, alguna consecuencia tiene que tener, para aprender. ; Usuario que lo solicita * [[Usuario:Minguu|Minguu]] ([[Usuario Discusión:Minguu|discusión]]) 20:16 22 oct 2025 (UTC) ; Respuesta {{admintab|1=aaaa|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:54, 9 February 2026 (UTC)|3=}} == Propuesta de desbloqueo para Lenis Felipe == ; Asunto * Hola. Por este medio quisiera proponer al colegio de bibliotecarios el desbloqueo local de {{u|Lenis Felipe}}, usuario bloqueado hace ya más de tres años por creación de páginas vandálicas. Lenis se encuentra con bloqueo global, por lo que para poder ser desbloqueado globalmente necesita ser desbloqueado de alguna de las wikis donde tiene bloqueos actualmente, entre ellas, Wikipedia en español. :La propuesta la planteo porque, habiendo pasado un tiempo prudencial, puedo atestiguar que Lenis pareciera haber enmendado su rumbo y ha colaborado en reportar vía IRC, de manera privada, vandalismos, evasores de bloqueo y hasta sugerir cambios a filtros antiabusos para detener algunos abusadores de largo plazo. Particularmente lo ha hecho desde enero de 2024. Me parece que tal y como fue el caso de Sargento de Hierro (perdón que le nombre, pero me gusta destacar casos de usuarios que se corrigieron :)), podría ser positivo darle una segunda oportunidad para convertirse en un elemento positivo para la comunidad. Ante ello, propongo su desbloqueo local y quedo atento a cualquier propuesta de términos para ello, en cuenta restricción de crear páginas nuevas, o similares. Saludos, ; Usuario que lo solicita * '''[[Usuario:Jake Park|''Jake Park'']]''' [[Archivo:Coat of arms of Costa Rica.svg|20 px]] [[Usuario Discusión:Jake Park|<span style="color: red;">'''Problem?'''</span>]] 01:00 29 oct 2025 (UTC) ;Comentarios de biblios * Desde mi punto de vista, los usuarios que no hayan tenido actitudes vandálicas sistemáticas posteriores al bloqueo no deberían permanecer bloqueados más de tres años. '''Apoyo''' el posible desbloqueo. De todos modos, consulto: ¿sabes qué edad tiene el usuario? Porque no es lo mismo alguien que hizo esas tonterías a los 16 años que a los 60; en el primer caso, puede haber madurado rápidamente, mientras que si fuera ''"mayorcito"'' como quien escribe, los aprendizajes de comportamientos son más difíciles. --[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 02:03 29 oct 2025 (UTC) * EMHO todos son susceptibles de cambiar, no quiere decir que todos lo hagan, pero uno de los 5 pilares nos pide presumir buena fe. {{Ok|Votum pro}}. [[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:00 30 oct 2025 (UTC) * ; Respuesta {{admintab|1=Qué tal esta? la resolvemos??|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC)|3=}} == Unmuybuenusuario == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> {{u|Unmuybuenusuario}} se registró el 28 de octubre de 2025, o sea hace 12 días. Desde el primer momento se dedicó a hacer mantenimiento y mandar artículos a borrar. El segundo día ya [https://es.wikipedia.org/w/index.php?title=Wikipedia:Tabl%C3%B3n_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Permisos/Actual&diff=prev&oldid=170247444 solicitó el flag de reversor con el argumento de : '' pese a mi muy breve tiempo en Wikipedia, desearía poseer el permiso de reversor para revertir de manera más fácil que usando el botón deshacer''], o sea que asegura que hace poco tiempo que está en Wikipedia pero ya conoce los tipos de flags que existen y dónde solicitarlos. @[[Usuario:Edslov|Edslov]], le negó el permiso, obviamente, ya que en ese momento tenía menos de 48 horas de creada la cuenta, pero no solamente opina que la decisión no fue justa sino que además conoce perfectamente el Café y fue directamente a quejarse porque no se le dio el permiso, para preguntar [https://es.wikipedia.org/w/index.php?title=Wikipedia:Caf%C3%A9/Archivo/Ayuda/Actual&diff=prev&oldid=170287227 ''¿Cuánto tiempo desde mi registro tiene que transcurrir para poder recibir el flag de reversor? ¿O cuántas ediciones?'']. Le pedí al usuario [https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:Unmuybuenusuario que dejara de hacer mantenimiento] y él me dejó un mensaje protestando por que [https://es.wikipedia.org/w/index.php?title=Usuaria_discusi%C3%B3n:Jaluj&diff=prev&oldid=170408787 no encuentra ninguna política que prohíba a un editor nuevo deshacer vandalismos o colocar plantillas de borrado rápido a artículos que cumplan alguno de los criterios de borrado rápido], lo cual es cierto, como tampoco hay ninguna política que prohiba a un usuario nuevo tener el flag de reversor, pero suponemos que para hacer este tipo de tareas se necesita tener experiencia y haber demostrado tener conocimientos para hacerlas bien. Por eso le pedí que se detenga y deje de hacer mantenimiento, porque si es un novato no podemos confiar en que lo haga. Entonces me [https://es.wikipedia.org/w/index.php?title=Usuaria_discusi%C3%B3n:Jaluj&diff=prev&oldid=170408787 acusó de estar violando la políticas al morder a los novatos y no presumir buena fe]. Morder a los novatos es cuando se trata de una persona sin experiencia que todavía no conoce las normas y políticas de Wikipedia. Una persona novata no sabe ni que existe un Café, ni que existe un tablón para solicitar flags, ni que existe el flag de reversor ni que existe el "deshacer". Pero a la vez me acusa de no presumir buena fe al sospechar que no es novato. Entonces, ¿en qué quedamos? Porque si es un novato, no debería estar haciendo mantenimiento y si no lo es, entonces yo no estaría presumiendo mala fe al sospechar que no lo es. Esta cuenta me está difamando al dejar mensajes como [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:A.piquerasm&diff=prev&oldid=170408867 este], porque además de acusarme de morder a un novato y de presumir mala fe me acusa por haber solicitado una VU y de haberlo "intimidado". Ahora resulta que por haberle pedido que deje de hacer mantenimiento y por haber pedido una VU yo soy la que viola las políticas y lo estoy "intimidando". Yo no lo acusé acusé ''gravemente de abuso a largo plazo'', yo solicité una VU porque sospecho que puede ser una LTA. Si no lo es, no tiene nada de qué preocuparse y si es un novato mucho menos. Solicito que se le haga un llamado de atención para que deje de difamarme a mis espaldas, ya que ni siquiera me enlazó para que yo no me enterara. ; Usuario que lo solicita * [[Usuario:Jaluj|Jalu]] ([[Usuario Discusión:Jaluj|discusión]]) 18:17 10 nov 2025 (UTC) * Te pido amablemente usuaria [[Usuario:Jaluj|Jalu]] una solución a este problema, porque yo no te estoy difamando, si conozco el café, el tablón, si se hacer reversiones, es porque fui anónimo y como usuario anónimo ya me dedicaba a hacer estas cosas, un usuario me sugiero visitar la página de cambios recientes y eso es lo que estoy haciendo, visitar los cambios recientes ¿Tengo prohibido deshacer vandalismos encontrados? Por cierto, no me indicaste cuales son las ediciones supuestamente arbitrarias, las ediciones que he hecho han sido deshacer vandalismos, yo no soy ni títere, ni evasor, ni mucho menos abuso a largo plazo, soy usuario completamente nuevo y esta es mi primera cuenta, y te recuerdo un fragmento de la página de usuarios títeres: '''Puede ser fácil identificar a un usuario títere, si muestra un conocimiento de las políticas, convenciones de Wikipedia y técnicas avanzadas de edición que no es de esperar en un novato (aunque debe presumirse buena fe: es posible que sea un usuario que haya colaborado en otra edición de Wikipedia, en alguna otra wiki o <u>que haya participado mucho tiempo como anónimo</u>)''' (subrayado mío). Si conozco como deshacer vandalismos, es porque antes editaba como anónimo, y esta cuenta fue creada para ayudar a Wikipedia, de ninguna manera la cree para LTA o ediciones arbitrarias. ¿Cómo propones que se solucione este problema y que tipo de ediciones puedo hacer y que tipo de ediciones no puedo hacer? --[[Usuario:Unmuybuenusuario|Unmuybuenusuario]] ([[Usuario Discusión:Unmuybuenusuario|discusión]]) 23:27 10 nov 2025 (UTC) :{{comentario}}: [https://es.wikipedia.org/w/index.php?title=Wikipedia:Solicitudes_de_verificaci%C3%B3n_de_usuarios&oldid=170625007#Evasi%C3%B3n_de_bloqueo:_Cris2020 Resultado de la SVU]. --'''[[user:Stïnger|<span style="text-shadow:#FFD700 1px 1px 2px; class=texhtml"><span style="font-family:'Calibri';color:black">Stïnger</span></span>]]'''&nbsp; <sup>[[Archivo:Bureau kage.svg|15px|link=User talk:Stïnger]]</sup> 00:58 24 nov 2025 (UTC). ; Respuesta {{admintab|Al no ser un caso reciente (ya pasaron algunos días) apercibo a {{u2|Unmuybuenusuario}} de [[WP:PBF]] primeramente y posterior a [[WP:PPBF]]. Ambos juicios caen en violaciones a [[WP:E]] y [[WP:CIV]] (supongo al ya haber editado como IP sabrá por que, por lo que en caso de reincidencia podría haber sanción. En cuanto al flag, queda al criterio del bibliotecario que lo otorga, no hay tiempo ni cuota determinada, pero es bastante obvio que más sabe el diablo por viejo que por diablo, yo tampoco lo habría otorgado.|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:09 26 nov 2025 (UTC)}} == Expulsado de la Wikipedia en inglés viene acá a hacer lo mismo... == ;Usuarios * {{u|SocialQuote}} * {{u|2800:484:7380:0:0:0:0:0/44}} ; Asunto Tanto [https://en.wikipedia.org/wiki/Special:Contributions/SocialQuote la cuenta registrada] como [https://en.wikipedia.org/wiki/Special:Contributions/2800:484:7380:0:0:0:0:0/44 el rango IP] se encuentran sancionados desde septiembre en la Wikipedia en inglés, por ediciones conflictivas, reversiones sin sentido e incluso insultos y amenazas. Ya acá [[Usuario discusión:2800:484:7385:F0:95EE:CA0B:4429:B24C|ha causado problemas como anónimo en junio]] y la cuenta [https://es.wikipedia.org/w/index.php?title=Scarface_(pel%C3%ADcula_de_1983)&diff=prev&oldid=168285955 incluso ripostó contra un bibliotecario], y [https://es.wikipedia.org/w/index.php?title=Harry_Potter_y_el_c%C3%A1liz_de_fuego&diff=prev&oldid=169807011 está constantemente] [https://es.wikipedia.org/w/index.php?title=Dinero_negro&diff=prev&oldid=170282821 revirtiendo al bot de mantenimiento]. Nótese que los temas que edita tanto la cuenta como la IP son las mismas (series de TV y películas), y las sanciones aplicadas en en.wiki fueron hechas el mismo día. Debido a esta coincidencia y la situación que está persistiendo ahora en la Wikipedia en español, pido que se tomen medidas. :{{comentario}} Añado [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n:Farisori&diff=prev&oldid=170531619 otro mensaje bastante incordiante contra otro bibliotecario] haciéndolo suponer entre líneas que no sabe redactar artículos. '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 00:10 18 nov 2025 (UTC) ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 04:18 17 nov 2025 (UTC) ; Respuesta {{Hecho|1=Bloqueado}} por Rafstr. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:40 19 nov 2025 (UTC) == Borrar y ocultar datos sensibles en página de usuario == ; Asunto Pido con carácter de urgencia que algún bibliotecario [https://es.wikipedia.org/w/index.php?title=Usuario:Dalma_Huerta_Mercado_Calder%C3%B3n&diff=prev&oldid=170526877 oculte datos sensibles y muy personales] de [[Usuario:Dalma Huerta Mercado Calderón|esta página de usuario]], ya que es aún una niña (ni siquiera es adolescente). No creo que sea consciente de que lo que hace es peligroso a su edad. Añado que ya [https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:Dalma_Huerta_Mercado_Calder%C3%B3n#Informaci%C3%B3n_personal no es la primera vez que la pillan colgando datos personales], el año pasado hizo lo mismo. Si toca hacer alguna medida administrativa que evite que la menor siga exponiendo sus datos sin cuidado, adelante. ; Comentarios No soy bibliotecario, pero {{ping|Taichi}} creo que lo mejor es mandar un correo a [[Wikipedia:Supresores|oversight]], o como mínimo realizar la solicitud en algún lugar menos visible (como IRC). --[[Usuario:Xacaranda|Xacaranda]] [[Usuario discusión:Xacaranda|(mensajes)]] 18:56 18 nov 2025 (UTC) ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 04:22 17 nov 2025 (UTC) ; Respuesta {{admintab|1={{Sí}}, dada la excesiva información personal y la imposibilidad de ocultar la última edición, opté por el borrado de la PU. También dejé un mensaje a la usuaria. En caso de reincidir, aplicaría una medida, como un bloqueo parcial, para impedir que vuelva a crear su página de usuario. Un saludo,|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:55 19 nov 2025 (UTC)}} == LTA == ; Usuarios implicados * {{u|Mauro08L}} ; Motivo Hmm, otra vez, otro títere más de {{u|Claudio1098}}. ; Usuario que lo solicita * —<span style="font-family:Trebuchet MS;font-size:95%">[[Usuario:Mαrti|<span style="color:#636;">Mαrti</span>]]&nbsp;<span style="color;background:#CBE2F7;border-radius:9px;">&nbsp;[[Usuario discusión:Mαrti|'''ϟ''']]&nbsp;</span></span> 20:23 18 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:42 19 nov 2025 (UTC)}} == Recreación reiterada == ; Asunto * El usuario {{u|Archivoteleditor}} insiste en recrear el mismo programa de televisión con distintas variaciones del título, véase [[Tentaculos]], [[Tentáculos]], [[Ni que fuéramos tentáculos]] y [[Ni Que Fuéramos Tentáculos]], contabilizo más de una docena de recreaciones, ya se le avisó de un posible conflicto de interés. :En cuanto al artículo, se trata de un programa que duró apenas 3 meses en antena, aunque El País y EuropaPress son referencias fiables, mencionan el programa superficialmente. ; Usuario que lo solicita *   '''C:\>''' [[Usuario:A.piquerasm|A.piquerasm]] '''[''' [[Usuario Discusión:A.piquerasm|Discusión]] ''']''' 16:43 19 nov 2025 (UTC) ; Respuesta {{admintab|{{hecho}}. Inhabilitado de crear páginas. Un saludo. |2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 19:49 19 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170580247]] ; Motivo Lenguaje soez ; Usuario que lo solicita * [[Usuario:Casisgaal|<span style="font-size:black 3px 1px 3px; font-variant:Corbel; color:blue; text-shadow:cyan 2px 1px 2px">Casisgaal</span>]] [[Usuario discusión:Casisgaal|(Discusión)]] 16:16 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada y cuenta bloqueada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:36 21 nov 2025 (UTC)}} == Anónimo escurridizo == ; Asunto Un anónimo que cambia de cuenta temporal y de IP lleva dos meses haciendo cambios sin sentido en partidos políticos de Colombia [https://es.wikipedia.org/w/index.php?title=Independientes_(Colombia)&action=history como este], [https://es.wikipedia.org/w/index.php?title=Partido_Comunista_de_Colombia_-_Marxista_Leninista&diff=prev&oldid=170580251 cambiando un «es» por «fue»] (haciendo entender que ya no existen), pero sin aportar pruebas que los partidos ya no están activos. Como no está aportando nada [[WP:VER|que lo sustente]], se le está revirtiendo pero insiste en reponerlo, llegando a una conducta que no se puede considerar como constructiva. Además, nos pone en prueba con el sistema de cuentas temporales ya que no sólo está cambiando de cuenta temporal, sino de IP, por lo que dejo en consideración que hacer. Estás serían las direcciones en cuestión: [https://es.wikipedia.org/wiki/Especial:IPContributions/191.108.3.30], [https://es.wikipedia.org/wiki/Especial:IPContributions/191.108.59.86], [https://es.wikipedia.org/wiki/Especial:IPContributions/152.201.226.108] y [https://es.wikipedia.org/wiki/Especial:IPContributions/152.202.79.18]. Previo a la instauración de cuentas temporales también editó con las siguientes IPs: * {{u|152.201.203.233}} * {{u|186.113.76.107}} * {{u|191.111.9.153}} Es posible que incluso se considere en semiproteger si en caso tal el anónimo siga por cambiar de IP y continúe con esta situación. ; Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 16:49 20 nov 2025 (UTC) ; Respuesta {{admintab|{{prot|60}}|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:19 26 nov 2025 (UTC)}} == Acoso == ; Usuarios implicados * {{u|~2025-35257-44}} * {{u|~2025-35202-10}} ; Motivo Acoso a un usuario ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 21:57 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 16:49 21 nov 2025 (UTC)}} == Acoso == ; Usuarios implicados * {{u|Narsenopoulos}} ; Motivo {{diff|170585395|Acoso a un usuario}} ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 22:03 20 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Usuario bloqueado por Virum Mundi. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:28 21 nov 2025 (UTC)}} == Ocultar ediciones == ; Asunto * [[Especial:Diff/169433403]] * [[Especial:Diff/170587004]] ; Motivo El artículo suele ser vandalizado mediante la inclusión de nombres completos de particulares en esta lista, entiendo que motivados por algún tipo de rencilla personal. Creo que es conveniente ocultarlos ya que que, de lo contrario, esos nombres quedan indexados y accesibles por internet, asociados a una lista de violadores en serie, lo cual puede tener implicaciones en su vida personal. ; Usuario que lo solicita * [[Usuario:Nacaru|Nacaru]] [[Archivo:Noto Emoji KitKat 2601.svg|19px]] ([[Usuario_discusión:Nacaru|discusión]]) 00:23 21 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Ediciones ocultadas. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:39 21 nov 2025 (UTC)}} == Solicitud para corregir redirecciones dobles en [[Ciudad del Cuzco]] y [[Cusco, Perú]] == Hola. Por favor, ayúdenme a solucionar el problema de las redirecciones dobles en las páginas de redireccionamiento [[Ciudad del Cuzco]] y [[Cusco, Perú]]. Gracias. [[Especial:Contribuciones/&#126;2025-35342-08|&#126;2025-35342-08]] ([[Usuario discusión:&#126;2025-35342-08|discusión]]) 04:33 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 04:45 21 nov 2025 (UTC)}} == Me sentí acosada por Jaluj, por favor, paciencia con los novatos == ; Asunto Soy una nueva editora (bueno, era una nueva editora) estudiante de 5º de Veterinaria y entré en la wikipedia con mucha ilusión. Detecté un artículo escrito llamado “Comida para gatos” lleno de enlaces spam a marcas comerciales, así como un claro sesgo pro pienso alabando sus virtudes. Después de leerme todos los tutoriales edité el artículo intentando ser objetiva, eliminado enlaces spam y texto publicitario. Un editor deshizo todo mi trabajo dando la razón de que yo había eliminado referencias. https://es.wikipedia.org/w/index.php?title=Comida_para_gatos&diff=170390013&oldid=170376180 Vi la posibilidad de aprender de mis errores y le pregunté por que consideraba fiables (ya que repuso todos los enlaces spam) Eran enlaces a artículos como “los 8 mejores marcas de piensos” (que es publicidad de 8 marcas de piensos, con enlaces a afiliados de Amazon), o webs que no funcionaban etc etc Me contestó que había eliminado todo mi trabajo porque yo había añadido 1 referencia “por tratarse de blog y por tanto no considerarse fiable”. Era un enlace a un artículo de una clínica veterinaria como había 3 o 4 igual en el artículo. https://clinicaveterinarium.es/el-gato-es-omnivoro-o-carnivoro/ No entendí que para eliminar ese enlace se eliminara todo el trabajo realizado en el artículo, y sobre todo que se repusieran los enlaces spam, y por qué esos enlaces spam eran fuentes fiables. Para resumir, volví a poner el artículo tal y como yo lo había escrito (eliminado más de 10 enlaces spam) quitando el enlace a dicha clínica, sospechando que era ese el problema, y el editor me agradeció la edición. Seguí sin aprender. Pero no me quejo de este editor. Y aquí viene mi ruego. Posteriormente a todo esto, y tras muchos días después, apareció el editor Jaluj, https://es.wikipedia.org/wiki/Usuario_discusi%C3%B3n:LaVeterinaria , donde me acusó de faltar a la etiqueta y falta de civismo al preguntar al editor. Pedí disculpas por mis preguntas si habían molestado y volví a decir que mi intención era aprender y por eso preguntaba. Tras mi respuesta, el editor Jaluj fue a una edición mía en otro artículo, y la eliminó, diciendo que no era una fuente fiable https://es.wikipedia.org/w/index.php?title=Perro_de_caza&curid=707821&diff=170565115&oldid=170545527 La ACCM es un organismo avalado por el Gobierno https://servicio.mapa.gob.es/arca/download.html?id=20338485&contentType=application/pdf que reconoce oficialmente a los perros de raza, así que supongo que son una fuente entendida del tema para hablar de razas. Además de eliminar esa información, me vuelve a acusar de falta de civismo y de etiqueta, por lo que me declaré Retirada y así se lo dije como respuesta, ya que no entendía nada, me di cuenta que no podía aprender y me sentía atacada. He recibido un email de wikipedia donde me avisa que el editor Jaluj obviando todas mis disculpas y petición de información sobre la organización oficial sólo me exige el nombre de mi mentor. Solo pido un poco de paciencia y empatía con los nuevos editores, necesitamos empatía y ayuda para editar, no acusaciones de mala fe y falta de civismo. Yo lo he intentado, cuiden a los que vengan nuevos detrás de mi. Gracias por leer. ; Usuario que lo solicita --[[Usuario:LaVeterinaria|LaVeterinaria]] ([[Usuario Discusión:LaVeterinaria|discusión]]) 14:01 21 nov 2025 (UTC) ;Comentario adicional Permito añadir que {{u2|Leoncastro}} y mi persona [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ALaVeterinaria&diff=170608554&oldid=170595929 hemos tratado separadamente de mediar en el asunto], pero la usuaria está demasiado a la defensiva e incluso [https://es.wikipedia.org/w/index.php?title=Usuario_discusi%C3%B3n%3ATaichi&diff=170606470&oldid=170599847 me dejó esta contestación], incluso cuando buscaba seriamente ayudarle. Lo que denoto en sus contestaciones además, es que ella como estudiante universitaria dice tener algún "mentor" en su universidad (pero no está adscrito acá), por lo que estoy deduciendo que hay alguna orientación mal ejecutada y pareciera que la estudiante está obligada a editar como sea, a expensas de que cualquier patrullero o bibliotecario sea maltratado de esta manera si le revisan sus contribuciones. Ojalá haya alguna forma de que se haga entender y ver ante las instancias de qué o quién movió institucionalmente a la alumna a que pasara esto. '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 14:35 22 nov 2025 (UTC) ; Respuesta {{admintab|1={{No}}. {{U|LaVeterinaria}}, no me parece que, en ningún momento, Jaluj o algún otro de los varios usuarios que han buscado orientarte te hayan «maltratado» o dado motivos para sentirte intimidada o acosada. Más bien, algunas de tus interacciones muestran que, ciertamente, pareces estar a la defensiva y que podrían malinterpretarse. Supongo que el primer mensaje de Jaluj estuvo motivado por una de tus respuestas a Casisgaal —«¿Por qué escribir texto apoyado en enlaces verificables como la universidad etc.? ¿La wikipedia española se basa en la inglesa y no podemos editar sino solo traducir?»—, que se alejó del [[Wikipedia:Civismo|civismo]] esperado en las interacciones entre usuarios en Wikipedia. Asumiste que el mensaje de Jaluj estuvo motivado por tu «insistencia por preguntar lo que no entendía», cuando claramente te explicó, de forma amable y con la paciencia que en varias ocasiones has pedido, que fue por tu tono. Coincido con Jaluj en que parece que no lees los mensajes completos. <br> Si preguntó Jaluj sobre tu «mentor», que tú misma mencionaste en la conversación con Casisgaal, es porque, ciertamente después de estas interacciones que has tenido, surge la duda de quién es, si es usuario de Wikipedia y si tiene conocimiento de las políticas que la rigen. Parece que no. Por ello, sería mejor que aprovecharas herramientas como el [[Wikipedia:Programa de tutoría|programa de tutoría]] —cabe destacar que {{u|Ezarate}} ya amablemente se ofreció a ayudarte con tus ediciones—. Todo lo anterior, ya te lo había explicado Leoncastro. Además, él te dejó un extenso mensaje donde explicó y trató de mediar. Tu respuesta y actuar subsecuente es, cuanto menos, desconcertante. <br> En suma, descarto la denuncia. {{U|LaVeterinaria}} no me parece que el tono que uses y la forma de interactuar que tienes con otros usuarios, que han intentando orientarte, sea adecuada o benéfica para la enciclopedia. Así como insistes en pedir paciencia, ofrécela a los demás y no acuses de intimidación o denuncies tan fácilmente. Aprovecha los mensajes en los que se te ha explicado un poco sobre la enciclopedia, aprovecha el programa de tutoría o los ofrecimientos de usuarios como Ezarate. No continúes con esta forma de actuar porque fomenta conflictos y puede conducir a medidas que nadie quiere que se tengan que tomar. Un saludo,|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 22:00 22 nov 2025 (UTC)}} == LTA == ; Usuarios implicados * {{u|Henrysmithwa5}} ; Motivo LTA aerolíneas ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 20:15 21 nov 2025 (UTC) ; Respuesta {{admintab|{{ok}} por Jake Park. |--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 00:38 22 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170607263]] ; Motivo Etiqueta ; Usuario que lo solicita * [[Usuario:CharlieRaMx|CharlieRaMx]] ([[Usuario Discusión:CharlieRaMx|discusión]]) 12:02 22 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 12:30 22 nov 2025 (UTC)}} == Ocultar ediciones == ; Usuarios implicados * {{u|Zanahorita Extraida}} ; Motivo Pido que se oculten todas las ediciones de este títere bloqueado, quien como siempre ha lanzado comentarios denigrantes, ofensivos y hasta insultos. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 18:08 23 nov 2025 (UTC) ; Respuesta {{Hecho}} por Saloca. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 20:00 23 nov 2025 (UTC) == LTA == ; Usuarios implicados * {{u|Patthenry5}} ; Motivo LTA aerolíneas ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 18:24 23 nov 2025 (UTC) ; Respuesta {{Hecho}} por MiguelAlanCS. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 19:59 23 nov 2025 (UTC) == Ocultar ediciones == ; Asunto * [[Especial:Diff/170589208]] * [[Especial:Diff/170589204]] ; Motivo Vandalismo ; Usuario que lo solicita * [[Usuario:CarlosEduardoPA|<span style="font-size:80%;background:#000;color:#fff;border-radius:25px;padding:3px 8px;">CarlosEduardoPA</span>]] [[Usuario discusión:CarlosEduardoPA|✉️]] 22:29 23 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Ediciones ocultadas. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:26 24 nov 2025 (UTC)}} == MediaWiki:Jsonconfig-use-category == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> ; Asunto * {{a|MediaWiki:Jsonconfig-use-category}} * Please delete the page as it is no longer necessary following [[:phab:T378352|T378352]] ([[:Category:Wikipedia:Páginas que usan la extensión JsonConfig|the category]] has already been deleted). See also [[:m:Steward requests/Miscellaneous#Category:Pages using the JsonConfig extension]]. ; Usuario que lo solicita * [[Usuario:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Usuario Discusión:NguoiDungKhongDinhDanh|discusión]]) 23:09 23 nov 2025 (UTC) ; Respuesta {{admintab|{{ok}}|--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 09:01 24 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170617475]] ; Motivo Vandalismo ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 23:46 23 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada por Virum Mundi. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:22 24 nov 2025 (UTC)}} == Plantillas mantenidas sin justificación en Conservatorio de Música de la Universidad Austral de Chile == ; Asunto Solicito la intervención de un bibliotecario respecto al artículo [[Conservatorio de Música de la Universidad Austral de Chile]]. El usuario Ontzak colocó dos plantillas (promocional e irrelevante) el día 18 de noviembre. Desde entonces el artículo ha sido completamente reescrito, reforzado con referencias académicas y eliminado el contenido que podía ser de estilo promocional e irrelevante. Conforme a lo indicado en las propias plantillas, abrí hilo en la página de discusión solicitando consenso para su retirada. El usuario no ha respondido pese a haber sido notificado y mencionado en dos ocasiones. ; Motivo El comportamiento observado, colocar plantillas, no responder a la discusión y bloquear de facto la retirada, encaja en lo descrito en [[WP:DUEÑO]]. A día de hoy las razones originales ya no se sostienen, pero las plantillas permanecen en el artículo sin justificación actual y el editor que las colocó evita participar en la discusión. ; Usuario que lo solicita [[Usuario:Hoppedup|Hoppedup]] ([[Usuario Discusión:Hoppedup|discusión]]) 12:26 24 nov 2025 (UTC) Solicito que un bibliotecario revise el caso: • si procede, retire las plantillas, • y si fuese necesario, recuerde al usuario implicado la obligación de participar cuando se cuestiona una plantilla mantenida. Gracias. ; Respuesta {{admintab|1={{Hecho}}. Por lo demás, todos sabemos cómo hace las cosas {{u2|Ontzak}}; sería mejor que las hiciera con un poco más de intercambio con los demás, pero no se le puede pedir a los editores lo que no pueden o no quieren aportar en Wikipedia (editar sigue siendo una actividad voluntaria, todavía). En mi personal opinión, es mejor tenerlo haciendo lo que hace que no tenerlo, de modo que lo más que podemos hacer es volverlo a invitar a ser un poco más comunicativo. En cuanto a lo de WP:DUEÑO, me parece que te has pasado de largo unos cuantos kilómetros en tu interpretación; un poco más de calma, por favor. Gracias por tu mensaje.|2=--[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 13:10 24 nov 2025 (UTC)}} == Spam incesante == <!-- ↑ RECUERDA COLOCAR UN TÍTULO A TU MENSAJE EN EL CUADRO «Asunto/encabezado» Y LUEGO PROCEDE A BORRAR ESTE MENSAJE. GRACIAS. --> ; Asunto * Rango con decenas de ediciones spam, al menos unas 34 desde marzo de este año. * {{u|89.214.0.0/17}} * [[Especial:IPContributions/89.214.0.0/17]] ; Usuario que lo solicita * [[Usuario:Xacaranda|Xacaranda]] [[Usuario discusión:Xacaranda|(mensajes)]] 18:58 25 nov 2025 (UTC) ; Respuesta {{admintab|{{Sí|He aplicado un bloqueo parcial a los artículos objeto de spam}}.|2=[[Usuario:Montgomery|Montgomery]] ([[Usuario Discusión:Montgomery|discusión]]) 19:04 25 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170663031]] ; Motivo Transgresión de las reglas de etiqueta. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 19:17 25 nov 2025 (UTC) ; Respuesta {{admintab|$oc|2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 20:09 25 nov 2025 (UTC)}} == Solicitar traslado == ; Asunto * Solicito el traslado de [[CITEDEF]] a [[Instituto de Investigaciones Científicas y Técnicas para la Defensa]], siguiendo la recomendación de la [[Wikipedia:Convenciones de títulos|convención de títulos]] de evitar el uso de acrónimos y siglas siempre que se pueda. ; Usuario que lo solicita * [[Usuario:Comecaballos|Comecaballos]] ([[Usuario Discusión:Comecaballos|discusión]]) 00:17 26 nov 2025 (UTC) ; Respuesta {{admintab|{{hecho}}|--[[Usuario:Ezarate|Esteban]] ([[Usuario Discusión:Ezarate|discusión]]) 11:58 26 nov 2025 (UTC)}} == Cuenta de "propósito particular" == ; Asunto * No tengo del todo claro si [https://es.wikipedia.org/w/index.php?title=Especial:Registro/block&page=Usuario%3AInfohisto esto va acá] o a esta altura debería reportarse como vandalismo. Ver sus ediciones de hoy, y sus resúmenes de edición, en {{a|Caporales}} y {{a|Tundiqui}}. Esta cuenta, que ya fue identificada como lo que es, definitivamente no tiene otro propósito aquí que el que ya es evidente. Y lo ha hecho ya en varios artículos. Mirando su página de usuario veo que tres administradores ya han interactuado con él. Así que aprovecho para citarlos: {{u|Tector}}, {{u|Saloca}} y {{u|Marcelo}} ; Usuario que lo solicita * [[Usuario:Rastamby|Rastamby]] ([[Usuario Discusión:Rastamby|discusión]]) 02:34 26 nov 2025 (UTC) ; Respuesta {{admintab|1={{Hecho}}, ya fue suficiente: usuario expulsado y artículos protegidos a largo plazo. Gracias por el aviso.|2=--[[Usuario:Marcelo|Marcelo]] [[Imagen:Coat_of_arms_of_Argentina.svg|12px]] ''<small>([[Usuario Discusión:Marcelo|Mensajes aquí]])</small>'' 02:43 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170670252]] ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 04:58 26 nov 2025 (UTC) ; Respuesta {{admintab|1={{hecho}}. Edición ocultada. Gracias por el aviso.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 05:04 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170670276]] ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 05:00 26 nov 2025 (UTC) ; Respuesta {{admintab|1=Prueba|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:26, 9 February 2026 (UTC)|3=}} == Solicitud para corregir redirecciones dobles en [[Departamento de Cusco]] y [[Provincia de Cusco]] == Hola. Por favor, ayúdenme a solucionar el problema de las redirecciones dobles en las páginas de redireccionamiento [[Departamento de Cusco]] y [[Provincia de Cusco]]. Gracias. [[Especial:Contribuciones/&#126;2025-36297-96|&#126;2025-36297-96]] ([[Usuario discusión:&#126;2025-36297-96|discusión]]) 05:35 26 nov 2025 (UTC) == CDI == ; Usuarios implicados * {{u|JALGUERRERO}} ; Motivo Claro conflicto de interés. Sus ediciones se centran en el artículo que lleva su nombre ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 10:53 26 nov 2025 (UTC) ; Respuesta {{admintab|{{Ok}}, hecho por {{u2|Virum Mundi}}; no puedo creer nos duró 15 años.|[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 18:27 26 nov 2025 (UTC)}} == Ocultar edición == ; Asunto * [[Especial:Diff/170680869]] ; Usuario que lo solicita * [[Usuario discusión:Divinations|Divinations]] 21:35 26 nov 2025 (UTC) ; Respuesta {{admintab|1=Ejemplo de resolución de solicitud que menciona a {{ping|Nacaru}}.|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:39, 9 February 2026 (UTC)|3=}} == varias ediciones == ; Asunto * [[Especial:Diff/619272]] ; Motivo Prueba de texto ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:45, 20 February 2026 (UTC) ; Respuesta {{admintab|1=Qué tal está petición de aquí??? {{Ok}}|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:13, 11 April 2026 (UTC)|3=}} == Ocultar edición [[Especial:Diff/619272|619272]] == ; Asunto * [[Especial:Diff/619272]] ; Motivo JHVBIKUHGVIK ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:47, 20 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar edición 619272 == ; Asunto * [[Especial:Diff/619272]] ; Motivo VXCV XZVZCVZC ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:48, 20 February 2026 (UTC) ; Respuesta {{admintab|1=OKIII|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:49, 20 February 2026 (UTC)|3=}} == Ocultar edición 684158 == ; Asunto * [[Especial:Diff/684158]] ; Motivo kjanxkajsncxa ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:34, 26 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Prueba de toro túitulo == ; Usuarios implicados * {{u|Sergio Enrollment 2}} ; Motivo Prueba de otra raźon ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:55, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Otra prueba de título más == ; Usuarios implicados * {{u|Sergio Enrollment 2}} ; Motivo Desarrollando razón ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:55, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == k,jnkjjn == ; Usuarios implicados * {{u|Dicto23456}} ; Motivo lknmlkj lkjlk jkl ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:59, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Otra denuncia la que sea == ; Usuarios implicados * {{u|Cenarium}} ; Motivo A ver qué tal ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 01:08, 27 February 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74252,671081,671082 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/671081]] * [[Especial:Diff/671082]] ; Motivo Motivo cualquiera ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:43, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74252, 74251, 89098 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/74252]] * [[Especial:Diff/74251]] * [[Especial:Diff/89098]] ; Motivo Ejemplo ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:45, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar edición 74252 == ; Asunto * [[Especial:Diff/74252]] ; Motivo qeasdsa ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:46, 2 March 2026 (UTC) ; Respuesta {{admintab|1=Qué tal estas??|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:54, 11 April 2026 (UTC)|3=}} == Ocultar ediciones 74251 y 74252 == ; Asunto * [[Especial:Diff/74252]] * [[Especial:Diff/74251]] ; Motivo asdAD SADAS ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:46, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) == Ocultar ediciones 74253, 74254, 74255, 74256 y 74252 == ; Asunto * [[Especial:Diff/74253]] * [[Especial:Diff/74254]] * [[Especial:Diff/74255]] * [[Especial:Diff/74256]] * [[Especial:Diff/74252]] ; Motivo A ver si aparecen en el mismo orden. ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 18:52, 2 March 2026 (UTC) ; Respuesta (a rellenar por un bibliotecario) sjvl5fh1yxcrfizk2ego558n3hel9sr Module:Message box/ambox.css 828 127301 737656 624799 2025-08-12T01:37:33Z en>Pppery 0 Undid revision [[Special:Diff/1305420660|1305420660]] by [[Special:Contributions/Pppery|Pppery]] ([[User talk:Pppery|talk]]) Seems to have caused [[Wikipedia:Village_pump_(technical)#Coptic_identity:_Maintenance_template_has_extra_orange_stripe]] 624798 sanitized-css text/css /* {{pp|small=y}} */ .ambox { border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } /* Single border between stacked boxes. Take into account base templatestyles, * user styles, and Template:Dated maintenance category. * remove link selector when T200206 is fixed */ .ambox + link + .ambox, .ambox + link + style + .ambox, .ambox + link + link + .ambox, /* TODO: raise these as "is this really that necessary???". the change was Dec 2021 */ .ambox + .mw-empty-elt + link + .ambox, .ambox + .mw-empty-elt + link + style + .ambox, .ambox + .mw-empty-elt + link + link + .ambox { margin-top: -1px; } /* For the "small=left" option. */ /* must override .ambox + .ambox styles above */ html body.mediawiki .ambox.mbox-small-left { /* @noflip */ margin: 4px 1em 4px 0; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } .ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } .ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } .ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } .ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } .ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } .ambox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.5em; width: 100%; } .ambox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.5em; text-align: center; } .ambox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.5em 2px 0; text-align: center; } /* An empty narrow cell */ .ambox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ambox .mbox-image-div { width: 52px; } @media (min-width: 720px) { .ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ } } @media print { body.ns-0 .ambox { display: none !important; } } p6eghkibj5jaltbdpofs37kyuj5x92w 737657 737656 2026-04-11T19:54:21Z Novem Linguae 49714 1 revision imported from [[:en:Module:Message_box/ambox.css]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 624798 sanitized-css text/css /* {{pp|small=y}} */ .ambox { border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } /* Single border between stacked boxes. Take into account base templatestyles, * user styles, and Template:Dated maintenance category. * remove link selector when T200206 is fixed */ .ambox + link + .ambox, .ambox + link + style + .ambox, .ambox + link + link + .ambox, /* TODO: raise these as "is this really that necessary???". the change was Dec 2021 */ .ambox + .mw-empty-elt + link + .ambox, .ambox + .mw-empty-elt + link + style + .ambox, .ambox + .mw-empty-elt + link + link + .ambox { margin-top: -1px; } /* For the "small=left" option. */ /* must override .ambox + .ambox styles above */ html body.mediawiki .ambox.mbox-small-left { /* @noflip */ margin: 4px 1em 4px 0; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } .ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } .ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } .ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } .ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } .ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } .ambox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.5em; width: 100%; } .ambox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.5em; text-align: center; } .ambox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.5em 2px 0; text-align: center; } /* An empty narrow cell */ .ambox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ambox .mbox-image-div { width: 52px; } @media (min-width: 720px) { .ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ } } @media print { body.ns-0 .ambox { display: none !important; } } p6eghkibj5jaltbdpofs37kyuj5x92w User:DatGuy/spihelper log 2 146722 737711 734886 2026-04-11T20:04:30Z DatGuy 30264 Logging spihelper edits (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737711 wikitext text/x-wiki == October 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:25, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:37, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:40, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:43, 9 October 2022 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:47, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:50, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 19:38, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:03, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:05, 27 October 2022 (UTC) ** changed case status from checked to hold ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:46, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:52, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 10:03, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == November 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:04, 4 November 2022 (UTC) ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == December 2025 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 05:28, 2 December 2025 (UTC) == January 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 14:55, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 15:05, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:12, 9 January 2026 (UTC) ** changed case status from checked to relist ** commented ** blocked Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:44, 9 January 2026 (UTC) ** changed case status from reopen to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:46, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:58, 9 January 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:07, 9 January 2026 (UTC) ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:08, 9 January 2026 (UTC) ** tagged Test, Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:32, 9 January 2026 (UTC) ** moved section to Test2 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 22:31, 9 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:43, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:47, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:48, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:25, 12 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:19, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:24, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:25, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:30, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:31, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test2]] (section 09 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:43, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:48, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:50, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 11:31, 28 January 2026 (UTC) ** changed case status from CUrequest to cuhold ** commented * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 17:05, 30 January 2026 (UTC) ** moved/merged case to Test4 == February 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 05:12, 15 February 2026 (UTC) ** commented ** blocked ** tagged Test 2013-02-21 4 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 13:12, 17 February 2026 (UTC) ** changed case status from CUrequest to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Djahidou01]] (full case) 13:20, 17 February 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 14:37, 24 February 2026 (UTC) ** tagged Test2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:41, 27 February 2026 (UTC) ** blocked Test 2013-02-21 ** tagged == March 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 00:50, 3 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 02:38, 3 March 2026 (UTC) ** blocked Test 2013-02-21 5, Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:11, 7 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:14, 7 March 2026 (UTC) ** blocked ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test Account]] (full case) 13:42, 9 March 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test Account]] (section 22 January 2026) 13:47, 9 March 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 13:55, 9 March 2026 (UTC) ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:37, 12 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:32, 13 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:42, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:43, 17 March 2026 (UTC) ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:54, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 ** tagged Test * [[Wikipedia:Sockpuppet investigations/undefined]] (full case) 14:29, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:38, 17 March 2026 (UTC) ** moved/merged case to Test Account Cowboy * [[Wikipedia:Sockpuppet investigations/Test Account Cowboy]] (full case) 14:41, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 14:54, 17 March 2026 (UTC) ** changed case status from closed to clerk ** commented ** blocked Test 2013-02-21 5 ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:01, 17 March 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:13, 17 March 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:22, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 21:03, 20 March 2026 (UTC) ** commented ** blocked Test 2013-02-21 5 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (section 17 March 2026) 14:39, 23 March 2026 (UTC) ** changed case status from new to closed * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:39, 23 March 2026 (UTC) ** Archived case == April 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from clerk to admin ** commented 5wv70e5udjgvfqtf0uuveln5iugjcqr 737713 737711 2026-04-11T20:04:45Z DatGuy 30264 Logging spihelper edits (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737713 wikitext text/x-wiki == October 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:25, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:37, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:40, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:43, 9 October 2022 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:47, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:50, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 19:38, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:03, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:05, 27 October 2022 (UTC) ** changed case status from checked to hold ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:46, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:52, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 10:03, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == November 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:04, 4 November 2022 (UTC) ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == December 2025 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 05:28, 2 December 2025 (UTC) == January 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 14:55, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 15:05, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:12, 9 January 2026 (UTC) ** changed case status from checked to relist ** commented ** blocked Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:44, 9 January 2026 (UTC) ** changed case status from reopen to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:46, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:58, 9 January 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:07, 9 January 2026 (UTC) ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:08, 9 January 2026 (UTC) ** tagged Test, Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:32, 9 January 2026 (UTC) ** moved section to Test2 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 22:31, 9 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:43, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:47, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:48, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:25, 12 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:19, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:24, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:25, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:30, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:31, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test2]] (section 09 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:43, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:48, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:50, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 11:31, 28 January 2026 (UTC) ** changed case status from CUrequest to cuhold ** commented * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 17:05, 30 January 2026 (UTC) ** moved/merged case to Test4 == February 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 05:12, 15 February 2026 (UTC) ** commented ** blocked ** tagged Test 2013-02-21 4 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 13:12, 17 February 2026 (UTC) ** changed case status from CUrequest to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Djahidou01]] (full case) 13:20, 17 February 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 14:37, 24 February 2026 (UTC) ** tagged Test2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:41, 27 February 2026 (UTC) ** blocked Test 2013-02-21 ** tagged == March 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 00:50, 3 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 02:38, 3 March 2026 (UTC) ** blocked Test 2013-02-21 5, Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:11, 7 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:14, 7 March 2026 (UTC) ** blocked ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test Account]] (full case) 13:42, 9 March 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test Account]] (section 22 January 2026) 13:47, 9 March 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 13:55, 9 March 2026 (UTC) ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:37, 12 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:32, 13 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:42, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:43, 17 March 2026 (UTC) ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:54, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 ** tagged Test * [[Wikipedia:Sockpuppet investigations/undefined]] (full case) 14:29, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:38, 17 March 2026 (UTC) ** moved/merged case to Test Account Cowboy * [[Wikipedia:Sockpuppet investigations/Test Account Cowboy]] (full case) 14:41, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 14:54, 17 March 2026 (UTC) ** changed case status from closed to clerk ** commented ** blocked Test 2013-02-21 5 ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:01, 17 March 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:13, 17 March 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:22, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 21:03, 20 March 2026 (UTC) ** commented ** blocked Test 2013-02-21 5 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (section 17 March 2026) 14:39, 23 March 2026 (UTC) ** changed case status from new to closed * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:39, 23 March 2026 (UTC) ** Archived case == April 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from clerk to admin ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from closed to clerk gwyeuj3y74yy89m42vlgtelakkde188 737715 737713 2026-04-11T20:04:55Z DatGuy 30264 Logging spihelper edits (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737715 wikitext text/x-wiki == October 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:25, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:37, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:40, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:43, 9 October 2022 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:47, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:50, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 19:38, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:03, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:05, 27 October 2022 (UTC) ** changed case status from checked to hold ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:46, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:52, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 10:03, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == November 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:04, 4 November 2022 (UTC) ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == December 2025 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 05:28, 2 December 2025 (UTC) == January 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 14:55, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 15:05, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:12, 9 January 2026 (UTC) ** changed case status from checked to relist ** commented ** blocked Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:44, 9 January 2026 (UTC) ** changed case status from reopen to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:46, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:58, 9 January 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:07, 9 January 2026 (UTC) ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:08, 9 January 2026 (UTC) ** tagged Test, Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:32, 9 January 2026 (UTC) ** moved section to Test2 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 22:31, 9 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:43, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:47, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:48, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:25, 12 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:19, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:24, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:25, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:30, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:31, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test2]] (section 09 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:43, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:48, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:50, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 11:31, 28 January 2026 (UTC) ** changed case status from CUrequest to cuhold ** commented * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 17:05, 30 January 2026 (UTC) ** moved/merged case to Test4 == February 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 05:12, 15 February 2026 (UTC) ** commented ** blocked ** tagged Test 2013-02-21 4 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 13:12, 17 February 2026 (UTC) ** changed case status from CUrequest to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Djahidou01]] (full case) 13:20, 17 February 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 14:37, 24 February 2026 (UTC) ** tagged Test2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:41, 27 February 2026 (UTC) ** blocked Test 2013-02-21 ** tagged == March 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 00:50, 3 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 02:38, 3 March 2026 (UTC) ** blocked Test 2013-02-21 5, Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:11, 7 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:14, 7 March 2026 (UTC) ** blocked ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test Account]] (full case) 13:42, 9 March 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test Account]] (section 22 January 2026) 13:47, 9 March 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 13:55, 9 March 2026 (UTC) ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:37, 12 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:32, 13 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:42, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:43, 17 March 2026 (UTC) ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:54, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 ** tagged Test * [[Wikipedia:Sockpuppet investigations/undefined]] (full case) 14:29, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:38, 17 March 2026 (UTC) ** moved/merged case to Test Account Cowboy * [[Wikipedia:Sockpuppet investigations/Test Account Cowboy]] (full case) 14:41, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 14:54, 17 March 2026 (UTC) ** changed case status from closed to clerk ** commented ** blocked Test 2013-02-21 5 ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:01, 17 March 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:13, 17 March 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:22, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 21:03, 20 March 2026 (UTC) ** commented ** blocked Test 2013-02-21 5 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (section 17 March 2026) 14:39, 23 March 2026 (UTC) ** changed case status from new to closed * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:39, 23 March 2026 (UTC) ** Archived case == April 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from clerk to admin ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from closed to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:04, 11 April 2026 (UTC) ** Updated archivenotice 0x5bnkjrjka9nsld5yga8yjkrgrsqiu 737717 737715 2026-04-11T20:08:13Z DatGuy 30264 Logging spihelper edits (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737717 wikitext text/x-wiki == October 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:25, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:37, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:40, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:43, 9 October 2022 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:47, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:50, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 19:38, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:03, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:05, 27 October 2022 (UTC) ** changed case status from checked to hold ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:46, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:52, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 10:03, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == November 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:04, 4 November 2022 (UTC) ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == December 2025 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 05:28, 2 December 2025 (UTC) == January 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 14:55, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 15:05, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:12, 9 January 2026 (UTC) ** changed case status from checked to relist ** commented ** blocked Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:44, 9 January 2026 (UTC) ** changed case status from reopen to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:46, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:58, 9 January 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:07, 9 January 2026 (UTC) ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:08, 9 January 2026 (UTC) ** tagged Test, Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:32, 9 January 2026 (UTC) ** moved section to Test2 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 22:31, 9 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:43, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:47, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:48, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:25, 12 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:19, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:24, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:25, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:30, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:31, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test2]] (section 09 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:43, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:48, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:50, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 11:31, 28 January 2026 (UTC) ** changed case status from CUrequest to cuhold ** commented * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 17:05, 30 January 2026 (UTC) ** moved/merged case to Test4 == February 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 05:12, 15 February 2026 (UTC) ** commented ** blocked ** tagged Test 2013-02-21 4 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 13:12, 17 February 2026 (UTC) ** changed case status from CUrequest to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Djahidou01]] (full case) 13:20, 17 February 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 14:37, 24 February 2026 (UTC) ** tagged Test2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:41, 27 February 2026 (UTC) ** blocked Test 2013-02-21 ** tagged == March 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 00:50, 3 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 02:38, 3 March 2026 (UTC) ** blocked Test 2013-02-21 5, Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:11, 7 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:14, 7 March 2026 (UTC) ** blocked ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test Account]] (full case) 13:42, 9 March 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test Account]] (section 22 January 2026) 13:47, 9 March 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 13:55, 9 March 2026 (UTC) ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:37, 12 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:32, 13 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:42, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:43, 17 March 2026 (UTC) ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:54, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 ** tagged Test * [[Wikipedia:Sockpuppet investigations/undefined]] (full case) 14:29, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:38, 17 March 2026 (UTC) ** moved/merged case to Test Account Cowboy * [[Wikipedia:Sockpuppet investigations/Test Account Cowboy]] (full case) 14:41, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 14:54, 17 March 2026 (UTC) ** changed case status from closed to clerk ** commented ** blocked Test 2013-02-21 5 ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:01, 17 March 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:13, 17 March 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:22, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 21:03, 20 March 2026 (UTC) ** commented ** blocked Test 2013-02-21 5 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (section 17 March 2026) 14:39, 23 March 2026 (UTC) ** changed case status from new to closed * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:39, 23 March 2026 (UTC) ** Archived case == April 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from clerk to admin ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from closed to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:04, 11 April 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:08, 11 April 2026 (UTC) ** changed case status from admin to clerk hczvq37idkcupnwamfxx7ixz1klfi9c 737719 737717 2026-04-11T20:08:21Z DatGuy 30264 Logging spihelper edits (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737719 wikitext text/x-wiki == October 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:25, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:37, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:40, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:43, 9 October 2022 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:47, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:50, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 19:38, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:03, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:05, 27 October 2022 (UTC) ** changed case status from checked to hold ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:46, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:52, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 10:03, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == November 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:04, 4 November 2022 (UTC) ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == December 2025 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 05:28, 2 December 2025 (UTC) == January 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 14:55, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 15:05, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:12, 9 January 2026 (UTC) ** changed case status from checked to relist ** commented ** blocked Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:44, 9 January 2026 (UTC) ** changed case status from reopen to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:46, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:58, 9 January 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:07, 9 January 2026 (UTC) ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:08, 9 January 2026 (UTC) ** tagged Test, Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:32, 9 January 2026 (UTC) ** moved section to Test2 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 22:31, 9 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:43, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:47, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:48, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:25, 12 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:19, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:24, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:25, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:30, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:31, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test2]] (section 09 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:43, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:48, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:50, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 11:31, 28 January 2026 (UTC) ** changed case status from CUrequest to cuhold ** commented * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 17:05, 30 January 2026 (UTC) ** moved/merged case to Test4 == February 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 05:12, 15 February 2026 (UTC) ** commented ** blocked ** tagged Test 2013-02-21 4 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 13:12, 17 February 2026 (UTC) ** changed case status from CUrequest to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Djahidou01]] (full case) 13:20, 17 February 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 14:37, 24 February 2026 (UTC) ** tagged Test2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:41, 27 February 2026 (UTC) ** blocked Test 2013-02-21 ** tagged == March 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 00:50, 3 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 02:38, 3 March 2026 (UTC) ** blocked Test 2013-02-21 5, Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:11, 7 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:14, 7 March 2026 (UTC) ** blocked ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test Account]] (full case) 13:42, 9 March 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test Account]] (section 22 January 2026) 13:47, 9 March 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 13:55, 9 March 2026 (UTC) ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:37, 12 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:32, 13 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:42, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:43, 17 March 2026 (UTC) ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:54, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 ** tagged Test * [[Wikipedia:Sockpuppet investigations/undefined]] (full case) 14:29, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:38, 17 March 2026 (UTC) ** moved/merged case to Test Account Cowboy * [[Wikipedia:Sockpuppet investigations/Test Account Cowboy]] (full case) 14:41, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 14:54, 17 March 2026 (UTC) ** changed case status from closed to clerk ** commented ** blocked Test 2013-02-21 5 ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:01, 17 March 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:13, 17 March 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:22, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 21:03, 20 March 2026 (UTC) ** commented ** blocked Test 2013-02-21 5 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (section 17 March 2026) 14:39, 23 March 2026 (UTC) ** changed case status from new to closed * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:39, 23 March 2026 (UTC) ** Archived case == April 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from clerk to admin ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from closed to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:04, 11 April 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:08, 11 April 2026 (UTC) ** changed case status from admin to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:08, 11 April 2026 (UTC) ** Updated archivenotice 96lknvhpdlkx56as3ckkuhsn8zcypht 737721 737719 2026-04-11T20:11:10Z DatGuy 30264 Logging spihelper edits (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737721 wikitext text/x-wiki == October 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:25, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:37, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:40, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:43, 9 October 2022 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:47, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:50, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 19:38, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:03, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:05, 27 October 2022 (UTC) ** changed case status from checked to hold ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:46, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:52, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 10:03, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == November 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:04, 4 November 2022 (UTC) ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == December 2025 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 05:28, 2 December 2025 (UTC) == January 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 14:55, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 15:05, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:12, 9 January 2026 (UTC) ** changed case status from checked to relist ** commented ** blocked Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:44, 9 January 2026 (UTC) ** changed case status from reopen to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:46, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:58, 9 January 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:07, 9 January 2026 (UTC) ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:08, 9 January 2026 (UTC) ** tagged Test, Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:32, 9 January 2026 (UTC) ** moved section to Test2 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 22:31, 9 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:43, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:47, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:48, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:25, 12 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:19, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:24, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:25, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:30, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:31, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test2]] (section 09 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:43, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:48, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:50, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 11:31, 28 January 2026 (UTC) ** changed case status from CUrequest to cuhold ** commented * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 17:05, 30 January 2026 (UTC) ** moved/merged case to Test4 == February 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 05:12, 15 February 2026 (UTC) ** commented ** blocked ** tagged Test 2013-02-21 4 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 13:12, 17 February 2026 (UTC) ** changed case status from CUrequest to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Djahidou01]] (full case) 13:20, 17 February 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 14:37, 24 February 2026 (UTC) ** tagged Test2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:41, 27 February 2026 (UTC) ** blocked Test 2013-02-21 ** tagged == March 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 00:50, 3 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 02:38, 3 March 2026 (UTC) ** blocked Test 2013-02-21 5, Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:11, 7 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:14, 7 March 2026 (UTC) ** blocked ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test Account]] (full case) 13:42, 9 March 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test Account]] (section 22 January 2026) 13:47, 9 March 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 13:55, 9 March 2026 (UTC) ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:37, 12 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:32, 13 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:42, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:43, 17 March 2026 (UTC) ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:54, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 ** tagged Test * [[Wikipedia:Sockpuppet investigations/undefined]] (full case) 14:29, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:38, 17 March 2026 (UTC) ** moved/merged case to Test Account Cowboy * [[Wikipedia:Sockpuppet investigations/Test Account Cowboy]] (full case) 14:41, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 14:54, 17 March 2026 (UTC) ** changed case status from closed to clerk ** commented ** blocked Test 2013-02-21 5 ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:01, 17 March 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:13, 17 March 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:22, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 21:03, 20 March 2026 (UTC) ** commented ** blocked Test 2013-02-21 5 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (section 17 March 2026) 14:39, 23 March 2026 (UTC) ** changed case status from new to closed * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:39, 23 March 2026 (UTC) ** Archived case == April 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from clerk to admin ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from closed to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:04, 11 April 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:08, 11 April 2026 (UTC) ** changed case status from admin to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:08, 11 April 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:11, 11 April 2026 (UTC) ** changed case status from admin to clerk kvj2c9mw7yqdckpwtbp4kyxhyyoupkd 737723 737721 2026-04-11T20:11:24Z DatGuy 30264 Logging spihelper edits (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737723 wikitext text/x-wiki == October 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:25, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:37, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:40, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:43, 9 October 2022 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:47, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:50, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 19:38, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:03, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:05, 27 October 2022 (UTC) ** changed case status from checked to hold ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:46, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:52, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 10:03, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == November 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:04, 4 November 2022 (UTC) ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == December 2025 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 05:28, 2 December 2025 (UTC) == January 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 14:55, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 15:05, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:12, 9 January 2026 (UTC) ** changed case status from checked to relist ** commented ** blocked Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:44, 9 January 2026 (UTC) ** changed case status from reopen to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:46, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:58, 9 January 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:07, 9 January 2026 (UTC) ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:08, 9 January 2026 (UTC) ** tagged Test, Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:32, 9 January 2026 (UTC) ** moved section to Test2 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 22:31, 9 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:43, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:47, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:48, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:25, 12 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:19, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:24, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:25, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:30, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:31, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test2]] (section 09 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:43, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:48, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:50, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 11:31, 28 January 2026 (UTC) ** changed case status from CUrequest to cuhold ** commented * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 17:05, 30 January 2026 (UTC) ** moved/merged case to Test4 == February 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 05:12, 15 February 2026 (UTC) ** commented ** blocked ** tagged Test 2013-02-21 4 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 13:12, 17 February 2026 (UTC) ** changed case status from CUrequest to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Djahidou01]] (full case) 13:20, 17 February 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 14:37, 24 February 2026 (UTC) ** tagged Test2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:41, 27 February 2026 (UTC) ** blocked Test 2013-02-21 ** tagged == March 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 00:50, 3 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 02:38, 3 March 2026 (UTC) ** blocked Test 2013-02-21 5, Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:11, 7 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:14, 7 March 2026 (UTC) ** blocked ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test Account]] (full case) 13:42, 9 March 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test Account]] (section 22 January 2026) 13:47, 9 March 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 13:55, 9 March 2026 (UTC) ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:37, 12 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:32, 13 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:42, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:43, 17 March 2026 (UTC) ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:54, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 ** tagged Test * [[Wikipedia:Sockpuppet investigations/undefined]] (full case) 14:29, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:38, 17 March 2026 (UTC) ** moved/merged case to Test Account Cowboy * [[Wikipedia:Sockpuppet investigations/Test Account Cowboy]] (full case) 14:41, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 14:54, 17 March 2026 (UTC) ** changed case status from closed to clerk ** commented ** blocked Test 2013-02-21 5 ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:01, 17 March 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:13, 17 March 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:22, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 21:03, 20 March 2026 (UTC) ** commented ** blocked Test 2013-02-21 5 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (section 17 March 2026) 14:39, 23 March 2026 (UTC) ** changed case status from new to closed * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:39, 23 March 2026 (UTC) ** Archived case == April 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from clerk to admin ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from closed to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:04, 11 April 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:08, 11 April 2026 (UTC) ** changed case status from admin to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:08, 11 April 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:11, 11 April 2026 (UTC) ** changed case status from admin to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:11, 11 April 2026 (UTC) ** Updated archivenotice 6dp5u8b6zoez8qztp3sqqnbb2os8ru6 737725 737723 2026-04-11T20:13:19Z DatGuy 30264 Logging spihelper edits (using [[:w:en:User:DatGuy/spihelper|User:DatGuy/spihelper.js]]) 737725 wikitext text/x-wiki == October 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:25, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:37, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:40, 9 October 2022 (UTC) ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:43, 9 October 2022 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:47, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|ThisIsaTest}}, {{noping|Test4}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:50, 9 October 2022 (UTC) ** changed case status from checked to relist ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 19:38, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** tagged {{noping|Test}}, {{noping|Test4}}, {{noping|ThisIsaTest}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:03, 27 October 2022 (UTC) ** changed case status from checked to relist ** commented ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:05, 27 October 2022 (UTC) ** changed case status from checked to hold ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:46, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21 3}} ** tagged {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 3}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 09:52, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 10:03, 30 October 2022 (UTC) ** blocked {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}}, {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == November 2022 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:04, 4 November 2022 (UTC) ** tagged {{noping|Test 2013-02-21}}, {{noping|Test 2013-02-21 2}} == December 2025 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 05:28, 2 December 2025 (UTC) == January 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 14:55, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 15:05, 9 January 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:12, 9 January 2026 (UTC) ** changed case status from checked to relist ** commented ** blocked Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:44, 9 January 2026 (UTC) ** changed case status from reopen to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:46, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:58, 9 January 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:07, 9 January 2026 (UTC) ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:08, 9 January 2026 (UTC) ** tagged Test, Test 2013-02-21 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 21:32, 9 January 2026 (UTC) ** moved section to Test2 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 22:31, 9 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:43, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:47, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 22:48, 9 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:25, 12 January 2026 (UTC) ** changed case status from relist to closed * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:19, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:22, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:24, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:25, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:30, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]]: used one-click archiver 23:31, 13 January 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test2]] (section 08 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test2]] (section 09 July 2020) 00:02, 14 January 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:43, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:48, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 19:50, 16 January 2026 (UTC) ** moved/merged case to Test4 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 11:31, 28 January 2026 (UTC) ** changed case status from CUrequest to cuhold ** commented * [[Wikipedia:Sockpuppet investigations/Test3]] (full case) 17:05, 30 January 2026 (UTC) ** moved/merged case to Test4 == February 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 05:12, 15 February 2026 (UTC) ** commented ** blocked ** tagged Test 2013-02-21 4 * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 13:12, 17 February 2026 (UTC) ** changed case status from CUrequest to closed ** Archived section * [[Wikipedia:Sockpuppet investigations/Djahidou01]] (full case) 13:20, 17 February 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test2]] (section 07 July 2020) 14:37, 24 February 2026 (UTC) ** tagged Test2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:41, 27 February 2026 (UTC) ** blocked Test 2013-02-21 ** tagged == March 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 00:50, 3 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 02:38, 3 March 2026 (UTC) ** blocked Test 2013-02-21 5, Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:11, 7 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 01:14, 7 March 2026 (UTC) ** blocked ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test Account]] (full case) 13:42, 9 March 2026 (UTC) ** Archived case * [[Wikipedia:Sockpuppet investigations/Test Account]] (section 22 January 2026) 13:47, 9 March 2026 (UTC) ** Archived section * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 13:55, 9 March 2026 (UTC) ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:37, 12 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 16:32, 13 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:42, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:43, 17 March 2026 (UTC) ** tagged Test, Test 2013-02-21 2 * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 12:54, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 ** tagged Test * [[Wikipedia:Sockpuppet investigations/undefined]] (full case) 14:29, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:38, 17 March 2026 (UTC) ** moved/merged case to Test Account Cowboy * [[Wikipedia:Sockpuppet investigations/Test Account Cowboy]] (full case) 14:41, 17 March 2026 (UTC) ** moved/merged case to Test Account Bowling * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 14:54, 17 March 2026 (UTC) ** changed case status from closed to clerk ** commented ** blocked Test 2013-02-21 5 ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:01, 17 March 2026 (UTC) ** tagged * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:13, 17 March 2026 (UTC) * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 15:22, 17 March 2026 (UTC) ** blocked Test 2013-02-21, Test 2013-02-21 2, Test 2013-02-21 3 * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 21:03, 20 March 2026 (UTC) ** commented ** blocked Test 2013-02-21 5 ** tagged Test * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (section 17 March 2026) 14:39, 23 March 2026 (UTC) ** changed case status from new to closed * [[Wikipedia:Sockpuppet investigations/Test Account Bowling]] (full case) 14:39, 23 March 2026 (UTC) ** Archived case == April 2026 == * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from clerk to admin ** commented * [[Wikipedia:Sockpuppet investigations/Test]] (section 08 July 2020) 20:04, 11 April 2026 (UTC) ** changed case status from closed to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:04, 11 April 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:08, 11 April 2026 (UTC) ** changed case status from admin to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:08, 11 April 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:11, 11 April 2026 (UTC) ** changed case status from admin to clerk * [[Wikipedia:Sockpuppet investigations/Test]] (full case) 20:11, 11 April 2026 (UTC) ** Updated archivenotice * [[Wikipedia:Sockpuppet investigations/Test]] (section 09 July 2020) 20:13, 11 April 2026 (UTC) ** changed case status from admin to clerk 367e7ufponpfz9uwvafspui39hlz76o User:Novem Linguae/XfD log 2 147994 737682 691166 2026-04-11T19:56:17Z Novem Linguae 49714 Logging [[Wikipedia:Articles for deletion/Mainspace (18th nomination)|AfD nomination]] of [[:Mainspace]]. 737682 wikitext text/x-wiki This is a log of all [[WP:XFD|deletion discussion]] nominations made by this user using [[WP:TW|Twinkle]]'s XfD module. If you no longer wish to keep this log, you can turn it off using the [[Wikipedia:Twinkle/Preferences|preferences panel]], and nominate this page for speedy deletion under [[WP:CSD#U1|CSD U1]]. This log does not track XfD-related deletions made using Twinkle. === December 2022 === # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:05, 22 December 2022 (UTC) #* '''Reason''': Test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:23, 22 December 2022 (UTC) #* '''Reason''': test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:26, 22 December 2022 (UTC) #* '''Reason''': Test === April 2023 === # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:03, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[* [[:Category:Ursa Major Moving Group]] to [[:Category:Ursa Major moving group]] – C2D: Capitalization change [[User:Novem Linguae|Novem Linguae]] ([[User talk:Novem Linguae|talk]]) 09:08, 11 April 2023 (UTC)|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:08, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[undefined#Category:Ursa Major Moving Group|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:10, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[Wikipedia:Categories for discussion/Speedy#Current requests|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:16, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:17, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:22, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (9th nomination)|nominated]] at [[WP:AFD|AfD]] 09:26, 11 April 2023 (UTC) #* '''Reason''': Test # [[:Test90237320]]: [[Wikipedia:Articles for deletion/Test90237320|nominated]] at [[WP:AFD|AfD]] 10:59, 20 April 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace28097]] 01:28, 28 April 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace097097]] 01:31, 28 April 2023 (UTC) #* '''Reason''': test === May 2023 === # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:15, 20 May 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:16, 20 May 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:17, 20 May 2023 (UTC) #* '''Reason''': testtt === June 2023 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (10th nomination)|nominated]] at [[WP:AFD|AfD]] 00:26, 21 June 2023 (UTC) #* '''Reason''': Deletion sort test === September 2025 === # [[:Wikipedia:NovemTest1]]: [[Wikipedia:Miscellany for deletion/Wikipedia:NovemTest1|nominated]] at [[WP:MFD|MfD]] 20:30, 10 September 2025 (UTC) #* '''Reason''': Testing XFDcloser. === November 2025 === # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:55, 20 November 2025 (UTC) #* '''Reason''': Test # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:57, 20 November 2025 (UTC) #* '''Reason''': Test 2 === December 2025 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (17th nomination)|nominated]] at [[WP:AFD|AfD]] 06:01, 13 December 2025 (UTC) #* '''Reason''': Test === April 2026 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (18th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test mxsvg0xlfs1hpknm1xghy9hebfaid3i 737686 737682 2026-04-11T19:56:43Z Novem Linguae 49714 Logging [[Wikipedia:Articles for deletion/Mainspace (19th nomination)|AfD nomination]] of [[:Mainspace]]. 737686 wikitext text/x-wiki This is a log of all [[WP:XFD|deletion discussion]] nominations made by this user using [[WP:TW|Twinkle]]'s XfD module. If you no longer wish to keep this log, you can turn it off using the [[Wikipedia:Twinkle/Preferences|preferences panel]], and nominate this page for speedy deletion under [[WP:CSD#U1|CSD U1]]. This log does not track XfD-related deletions made using Twinkle. === December 2022 === # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:05, 22 December 2022 (UTC) #* '''Reason''': Test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:23, 22 December 2022 (UTC) #* '''Reason''': test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:26, 22 December 2022 (UTC) #* '''Reason''': Test === April 2023 === # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:03, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[* [[:Category:Ursa Major Moving Group]] to [[:Category:Ursa Major moving group]] – C2D: Capitalization change [[User:Novem Linguae|Novem Linguae]] ([[User talk:Novem Linguae|talk]]) 09:08, 11 April 2023 (UTC)|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:08, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[undefined#Category:Ursa Major Moving Group|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:10, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[Wikipedia:Categories for discussion/Speedy#Current requests|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:16, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:17, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:22, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (9th nomination)|nominated]] at [[WP:AFD|AfD]] 09:26, 11 April 2023 (UTC) #* '''Reason''': Test # [[:Test90237320]]: [[Wikipedia:Articles for deletion/Test90237320|nominated]] at [[WP:AFD|AfD]] 10:59, 20 April 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace28097]] 01:28, 28 April 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace097097]] 01:31, 28 April 2023 (UTC) #* '''Reason''': test === May 2023 === # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:15, 20 May 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:16, 20 May 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:17, 20 May 2023 (UTC) #* '''Reason''': testtt === June 2023 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (10th nomination)|nominated]] at [[WP:AFD|AfD]] 00:26, 21 June 2023 (UTC) #* '''Reason''': Deletion sort test === September 2025 === # [[:Wikipedia:NovemTest1]]: [[Wikipedia:Miscellany for deletion/Wikipedia:NovemTest1|nominated]] at [[WP:MFD|MfD]] 20:30, 10 September 2025 (UTC) #* '''Reason''': Testing XFDcloser. === November 2025 === # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:55, 20 November 2025 (UTC) #* '''Reason''': Test # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:57, 20 November 2025 (UTC) #* '''Reason''': Test 2 === December 2025 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (17th nomination)|nominated]] at [[WP:AFD|AfD]] 06:01, 13 December 2025 (UTC) #* '''Reason''': Test === April 2026 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (18th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (19th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test 2 97m9d0k3mqtolw1m491ykx2m40fqnc7 737690 737686 2026-04-11T19:57:42Z Novem Linguae 49714 Logging [[Wikipedia:Articles for deletion/NovemTest100|AfD nomination]] of [[:NovemTest100]]. 737690 wikitext text/x-wiki This is a log of all [[WP:XFD|deletion discussion]] nominations made by this user using [[WP:TW|Twinkle]]'s XfD module. If you no longer wish to keep this log, you can turn it off using the [[Wikipedia:Twinkle/Preferences|preferences panel]], and nominate this page for speedy deletion under [[WP:CSD#U1|CSD U1]]. This log does not track XfD-related deletions made using Twinkle. === December 2022 === # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:05, 22 December 2022 (UTC) #* '''Reason''': Test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:23, 22 December 2022 (UTC) #* '''Reason''': test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:26, 22 December 2022 (UTC) #* '''Reason''': Test === April 2023 === # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:03, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[* [[:Category:Ursa Major Moving Group]] to [[:Category:Ursa Major moving group]] – C2D: Capitalization change [[User:Novem Linguae|Novem Linguae]] ([[User talk:Novem Linguae|talk]]) 09:08, 11 April 2023 (UTC)|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:08, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[undefined#Category:Ursa Major Moving Group|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:10, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[Wikipedia:Categories for discussion/Speedy#Current requests|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:16, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:17, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:22, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (9th nomination)|nominated]] at [[WP:AFD|AfD]] 09:26, 11 April 2023 (UTC) #* '''Reason''': Test # [[:Test90237320]]: [[Wikipedia:Articles for deletion/Test90237320|nominated]] at [[WP:AFD|AfD]] 10:59, 20 April 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace28097]] 01:28, 28 April 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace097097]] 01:31, 28 April 2023 (UTC) #* '''Reason''': test === May 2023 === # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:15, 20 May 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:16, 20 May 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:17, 20 May 2023 (UTC) #* '''Reason''': testtt === June 2023 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (10th nomination)|nominated]] at [[WP:AFD|AfD]] 00:26, 21 June 2023 (UTC) #* '''Reason''': Deletion sort test === September 2025 === # [[:Wikipedia:NovemTest1]]: [[Wikipedia:Miscellany for deletion/Wikipedia:NovemTest1|nominated]] at [[WP:MFD|MfD]] 20:30, 10 September 2025 (UTC) #* '''Reason''': Testing XFDcloser. === November 2025 === # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:55, 20 November 2025 (UTC) #* '''Reason''': Test # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:57, 20 November 2025 (UTC) #* '''Reason''': Test 2 === December 2025 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (17th nomination)|nominated]] at [[WP:AFD|AfD]] 06:01, 13 December 2025 (UTC) #* '''Reason''': Test === April 2026 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (18th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (19th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest100]]: [[Wikipedia:Articles for deletion/NovemTest100|nominated]] at [[WP:AFD|AfD]] 19:57, 11 April 2026 (UTC) #* '''Reason''': Test e68yg5bxsoj116weqvl2gre1bb0an7w 737696 737690 2026-04-11T19:58:29Z Novem Linguae 49714 Logging [[Wikipedia:Articles for deletion/NovemTest101|AfD nomination]] of [[:NovemTest101]]. 737696 wikitext text/x-wiki This is a log of all [[WP:XFD|deletion discussion]] nominations made by this user using [[WP:TW|Twinkle]]'s XfD module. If you no longer wish to keep this log, you can turn it off using the [[Wikipedia:Twinkle/Preferences|preferences panel]], and nominate this page for speedy deletion under [[WP:CSD#U1|CSD U1]]. This log does not track XfD-related deletions made using Twinkle. === December 2022 === # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:05, 22 December 2022 (UTC) #* '''Reason''': Test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:23, 22 December 2022 (UTC) #* '''Reason''': test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:26, 22 December 2022 (UTC) #* '''Reason''': Test === April 2023 === # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:03, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[* [[:Category:Ursa Major Moving Group]] to [[:Category:Ursa Major moving group]] – C2D: Capitalization change [[User:Novem Linguae|Novem Linguae]] ([[User talk:Novem Linguae|talk]]) 09:08, 11 April 2023 (UTC)|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:08, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[undefined#Category:Ursa Major Moving Group|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:10, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[Wikipedia:Categories for discussion/Speedy#Current requests|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:16, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:17, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:22, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (9th nomination)|nominated]] at [[WP:AFD|AfD]] 09:26, 11 April 2023 (UTC) #* '''Reason''': Test # [[:Test90237320]]: [[Wikipedia:Articles for deletion/Test90237320|nominated]] at [[WP:AFD|AfD]] 10:59, 20 April 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace28097]] 01:28, 28 April 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace097097]] 01:31, 28 April 2023 (UTC) #* '''Reason''': test === May 2023 === # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:15, 20 May 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:16, 20 May 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:17, 20 May 2023 (UTC) #* '''Reason''': testtt === June 2023 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (10th nomination)|nominated]] at [[WP:AFD|AfD]] 00:26, 21 June 2023 (UTC) #* '''Reason''': Deletion sort test === September 2025 === # [[:Wikipedia:NovemTest1]]: [[Wikipedia:Miscellany for deletion/Wikipedia:NovemTest1|nominated]] at [[WP:MFD|MfD]] 20:30, 10 September 2025 (UTC) #* '''Reason''': Testing XFDcloser. === November 2025 === # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:55, 20 November 2025 (UTC) #* '''Reason''': Test # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:57, 20 November 2025 (UTC) #* '''Reason''': Test 2 === December 2025 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (17th nomination)|nominated]] at [[WP:AFD|AfD]] 06:01, 13 December 2025 (UTC) #* '''Reason''': Test === April 2026 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (18th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (19th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest100]]: [[Wikipedia:Articles for deletion/NovemTest100|nominated]] at [[WP:AFD|AfD]] 19:57, 11 April 2026 (UTC) #* '''Reason''': Test # [[:NovemTest101]]: [[Wikipedia:Articles for deletion/NovemTest101|nominated]] at [[WP:AFD|AfD]] 19:58, 11 April 2026 (UTC) #* '''Reason''': Test 2 0055pc259nldqg59q95zvb03mr07mkp 737701 737696 2026-04-11T19:59:03Z Novem Linguae 49714 Logging [[Wikipedia:Articles for deletion/NovemTest102|AfD nomination]] of [[:NovemTest102]]. 737701 wikitext text/x-wiki This is a log of all [[WP:XFD|deletion discussion]] nominations made by this user using [[WP:TW|Twinkle]]'s XfD module. If you no longer wish to keep this log, you can turn it off using the [[Wikipedia:Twinkle/Preferences|preferences panel]], and nominate this page for speedy deletion under [[WP:CSD#U1|CSD U1]]. This log does not track XfD-related deletions made using Twinkle. === December 2022 === # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:05, 22 December 2022 (UTC) #* '''Reason''': Test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:23, 22 December 2022 (UTC) #* '''Reason''': test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:26, 22 December 2022 (UTC) #* '''Reason''': Test === April 2023 === # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:03, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[* [[:Category:Ursa Major Moving Group]] to [[:Category:Ursa Major moving group]] – C2D: Capitalization change [[User:Novem Linguae|Novem Linguae]] ([[User talk:Novem Linguae|talk]]) 09:08, 11 April 2023 (UTC)|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:08, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[undefined#Category:Ursa Major Moving Group|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:10, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[Wikipedia:Categories for discussion/Speedy#Current requests|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:16, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:17, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:22, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (9th nomination)|nominated]] at [[WP:AFD|AfD]] 09:26, 11 April 2023 (UTC) #* '''Reason''': Test # [[:Test90237320]]: [[Wikipedia:Articles for deletion/Test90237320|nominated]] at [[WP:AFD|AfD]] 10:59, 20 April 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace28097]] 01:28, 28 April 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace097097]] 01:31, 28 April 2023 (UTC) #* '''Reason''': test === May 2023 === # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:15, 20 May 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:16, 20 May 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:17, 20 May 2023 (UTC) #* '''Reason''': testtt === June 2023 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (10th nomination)|nominated]] at [[WP:AFD|AfD]] 00:26, 21 June 2023 (UTC) #* '''Reason''': Deletion sort test === September 2025 === # [[:Wikipedia:NovemTest1]]: [[Wikipedia:Miscellany for deletion/Wikipedia:NovemTest1|nominated]] at [[WP:MFD|MfD]] 20:30, 10 September 2025 (UTC) #* '''Reason''': Testing XFDcloser. === November 2025 === # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:55, 20 November 2025 (UTC) #* '''Reason''': Test # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:57, 20 November 2025 (UTC) #* '''Reason''': Test 2 === December 2025 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (17th nomination)|nominated]] at [[WP:AFD|AfD]] 06:01, 13 December 2025 (UTC) #* '''Reason''': Test === April 2026 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (18th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (19th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest100]]: [[Wikipedia:Articles for deletion/NovemTest100|nominated]] at [[WP:AFD|AfD]] 19:57, 11 April 2026 (UTC) #* '''Reason''': Test # [[:NovemTest101]]: [[Wikipedia:Articles for deletion/NovemTest101|nominated]] at [[WP:AFD|AfD]] 19:58, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest102]]: [[Wikipedia:Articles for deletion/NovemTest102|nominated]] at [[WP:AFD|AfD]] 19:59, 11 April 2026 (UTC) #* '''Reason''': redirect k59pqs2ij6lrcbxdailgd1lytqlefzy 737705 737701 2026-04-11T19:59:55Z Novem Linguae 49714 Logging [[Wikipedia:Articles for deletion/NovemTest103|AfD nomination]] of [[:NovemTest103]]. 737705 wikitext text/x-wiki This is a log of all [[WP:XFD|deletion discussion]] nominations made by this user using [[WP:TW|Twinkle]]'s XfD module. If you no longer wish to keep this log, you can turn it off using the [[Wikipedia:Twinkle/Preferences|preferences panel]], and nominate this page for speedy deletion under [[WP:CSD#U1|CSD U1]]. This log does not track XfD-related deletions made using Twinkle. === December 2022 === # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:05, 22 December 2022 (UTC) #* '''Reason''': Test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:23, 22 December 2022 (UTC) #* '''Reason''': test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:26, 22 December 2022 (UTC) #* '''Reason''': Test === April 2023 === # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:03, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[* [[:Category:Ursa Major Moving Group]] to [[:Category:Ursa Major moving group]] – C2D: Capitalization change [[User:Novem Linguae|Novem Linguae]] ([[User talk:Novem Linguae|talk]]) 09:08, 11 April 2023 (UTC)|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:08, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[undefined#Category:Ursa Major Moving Group|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:10, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[Wikipedia:Categories for discussion/Speedy#Current requests|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:16, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:17, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:22, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (9th nomination)|nominated]] at [[WP:AFD|AfD]] 09:26, 11 April 2023 (UTC) #* '''Reason''': Test # [[:Test90237320]]: [[Wikipedia:Articles for deletion/Test90237320|nominated]] at [[WP:AFD|AfD]] 10:59, 20 April 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace28097]] 01:28, 28 April 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace097097]] 01:31, 28 April 2023 (UTC) #* '''Reason''': test === May 2023 === # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:15, 20 May 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:16, 20 May 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:17, 20 May 2023 (UTC) #* '''Reason''': testtt === June 2023 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (10th nomination)|nominated]] at [[WP:AFD|AfD]] 00:26, 21 June 2023 (UTC) #* '''Reason''': Deletion sort test === September 2025 === # [[:Wikipedia:NovemTest1]]: [[Wikipedia:Miscellany for deletion/Wikipedia:NovemTest1|nominated]] at [[WP:MFD|MfD]] 20:30, 10 September 2025 (UTC) #* '''Reason''': Testing XFDcloser. === November 2025 === # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:55, 20 November 2025 (UTC) #* '''Reason''': Test # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:57, 20 November 2025 (UTC) #* '''Reason''': Test 2 === December 2025 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (17th nomination)|nominated]] at [[WP:AFD|AfD]] 06:01, 13 December 2025 (UTC) #* '''Reason''': Test === April 2026 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (18th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (19th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest100]]: [[Wikipedia:Articles for deletion/NovemTest100|nominated]] at [[WP:AFD|AfD]] 19:57, 11 April 2026 (UTC) #* '''Reason''': Test # [[:NovemTest101]]: [[Wikipedia:Articles for deletion/NovemTest101|nominated]] at [[WP:AFD|AfD]] 19:58, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest102]]: [[Wikipedia:Articles for deletion/NovemTest102|nominated]] at [[WP:AFD|AfD]] 19:59, 11 April 2026 (UTC) #* '''Reason''': redirect # [[:NovemTest103]]: [[Wikipedia:Articles for deletion/NovemTest103|nominated]] at [[WP:AFD|AfD]] 19:59, 11 April 2026 (UTC) #* '''Reason''': draftify 50ghr064v22i9iy6lcvzuhwvbfju89j 737735 737705 2026-04-12T09:15:39Z Novem Linguae 49714 Logging [[Wikipedia:Articles for deletion/Mainspace (20th nomination)|AfD nomination]] of [[:Mainspace]]. 737735 wikitext text/x-wiki This is a log of all [[WP:XFD|deletion discussion]] nominations made by this user using [[WP:TW|Twinkle]]'s XfD module. If you no longer wish to keep this log, you can turn it off using the [[Wikipedia:Twinkle/Preferences|preferences panel]], and nominate this page for speedy deletion under [[WP:CSD#U1|CSD U1]]. This log does not track XfD-related deletions made using Twinkle. === December 2022 === # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:05, 22 December 2022 (UTC) #* '''Reason''': Test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:23, 22 December 2022 (UTC) #* '''Reason''': test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:26, 22 December 2022 (UTC) #* '''Reason''': Test === April 2023 === # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:03, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[* [[:Category:Ursa Major Moving Group]] to [[:Category:Ursa Major moving group]] – C2D: Capitalization change [[User:Novem Linguae|Novem Linguae]] ([[User talk:Novem Linguae|talk]]) 09:08, 11 April 2023 (UTC)|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:08, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[undefined#Category:Ursa Major Moving Group|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:10, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[Wikipedia:Categories for discussion/Speedy#Current requests|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:16, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:17, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:22, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (9th nomination)|nominated]] at [[WP:AFD|AfD]] 09:26, 11 April 2023 (UTC) #* '''Reason''': Test # [[:Test90237320]]: [[Wikipedia:Articles for deletion/Test90237320|nominated]] at [[WP:AFD|AfD]] 10:59, 20 April 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace28097]] 01:28, 28 April 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace097097]] 01:31, 28 April 2023 (UTC) #* '''Reason''': test === May 2023 === # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:15, 20 May 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:16, 20 May 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:17, 20 May 2023 (UTC) #* '''Reason''': testtt === June 2023 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (10th nomination)|nominated]] at [[WP:AFD|AfD]] 00:26, 21 June 2023 (UTC) #* '''Reason''': Deletion sort test === September 2025 === # [[:Wikipedia:NovemTest1]]: [[Wikipedia:Miscellany for deletion/Wikipedia:NovemTest1|nominated]] at [[WP:MFD|MfD]] 20:30, 10 September 2025 (UTC) #* '''Reason''': Testing XFDcloser. === November 2025 === # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:55, 20 November 2025 (UTC) #* '''Reason''': Test # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:57, 20 November 2025 (UTC) #* '''Reason''': Test 2 === December 2025 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (17th nomination)|nominated]] at [[WP:AFD|AfD]] 06:01, 13 December 2025 (UTC) #* '''Reason''': Test === April 2026 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (18th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (19th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest100]]: [[Wikipedia:Articles for deletion/NovemTest100|nominated]] at [[WP:AFD|AfD]] 19:57, 11 April 2026 (UTC) #* '''Reason''': Test # [[:NovemTest101]]: [[Wikipedia:Articles for deletion/NovemTest101|nominated]] at [[WP:AFD|AfD]] 19:58, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest102]]: [[Wikipedia:Articles for deletion/NovemTest102|nominated]] at [[WP:AFD|AfD]] 19:59, 11 April 2026 (UTC) #* '''Reason''': redirect # [[:NovemTest103]]: [[Wikipedia:Articles for deletion/NovemTest103|nominated]] at [[WP:AFD|AfD]] 19:59, 11 April 2026 (UTC) #* '''Reason''': draftify # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (20th nomination)|nominated]] at [[WP:AFD|AfD]] 09:15, 12 April 2026 (UTC) o2lvlkiaa6h7sb4s0hs4knj92mxnic4 737740 737735 2026-04-12T09:17:08Z Novem Linguae 49714 Logging [[Wikipedia:Articles for deletion/Mainspace (21th nomination)|AfD nomination]] of [[:Mainspace]]. 737740 wikitext text/x-wiki This is a log of all [[WP:XFD|deletion discussion]] nominations made by this user using [[WP:TW|Twinkle]]'s XfD module. If you no longer wish to keep this log, you can turn it off using the [[Wikipedia:Twinkle/Preferences|preferences panel]], and nominate this page for speedy deletion under [[WP:CSD#U1|CSD U1]]. This log does not track XfD-related deletions made using Twinkle. === December 2022 === # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:05, 22 December 2022 (UTC) #* '''Reason''': Test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:23, 22 December 2022 (UTC) #* '''Reason''': test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:26, 22 December 2022 (UTC) #* '''Reason''': Test === April 2023 === # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:03, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[* [[:Category:Ursa Major Moving Group]] to [[:Category:Ursa Major moving group]] – C2D: Capitalization change [[User:Novem Linguae|Novem Linguae]] ([[User talk:Novem Linguae|talk]]) 09:08, 11 April 2023 (UTC)|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:08, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[undefined#Category:Ursa Major Moving Group|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:10, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[Wikipedia:Categories for discussion/Speedy#Current requests|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:16, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:17, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:22, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (9th nomination)|nominated]] at [[WP:AFD|AfD]] 09:26, 11 April 2023 (UTC) #* '''Reason''': Test # [[:Test90237320]]: [[Wikipedia:Articles for deletion/Test90237320|nominated]] at [[WP:AFD|AfD]] 10:59, 20 April 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace28097]] 01:28, 28 April 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace097097]] 01:31, 28 April 2023 (UTC) #* '''Reason''': test === May 2023 === # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:15, 20 May 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:16, 20 May 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:17, 20 May 2023 (UTC) #* '''Reason''': testtt === June 2023 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (10th nomination)|nominated]] at [[WP:AFD|AfD]] 00:26, 21 June 2023 (UTC) #* '''Reason''': Deletion sort test === September 2025 === # [[:Wikipedia:NovemTest1]]: [[Wikipedia:Miscellany for deletion/Wikipedia:NovemTest1|nominated]] at [[WP:MFD|MfD]] 20:30, 10 September 2025 (UTC) #* '''Reason''': Testing XFDcloser. === November 2025 === # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:55, 20 November 2025 (UTC) #* '''Reason''': Test # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:57, 20 November 2025 (UTC) #* '''Reason''': Test 2 === December 2025 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (17th nomination)|nominated]] at [[WP:AFD|AfD]] 06:01, 13 December 2025 (UTC) #* '''Reason''': Test === April 2026 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (18th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (19th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest100]]: [[Wikipedia:Articles for deletion/NovemTest100|nominated]] at [[WP:AFD|AfD]] 19:57, 11 April 2026 (UTC) #* '''Reason''': Test # [[:NovemTest101]]: [[Wikipedia:Articles for deletion/NovemTest101|nominated]] at [[WP:AFD|AfD]] 19:58, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest102]]: [[Wikipedia:Articles for deletion/NovemTest102|nominated]] at [[WP:AFD|AfD]] 19:59, 11 April 2026 (UTC) #* '''Reason''': redirect # [[:NovemTest103]]: [[Wikipedia:Articles for deletion/NovemTest103|nominated]] at [[WP:AFD|AfD]] 19:59, 11 April 2026 (UTC) #* '''Reason''': draftify # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (20th nomination)|nominated]] at [[WP:AFD|AfD]] 09:15, 12 April 2026 (UTC) # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (21th nomination)|nominated]] at [[WP:AFD|AfD]] 09:17, 12 April 2026 (UTC) sl05xcxvk04kt7a86fm0ij4yz8ew3z3 737743 737740 2026-04-12T10:05:37Z Novem Linguae 49714 Logging [[Wikipedia:Articles for deletion/Mainspace (22th nomination)|AfD nomination]] of [[:Mainspace]]. 737743 wikitext text/x-wiki This is a log of all [[WP:XFD|deletion discussion]] nominations made by this user using [[WP:TW|Twinkle]]'s XfD module. If you no longer wish to keep this log, you can turn it off using the [[Wikipedia:Twinkle/Preferences|preferences panel]], and nominate this page for speedy deletion under [[WP:CSD#U1|CSD U1]]. This log does not track XfD-related deletions made using Twinkle. === December 2022 === # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:05, 22 December 2022 (UTC) #* '''Reason''': Test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:23, 22 December 2022 (UTC) #* '''Reason''': test # [[:Template:Test]]: [[Wikipedia:Templates for discussion/Log/2022 December 22#Template:Test|nominated]] at [[WP:TFD|TfD]] 20:26, 22 December 2022 (UTC) #* '''Reason''': Test === April 2023 === # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:03, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[* [[:Category:Ursa Major Moving Group]] to [[:Category:Ursa Major moving group]] – C2D: Capitalization change [[User:Novem Linguae|Novem Linguae]] ([[User talk:Novem Linguae|talk]]) 09:08, 11 April 2023 (UTC)|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:08, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[undefined#Category:Ursa Major Moving Group|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:10, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: [[Wikipedia:Categories for discussion/Speedy#Current requests|nominated]] at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:16, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:17, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Category:Ursa Major Moving Group]]: nominated at [[WP:CFDS|CfDS]] (C2D); New name: [[:Category:Ursa Major moving group]] 09:22, 11 April 2023 (UTC) #* '''Reason''': Capitalization change # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (9th nomination)|nominated]] at [[WP:AFD|AfD]] 09:26, 11 April 2023 (UTC) #* '''Reason''': Test # [[:Test90237320]]: [[Wikipedia:Articles for deletion/Test90237320|nominated]] at [[WP:AFD|AfD]] 10:59, 20 April 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace28097]] 01:28, 28 April 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]]; New name: [[:Mainspace097097]] 01:31, 28 April 2023 (UTC) #* '''Reason''': test === May 2023 === # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:15, 20 May 2023 (UTC) #* '''Reason''': Test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:16, 20 May 2023 (UTC) #* '''Reason''': test # [[:Mainspace]]: nominated at [[WP:RM|RM]] (technical); New name: [[:Mainspace2]] 09:17, 20 May 2023 (UTC) #* '''Reason''': testtt === June 2023 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (10th nomination)|nominated]] at [[WP:AFD|AfD]] 00:26, 21 June 2023 (UTC) #* '''Reason''': Deletion sort test === September 2025 === # [[:Wikipedia:NovemTest1]]: [[Wikipedia:Miscellany for deletion/Wikipedia:NovemTest1|nominated]] at [[WP:MFD|MfD]] 20:30, 10 September 2025 (UTC) #* '''Reason''': Testing XFDcloser. === November 2025 === # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:55, 20 November 2025 (UTC) #* '''Reason''': Test # [[:File:Test file.png]]: ([{{fullurl:Special:Log|page=File:Test_file.png}} log]) [[Wikipedia:Files for discussion/2025 November 20#File:Test file.png|nominated]] at [[WP:FFD|FfD]] 19:57, 20 November 2025 (UTC) #* '''Reason''': Test 2 === December 2025 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (17th nomination)|nominated]] at [[WP:AFD|AfD]] 06:01, 13 December 2025 (UTC) #* '''Reason''': Test === April 2026 === # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (18th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (19th nomination)|nominated]] at [[WP:AFD|AfD]] 19:56, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest100]]: [[Wikipedia:Articles for deletion/NovemTest100|nominated]] at [[WP:AFD|AfD]] 19:57, 11 April 2026 (UTC) #* '''Reason''': Test # [[:NovemTest101]]: [[Wikipedia:Articles for deletion/NovemTest101|nominated]] at [[WP:AFD|AfD]] 19:58, 11 April 2026 (UTC) #* '''Reason''': Test 2 # [[:NovemTest102]]: [[Wikipedia:Articles for deletion/NovemTest102|nominated]] at [[WP:AFD|AfD]] 19:59, 11 April 2026 (UTC) #* '''Reason''': redirect # [[:NovemTest103]]: [[Wikipedia:Articles for deletion/NovemTest103|nominated]] at [[WP:AFD|AfD]] 19:59, 11 April 2026 (UTC) #* '''Reason''': draftify # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (20th nomination)|nominated]] at [[WP:AFD|AfD]] 09:15, 12 April 2026 (UTC) # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (21th nomination)|nominated]] at [[WP:AFD|AfD]] 09:17, 12 April 2026 (UTC) # [[:Mainspace]]: [[Wikipedia:Articles for deletion/Mainspace (22th nomination)|nominated]] at [[WP:AFD|AfD]] 10:05, 12 April 2026 (UTC) my1f7sl0htnldj5cfwf4bdc5xjl2qma Template:R protected 10 148819 737632 558116 2026-04-10T21:42:21Z en>Toadspike 0 Adding {{pp-template}} 737632 wikitext text/x-wiki <noinclude>{{pp-template|small=yes}}</noinclude><includeonly>{{#switch:{{{protlevel|{{#invoke:effective protection level|edit|1={{{title|{{FULLPAGENAME}}}}}}}}}} |sysop={{R protected/full|nocat={{{nocat|}}}}}{{pp-protected|small=yes|category={{#ifeq:{{{nocat|}}}|true|no|yes}}}} |templateeditor={{R protected/template|nocat={{{nocat|}}}}}{{pp-template|small=yes|category={{#ifeq:{{{nocat|}}}|true|no|yes}}}} |extendedconfirmed={{R protected/excon|nocat={{{nocat|}}}}}{{pp-extended|small=yes|category={{#ifeq:{{{nocat|}}}|true|no|yes}}}} |autoconfirmed={{R protected/semi|nocat={{{nocat|}}}}}{{pp-semi|small=yes|category={{#ifeq:{{{nocat|}}}|true|no|yes}}}} |#default=<!-- Show nothing -->{{#ifeq:{{{nocat|}}}|true||[[Category:Wikipedia pages with incorrect protection templates]]}} }}</includeonly><noinclude> {{documentation}} </noinclude> e03wg7rf043et6g51gjxh8u9x8ia1li 737633 737632 2026-04-11T19:54:08Z Novem Linguae 49714 1 revision imported from [[:en:Template:R_protected]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737632 wikitext text/x-wiki <noinclude>{{pp-template|small=yes}}</noinclude><includeonly>{{#switch:{{{protlevel|{{#invoke:effective protection level|edit|1={{{title|{{FULLPAGENAME}}}}}}}}}} |sysop={{R protected/full|nocat={{{nocat|}}}}}{{pp-protected|small=yes|category={{#ifeq:{{{nocat|}}}|true|no|yes}}}} |templateeditor={{R protected/template|nocat={{{nocat|}}}}}{{pp-template|small=yes|category={{#ifeq:{{{nocat|}}}|true|no|yes}}}} |extendedconfirmed={{R protected/excon|nocat={{{nocat|}}}}}{{pp-extended|small=yes|category={{#ifeq:{{{nocat|}}}|true|no|yes}}}} |autoconfirmed={{R protected/semi|nocat={{{nocat|}}}}}{{pp-semi|small=yes|category={{#ifeq:{{{nocat|}}}|true|no|yes}}}} |#default=<!-- Show nothing -->{{#ifeq:{{{nocat|}}}|true||[[Category:Wikipedia pages with incorrect protection templates]]}} }}</includeonly><noinclude> {{documentation}} </noinclude> e03wg7rf043et6g51gjxh8u9x8ia1li Translate test/ja 0 150494 737604 721846 2026-04-11T16:15:33Z FuzzyBot 18251 Updating to match new version of source page 737604 wikitext text/x-wiki <languages/> {{formatnum|10}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|メディアウィキドキュメント]] これは'''MediaWikiに関する技術マニュアルです'''. 開発者とシステム管理者のためのインストール、管理、開発に関する情報を掲載しています。 このマニュアルはエンドユーザー向けのものではありません。 ソフトウェアの使い方については[[Special:MyLanguage/Help:Contents|MediaWiki Handbook]]をご覧ください。 <span id="Main_sections"></span> ==主要なセクション== {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <span id="For_system_administrators"></span> === システム管理者へ === ; [[Special:MyLanguage/Manual:Installation guide|インストール]] : 新しいMediaWikiインストールのガイド : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|インストール]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|初期設定]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|設定のアルファベット順リスト]] | [[Special:MyLanguage/Manual:Configuration settings|機能によってリストされた設定]] ; {{ll|Manual:System administration|nsp=0}} : ウィキの管理作業のガイド : [[Special:MyLanguage/Manual:Backing up a wiki|バックアップ]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : MediaWikiをアップグレードするガイド ''詳細は{{ll|Sysadmin hub}}'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <span id="For_developers"></span> === 開発者へ === ; アーキテクチャ : MediaWikiのソースコードの重要な部分の概要。 : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygenで生成された文書] ; {{ll|Manual:Database layout|nsp=0}} : MediaWikiが使用するデータベースアーキテクチャについての詳細 : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} エンジン ; {{ll|Manual:Developing extensions|nsp=0}} : 新しいMediaWiki拡張機能を作成する方法の概要 : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|タグ]] | [[Special:MyLanguage/Manual:Special pages|特別ページ]] | {{ll|Manual:Skins|nsp=0}} ; ウェブアクセス : 使用可能な[[w:Query string|クエリ文字列]]の詳細 : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''詳細は{{ll|Developer hub}}'' |} <span id="Others"></span> === その他 === ; [[Special:MyLanguage/Manual:FAQ|MediaWiki FAQ]] : メディアウィキに関するよくある質問 <span id="Browsing_the_manual"></span> == マニュアルを検索する == 文書を閲覧する方法は複数あります 上記の節である特定の話題を見つけて困惑する読者たちは、以下のブラウジング方法を参考 に する こと が できます。 * [[Special:Allpages/Manual:]] - 自動生成されたマニュアルのすべてのページのリスト:名前空間 * [[:Category:Manual]] - 最上級のマニュアルカテゴリー <span id="Improving_the_manual"></span> == マニュアルを改善する == * このマニュアルにはまだ穴がたくさんあります! 詳細は[[Special:MyLanguage/Manual:Contents/To do|'to do' page]]を参照。 *http://meta.wikimedia.orgにはまだ移行する必要があるコンテンツがあります。 このドキュメントでは特定の問題に関する情報が見つからない場合は [[meta:MediaWiki_FAQ]]と [[meta:Help:Contents]] をご覧ください。 * '''[[Project:Manual]]'''はマニュアルの発展について議論する場所です。 * 以下も参照 [[Project:Current issues]]. <span id="MediaWiki_Virtual_Library"></span> == MediaWiki仮想図書館 == * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)'''にMediaWikiについてのガイドがあります。 [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] j587c0dtx9a2wg969tw4layya7gkjjj 737610 737604 2026-04-11T16:20:05Z FuzzyBot 18251 Updating to match new version of source page 737610 wikitext text/x-wiki <languages/> {{formatnum|10|{{SUBPAGENAME}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|メディアウィキドキュメント]] これは'''MediaWikiに関する技術マニュアルです'''. 開発者とシステム管理者のためのインストール、管理、開発に関する情報を掲載しています。 このマニュアルはエンドユーザー向けのものではありません。 ソフトウェアの使い方については[[Special:MyLanguage/Help:Contents|MediaWiki Handbook]]をご覧ください。 <span id="Main_sections"></span> ==主要なセクション== {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <span id="For_system_administrators"></span> === システム管理者へ === ; [[Special:MyLanguage/Manual:Installation guide|インストール]] : 新しいMediaWikiインストールのガイド : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|インストール]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|初期設定]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|設定のアルファベット順リスト]] | [[Special:MyLanguage/Manual:Configuration settings|機能によってリストされた設定]] ; {{ll|Manual:System administration|nsp=0}} : ウィキの管理作業のガイド : [[Special:MyLanguage/Manual:Backing up a wiki|バックアップ]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : MediaWikiをアップグレードするガイド ''詳細は{{ll|Sysadmin hub}}'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <span id="For_developers"></span> === 開発者へ === ; アーキテクチャ : MediaWikiのソースコードの重要な部分の概要。 : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygenで生成された文書] ; {{ll|Manual:Database layout|nsp=0}} : MediaWikiが使用するデータベースアーキテクチャについての詳細 : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} エンジン ; {{ll|Manual:Developing extensions|nsp=0}} : 新しいMediaWiki拡張機能を作成する方法の概要 : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|タグ]] | [[Special:MyLanguage/Manual:Special pages|特別ページ]] | {{ll|Manual:Skins|nsp=0}} ; ウェブアクセス : 使用可能な[[w:Query string|クエリ文字列]]の詳細 : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''詳細は{{ll|Developer hub}}'' |} <span id="Others"></span> === その他 === ; [[Special:MyLanguage/Manual:FAQ|MediaWiki FAQ]] : メディアウィキに関するよくある質問 <span id="Browsing_the_manual"></span> == マニュアルを検索する == 文書を閲覧する方法は複数あります 上記の節である特定の話題を見つけて困惑する読者たちは、以下のブラウジング方法を参考 に する こと が できます。 * [[Special:Allpages/Manual:]] - 自動生成されたマニュアルのすべてのページのリスト:名前空間 * [[:Category:Manual]] - 最上級のマニュアルカテゴリー <span id="Improving_the_manual"></span> == マニュアルを改善する == * このマニュアルにはまだ穴がたくさんあります! 詳細は[[Special:MyLanguage/Manual:Contents/To do|'to do' page]]を参照。 *http://meta.wikimedia.orgにはまだ移行する必要があるコンテンツがあります。 このドキュメントでは特定の問題に関する情報が見つからない場合は [[meta:MediaWiki_FAQ]]と [[meta:Help:Contents]] をご覧ください。 * '''[[Project:Manual]]'''はマニュアルの発展について議論する場所です。 * 以下も参照 [[Project:Current issues]]. <span id="MediaWiki_Virtual_Library"></span> == MediaWiki仮想図書館 == * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)'''にMediaWikiについてのガイドがあります。 [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] sbgxrm7qnds7qb8yx2yapm5jttaf0hi 737618 737610 2026-04-11T16:25:30Z FuzzyBot 18251 Updating to match new version of source page 737618 wikitext text/x-wiki <languages/> {{formatnum|10|{{PAGELANGUAGE}}}} {{TNT|Hubs|banner|dev=y|admin=y}} [[File:MediaWiki-Manual bookstyle-transparent.png|{{dir|{{pagelang}}|left|right}}|175px|メディアウィキドキュメント]] これは'''MediaWikiに関する技術マニュアルです'''. 開発者とシステム管理者のためのインストール、管理、開発に関する情報を掲載しています。 このマニュアルはエンドユーザー向けのものではありません。 ソフトウェアの使い方については[[Special:MyLanguage/Help:Contents|MediaWiki Handbook]]をご覧ください。 <span id="Main_sections"></span> ==主要なセクション== {{TNT|merge|Sysadmin hub|Developer hub}} {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <span id="For_system_administrators"></span> === システム管理者へ === ; [[Special:MyLanguage/Manual:Installation guide|インストール]] : 新しいMediaWikiインストールのガイド : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki|インストール]] | [[Special:MyLanguage/Manual:Configuring MediaWiki|初期設定]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)|設定のアルファベット順リスト]] | [[Special:MyLanguage/Manual:Configuration settings|機能によってリストされた設定]] ; {{ll|Manual:System administration|nsp=0}} : ウィキの管理作業のガイド : [[Special:MyLanguage/Manual:Backing up a wiki|バックアップ]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : MediaWikiをアップグレードするガイド ''詳細は{{ll|Sysadmin hub}}'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | <span id="For_developers"></span> === 開発者へ === ; アーキテクチャ : MediaWikiのソースコードの重要な部分の概要。 : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygenで生成された文書] ; {{ll|Manual:Database layout|nsp=0}} : MediaWikiが使用するデータベースアーキテクチャについての詳細 : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} エンジン ; {{ll|Manual:Developing extensions|nsp=0}} : 新しいMediaWiki拡張機能を作成する方法の概要 : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|タグ]] | [[Special:MyLanguage/Manual:Special pages|特別ページ]] | {{ll|Manual:Skins|nsp=0}} ; ウェブアクセス : 使用可能な[[w:Query string|クエリ文字列]]の詳細 : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''詳細は{{ll|Developer hub}}'' |} <span id="Others"></span> === その他 === ; [[Special:MyLanguage/Manual:FAQ|MediaWiki FAQ]] : メディアウィキに関するよくある質問 <span id="Browsing_the_manual"></span> == マニュアルを検索する == 文書を閲覧する方法は複数あります 上記の節である特定の話題を見つけて困惑する読者たちは、以下のブラウジング方法を参考 に する こと が できます。 * [[Special:Allpages/Manual:]] - 自動生成されたマニュアルのすべてのページのリスト:名前空間 * [[:Category:Manual]] - 最上級のマニュアルカテゴリー <span id="Improving_the_manual"></span> == マニュアルを改善する == * このマニュアルにはまだ穴がたくさんあります! 詳細は[[Special:MyLanguage/Manual:Contents/To do|'to do' page]]を参照。 *http://meta.wikimedia.orgにはまだ移行する必要があるコンテンツがあります。 このドキュメントでは特定の問題に関する情報が見つからない場合は [[meta:MediaWiki_FAQ]]と [[meta:Help:Contents]] をご覧ください。 * '''[[Project:Manual]]'''はマニュアルの発展について議論する場所です。 * 以下も参照 [[Project:Current issues]]. <span id="MediaWiki_Virtual_Library"></span> == MediaWiki仮想図書館 == * '''[[:Category:MediaWiki Virtual Library (MVL)|MediaWiki Virtual Library]] (MVL)'''にMediaWikiについてのガイドがあります。 [[File:Incubator-notext.png|alt=foobaz|thumb|foobar]] {| style="background:transparent;" | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For system administrators === ; [[Special:MyLanguage/Manual:Installation guide|Installation]] : Guide to setting up a new MediaWiki installation. : {{ll|Download}} | [[Special:MyLanguage/Manual:Installing MediaWiki| Installing]] | [[Special:MyLanguage/Manual:Configuring MediaWiki| Initial configuration]] : [[Special:MyLanguage/Manual:Configuration settings (alphabetical)| Alphabetical list of settings]] | [[Special:MyLanguage/Manual:Configuration settings| Settings listed by function]] ; {{ll|Manual:System administration|nsp=0}} : Guide to do administrative tasks on your wiki. : [[Special:MyLanguage/Manual:Backing up a wiki|Backing up]] | {{ll|Manual:Maintenance scripts|nsp=0}} ; {{ll|Manual:Upgrading|nsp=0}} : Guide to upgrade your MediaWiki installation. ''More on {{ll|Sysadmin hub}}.'' | style="width:50%; vertical-align:top; border:1px solid #aaa; padding: .5em 1.5em;" | === For developers === ; Architecture : An overview of the key parts of MediaWiki's source code. : {{ll|Manual:Code|nsp=0}} | {{ll|Manual:Global object variables|nsp=0}} | [https://doc.wikimedia.org/ Doxygen-generated documentation] ; {{ll|Manual:Database layout|nsp=0}} : Details about the database architecture used by MediaWiki. : {{ll|Manual:MySQL|nsp=0}} | {{ll|Manual:PostgreSQL|nsp=0}} | {{ll|Manual:SQLite|nsp=0}} | {{ll|Manual:IBM DB2|nsp=0}} engines ; {{ll|Manual:Developing extensions|nsp=0}} : An overview of the ways to create a new MediaWiki extension. : {{ll|Manual:Hooks|nsp=0}} | {{ll|Manual:Parser functions|nsp=0}} | [[Special:MyLanguage/Manual:Tag extensions|Tag]] | [[Special:MyLanguage/Manual:Special pages|Special page]] | {{ll|Manual:Skins|nsp=0}} ; Web access : Details about [[w:Query string|query string]] parameters that can be passed to MediaWiki access scripts. : {{ll|Manual:Parameters to index.php|index.php}} | {{ll|API:Main page|api.php}} ''More on {{ll|Developer hub}}.'' |} [[File:Soldering a 0805.jpg|alt=foobaz|thumb|foobar]] [[Category:MediaWiki technical documentation{{translation}}| ]] [[Category:Manual{{translation}}| ]] soizk8mxpe9u8994nu1an2qyswajs82 Template:XFDcloser standard installation 10 153848 737672 673778 2025-11-28T23:59:58Z en>Lemondoge 0 Accessibility: Remove "aria-hidden" from the icon, because focusable elements should not be hidden from the accessibility tree 737672 wikitext text/x-wiki {{Mbox | image= [[File:Logo wikibot.svg|50px|alt=icon]]<!-- THIS FILE can't be used with an empty `|link=` --> | text = This template is '''used in the standard installation of [[Wikipedia:XFDcloser|XFDcloser]]'''. If you plan to make [[Template:XFDcloser standard installation#"breaking changes"|breaking changes]] to it, move it, or nominate it for deletion, please [[Wikipedia talk:XFDcloser|notify XFDcloser's users and maintainers]] as a courtesy. Thank you! {{#if:{{{1|}}}|<br> {{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by XFDcloser|{{PAGENAME}}]]}}}}</includeonly><noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> jrmljx8xzbi9gx84w2wpu3idsu6mu59 737673 737672 2026-04-11T19:54:44Z Novem Linguae 49714 1 revision imported from [[:en:Template:XFDcloser_standard_installation]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737672 wikitext text/x-wiki {{Mbox | image= [[File:Logo wikibot.svg|50px|alt=icon]]<!-- THIS FILE can't be used with an empty `|link=` --> | text = This template is '''used in the standard installation of [[Wikipedia:XFDcloser|XFDcloser]]'''. If you plan to make [[Template:XFDcloser standard installation#"breaking changes"|breaking changes]] to it, move it, or nominate it for deletion, please [[Wikipedia talk:XFDcloser|notify XFDcloser's users and maintainers]] as a courtesy. Thank you! {{#if:{{{1|}}}|<br> {{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by XFDcloser|{{PAGENAME}}]]}}}}</includeonly><noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> jrmljx8xzbi9gx84w2wpu3idsu6mu59 User talk:JWBTH/CD test page 3 154341 737732 737518 2026-04-12T06:04:30Z JWBTH 52211 /* Last subsection */ 737732 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) :: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 11:17, 8 April 2026 (UTC) === Comment with complex markup === * ̴͍͖̪̭̂ฑεᚹẻ̴̦̜̜͙̰̉̒͠͠иℳἒԊ৩βà̸̩̳̗m̶̧̲̲̬̌̀̈́̀ь β ì̵̛̹̌͛͝«Зᾷу៚ἐฑἒдì̵̛̹̌͛͝ю»ì̵̛̹̌͛͝ ! Ᾰ D̴̞̓̊̀ля чẻ̴̦̜̜͙̰̉̒͠͠рẻ̴̦̜̜͙̰̉̒͠͠счуr̵̢͈͕̺͎̀̅ s̸̢̈́ерьӚz̵͓̫̻͔͠Ԋыᚸ βыΔε௭иm̶̧̲̲̬̌̀̈́̀ь <s>ฑр৩c̴̨͍͇̪̏̿́̽̕m̶̧̲̲̬̌̀̈́̀раԊc̴̨͍͇̪̏̿́̽̕m̶̧̲̲̬̌̀̈́̀β৩</s> ३ᾷβ৩Δь «D̴̞̓̊̀β৩йԊая z̵͓̫̻͔͠à̸̩̳̗௶พь». Ἇ m̶̧̲̲̬̌̀̈́̀৩ иz̵͓̫̻͔͠ Ԋẻ̴̦̜̜͙̰̉̒͠͠k̸̟͔̯̯̖̍̂͐̎͘৩m̶̧̲̲̬̌̀̈́̀৩ᚹыᚸ c̴̨͍͇̪̏̿́̽̕m̶̧̲̲̬̌̀̈́̀ᾷ z̵͓̫̻͔͠а௶พь m̶̧̲̲̬̌̀̈́̀ᾷк ì̵̛̹̌͛͝и ௭ε३εm̶̧̲̲̬̌̀̈́̀ чεᚹعz̵͓̫̻͔͠ k̸̟͔̯̯̖̍̂͐̎͘ᚹᾷй !!! ̴͍͖̪̭̂ <span style="font-family:Calibri; font-size:175%; display: inline-block; letter-spacing: 5px; transform: rotate(10deg); padding: 20px 0px;>[[User:Example|'''<span style="color: Magenta; position: relative; top: -4px;">ঞ</span><span style="color: SpringGreen; position: relative; top: -3px;">ʆ</span><span style="color: red; position: relative; top: -2px;">ἕ</span><span style="color: LimeGreen; position: relative; top: -1px;">ฃ</span><span style="color: DeepPink; position: relative; top: 2px;">r̵̢͈͕̺͎̀̅</span><span style="color: Aqua; position: relative; top: 4px;"> ̴͍͖̪̭̂</span><span style="color: DarkOrange; position: relative; top: 4px;">D̴̞̓̊̀</span><span style="color: DarkOrchid; position: relative; top: 3px;">ἒ</span><span style="color: Chartreuse; position: relative; top: 4px;"> ̴͍͖̪̭̂</span><span style="color: Fuchsia; position: relative; top: 1px;">ໃ</span><span style="color: DarkTurquoise; position: relative; top: 0px;">à̸̩̳̗</span><span style="color: Forestgreen; position: relative; top: -2px;">ʁ</span><span style="color: deeppink; position: relative; top: 2px;">i̵͖̒͆̕͝ͅ</span><span style="color: Turquoise; position: relative; top: -1px;">ń̸̳͑̑͌</span><span style="color: LimeGreen; position: relative; top: -4px;">៩</span><span style="color: Magenta; position: relative; top: 1px;">♥</font>''']]</span> 14:08, 1 April 2026 (UTC) *:test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:53, 7 April 2026 (UTC) *:iaos dhioas dhoia sdhiosa d [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 07:38, 8 April 2026 (UTC) *:reply [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 11:15, 8 April 2026 (UTC) *:reply [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 11:15, 8 April 2026 (UTC) *:tests [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 11:57, 8 April 2026 (UTC) *: test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 14:07, 8 April 2026 (UTC) *:s [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 14:39, 8 April 2026 (UTC) *:ss [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 18:23, 8 April 2026 (UTC) === Transcluded comments === {{User talk:JWBTH/CD test page/comment}} === Vote === Comment. # Vote 1. [[User:Example|Example]] ([[User talk:Example|talk]]) 06:46, 9 April 2026 (UTC) # Vote 2. [[User:Example|Example]] ([[User talk:Example|talk]]) 06:46, 9 April 2026 (UTC) === Comment split by replies === Somebody describes something, and here goes a list: * List item 1 ** Here a user breaks the list with their reply. [[User:Example2|Example2]] ([[User talk:Example2|talk]]) 06:46, 9 April 2026 (UTC) * List item 2 ** Here a user breaks the list with their reply. [[User:Example2|Example2]] ([[User talk:Example2|talk]]) 06:47, 9 April 2026 (UTC) * List item 3 ** Here a user breaks the list with their reply. [[User:Example2|Example2]] ([[User talk:Example2|talk]]) 06:48, 9 April 2026 (UTC) Here continues the original post. [[User:Example|Example]] ([[User talk:Example|talk]]) 05:48, 9 April 2026 (UTC) === Last subsection === test [[User:Test account 8|Test account 8]] ([[User talk:Test account 8|talk]]) 14:56, 14 September 2025 (UTC) : Comment [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:24, 31 March 2026 (UTC) :: Comment [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 09:25, 31 March 2026 (UTC) ::: Comment beginning Comment ending [[User:Example|Example]] ([[User talk:Example|talk]]) 09:34, 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) :testtt [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 07:10, 7 April 2026 (UTC) : test [[User:JWBTH|JWBTH]] ([[User talk:JWBTH|talk]]) 17:59, 7 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) ohhlwhuciu3wdqnfzcwawcu2019d1y4 Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Archivo/Protección de artículos/Actual 4 169152 737593 728714 2026-04-11T14:14:04Z Nacaru 54746 /* Wikipédia:Escolha do artigo em destaque/e */ Solicitando protección de [[Wikipédia:Escolha do artigo em destaque/e]] mediante [[WP:Twinkle Lite|Twinkle Lite]] 737593 wikitext text/x-wiki <noinclude>{{Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Plantillas/Cabecera}} {{Archivado automático |Destino=Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Archivo/Protección de artículos/AAAA/MM |Días a mantener=3 }} </noinclude> == [[Línea A del Metro de Santiago]] == ;Artículo(s) * {{a|Línea A del Metro de Santiago}} ;Causa Vandalismo reiterado por parte de anónimos. ; Usuario que lo solicita * [[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 13:28 18 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}, ¿dónde está el vandalismo, {{u|Aroblesm}}?|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:26 19 nov 2025 (UTC)}} == Vive Claro == ;Artículo(s) * {{a|Vive Claro}} ;Causa Constantes ediciones vandálicas del artículo, mostrando posturas políticas y quitándole la neutralidad al mismo. ;Usuario que lo solicita * [[Usuario:Futbolero44|Futbolero44]] ([[Usuario Discusión:Futbolero44|discusión]]) 19:12 18 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}, única cuenta anónima vandálica ya bloqueada|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:29 19 nov 2025 (UTC)}} == Michael Kast == ;Artículo(s) * {{a|Michael Kast}} ;Causa Vandalismo reiterado. ;Usuario que lo solicita * [[Usuario:Sfs90|Sfs90]] ([[Usuario Discusión:Sfs90|discusión]]) 20:55 18 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Edslov'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 01:31 19 nov 2025 (UTC) == Ildefonso Cerdá == ;Artículo(s) * {{a|Ildefonso Cerdá}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 08:42 19 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''3 días''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:41 19 nov 2025 (UTC) == Ricardo Arroyo == ;Artículo(s) * {{a|Ricardo Arroyo}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 10:24 19 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:41 19 nov 2025 (UTC) == [[Miguel Herrera]] == ;Artículo(s) * {{a|Miguel Herrera}} ;Causa Costa Rica, selección que dirige Miguel Herrera, no calificó al próximo Mundial de Fútbol. El artículo continuará sufriendo vandalismo por lo que solicito semiprotección corta. Gracias. ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 15:21 19 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 meses''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 19:51 19 nov 2025 (UTC) == [[Felipe Gamer]] == ;Artículo(s) * {{a|Felipe Gamer}} ;Causa Página creada para vandalizar. ; Usuario que lo solicita * [[Usuario:Goolwiki|Gool]] ([[Usuario Discusión:Goolwiki|discusión]]) 18:28 19 nov 2025 (UTC) ;Respuesta {{admintab|{{no}}. No existe tal cosa. Si algo, reiteradas creaciones de página borrada, pero este no es el caso. Saludos. |2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 19:46 19 nov 2025 (UTC)}} == Blessd == ;Artículo(s) * {{a|Blessd}} ;Causa Vandalismo de cuentas temporales. ;Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 18:43 19 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 meses''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 19:51 19 nov 2025 (UTC) == «Rodrigo Narváez» y «Bobicraft» == ;Artículo * {{a|Bobicraft}} ;Causa Esta página fue protegida en 2023 debido a las recreaciones sin relevancia reiteradas. Para evadir dicha protección, un usuario ya bloqueado creó hace unos meses de manera irregular el artículo [[Rodrigo Narváez]], usando el nombre real del sujeto sin haber consultado aquí. A pesar de eso, considero que la versión actual de este último artículo es más apropiada para Wikipedia y solicito la desprotección del primero para realizar un traslado o redirección conforme a [[WP:UNC]]. ;Usuario que lo solicita * [[Usuario:ManuelJünior7000|ManuelJünior7000]] ([[Usuario Discusión:ManuelJünior7000|discusión]]) 20:57 19 nov 2025 (UTC) ;Respuesta {{admintab|Hola. Se abrirá una consulta de borrado al respecto (lo puedes hacer tú, o lo hago yo hoy o mañana). Saludos. |2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 21:17 20 nov 2025 (UTC)}} == [[Andrés Gariano]] == ;Artículo(s) * {{a|Andrés Gariano}} ;Causa Ediciones vandálicas, por parte de unas IPs como se muestra: [https://es.wikipedia.org/w/index.php?title=Andr%C3%A9s_Gariano&diff=prev&oldid=170566760 Aquí], [https://es.wikipedia.org/w/index.php?title=Andr%C3%A9s_Gariano&diff=prev&oldid=170567166 aquí], y [https://es.wikipedia.org/w/index.php?title=Andr%C3%A9s_Gariano&diff=prev&oldid=170568449 aquí], han frenado, pero si no hay una intervención pronto, es muy posible que continue el vandalismo. ; Usuario que lo solicita * [[User:Eddy Wardian|<b style="color:#D4D4D4;" >Eddy Wardian</b>]] [[File:Media-skip-forward.svg|16px]] [[File:Mail-closed.svg|12px|link=User talk:Eddy Wardian]] [[File:Media-skip-backward.svg|16px]] 06:38 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:16 20 nov 2025 (UTC) == Dolph Ziggler == ;Artículo(s) * {{a|Dolph Ziggler}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 15:23 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:16 20 nov 2025 (UTC) == [[Usuario discusión:SuperPianoMan9167]] == ;Artículo(s) * {{a|Usuario discusión:SuperPianoMan9167}} ;Causa Acoso al usuario ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 21:56 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 22:16 20 nov 2025 (UTC) == Juan Manuel del Mar Estremadoyro == ;Artículo(s) * {{a|Juan Manuel del Mar Estremadoyro}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 22:24 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 22:36 20 nov 2025 (UTC) == Big Brother Brasil == ;Artículo(s) * {{a|Big Brother Brasil}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 23:51 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 00:01 21 nov 2025 (UTC) == [[Big Brother Brasil]] == ;Artículo(s) * {{a|Big Brother Brasil}} ;Causa Guerra de ediciones. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 23:56 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 00:01 21 nov 2025 (UTC) == [[Patxi Aldabaldetrecu]] == ;Artículo(s) * {{a|Patxi Aldabaldetrecu}} ;Causa Proteger contra recreación por recreaciones sin relevancia enciclopédica. ; Usuario que lo solicita * [[Usuario:Leonpolanco|<span style="color:Chocolate">Леон Поланко</span>]] <u>[[Usuario discusión:Leonpolanco|<span style="color:Maroon">говорит вам и слушает вас</span>]]</u> 03:44 21 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida '''indefinidamente''' por '''Edslov'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 03:56 21 nov 2025 (UTC) == Semiprotección de [[Guerra de Gaza]] == ;Artículo(s) * {{a|Guerra de Gaza}} ;Causa Dirección temporal insiste en cambiar el contenido, incluyendo texto referenciado. Es un tema controvertido. ;Usuario que lo solicita * [[Usuario:Sahaquiel9102|Sahaquiel]] - <sup>[[Usuario Discusión:Sahaquiel9102|Glaubst du auch, dass wir uns wiedersehen?]]</sup>[[Archivo:Hattrick Farallones Blazono.png|45px]] 05:12 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}, cuenta temporal bloqueada. Para casos así, {{u|Sahaquiel9102}}, puedes denunciar la cuenta en [[WP:VEC]].|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 05:14 21 nov 2025 (UTC)}} == Álvaro García Ortiz == ;Artículo(s) * {{a|Álvaro García Ortiz}} ;Causa Ayer se anunció que sería condenado e inhabilitado y hay continuas ediciones arbitrarias. La sentencia no está redactada, ni publicada, ni comunicada a las partes y, mucho menos, ejecutada, lo que llevará su tiempo. Mientras tanto, sigue en su cargo. ¿Podemos proteger la página un par de semanas? Gracias. ;Usuario que lo solicita * [[Usuario:TheRichic|TheRichic]] [[Imagen:Escudo de España (mazonado).svg|12px]] ''<small>([[Usuario Discusión:TheRichic|Mensajes aquí]])</small> 08:46 21 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 mes''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 12:26 21 nov 2025 (UTC) == [[Álvaro García Ortiz]] == ;Artículo(s) * {{a|Álvaro García Ortiz}} ;Causa Adición frecuente de información apresurada y sin referenciar, propiciado por encontrarse el biografiado en el centro del foco mediático. Véase historial. ; Usuario que lo solicita * [[Usuario:Nacaru|Nacaru]] [[Archivo:Noto Emoji KitKat 2601.svg|19px]] ([[Usuario_discusión:Nacaru|discusión]]) 12:12 21 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 mes''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 12:26 21 nov 2025 (UTC) == Habilitación de artículo y traslado == ;Artículo(s) * {{a|Deportivo LSM}} ;Causa * Hola! Quiero que desprotejan ese artículo, les explico el porqué: Anteriormente existía el artículo "[[Deportivo Lsm]]", pero que [[Usuaria:Baji|Baji]] se encargó de trasladarlo a otro [[Usuario:Manchuco/Deportivo_Lsm|espacio]] luego de una petición de traslado a "[[Deportivo LSM]]" (razón: error en el título), además, el usuario quien creó el artículo, [[Usuario:Manchuco|Manchuco]], creó un ítem de wikidata sobre este ([[wikidata:Q136333060|ítem duplicado]]), pero ya existía como "[[wikidata:Q134589368|Deportivo LSM]]". Pido que puedan habilitar "[[Deportivo LSM]]" para poder trasladar el artículo con el título corregido con el identificador correspondiente. Gracias! ;Usuario que lo solicita * [[Usuario:Leoconbass|Leo]] ([[Usuario Discusión:Leoconbass|discusión]]) 16:30 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}, se puede solicitar la desprotección cuando el artículo esté en condiciones. Actualmente necesita trabajo para mejorar la redacción tan promocional que tiene.|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:29 26 nov 2025 (UTC)}} == Copa Davis == ;Artículo(s) * {{a|Copa Davis}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 19:13 21 nov 2025 (UTC) ;Respuesta {{No}}. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 20:09 23 nov 2025 (UTC) == Juan Carlos Martín Ramos == ;Artículo(s) * {{a|Juan Carlos Martín Ramos}} ;Causa Adición masiva de material auto-promocional en las últimas 48 horas (véase [https://es.wikipedia.org/w/index.php?title=Juan_Carlos_Mart%C3%ADn_Ramos&action=history historial]). ;Usuario que lo solicita * [[Usuario:CFA1877|CFA1877]] ([[Usuario Discusión:CFA1877|discusión]]) 21:05 21 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Edslov'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 01:01 22 nov 2025 (UTC) == Canal (á) == ;Artículo(s) * {{a|Canal (á)}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 22:33 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:01 26 nov 2025 (UTC)}} == Estadio Gran Parque Central == ;Artículo(s) * {{a|Estadio Gran Parque Central}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 17:11 22 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''6 meses''' por '''Montgomery'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 17:36 22 nov 2025 (UTC) == [[Buses Vule]] == ;Artículo(s) * {{a|Buses Vule}} ;Causa Insistencia de anónimos en cambiar la información no respetando las referencias. ; Usuario que lo solicita * [[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 19:50 22 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 meses''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:01 22 nov 2025 (UTC) == [[Anexo:Unidad de negocio 3 de Red]] == ;Artículo(s) * {{a|Anexo:Unidad de negocio 3 de Red}} ;Causa Insistencia de anónimos en cambiar la información no respetando las referencias. ; Usuario que lo solicita * [[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 19:51 22 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 mes''' por '''Eduardosalg'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 20:01 22 nov 2025 (UTC) == Copa Sudamericana == ;Artículo(s) * {{a|Copa Sudamericana}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 23:02 22 nov 2025 (UTC) ;Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:03 26 nov 2025 (UTC)}} == Club Nacional de Football == ;Artículo(s) * {{a|Club Nacional de Football}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 00:44 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''6 meses''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 01:31 23 nov 2025 (UTC) == Miss Universo == ;Artículo(s) * {{a|Miss Universo}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 05:19 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 05:36 23 nov 2025 (UTC) == IndyCar Series == ;Artículo(s) * {{a|IndyCar Series}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 07:54 23 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:06 26 nov 2025 (UTC)}} == Club Atlético Barracas Central == ;Artículo(s) * {{a|Club Atlético Barracas Central}} ;Causa Artículo siendo vandalizado. ; Usuario que lo solicita * [[User:Eddy Wardian|<b style="color:#D4D4D4;">Eddy Wardian</b>]] [[File:Media-skip-forward.svg|16px]] [[File:Mail-closed.svg|12px|link=User talk:Eddy Wardian]] [[File:Media-skip-backward.svg|16px]] 09:39 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 mes''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 12:06 23 nov 2025 (UTC) == Nuevas Ideas con Libertad == ;Artículo(s) * [[Nuevas Ideas con Libertad]] ;Causa Vandalismo, insistencia de anónimos en cambiar la información no respetando las referencias. ; Usuario que lo solicita * [[Usuario:Damon899|Damon899]] ([[Usuario Discusión:Damon899|discusión]]) 22:33 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{Hecho|1=Protegido}} por 1 semana. Sin embargo, {{u|Damon899}}, el artículo necesita muchas mejoras y la urgente adición de referencias.|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:15 26 nov 2025 (UTC)}} == [[Anexo:Torneo clasificatorio para la Copa Mundial de Fútbol de 2026]] == ;Artículo(s) * {{a|Anexo:Torneo clasificatorio para la Copa Mundial de Fútbol de 2026}} ;Causa Hay usuarios ip qué ponen en la categoría o sección de Clasificados añaden una fecha especulativa cuando ni siquiera empezó el torneo. ; Usuario que lo solicita * '''[[Usuario:User34790|<span style="font-size:blue 3px 1px 3px; font-variant:Corbel; color:blue; text-shadow:white 2px 1px 2px">User34790</span>]]''' [[Usuario discusión:User34790|<span style="font-size:100%;color: pink;">'''(discusión)'''</span>]] 15:50 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 20:26 23 nov 2025 (UTC) == Carretera Central de Cuba == ;Artículo(s) * {{a|Carretera Central de Cuba}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 19:05 23 nov 2025 (UTC) ;Respuesta {{admintab|{{no}} por ahora. |--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 20:19 23 nov 2025 (UTC)}} == Noemí Sabugal == ;Artículo(s) * {{a|Noemí Sabugal}} ;Causa Adición masiva de contenido promocional. Nótese que [https://es.wikipedia.org/wiki/Especial:Contribuciones/LITERESP la cuenta] que está detrás de los cambios únicamente ha editado este artículo desde que creó la cuenta en 2020, y que insiste en reintroducir el contenido promocional a pesar de que son ya varios los usuarios que le han revertido ([https://es.wikipedia.org/w/index.php?title=Noem%C3%AD_Sabugal&diff=prev&oldid=170622412 1], [https://es.wikipedia.org/w/index.php?title=Noem%C3%AD_Sabugal&diff=prev&oldid=170622412 2]), sin que atienda a razones. ;Usuario que lo solicita * [[Usuario:CFA1877|CFA1877]] ([[Usuario Discusión:CFA1877|discusión]]) 19:29 23 nov 2025 (UTC) ;Respuesta {{admintab|{{no}} vamos a proteger por una disputa editorial cuando ya intervino dos veces un bibliotecario. |--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 20:14 23 nov 2025 (UTC)}} == [[Fátima Bosch]] == ;Artículo(s) * {{a|Fátima Bosch}} ;Causa Vandalismo ; Usuario que lo solicita * —<span style="font-family:Trebuchet MS;font-size:95%">[[Usuario:Mαrti|<span style="color:#636;">Mαrti</span>]]&nbsp;<span style="color;background:#CBE2F7;border-radius:9px;">&nbsp;[[Usuario discusión:Mαrti|'''ϟ''']]&nbsp;</span></span> 20:33 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 20:46 23 nov 2025 (UTC) == [[La Maroma]] == ;Artículo(s) * {{a|La Maroma}} ;Causa Eliminación de información referenciada por parte de varios usuarios ; Usuario que lo solicita * [[Usuario:Casisgaal|<span style="font-size:black 3px 1px 3px; font-variant:Corbel; color:blue; text-shadow:cyan 2px 1px 2px">Casisgaal</span>]] [[Usuario discusión:Casisgaal|(Discusión)]] 21:51 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 días''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 05:01 24 nov 2025 (UTC) == [[Pene]] == ;Artículo(s) * {{a|Pene}} ;Causa Vandalismo ; Usuario que lo solicita * [[Usuario:Jh38|Jh38]] ([[Usuario Discusión:Jh38|discusión]]) 01:21 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 01:26 24 nov 2025 (UTC) == Título de la solicitud == ;Artículo(s) * {{a|BTS}} ;Causa Ediciones vandálicas con mofa en el artículo [[BTS]] por parte de IPs. ;Usuario que lo solicita * [[Usuario:Pichu VI|Pichu VI]] ([[Usuario Discusión:Pichu VI|discusión]]) 13:09 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''3 meses''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 15:26 24 nov 2025 (UTC) == [[BTS]] == ;Artículo(s) * {{a|BTS}} ;Causa Un usuario ip empezó a hacer guerras de ediciónes con los usuarios User34790 y Pichu VI ; Usuario que lo solicita * '''[[Usuario:User34790|<span style="font-size:black 3px 1px 3px; font-variant:Corbel; color:black; text-shadow:white 2px 1px 2px">User34790</span>]]''' [[Usuario discusión:User34790|(página de discusión)]] [[File:User hello.png|30px]] 13:46 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''3 meses''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 15:26 24 nov 2025 (UTC) == Adolfo Cambiaso == ;Artículo(s) * {{a|Adolfo Cambiaso}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 15:27 24 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}, vándalos bloqueados.|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:18 26 nov 2025 (UTC)}} == [[Enfermería]] == ;Artículo(s) * {{a|Enfermería}} ;Causa Reiteradas creaciones de posibles LTA. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 20:50 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Edslov'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 03:21 26 nov 2025 (UTC) == María Escribano == ;Artículo(s) * {{a|María Escribano}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 21:22 24 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:24 26 nov 2025 (UTC)}} == [[Copa Davis]] == ;Artículo(s) * {{a|Copa Davis}} ;Causa Vandalismo reiterado. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 22:03 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 23:36 24 nov 2025 (UTC) == [[Miguel Hidalgo y Costilla]] == ;Artículo(s) * {{a|Miguel Hidalgo y Costilla}} ;Causa Reaparecen los vandalismos de las cuentas temporales. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 22:06 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 año''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 22:21 24 nov 2025 (UTC) == Vive Claro == ;Artículo(s) * {{a|Vive Claro}} ;Causa Continúa las ediciones vandálicas del mismo usuario en el artículo, solicito por favor protección del mismo o un bloqueo más extensivo del usuario. ;Usuario que lo solicita * [[Usuario:Futbolero44|Futbolero44]] ([[Usuario Discusión:Futbolero44|discusión]]) 14:48 25 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 15:26 25 nov 2025 (UTC) == Israel en el Festival de la Canción de Eurovisión == ;Artículo(s) * {{a|Israel en el Festival de la Canción de Eurovisión}} ;Causa Desde un entorno móvil se está realizando vandalismo al artículo ;Usuario que lo solicita * [[Usuario:Elultimolicantropo|Elultimolicantropo]] ([[Usuario discusión:Elultimolicantropo|discusión]]) [[Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Archivo/Protección de artículos/Actual#c-Elultimolicantropo-20251125161100-Israel en el Festival de la Canción de Eurovisión|16:11 25 nov 2025 (UTC)]] ;Respuesta {{admintab|1={{No}}, una sola edición en todo el mes no justifica una semiprotección. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:22 26 nov 2025 (UTC)|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:22 26 nov 2025 (UTC)}} == [[Wikipedia:Mes de Asia/2025]] == ;Artículo(s) * {{a|Wikipedia:Mes de Asia/2025}} ;Causa La página sufre vandalismos días si, día también y teniendo en cuenta que solo pueden participar usuarios con cuenta. Rogaría su protección durante lo que queda de mes. Gracias ; Usuario que lo solicita * [[Usuario:Términus|Términus]] ([[Usuario Discusión:Términus|discusión]]) 16:25 25 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Marcelo'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 16:31 25 nov 2025 (UTC) == [[Shayna Baszler]] == ;Artículo(s) * {{a|Shayna Baszler}} ;Causa Cambios de plantillas y enlaces a fechas, ediciones arbitrarias reiteradas ; Usuario que lo solicita * [[Usuario:Casisgaal|<span style="font-size:black 3px 1px 3px; font-variant:Corbel; color:blue; text-shadow:cyan 2px 1px 2px">Casisgaal</span>]] [[Usuario discusión:Casisgaal|(Discusión)]] 19:05 25 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''3 días''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 20:11 25 nov 2025 (UTC) == [[Hasbulla]] == ;Artículo(s) * {{a|Hasbulla}} ;Causa Vandalismo reiterado. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 21:23 25 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 mes''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:36 25 nov 2025 (UTC) == Cartujo (gato) == ;Artículo(s) * {{a|Cartujo (gato)}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 21:35 25 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 22:06 25 nov 2025 (UTC) == [[Retos Virales de Tiktok]] == ;Artículo(s) * {{a|Retos Virales de Tiktok}} ;Causa Es muy posible que otra persona intente crear la página aunque no tenga relevancia enciclopédica ; Usuario que lo solicita * [[Usuario:Goolwiki|Gool]] ([[Usuario Discusión:Goolwiki|discusión]]) 22:50 25 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}} por ahora. El hecho de que el artículo haya sido borrado una vez no implica necesariamente que creaciones futuras vayan a carecer también de relevancia. Un saludo.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:46 26 nov 2025 (UTC)}} == TyC Sports == ;Artículo(s) * {{a|TyC Sports}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 00:13 26 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''3 días''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 00:51 26 nov 2025 (UTC) == [[Línea 7 del Metro de Santiago]] == ;Artículo(s) * {{a|Línea 7 del Metro de Santiago}} ;Causa Vandalismo de anónimos. Insistencia en insertar contenido irrelevante. ; Usuario que lo solicita * [[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 00:26 26 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}. {{u|Aroblesm}}, no me queda claro porqué sería irrelevante y mucho menos «vandalismo» —quizá redactándolo de otra forma—, información basada en tres fuentes y confirmada por el Metro, sobre una máquina previamente mencionada en el artículo.|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:28 26 nov 2025 (UTC)}} == RyuJin == ;Artículo(s) * {{a|RyuJin}} ;Causa Vandalismo persistente ;Usuario que lo solicita * [[Usuario:Niccolasa|Niccolasa]] ([[Usuario Discusión:Niccolasa|discusión]]) 17:30 26 nov 2025 (UTC) ;Respuesta {{admintab|{{No}} es necesario. |[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 17:43 26 nov 2025 (UTC)}} == David Luiz == ;Artículo(s) * {{a|David Luiz}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 18:53 26 nov 2025 (UTC) ;Respuesta {{admintab|1=Prueba|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 22:37, 26 November 2025 (UTC)|3=}} == Club Atlético Belgrano == ;Artículo(s) * {{a|Club Atlético Belgrano}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:TheProxy18|TheProxy18]] ([[Usuario Discusión:TheProxy18|discusión]]) 18:35 26 nov 2025 (UTC) ;Respuesta {{admintab|1=Otra prueba más|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 22:40, 26 November 2025 (UTC)|3=}} == [[Tabellone]] == ;Artículo(s) * {{a|Tabellone}} ;Causa Prueba de nueva solicitud de protección. ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:14, 26 February 2026 (UTC) ;Respuesta (a rellenar por un bibliotecario) == [[U-3]] == ;Artículo(s) * {{a|U-3}} ;Causa Prueba ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:16, 26 February 2026 (UTC) ;Respuesta (a rellenar por un bibliotecario) == [[Wikipédia:Escolha do artigo em destaque/e]] == ;Artículo(s) * {{a|Wikipédia:Escolha do artigo em destaque/e}} ;Causa Esta es la razón ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 14:14, 11 April 2026 (UTC) ;Respuesta (a rellenar por un bibliotecario) fwfuct2zf1fe0omnbtcudaisp06x2s3 737594 737593 2026-04-11T14:14:31Z Nacaru 54746 Resolviendo solicitud «[[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Protección_de_artículos/Actual#Wikipédia:Escolha_do_artigo_em_destaque/e|Wikipédia:Escolha do artigo em destaque/e]]» mediante [[WP:TL|Twinkle Lite]] 737594 wikitext text/x-wiki <noinclude>{{Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Plantillas/Cabecera}} {{Archivado automático |Destino=Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Archivo/Protección de artículos/AAAA/MM |Días a mantener=3 }} </noinclude> == [[Línea A del Metro de Santiago]] == ;Artículo(s) * {{a|Línea A del Metro de Santiago}} ;Causa Vandalismo reiterado por parte de anónimos. ; Usuario que lo solicita * [[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 13:28 18 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}, ¿dónde está el vandalismo, {{u|Aroblesm}}?|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:26 19 nov 2025 (UTC)}} == Vive Claro == ;Artículo(s) * {{a|Vive Claro}} ;Causa Constantes ediciones vandálicas del artículo, mostrando posturas políticas y quitándole la neutralidad al mismo. ;Usuario que lo solicita * [[Usuario:Futbolero44|Futbolero44]] ([[Usuario Discusión:Futbolero44|discusión]]) 19:12 18 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}, única cuenta anónima vandálica ya bloqueada|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 01:29 19 nov 2025 (UTC)}} == Michael Kast == ;Artículo(s) * {{a|Michael Kast}} ;Causa Vandalismo reiterado. ;Usuario que lo solicita * [[Usuario:Sfs90|Sfs90]] ([[Usuario Discusión:Sfs90|discusión]]) 20:55 18 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Edslov'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 01:31 19 nov 2025 (UTC) == Ildefonso Cerdá == ;Artículo(s) * {{a|Ildefonso Cerdá}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 08:42 19 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''3 días''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:41 19 nov 2025 (UTC) == Ricardo Arroyo == ;Artículo(s) * {{a|Ricardo Arroyo}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 10:24 19 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:41 19 nov 2025 (UTC) == [[Miguel Herrera]] == ;Artículo(s) * {{a|Miguel Herrera}} ;Causa Costa Rica, selección que dirige Miguel Herrera, no calificó al próximo Mundial de Fútbol. El artículo continuará sufriendo vandalismo por lo que solicito semiprotección corta. Gracias. ; Usuario que lo solicita * [[Usuario:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">'''Mauricio C.'''</span>]] [[Usuario discusión:Mauricio C.|<span style="font-family:Helvetica; color:#3d9c06">(discusión)</span>]] 15:21 19 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 meses''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 19:51 19 nov 2025 (UTC) == [[Felipe Gamer]] == ;Artículo(s) * {{a|Felipe Gamer}} ;Causa Página creada para vandalizar. ; Usuario que lo solicita * [[Usuario:Goolwiki|Gool]] ([[Usuario Discusión:Goolwiki|discusión]]) 18:28 19 nov 2025 (UTC) ;Respuesta {{admintab|{{no}}. No existe tal cosa. Si algo, reiteradas creaciones de página borrada, pero este no es el caso. Saludos. |2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 19:46 19 nov 2025 (UTC)}} == Blessd == ;Artículo(s) * {{a|Blessd}} ;Causa Vandalismo de cuentas temporales. ;Usuario que lo solicita * '''[[Usuario:Taichi|Taichi]] [[Usuario Discusión:Taichi|〒]]''' 18:43 19 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 meses''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 19:51 19 nov 2025 (UTC) == «Rodrigo Narváez» y «Bobicraft» == ;Artículo * {{a|Bobicraft}} ;Causa Esta página fue protegida en 2023 debido a las recreaciones sin relevancia reiteradas. Para evadir dicha protección, un usuario ya bloqueado creó hace unos meses de manera irregular el artículo [[Rodrigo Narváez]], usando el nombre real del sujeto sin haber consultado aquí. A pesar de eso, considero que la versión actual de este último artículo es más apropiada para Wikipedia y solicito la desprotección del primero para realizar un traslado o redirección conforme a [[WP:UNC]]. ;Usuario que lo solicita * [[Usuario:ManuelJünior7000|ManuelJünior7000]] ([[Usuario Discusión:ManuelJünior7000|discusión]]) 20:57 19 nov 2025 (UTC) ;Respuesta {{admintab|Hola. Se abrirá una consulta de borrado al respecto (lo puedes hacer tú, o lo hago yo hoy o mañana). Saludos. |2=&nbsp;<span style="font: bold 13px Verdana;">[[Usuario:Virum Mundi|νιяυм]] ‹[[Usuario_discusión:Virum_Mundi|мυη∂ι]]›</span>&nbsp; 21:17 20 nov 2025 (UTC)}} == [[Andrés Gariano]] == ;Artículo(s) * {{a|Andrés Gariano}} ;Causa Ediciones vandálicas, por parte de unas IPs como se muestra: [https://es.wikipedia.org/w/index.php?title=Andr%C3%A9s_Gariano&diff=prev&oldid=170566760 Aquí], [https://es.wikipedia.org/w/index.php?title=Andr%C3%A9s_Gariano&diff=prev&oldid=170567166 aquí], y [https://es.wikipedia.org/w/index.php?title=Andr%C3%A9s_Gariano&diff=prev&oldid=170568449 aquí], han frenado, pero si no hay una intervención pronto, es muy posible que continue el vandalismo. ; Usuario que lo solicita * [[User:Eddy Wardian|<b style="color:#D4D4D4;" >Eddy Wardian</b>]] [[File:Media-skip-forward.svg|16px]] [[File:Mail-closed.svg|12px|link=User talk:Eddy Wardian]] [[File:Media-skip-backward.svg|16px]] 06:38 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:16 20 nov 2025 (UTC) == Dolph Ziggler == ;Artículo(s) * {{a|Dolph Ziggler}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 15:23 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:16 20 nov 2025 (UTC) == [[Usuario discusión:SuperPianoMan9167]] == ;Artículo(s) * {{a|Usuario discusión:SuperPianoMan9167}} ;Causa Acoso al usuario ; Usuario que lo solicita * [[Usuario:Ontzak|'''Ontzak''']] [[Imagen:Flags of Bilbao and the Basque Country.png|15px]] (''[[User talk:Ontzak|'''Jo ta ke irabazi arte''']]'') 21:56 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 22:16 20 nov 2025 (UTC) == Juan Manuel del Mar Estremadoyro == ;Artículo(s) * {{a|Juan Manuel del Mar Estremadoyro}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 22:24 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 22:36 20 nov 2025 (UTC) == Big Brother Brasil == ;Artículo(s) * {{a|Big Brother Brasil}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 23:51 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 00:01 21 nov 2025 (UTC) == [[Big Brother Brasil]] == ;Artículo(s) * {{a|Big Brother Brasil}} ;Causa Guerra de ediciones. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 23:56 20 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 00:01 21 nov 2025 (UTC) == [[Patxi Aldabaldetrecu]] == ;Artículo(s) * {{a|Patxi Aldabaldetrecu}} ;Causa Proteger contra recreación por recreaciones sin relevancia enciclopédica. ; Usuario que lo solicita * [[Usuario:Leonpolanco|<span style="color:Chocolate">Леон Поланко</span>]] <u>[[Usuario discusión:Leonpolanco|<span style="color:Maroon">говорит вам и слушает вас</span>]]</u> 03:44 21 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida '''indefinidamente''' por '''Edslov'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 03:56 21 nov 2025 (UTC) == Semiprotección de [[Guerra de Gaza]] == ;Artículo(s) * {{a|Guerra de Gaza}} ;Causa Dirección temporal insiste en cambiar el contenido, incluyendo texto referenciado. Es un tema controvertido. ;Usuario que lo solicita * [[Usuario:Sahaquiel9102|Sahaquiel]] - <sup>[[Usuario Discusión:Sahaquiel9102|Glaubst du auch, dass wir uns wiedersehen?]]</sup>[[Archivo:Hattrick Farallones Blazono.png|45px]] 05:12 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}, cuenta temporal bloqueada. Para casos así, {{u|Sahaquiel9102}}, puedes denunciar la cuenta en [[WP:VEC]].|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 05:14 21 nov 2025 (UTC)}} == Álvaro García Ortiz == ;Artículo(s) * {{a|Álvaro García Ortiz}} ;Causa Ayer se anunció que sería condenado e inhabilitado y hay continuas ediciones arbitrarias. La sentencia no está redactada, ni publicada, ni comunicada a las partes y, mucho menos, ejecutada, lo que llevará su tiempo. Mientras tanto, sigue en su cargo. ¿Podemos proteger la página un par de semanas? Gracias. ;Usuario que lo solicita * [[Usuario:TheRichic|TheRichic]] [[Imagen:Escudo de España (mazonado).svg|12px]] ''<small>([[Usuario Discusión:TheRichic|Mensajes aquí]])</small> 08:46 21 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 mes''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 12:26 21 nov 2025 (UTC) == [[Álvaro García Ortiz]] == ;Artículo(s) * {{a|Álvaro García Ortiz}} ;Causa Adición frecuente de información apresurada y sin referenciar, propiciado por encontrarse el biografiado en el centro del foco mediático. Véase historial. ; Usuario que lo solicita * [[Usuario:Nacaru|Nacaru]] [[Archivo:Noto Emoji KitKat 2601.svg|19px]] ([[Usuario_discusión:Nacaru|discusión]]) 12:12 21 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 mes''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 12:26 21 nov 2025 (UTC) == Habilitación de artículo y traslado == ;Artículo(s) * {{a|Deportivo LSM}} ;Causa * Hola! Quiero que desprotejan ese artículo, les explico el porqué: Anteriormente existía el artículo "[[Deportivo Lsm]]", pero que [[Usuaria:Baji|Baji]] se encargó de trasladarlo a otro [[Usuario:Manchuco/Deportivo_Lsm|espacio]] luego de una petición de traslado a "[[Deportivo LSM]]" (razón: error en el título), además, el usuario quien creó el artículo, [[Usuario:Manchuco|Manchuco]], creó un ítem de wikidata sobre este ([[wikidata:Q136333060|ítem duplicado]]), pero ya existía como "[[wikidata:Q134589368|Deportivo LSM]]". Pido que puedan habilitar "[[Deportivo LSM]]" para poder trasladar el artículo con el título corregido con el identificador correspondiente. Gracias! ;Usuario que lo solicita * [[Usuario:Leoconbass|Leo]] ([[Usuario Discusión:Leoconbass|discusión]]) 16:30 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}, se puede solicitar la desprotección cuando el artículo esté en condiciones. Actualmente necesita trabajo para mejorar la redacción tan promocional que tiene.|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:29 26 nov 2025 (UTC)}} == Copa Davis == ;Artículo(s) * {{a|Copa Davis}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 19:13 21 nov 2025 (UTC) ;Respuesta {{No}}. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 20:09 23 nov 2025 (UTC) == Juan Carlos Martín Ramos == ;Artículo(s) * {{a|Juan Carlos Martín Ramos}} ;Causa Adición masiva de material auto-promocional en las últimas 48 horas (véase [https://es.wikipedia.org/w/index.php?title=Juan_Carlos_Mart%C3%ADn_Ramos&action=history historial]). ;Usuario que lo solicita * [[Usuario:CFA1877|CFA1877]] ([[Usuario Discusión:CFA1877|discusión]]) 21:05 21 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Edslov'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 01:01 22 nov 2025 (UTC) == Canal (á) == ;Artículo(s) * {{a|Canal (á)}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 22:33 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:01 26 nov 2025 (UTC)}} == Estadio Gran Parque Central == ;Artículo(s) * {{a|Estadio Gran Parque Central}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 17:11 22 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''6 meses''' por '''Montgomery'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 17:36 22 nov 2025 (UTC) == [[Buses Vule]] == ;Artículo(s) * {{a|Buses Vule}} ;Causa Insistencia de anónimos en cambiar la información no respetando las referencias. ; Usuario que lo solicita * [[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 19:50 22 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 meses''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:01 22 nov 2025 (UTC) == [[Anexo:Unidad de negocio 3 de Red]] == ;Artículo(s) * {{a|Anexo:Unidad de negocio 3 de Red}} ;Causa Insistencia de anónimos en cambiar la información no respetando las referencias. ; Usuario que lo solicita * [[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 19:51 22 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 mes''' por '''Eduardosalg'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 20:01 22 nov 2025 (UTC) == Copa Sudamericana == ;Artículo(s) * {{a|Copa Sudamericana}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 23:02 22 nov 2025 (UTC) ;Respuesta {{admintab|1={{Hecho}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:03 26 nov 2025 (UTC)}} == Club Nacional de Football == ;Artículo(s) * {{a|Club Nacional de Football}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 00:44 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''6 meses''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 01:31 23 nov 2025 (UTC) == Miss Universo == ;Artículo(s) * {{a|Miss Universo}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 05:19 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 05:36 23 nov 2025 (UTC) == IndyCar Series == ;Artículo(s) * {{a|IndyCar Series}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 07:54 23 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:06 26 nov 2025 (UTC)}} == Club Atlético Barracas Central == ;Artículo(s) * {{a|Club Atlético Barracas Central}} ;Causa Artículo siendo vandalizado. ; Usuario que lo solicita * [[User:Eddy Wardian|<b style="color:#D4D4D4;">Eddy Wardian</b>]] [[File:Media-skip-forward.svg|16px]] [[File:Mail-closed.svg|12px|link=User talk:Eddy Wardian]] [[File:Media-skip-backward.svg|16px]] 09:39 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 mes''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 12:06 23 nov 2025 (UTC) == Nuevas Ideas con Libertad == ;Artículo(s) * [[Nuevas Ideas con Libertad]] ;Causa Vandalismo, insistencia de anónimos en cambiar la información no respetando las referencias. ; Usuario que lo solicita * [[Usuario:Damon899|Damon899]] ([[Usuario Discusión:Damon899|discusión]]) 22:33 21 nov 2025 (UTC) ;Respuesta {{admintab|1={{Hecho|1=Protegido}} por 1 semana. Sin embargo, {{u|Damon899}}, el artículo necesita muchas mejoras y la urgente adición de referencias.|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:15 26 nov 2025 (UTC)}} == [[Anexo:Torneo clasificatorio para la Copa Mundial de Fútbol de 2026]] == ;Artículo(s) * {{a|Anexo:Torneo clasificatorio para la Copa Mundial de Fútbol de 2026}} ;Causa Hay usuarios ip qué ponen en la categoría o sección de Clasificados añaden una fecha especulativa cuando ni siquiera empezó el torneo. ; Usuario que lo solicita * '''[[Usuario:User34790|<span style="font-size:blue 3px 1px 3px; font-variant:Corbel; color:blue; text-shadow:white 2px 1px 2px">User34790</span>]]''' [[Usuario discusión:User34790|<span style="font-size:100%;color: pink;">'''(discusión)'''</span>]] 15:50 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 20:26 23 nov 2025 (UTC) == Carretera Central de Cuba == ;Artículo(s) * {{a|Carretera Central de Cuba}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 19:05 23 nov 2025 (UTC) ;Respuesta {{admintab|{{no}} por ahora. |--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 20:19 23 nov 2025 (UTC)}} == Noemí Sabugal == ;Artículo(s) * {{a|Noemí Sabugal}} ;Causa Adición masiva de contenido promocional. Nótese que [https://es.wikipedia.org/wiki/Especial:Contribuciones/LITERESP la cuenta] que está detrás de los cambios únicamente ha editado este artículo desde que creó la cuenta en 2020, y que insiste en reintroducir el contenido promocional a pesar de que son ya varios los usuarios que le han revertido ([https://es.wikipedia.org/w/index.php?title=Noem%C3%AD_Sabugal&diff=prev&oldid=170622412 1], [https://es.wikipedia.org/w/index.php?title=Noem%C3%AD_Sabugal&diff=prev&oldid=170622412 2]), sin que atienda a razones. ;Usuario que lo solicita * [[Usuario:CFA1877|CFA1877]] ([[Usuario Discusión:CFA1877|discusión]]) 19:29 23 nov 2025 (UTC) ;Respuesta {{admintab|{{no}} vamos a proteger por una disputa editorial cuando ya intervino dos veces un bibliotecario. |--'''[[Usuario:Geom|<b style="padding: 3px 8px; background: linear-gradient(135deg, red, yellow); color: white; border-radius: 0px 7px 0px 7px">Geom</b>]]''' [[Usuario discusión:Geom|<span style="font-size:100%;color: brown;">'''(discusión)'''</span>]] 20:14 23 nov 2025 (UTC)}} == [[Fátima Bosch]] == ;Artículo(s) * {{a|Fátima Bosch}} ;Causa Vandalismo ; Usuario que lo solicita * —<span style="font-family:Trebuchet MS;font-size:95%">[[Usuario:Mαrti|<span style="color:#636;">Mαrti</span>]]&nbsp;<span style="color;background:#CBE2F7;border-radius:9px;">&nbsp;[[Usuario discusión:Mαrti|'''ϟ''']]&nbsp;</span></span> 20:33 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 semanas''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 20:46 23 nov 2025 (UTC) == [[La Maroma]] == ;Artículo(s) * {{a|La Maroma}} ;Causa Eliminación de información referenciada por parte de varios usuarios ; Usuario que lo solicita * [[Usuario:Casisgaal|<span style="font-size:black 3px 1px 3px; font-variant:Corbel; color:blue; text-shadow:cyan 2px 1px 2px">Casisgaal</span>]] [[Usuario discusión:Casisgaal|(Discusión)]] 21:51 23 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''2 días''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 05:01 24 nov 2025 (UTC) == [[Pene]] == ;Artículo(s) * {{a|Pene}} ;Causa Vandalismo ; Usuario que lo solicita * [[Usuario:Jh38|Jh38]] ([[Usuario Discusión:Jh38|discusión]]) 01:21 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 01:26 24 nov 2025 (UTC) == Título de la solicitud == ;Artículo(s) * {{a|BTS}} ;Causa Ediciones vandálicas con mofa en el artículo [[BTS]] por parte de IPs. ;Usuario que lo solicita * [[Usuario:Pichu VI|Pichu VI]] ([[Usuario Discusión:Pichu VI|discusión]]) 13:09 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''3 meses''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 15:26 24 nov 2025 (UTC) == [[BTS]] == ;Artículo(s) * {{a|BTS}} ;Causa Un usuario ip empezó a hacer guerras de ediciónes con los usuarios User34790 y Pichu VI ; Usuario que lo solicita * '''[[Usuario:User34790|<span style="font-size:black 3px 1px 3px; font-variant:Corbel; color:black; text-shadow:white 2px 1px 2px">User34790</span>]]''' [[Usuario discusión:User34790|(página de discusión)]] [[File:User hello.png|30px]] 13:46 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''3 meses''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 15:26 24 nov 2025 (UTC) == Adolfo Cambiaso == ;Artículo(s) * {{a|Adolfo Cambiaso}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 15:27 24 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}, vándalos bloqueados.|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:18 26 nov 2025 (UTC)}} == [[Enfermería]] == ;Artículo(s) * {{a|Enfermería}} ;Causa Reiteradas creaciones de posibles LTA. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 20:50 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Edslov'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 03:21 26 nov 2025 (UTC) == María Escribano == ;Artículo(s) * {{a|María Escribano}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 21:22 24 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:24 26 nov 2025 (UTC)}} == [[Copa Davis]] == ;Artículo(s) * {{a|Copa Davis}} ;Causa Vandalismo reiterado. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 22:03 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 23:36 24 nov 2025 (UTC) == [[Miguel Hidalgo y Costilla]] == ;Artículo(s) * {{a|Miguel Hidalgo y Costilla}} ;Causa Reaparecen los vandalismos de las cuentas temporales. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 22:06 24 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 año''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 22:21 24 nov 2025 (UTC) == Vive Claro == ;Artículo(s) * {{a|Vive Claro}} ;Causa Continúa las ediciones vandálicas del mismo usuario en el artículo, solicito por favor protección del mismo o un bloqueo más extensivo del usuario. ;Usuario que lo solicita * [[Usuario:Futbolero44|Futbolero44]] ([[Usuario Discusión:Futbolero44|discusión]]) 14:48 25 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Geom'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 15:26 25 nov 2025 (UTC) == Israel en el Festival de la Canción de Eurovisión == ;Artículo(s) * {{a|Israel en el Festival de la Canción de Eurovisión}} ;Causa Desde un entorno móvil se está realizando vandalismo al artículo ;Usuario que lo solicita * [[Usuario:Elultimolicantropo|Elultimolicantropo]] ([[Usuario discusión:Elultimolicantropo|discusión]]) [[Wikipedia:Tablón de anuncios de los bibliotecarios/Portal/Archivo/Protección de artículos/Actual#c-Elultimolicantropo-20251125161100-Israel en el Festival de la Canción de Eurovisión|16:11 25 nov 2025 (UTC)]] ;Respuesta {{admintab|1={{No}}, una sola edición en todo el mes no justifica una semiprotección. [[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:22 26 nov 2025 (UTC)|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:22 26 nov 2025 (UTC)}} == [[Wikipedia:Mes de Asia/2025]] == ;Artículo(s) * {{a|Wikipedia:Mes de Asia/2025}} ;Causa La página sufre vandalismos días si, día también y teniendo en cuenta que solo pueden participar usuarios con cuenta. Rogaría su protección durante lo que queda de mes. Gracias ; Usuario que lo solicita * [[Usuario:Términus|Términus]] ([[Usuario Discusión:Términus|discusión]]) 16:25 25 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Marcelo'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 16:31 25 nov 2025 (UTC) == [[Shayna Baszler]] == ;Artículo(s) * {{a|Shayna Baszler}} ;Causa Cambios de plantillas y enlaces a fechas, ediciones arbitrarias reiteradas ; Usuario que lo solicita * [[Usuario:Casisgaal|<span style="font-size:black 3px 1px 3px; font-variant:Corbel; color:blue; text-shadow:cyan 2px 1px 2px">Casisgaal</span>]] [[Usuario discusión:Casisgaal|(Discusión)]] 19:05 25 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''3 días''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 20:11 25 nov 2025 (UTC) == [[Hasbulla]] == ;Artículo(s) * {{a|Hasbulla}} ;Causa Vandalismo reiterado. ; Usuario que lo solicita * [[Usuario:Dinamino|Dinamino]] ([[Usuario Discusión:Dinamino|discusión]]) 21:23 25 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 mes''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 21:36 25 nov 2025 (UTC) == Cartujo (gato) == ;Artículo(s) * {{a|Cartujo (gato)}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 21:35 25 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''1 semana''' por '''Virum Mundi'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 22:06 25 nov 2025 (UTC) == [[Retos Virales de Tiktok]] == ;Artículo(s) * {{a|Retos Virales de Tiktok}} ;Causa Es muy posible que otra persona intente crear la página aunque no tenga relevancia enciclopédica ; Usuario que lo solicita * [[Usuario:Goolwiki|Gool]] ([[Usuario Discusión:Goolwiki|discusión]]) 22:50 25 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}} por ahora. El hecho de que el artículo haya sido borrado una vez no implica necesariamente que creaciones futuras vayan a carecer también de relevancia. Un saludo.|2=[[Usuario:Rafstr|<b style="background:black;color:#fff;font-size:90%;border-radius:5px 0 0 5px;padding:2px 5px;">Rafstr</b>]]&nbsp;[[Usuario discusión:Rafstr|<span style="font-size:80%;color: blue;">'''(discusión)'''</span>]] 00:46 26 nov 2025 (UTC)}} == TyC Sports == ;Artículo(s) * {{a|TyC Sports}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 00:13 26 nov 2025 (UTC) ;Respuesta [[Archivo:Locked.svg|20px|Página protegida|enlace=]] Página semiprotegida durante '''3 días''' por '''Rafstr'''. [[Usuario:Jembot|Jembot]] ([[Usuario Discusión:Jembot|discusión]]) 00:51 26 nov 2025 (UTC) == [[Línea 7 del Metro de Santiago]] == ;Artículo(s) * {{a|Línea 7 del Metro de Santiago}} ;Causa Vandalismo de anónimos. Insistencia en insertar contenido irrelevante. ; Usuario que lo solicita * [[Usuario:Aroblesm|Aroblesm]] ([[Usuario Discusión:Aroblesm|discusión]]) 00:26 26 nov 2025 (UTC) ;Respuesta {{admintab|1={{No}}. {{u|Aroblesm}}, no me queda claro porqué sería irrelevante y mucho menos «vandalismo» —quizá redactándolo de otra forma—, información basada en tres fuentes y confirmada por el Metro, sobre una máquina previamente mencionada en el artículo.|2=[[Usuario:Edslov|Edslov]] ([[Usuario Discusión:Edslov|discusión]]) 03:28 26 nov 2025 (UTC)}} == RyuJin == ;Artículo(s) * {{a|RyuJin}} ;Causa Vandalismo persistente ;Usuario que lo solicita * [[Usuario:Niccolasa|Niccolasa]] ([[Usuario Discusión:Niccolasa|discusión]]) 17:30 26 nov 2025 (UTC) ;Respuesta {{admintab|{{No}} es necesario. |[[Usuario:Saloca|Saloca]] ([[Usuario_Discusión:Saloca|<big>ངའི་གླེང་མོལ།</big>]]) 17:43 26 nov 2025 (UTC)}} == David Luiz == ;Artículo(s) * {{a|David Luiz}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:SeroBOT|SeroBOT]] ([[Usuario Discusión:SeroBOT|discusión]]) 18:53 26 nov 2025 (UTC) ;Respuesta {{admintab|1=Prueba|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 22:37, 26 November 2025 (UTC)|3=}} == Club Atlético Belgrano == ;Artículo(s) * {{a|Club Atlético Belgrano}} ;Causa Reversiones múltiples por posibles vandalismos. ; Usuario que lo solicita * [[Usuario:TheProxy18|TheProxy18]] ([[Usuario Discusión:TheProxy18|discusión]]) 18:35 26 nov 2025 (UTC) ;Respuesta {{admintab|1=Otra prueba más|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 22:40, 26 November 2025 (UTC)|3=}} == [[Tabellone]] == ;Artículo(s) * {{a|Tabellone}} ;Causa Prueba de nueva solicitud de protección. ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:14, 26 February 2026 (UTC) ;Respuesta (a rellenar por un bibliotecario) == [[U-3]] == ;Artículo(s) * {{a|U-3}} ;Causa Prueba ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:16, 26 February 2026 (UTC) ;Respuesta (a rellenar por un bibliotecario) == [[Wikipédia:Escolha do artigo em destaque/e]] == ;Artículo(s) * {{a|Wikipédia:Escolha do artigo em destaque/e}} ;Causa Esta es la razón ; Usuario que lo solicita * [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 14:14, 11 April 2026 (UTC) ;Respuesta {{admintab|1=Resuelvo esta protección|2=[[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 14:14, 11 April 2026 (UTC)|3=}} imbgjqxhgpnjewzbzcyf2oys2dsgwry Mainspace 0 171251 737680 737507 2026-04-11T19:55:59Z Novem Linguae 49714 Replaced content with "Test" 737680 wikitext text/x-wiki Test bop1vj5i98maix36pjrpgep1w6hnxfe 737681 737680 2026-04-11T19:56:16Z Novem Linguae 49714 Nominated for deletion; see [[:Wikipedia:Articles for deletion/Mainspace (18th nomination)]]. 737681 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{AfDM|page=Mainspace (18th nomination)|year=2026|month=April|day=11|substed=yes|origtag=afdx|help=off}} <!-- End of AfD message, feel free to edit beyond this point --> Test hb4j3mcj8012d7hii14c7xcbzbbv6kr 737685 737681 2026-04-11T19:56:43Z Novem Linguae 49714 Nominated for deletion; see [[:Wikipedia:Articles for deletion/Mainspace (19th nomination)]]. 737685 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{AfDM|page=Mainspace (19th nomination)|year=2026|month=April|day=11|substed=yes|origtag=afdx|help=off|outcome=merging}} <!-- End of AfD message, feel free to edit beyond this point --> Test a2f2cl2cpip1rc3n32a0tdkkto3qhvc 737734 737685 2026-04-12T09:15:38Z Novem Linguae 49714 Nominated for deletion; see [[:Wikipedia:Articles for deletion/Mainspace (20th nomination)]]. 737734 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{AfDM|page=Mainspace (20th nomination)|year=2026|month=April|day=12|substed=yes|origtag=afdx|help=off|outcome=redirecting}} <!-- End of AfD message, feel free to edit beyond this point --> Test bugr9esnvvqu30gflal0rjq4z6sdmay 737738 737734 2026-04-12T09:17:07Z Novem Linguae 49714 Nominated for deletion; see [[:Wikipedia:Articles for deletion/Mainspace (21th nomination)]]. 737738 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{AfDM|page=Mainspace (21th nomination)|year=2026|month=April|day=12|substed=yes|origtag=afdx|help=off}} <!-- End of AfD message, feel free to edit beyond this point --> Test n87nd2itj3u1yojftuppnvsjqfmzxl6 737742 737738 2026-04-12T10:05:36Z Novem Linguae 49714 Nominated for deletion; see [[:Wikipedia:Articles for deletion/Mainspace (22th nomination)]]. 737742 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{AfDM|page=Mainspace (22th nomination)|year=2026|month=April|day=12|substed=yes|origtag=afdx|help=off|outcome=draftification}} <!-- End of AfD message, feel free to edit beyond this point --> Test 03l5trj2bqaml9i8o6jnwubsotec9s2 User:MrJaroslavik/GlobalCheckUserStats.js 2 174673 737580 737578 2026-04-11T12:37:17Z MrJaroslavik 44012 e 737580 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit (essential for enwiki). // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php', { anonymous: true }); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'), isGloballyStaff = gGroups.includes('staff'), isGloballyOmbuds = gGroups.includes('ombuds'); let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'newer', lelimit: 'max', formatversion: 2 }); const events = res.query.logevents || []; let logEntries = []; let pendingAdded = null; const LIMIT_COMBINE_MINS = 43200; for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || (p.newgroups || []).includes('checkuser'); const cuRemoved = (p.remove || []).includes('checkuser') || ((p.oldgroups || []).includes('checkuser') && !(p.newgroups || []).includes('checkuser')); let expiryDate = null; if (p.newmetadata && p.newmetadata[0] && p.newmetadata[0].expiry) { expiryDate = new Date(p.newmetadata[0].expiry); } const eventDate = new Date(e.timestamp), exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); if (cuAdded || cuRemoved) { if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (eventDate >= auditStart && eventDate <= auditEnd) { if (cuAdded && expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); if (!isNaN(diffMins)) { const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; logEntries.push(`* ${exactTime}: ADDED/EXPIRED by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } pendingAdded = null; } else if (cuAdded) { if (pendingAdded) logEntries.push(`* ${pendingAdded.time}: ADDED by ${pendingAdded.user}${pendingAdded.isSelf} (Duration: Active/Not removed)`); pendingAdded = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } else if (cuRemoved) { if (pendingAdded) { const diffMins = Math.round(Math.abs(eventDate - pendingAdded.date) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { logEntries.push(`* ${pendingAdded.time}: ADDED/REMOVED by ${pendingAdded.user}${pendingAdded.isSelf} (Duration: ${durStr})`); } else { logEntries.push(`* ${pendingAdded.time}: ADDED by ${pendingAdded.user}${pendingAdded.isSelf}`); logEntries.push(`* ${exactTime}: REMOVED by ${e.user}${isSelf} (Duration: ${durStr})`); } if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingAdded = null; } else { logEntries.push(`* ${exactTime}: REMOVED by ${e.user}${isSelf}`); } } } } } if (pendingAdded) { logEntries.push(`* ${pendingAdded.time}: ADDED by ${pendingAdded.user}${pendingAdded.isSelf} (Duration: Active/Not removed)`); } if (logEntries.length) logText = '\n' + logEntries.join('\n'); } catch (err) {} if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; let wasLocalInPeriod = (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)); let gStat = isGloballyStaff ? "Staff" : isGloballySteward ? "Steward" : isGloballyOmbuds ? "Ombudsman" : ""; let roleLabel = ""; if (isCurrentLocal) roleLabel = "Current Local CheckUser" + (gStat ? ` (${gStat})` : ""); else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (wasLocalInPeriod) { let suffix = gStat ? ` (${gStat})` : (historyRes.wasSteward ? " (Former Steward)" : ""); roleLabel = "Former Local CheckUser (in period)" + suffix; } else if (longestTimeStr) roleLabel = `Temporary CU action (${longestTimeStr})`; else if (gStat) roleLabel = `Current ${gStat}`; else if (historyRes.wasSteward) roleLabel = "Former Steward (in period)"; else roleLabel = "Unknown role"; return { role: roleLabel, log: logText }; } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) await sleep(30000); else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${db} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small>\n`; let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); drovqosl1kia6xqwuvwdz6ykh0t82u9 737581 737580 2026-04-11T12:54:36Z MrJaroslavik 44012 e 737581 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit (essential for enwiki). // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php', { anonymous: true }); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'), isGloballyStaff = gGroups.includes('staff'), isGloballyOmbuds = gGroups.includes('ombuds'); let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'newer', lelimit: 'max', formatversion: 2 }); const events = res.query.logevents || []; let logEntries = []; let pendingAdded = null; const LIMIT_COMBINE_MINS = 43200; for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || (p.newgroups || []).includes('checkuser'); const cuRemoved = (p.remove || []).includes('checkuser') || ((p.oldgroups || []).includes('checkuser') && !(p.newgroups || []).includes('checkuser')); // Detekce expirace (pro automatické odebrání) - ignorujeme "infinity" let expiryDate = null; if (p.newmetadata && p.newmetadata[0] && p.newmetadata[0].expiry && p.newmetadata[0].expiry !== 'infinity') { expiryDate = new Date(p.newmetadata[0].expiry); } const eventDate = new Date(e.timestamp), exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); if (cuAdded || cuRemoved) { if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (eventDate >= auditStart && eventDate <= auditEnd) { if (cuAdded && expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); if (!isNaN(diffMins)) { const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; logEntries.push(`* ${exactTime}: ADDED/EXPIRED by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } pendingAdded = null; } else if (cuAdded) { if (pendingAdded) logEntries.push(`* ${pendingAdded.time}: ADDED by ${pendingAdded.user}${pendingAdded.isSelf} (Duration: Active/Not removed)`); pendingAdded = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } else if (cuRemoved) { if (pendingAdded) { const diffMins = Math.round(Math.abs(eventDate - pendingAdded.date) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { logEntries.push(`* ${pendingAdded.time}: ADDED/REMOVED by ${pendingAdded.user}${pendingAdded.isSelf} (Duration: ${durStr})`); } else { logEntries.push(`* ${pendingAdded.time}: ADDED by ${pendingAdded.user}${pendingAdded.isSelf}`); logEntries.push(`* ${exactTime}: REMOVED by ${e.user}${isSelf} (Duration: ${durStr})`); } if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingAdded = null; } else { logEntries.push(`* ${exactTime}: REMOVED by ${e.user}${isSelf}`); } } } } } if (pendingAdded) { logEntries.push(`* ${pendingAdded.time}: ADDED by ${pendingAdded.user}${pendingAdded.isSelf} (Duration: Active/Not removed)`); } if (logEntries.length) logText = '\n' + logEntries.join('\n'); } catch (err) {} if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; let wasLocalInPeriod = (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)); let gStat = isGloballyStaff ? "Staff" : isGloballySteward ? "Steward" : isGloballyOmbuds ? "Ombudsman" : ""; let roleLabel = ""; if (isCurrentLocal) roleLabel = "Current Local CheckUser" + (gStat ? ` (${gStat})` : ""); else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (wasLocalInPeriod) { let suffix = gStat ? ` (${gStat})` : (historyRes.wasSteward ? " (Former Steward)" : ""); roleLabel = "Former Local CheckUser (in period)" + suffix; } else if (longestTimeStr) roleLabel = `Temporary CU action (${longestTimeStr})`; else if (gStat) roleLabel = `Current ${gStat}`; else if (historyRes.wasSteward) roleLabel = "Former Steward (in period)"; else roleLabel = "Unknown role"; return { role: roleLabel, log: logText }; } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) await sleep(30000); else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${db} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small>\n`; let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); evrohxewqc4415lstergfbt3w3s31cx 737582 737581 2026-04-11T12:58:16Z MrJaroslavik 44012 e 737582 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit (essential for enwiki). // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php', { anonymous: true }); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'), isGloballyStaff = gGroups.includes('staff'), isGloballyOmbuds = gGroups.includes('ombuds'); let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }); const events = res.query.logevents || []; let logEntries = []; let pendingRemoved = null; const LIMIT_COMBINE_MINS = 43200; // 30 dní for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') { expiryDate = new Date(cuMeta.expiry); } } const eventDate = new Date(e.timestamp), exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); if (cuAdded || cuRemoved) { if (cuAdded) addTime = eventDate; if (cuRemoved) { removeTime = eventDate; if (e.user === user || !e.user) isSelfAssign = true; } if (eventDate >= auditStart && eventDate <= auditEnd) { const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (cuAdded) { // SCÉNÁŘ A: Manuální odebrání if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { // Spojený záznam s jasnými časy logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); } else { // Rozdělený záznam (nad 30 dnů) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); logEntries.unshift(`* ADDED: ${exactTime} by ${e.user}${isSelf} (Duration: ${durStr})`); } if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; } // SCÉNÁŘ B: Automatická expirace else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); if (!isNaN(diffMins)) { const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } } // SCÉNÁŘ C: Aktivní práva else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (cuRemoved) { if (pendingRemoved) { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); } pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } } if (pendingRemoved) { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); } if (logEntries.length) logText = '\n' + logEntries.join('\n'); } catch (err) {} if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; let wasLocalInPeriod = (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)); let gStat = isGloballyStaff ? "Staff" : isGloballySteward ? "Steward" : isGloballyOmbuds ? "Ombudsman" : ""; let roleLabel = ""; if (isCurrentLocal) roleLabel = "Current Local CheckUser" + (gStat ? ` (${gStat})` : ""); else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (wasLocalInPeriod) { let suffix = gStat ? ` (${gStat})` : (historyRes.wasSteward ? " (Former Steward)" : ""); roleLabel = "Former Local CheckUser (in period)" + suffix; } else if (longestTimeStr) roleLabel = `Temporary CU action (${longestTimeStr})`; else if (gStat) roleLabel = `Current ${gStat}`; else if (historyRes.wasSteward) roleLabel = "Former Steward (in period)"; else roleLabel = "Unknown role"; return { role: roleLabel, log: logText }; } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) await sleep(30000); else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${db} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small>\n`; let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); tgen0yuxzgfvxbahzodrxydtl2354lb 737583 737582 2026-04-11T13:21:02Z MrJaroslavik 44012 E 737583 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit. // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php', { anonymous: true }); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'), isGloballyStaff = gGroups.includes('staff'), isGloballyOmbuds = gGroups.includes('ombuds'); let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; // API request: 'letitle' limits logs to the target user, 'ledir: older' reads from newest to oldest try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }); const events = res.query.logevents || []; // Array of log events returned by the API let logEntries = []; // Storage for the final formatted log lines let pendingRemoved = null; // Memory to store a "removal" event while searching for its matching "addition" const LIMIT_COMBINE_MINS = 43200; // 30-day threshold for merging two events into a single line for (let i = 0; i < events.length; i++) { // Loop through events one by one const e = events[i], p = e.params || {}; // 'e' is the event object, 'p' holds parameters (added/removed groups) // cuAdded: Check if 'checkuser' group was added in this log entry const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); // cuRemoved: Check if 'checkuser' group was removed in this log entry const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); // Expiry Check: If metadata exists for checkuser, extract the expiry time (skip if set to 'infinity') let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') { expiryDate = new Date(cuMeta.expiry); } } const eventDate = new Date(e.timestamp), exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); if (cuAdded || cuRemoved) { if (cuAdded) addTime = eventDate; if (cuRemoved) { removeTime = eventDate; if (e.user === user || !e.user) isSelfAssign = true; } if (eventDate >= auditStart && eventDate <= auditEnd) { const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (cuAdded) { // SCENARIO A: We have a removal in memory (pendingRemoved), pair it with this addition (cuAdded) if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); // Calculate difference in minutes const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; // Convert minutes to human-readable string (d h m) const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { // Short-term: Combine into a single line showing both timestamps logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); } else { // Long-term: List as two separate events for historical clarity logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); logEntries.unshift(`* ADDED: ${exactTime} by ${e.user}${isSelf} (Duration: ${durStr})`); } if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; // Clear memory as the pair is now complete } // SCENARIO B: No manual removal found, but the record has an expiry date (Steward/Bot action) else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); // Calculate duration until expiry if (!isNaN(diffMins)) { const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; // Format exact expiration time const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); // Format expiry timestamp // Output a single line tagged as EXPIRED logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } } // SCENARIO C: Added with no end found (User currently holds the rights) else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (cuRemoved) { if (pendingRemoved) { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); } pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } } if (pendingRemoved) { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); } if (logEntries.length) logText = '\n' + logEntries.join('\n'); } catch (err) {} if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; let wasLocalInPeriod = (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)); let gStat = isGloballyStaff ? "Staff" : isGloballySteward ? "Steward" : isGloballyOmbuds ? "Ombudsman" : ""; let roleLabel = ""; if (isCurrentLocal) // User currently holds CheckUser rights (Local CheckUser) roleLabel = "Current Local CheckUser" + (gStat ? ` (${gStat})` : ""); else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { // A steward (current or former) granted themselves rights (Steward Action) roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (wasLocalInPeriod) { // User held rights during the period, but it wasn't a steward self-assign let suffix = gStat ? ` (${gStat})` : (historyRes.wasSteward ? " (Former Steward)" : ""); roleLabel = "Former Local CheckUser (in period)" + suffix; } else if (longestTimeStr) roleLabel = `Temporary CU action (${longestTimeStr})`; else if (gStat) roleLabel = `Current ${gStat}`; else if (historyRes.wasSteward) roleLabel = "Former Steward (in period)"; else roleLabel = "Unknown role"; return { role: roleLabel, log: logText }; } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) await sleep(30000); else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${db} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small>\n`; let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); bcu8rjl87f22l87e0g9qz1fnw62ezyg 737595 737583 2026-04-11T15:15:17Z MrJaroslavik 44012 e 737595 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit. // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php', { anonymous: true }); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); // 1. FETCH CURRENT GLOBAL GROUPS (Using cache to minimize Meta-Wiki API requests) if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'); const isGloballyStaff = gGroups.includes('staff'); const isGloballyOmbuds = gGroups.includes('ombuds') || gGroups.includes('ombudsman'); // 2. FETCH GLOBAL HISTORY (To identify roles held during the audit period but lost since) if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; // Determine if the user held global Staff or Ombudsman roles at any point in the period const wasStaffInPeriod = isGloballyStaff || historyRes.wasStaff; const wasOmbudsInPeriod = isGloballyOmbuds || historyRes.wasOmbuds; // 3. CHECK CURRENT LOCAL CHECKUSER STATUS let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; try { // 4. ANALYZE LOCAL RIGHTS LOG (Reading 'older' to ensure latest data is captured first) const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }); const events = res.query.logevents || []; let logEntries = []; let pendingRemoved = null; // Temporary storage for removal events awaiting a matching addition const LIMIT_COMBINE_MINS = 43200; // 30-day threshold for combining ADDED/REMOVED into one line for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; // Logic to detect group changes across different API formats const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); // Check for rights additions that include an automatic expiration date (Steward/Bot actions) let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') { expiryDate = new Date(cuMeta.expiry); } } const eventDate = new Date(e.timestamp), exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); if (cuAdded || cuRemoved) { if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; // Flag if the right was assigned/removed by the user themselves (Typical for Stewards) const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (eventDate >= auditStart && eventDate <= auditEnd) { if (cuAdded) { // SCENARIO A: Right was manually removed later (pendingRemoved exists) if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { // Pair addition and removal into a single chronological line logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); } else { // If duration > 30 days, list as two separate events for readability logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); logEntries.unshift(`* ADDED: ${exactTime} by ${e.user}${isSelf} (Duration: ${durStr})`); } if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; } // SCENARIO B: No manual removal found, but an expiration date was set else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); if (!isNaN(diffMins)) { const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); // Log as an automatic expiration logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } } // SCENARIO C: Added but removal/expiration event was not found in the scanned period else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } // Capture removal event and wait for the corresponding addition further back in history else if (cuRemoved) { if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } } // Flush any remaining unpaired removal events if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); if (logEntries.length) logText = '\n' + logEntries.join('\n'); } catch (err) {} // 5. ROLE CLASSIFICATION (Determines the label in the "Category" column) // Checks if user has actions in checkuserlog but NO rights log entries (means they held rights throughout) const hasActionsButNoLogs = (results[db] && results[db][user] && results[db][user].total > 0 && !addTime && !removeTime); let wasLocalInPeriod = (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)) || hasActionsButNoLogs; // Build dynamic global role suffix (Current vs Former) let gRoleName = wasStaffInPeriod ? "Staff" : wasOmbudsInPeriod ? "Ombudsman" : ""; let isGCurrent = (isGloballyStaff || isGloballyOmbuds); let gSuffix = gRoleName ? ` (${isGCurrent ? 'Current' : 'Former'} ${gRoleName})` : ""; let roleLabel = ""; if (isCurrentLocal) { roleLabel = "Current Local CheckUser" + gSuffix; } else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { // Classify short-term actions performed by Stewards roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (wasLocalInPeriod) { // Classify users who held the local group but are no longer active let suffix = gSuffix || ((isGloballySteward || historyRes.wasSteward) ? " (Former Steward)" : ""); roleLabel = "Former Local CheckUser (in period)" + suffix; } else if (longestTimeStr) { roleLabel = `Temporary CU action (${longestTimeStr})`; } else if (gRoleName) { // Classify global roles even if they never held local CU rights roleLabel = `${isGCurrent ? 'Current' : 'Former'} ${gRoleName}`; } else { roleLabel = "Unknown role"; } return { role: roleLabel, log: logText }; } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) await sleep(30000); else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${db} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small>\n`; let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); qi28x8ooe98z9sybd9e2p3skw6fbey5 737596 737595 2026-04-11T15:21:12Z MrJaroslavik 44012 e 737596 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit. // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php', { anonymous: true }); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); // 1. FETCH CURRENT GLOBAL GROUPS (Using cache to minimize Meta-Wiki API requests) if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'); const isGloballyStaff = gGroups.includes('staff'); const isGloballyOmbuds = gGroups.includes('ombuds') || gGroups.includes('ombudsman'); // 2. FETCH GLOBAL HISTORY (To identify roles held during the audit period but lost since) if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; // Determine if the user held global Staff or Ombudsman roles at any point in the period const wasStaffInPeriod = isGloballyStaff || historyRes.wasStaff; const wasOmbudsInPeriod = isGloballyOmbuds || historyRes.wasOmbuds; // 3. CHECK CURRENT LOCAL CHECKUSER STATUS let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; try { // 4. ANALYZE LOCAL RIGHTS LOG (Reading 'older' to ensure latest data is captured first) const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }); const events = res.query.logevents || []; let logEntries = []; let pendingRemoved = null; // Temporary storage for removal events awaiting a matching addition const LIMIT_COMBINE_MINS = 43200; // 30-day threshold for combining ADDED/REMOVED into one line for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; // Logic to detect group changes across different API formats const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); // Check for rights additions that include an automatic expiration date (Steward/Bot actions) let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') { expiryDate = new Date(cuMeta.expiry); } } const eventDate = new Date(e.timestamp), exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); if (cuAdded || cuRemoved) { if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; // Flag if the right was assigned/removed by the user themselves (Typical for Stewards) const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (eventDate >= auditStart && eventDate <= auditEnd) { if (cuAdded) { // SCENARIO A: Right was manually removed later (pendingRemoved exists) if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { // Pair addition and removal into a single chronological line logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); } else { // If duration > 30 days, list as two separate events for readability logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); logEntries.unshift(`* ADDED: ${exactTime} by ${e.user}${isSelf} (Duration: ${durStr})`); } if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; } // SCENARIO B: No manual removal found, but an expiration date was set else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); if (!isNaN(diffMins)) { const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); // Log as an automatic expiration logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } } // SCENARIO C: Added but removal/expiration event was not found in the scanned period else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } // Capture removal event and wait for the corresponding addition further back in history else if (cuRemoved) { if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } } // Flush any remaining unpaired removal events if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); if (logEntries.length) logText = '\n' + logEntries.join('\n'); } catch (err) {} // 5. ROLE CLASSIFICATION (Determines the label in the "Category" column) // Checks if user has actions in checkuserlog but NO rights log entries (means they held rights throughout) const hasActionsButNoLogs = (results[db] && results[db][user] && results[db][user].total > 0 && !addTime && !removeTime); let wasLocalInPeriod = (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)) || hasActionsButNoLogs; // Build dynamic global role suffix (Current vs Former) let gRoleName = wasStaffInPeriod ? "Staff" : wasOmbudsInPeriod ? "Ombudsman" : ""; let isGCurrent = (isGloballyStaff || isGloballyOmbuds); let gSuffix = gRoleName ? ` (${isGCurrent ? 'Current' : 'Former'} ${gRoleName})` : ""; let roleLabel = ""; // Build the final label if (isCurrentLocal) { roleLabel = "Current Local CheckUser" + gSuffix; } else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (gRoleName && (wasStaffInPeriod || wasOmbudsInPeriod)) { roleLabel = `${isGCurrent ? 'Current' : 'Former'} ${gRoleName}${hasActionsButNoLogs ? ' (actions in period)' : ''}`; } else if (wasLocalInPeriod) { let suffix = gSuffix || ((isGloballySteward || historyRes.wasSteward) ? " (Former Steward)" : ""); roleLabel = "Former Local CheckUser (in period)" + suffix; } else if (longestTimeStr) { roleLabel = `Temporary CU action (${longestTimeStr})`; } else if (gRoleName) { // Classify global roles even if they never held local CU rights roleLabel = `${isGCurrent ? 'Current' : 'Former'} ${gRoleName}`; } else { roleLabel = "Unknown role"; } return { role: roleLabel, log: logText }; } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) await sleep(30000); else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${db} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small>\n`; let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); kr7nkcd5t05o6z73dm3uqb9cxwrd4nt 737597 737596 2026-04-11T15:37:58Z MrJaroslavik 44012 e 737597 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit. // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php', { anonymous: true }); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); // 1. FETCH CURRENT GLOBAL GROUPS (Cached) if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'); const isGloballyStaff = gGroups.includes('staff'); const isGloballyOmbuds = gGroups.includes('ombuds') || gGroups.includes('ombudsman'); // 2. FETCH GLOBAL HISTORY (To identify roles held during the period but lost since) if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; // 3. CHECK CURRENT LOCAL CHECKUSER STATUS let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; // --- 4. DEEP RIGHTS LOG SCAN (Pagination to bypass 500-limit) --- let events = []; let continueToken = null; let finished = false; try { while (!finished) { let params = { action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); const res = await metaApi.get(params); const batch = res.query.logevents || []; events = events.concat(batch); if (res.continue) continueToken = res.continue; else finished = true; } let logEntries = []; let pendingRemoved = null; let hasLocalRightsInPeriod = false; const LIMIT_COMBINE_MINS = 43200; // 30 days for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); const eventDate = new Date(e.timestamp); const exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); // Track adding/revoking dates across entire history to determine status in audit period if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; // Verification logic: Held rights in period if added before end AND (still active OR removed after start) if (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)) { hasLocalRightsInPeriod = true; } // Rights Log Formatting (Only for events within the audit window) if (eventDate >= auditStart && eventDate <= auditEnd && (cuAdded || cuRemoved)) { let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') expiryDate = new Date(cuMeta.expiry); } const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (cuAdded) { if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); } else { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); logEntries.unshift(`* ADDED: ${exactTime} by ${e.user}${isSelf} (Duration: ${durStr})`); } if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; } else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (cuRemoved) { if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); if (logEntries.length) logText = '\n' + logEntries.join('\n'); // --- 5. ROLE CLASSIFICATION --- let roleLabel = ""; const hasActions = (results[db] && results[db][user] && results[db][user].total > 0); let wasCU = hasLocalRightsInPeriod || hasActions; if (isGloballyStaff || historyRes.wasStaff) { roleLabel = isGloballyStaff ? "Current Staff" : "Former Staff (in period)"; } else if (isCurrentLocal) { roleLabel = "Current Local CheckUser"; } else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (isGloballySteward || historyRes.wasSteward) { roleLabel = isGloballySteward ? "Current Steward" : "Former Steward (in period)"; } else if (isGloballyOmbuds || historyRes.wasOmbuds) { roleLabel = isGloballyOmbuds ? "Current Ombudsman" : "Former Ombudsman (in period)"; } else if (wasCU) { roleLabel = "Former Local CheckUser (in period)"; } else { roleLabel = "Unknown role"; } return { role: roleLabel, log: logText }; } catch (err) { return { role: "Error fetching data", log: "" }; } } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) await sleep(30000); else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${db} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small>\n`; let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); 3fg8xn7pheqc4i7ctl90xrqwg2o46dz 737598 737597 2026-04-11T15:51:46Z MrJaroslavik 44012 e 737598 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit. // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php', { anonymous: true }); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); // 1. FETCH CURRENT GLOBAL GROUPS (Cached) if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'); const isGloballyStaff = gGroups.includes('staff'); const isGloballyOmbuds = gGroups.includes('ombuds') || gGroups.includes('ombudsman'); // 2. FETCH GLOBAL HISTORY (To identify roles held during the period but lost since) if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; // 3. CHECK CURRENT LOCAL CHECKUSER STATUS let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; // --- 4. DEEP RIGHTS LOG SCAN (Pagination to bypass 500-limit) --- let events = []; let continueToken = null; let finished = false; try { while (!finished) { let params = { action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); const res = await metaApi.get(params); const batch = res.query.logevents || []; events = events.concat(batch); if (res.continue) continueToken = res.continue; else finished = true; } let logEntries = []; let pendingRemoved = null; let hasLocalRightsInPeriod = false; const LIMIT_COMBINE_MINS = 43200; // 30 days for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); const eventDate = new Date(e.timestamp); const exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); // Track adding/revoking dates across entire history to determine status in audit period if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; // Verification logic: Held rights in period if added before end AND (still active OR removed after start) if (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)) { hasLocalRightsInPeriod = true; } // Rights Log Formatting (Only for events within the audit window) if (eventDate >= auditStart && eventDate <= auditEnd && (cuAdded || cuRemoved)) { let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') expiryDate = new Date(cuMeta.expiry); } const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (cuAdded) { if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); } else { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); logEntries.unshift(`* ADDED: ${exactTime} by ${e.user}${isSelf} (Duration: ${durStr})`); } if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; } else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (cuRemoved) { if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); if (logEntries.length) logText = '\n' + logEntries.join('\n'); // --- 5. ROLE CLASSIFICATION --- let roleLabel = ""; const hasActions = (results[db] && results[db][user] && results[db][user].total > 0); let wasCU = hasLocalRightsInPeriod || hasActions; if (isGloballyStaff || historyRes.wasStaff) { roleLabel = isGloballyStaff ? "Current Staff" : "Former Staff (in period)"; } else if (isCurrentLocal) { roleLabel = "Current Local CheckUser"; } else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (isGloballySteward || historyRes.wasSteward) { roleLabel = isGloballySteward ? "Current Steward" : "Former Steward (in period)"; } else if (isGloballyOmbuds || historyRes.wasOmbuds) { roleLabel = isGloballyOmbuds ? "Current Ombudsman" : "Former Ombudsman (in period)"; } else if (wasCU) { roleLabel = "Former Local CheckUser (in period)"; } else { roleLabel = "Unknown role"; } return { role: roleLabel, log: logText }; } catch (err) { return { role: "Error fetching data", log: "" }; } } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) await sleep(30000); else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${db} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small>\n`; let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user}@${db} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); t9n4s57i4q4cvzjmxjety21hhldu0ac 737620 737598 2026-04-11T17:10:08Z MrJaroslavik 44012 e 737620 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit. // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } function getInterwikiPrefix(db) { const specials = { 'commonswiki': 'commons', 'metawiki': 'm', 'wikidatawiki': 'd', 'mediawikiwiki': 'mw', 'specieswiki': 'wikispecies', 'foundationwiki': 'wikimedia', 'sourceswiki': 'wikisource' }; if (specials[db]) return specials[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return 's:' + name.slice(0, -10); if (name.endsWith('wikiversity')) return 'v:' + name.slice(0, -11); if (name.endsWith('wiktionary')) return 'wikt:' + name.slice(0, -10); if (name.endsWith('wikivoyage')) return 'voy:' + name.slice(0, -10); if (name.endsWith('wikibooks')) return 'b:' + name.slice(0, -9); if (name.endsWith('wikiquote')) return 'q:' + name.slice(0, -9); if (name.endsWith('wikinews')) return 'n:' + name.slice(0, -8); if (name.endsWith('wikimedia')) return 'wikimedia:' + name.slice(0, -9); if (name.endsWith('wiki')) return 'w:' + name.slice(0, -4); return 'w:' + name; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php', { anonymous: true }); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); // 1. FETCH CURRENT GLOBAL GROUPS (Cached) if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'); const isGloballyStaff = gGroups.includes('staff'); const isGloballyOmbuds = gGroups.includes('ombuds') || gGroups.includes('ombudsman'); // 2. FETCH GLOBAL HISTORY (To identify roles held during the period but lost since) if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; // 3. CHECK CURRENT LOCAL CHECKUSER STATUS let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; // --- 4. DEEP RIGHTS LOG SCAN (Pagination to bypass 500-limit) --- let events = []; let continueToken = null; let finished = false; try { while (!finished) { let params = { action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); const res = await metaApi.get(params); const batch = res.query.logevents || []; events = events.concat(batch); if (res.continue) continueToken = res.continue; else finished = true; } let logEntries = []; let pendingRemoved = null; let hasLocalRightsInPeriod = false; const LIMIT_COMBINE_MINS = 43200; // 30 days for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); const eventDate = new Date(e.timestamp); const exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); // Track adding/revoking dates across entire history to determine status in audit period if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; // Verification logic: Held rights in period if added before end AND (still active OR removed after start) if (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)) { hasLocalRightsInPeriod = true; } // Rights Log Formatting (Only for events within the audit window) if (eventDate >= auditStart && eventDate <= auditEnd && (cuAdded || cuRemoved)) { let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') expiryDate = new Date(cuMeta.expiry); } const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (cuAdded) { if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); } else { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); logEntries.unshift(`* ADDED: ${exactTime} by ${e.user}${isSelf} (Duration: ${durStr})`); } if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; } else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (cuRemoved) { if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); if (logEntries.length) logText = '\n' + logEntries.join('\n'); // --- 5. ROLE CLASSIFICATION --- let roleLabel = ""; const hasActions = (results[db] && results[db][user] && results[db][user].total > 0); let wasCU = hasLocalRightsInPeriod || hasActions; if (isGloballyStaff || historyRes.wasStaff) { roleLabel = isGloballyStaff ? "Current Staff" : "Former Staff (in period)"; } else if (isCurrentLocal) { roleLabel = "Current Local CheckUser"; } else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (isGloballySteward || historyRes.wasSteward) { roleLabel = isGloballySteward ? "Current Steward" : "Former Steward (in period)"; } else if (isGloballyOmbuds || historyRes.wasOmbuds) { roleLabel = isGloballyOmbuds ? "Current Ombudsman" : "Former Ombudsman (in period)"; } else if (wasCU) { roleLabel = "Former Local CheckUser (in period)"; } else { roleLabel = "Unknown role"; } return { role: roleLabel, log: logText }; } catch (err) { return { role: "Error fetching data", log: "" }; } } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) await sleep(30000); else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); const iwPrefix = getInterwikiPrefix(db); const projectLink = `[[${iwPrefix}:|${db}]]`; const logLink = `[[${iwPrefix}:Special:CheckUserLog|(log)]]`; wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${projectLink} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small> — ${logLink}\n`; // ---------------------------- let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user}@${db} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); 6d9erxknt4g9ffp4015nb2pnrduhd0q 737625 737620 2026-04-11T19:09:29Z MrJaroslavik 44012 test 737625 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit. // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } function getInterwikiPrefix(db) { const specials = { 'commonswiki': 'commons', 'metawiki': 'm', 'wikidatawiki': 'd', 'mediawikiwiki': 'mw', 'specieswiki': 'wikispecies', 'foundationwiki': 'wikimedia', 'sourceswiki': 'wikisource' }; if (specials[db]) return specials[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return 's:' + name.slice(0, -10); if (name.endsWith('wikiversity')) return 'v:' + name.slice(0, -11); if (name.endsWith('wiktionary')) return 'wikt:' + name.slice(0, -10); if (name.endsWith('wikivoyage')) return 'voy:' + name.slice(0, -10); if (name.endsWith('wikibooks')) return 'b:' + name.slice(0, -9); if (name.endsWith('wikiquote')) return 'q:' + name.slice(0, -9); if (name.endsWith('wikinews')) return 'n:' + name.slice(0, -8); if (name.endsWith('wikimedia')) return 'wikimedia:' + name.slice(0, -9); if (name.endsWith('wiki')) return 'w:' + name.slice(0, -4); return 'w:' + name; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php'); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); // 1. FETCH CURRENT GLOBAL GROUPS (Cached) if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'); const isGloballyStaff = gGroups.includes('staff'); const isGloballyOmbuds = gGroups.includes('ombuds') || gGroups.includes('ombudsman'); // 2. FETCH GLOBAL HISTORY (To identify roles held during the period but lost since) if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; // 3. CHECK CURRENT LOCAL CHECKUSER STATUS let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; // --- 4. DEEP RIGHTS LOG SCAN (Pagination to bypass 500-limit) --- let events = []; let continueToken = null; let finished = false; try { while (!finished) { let params = { action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); const res = await metaApi.get(params); const batch = res.query.logevents || []; events = events.concat(batch); if (res.continue) continueToken = res.continue; else finished = true; } let logEntries = []; let pendingRemoved = null; let hasLocalRightsInPeriod = false; const LIMIT_COMBINE_MINS = 43200; // 30 days for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); const eventDate = new Date(e.timestamp); const exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); // Track adding/revoking dates across entire history to determine status in audit period if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; // Verification logic: Held rights in period if added before end AND (still active OR removed after start) if (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)) { hasLocalRightsInPeriod = true; } // Rights Log Formatting (Only for events within the audit window) if (eventDate >= auditStart && eventDate <= auditEnd && (cuAdded || cuRemoved)) { let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') expiryDate = new Date(cuMeta.expiry); } const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (cuAdded) { if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); } else { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); logEntries.unshift(`* ADDED: ${exactTime} by ${e.user}${isSelf} (Duration: ${durStr})`); } if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; } else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (cuRemoved) { if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); if (logEntries.length) logText = '\n' + logEntries.join('\n'); // --- 5. ROLE CLASSIFICATION --- let roleLabel = ""; const hasActions = (results[db] && results[db][user] && results[db][user].total > 0); let wasCU = hasLocalRightsInPeriod || hasActions; if (isGloballyStaff || historyRes.wasStaff) { roleLabel = isGloballyStaff ? "Current Staff" : "Former Staff (in period)"; } else if (isCurrentLocal) { roleLabel = "Current Local CheckUser"; } else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (isGloballySteward || historyRes.wasSteward) { roleLabel = isGloballySteward ? "Current Steward" : "Former Steward (in period)"; } else if (isGloballyOmbuds || historyRes.wasOmbuds) { roleLabel = isGloballyOmbuds ? "Current Ombudsman" : "Former Ombudsman (in period)"; } else if (wasCU) { roleLabel = "Former Local CheckUser (in period)"; } else { roleLabel = "Unknown role"; } return { role: roleLabel, log: logText }; } catch (err) { return { role: "Error fetching data", log: "" }; } } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) { const retryAfter = parseInt(err.xhr?.getResponseHeader('Retry-After')) || 60; $('#status-msg').html(`<span style="color:red; font-weight:bold;">Rate limit! Waiting ${retryAfter}s...</span>`); await sleep(retryAfter * 1000); continue; } else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); const iwPrefix = getInterwikiPrefix(db); const projectLink = `[[${iwPrefix}:|${db}]]`; const logLink = `[[${iwPrefix}:Special:CheckUserLog|(log)]]`; wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${projectLink} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small> — ${logLink}\n`; // ---------------------------- let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user}@${db} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); 515en0qcr8c1m88bgob8ipvxls8bzvu 737747 737625 2026-04-12T11:02:07Z MrJaroslavik 44012 e 737747 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit. // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } function getInterwikiPrefix(db) { const specials = { 'commonswiki': 'commons', 'metawiki': 'm', 'wikidatawiki': 'd', 'mediawikiwiki': 'mw', 'specieswiki': 'wikispecies', 'foundationwiki': 'wikimedia', 'sourceswiki': 'wikisource' }; if (specials[db]) return specials[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return 's:' + name.slice(0, -10); if (name.endsWith('wikiversity')) return 'v:' + name.slice(0, -11); if (name.endsWith('wiktionary')) return 'wikt:' + name.slice(0, -10); if (name.endsWith('wikivoyage')) return 'voy:' + name.slice(0, -10); if (name.endsWith('wikibooks')) return 'b:' + name.slice(0, -9); if (name.endsWith('wikiquote')) return 'q:' + name.slice(0, -9); if (name.endsWith('wikinews')) return 'n:' + name.slice(0, -8); if (name.endsWith('wikimedia')) return 'wikimedia:' + name.slice(0, -9); if (name.endsWith('wiki')) return 'w:' + name.slice(0, -4); return 'w:' + name; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php'); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); // 1. FETCH CURRENT GLOBAL GROUPS (Cached) if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'); const isGloballyStaff = gGroups.includes('staff'); const isGloballyOmbuds = gGroups.includes('ombuds') || gGroups.includes('ombudsman'); // 2. FETCH GLOBAL HISTORY (To identify roles held during the period but lost since) if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; // 3. CHECK CURRENT LOCAL CHECKUSER STATUS let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; // --- 4. DEEP RIGHTS LOG SCAN (Pagination to bypass 500-limit) --- let events = []; let continueToken = null; let finished = false; let hasLocalRightsInPeriod = false; try { while (!finished) { let params = { action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); const res = await metaApi.get(params); events = events.concat(res.query.logevents || []); if (res.continue) continueToken = res.continue; else finished = true; } let logEntries = []; let pendingRemoved = null; const LIMIT_COMBINE_MINS = 43200; // 30 days for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); const eventDate = new Date(e.timestamp); const exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; if (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)) hasLocalRightsInPeriod = true; if (eventDate >= auditStart && eventDate <= auditEnd && (cuAdded || cuRemoved)) { let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') expiryDate = new Date(cuMeta.expiry); } const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (cuAdded) { if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; } else { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = null; logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (cuRemoved) { if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); if (logEntries.length) logText = '\n' + logEntries.join('\n'); // --- ROLE CLASSIFICATION (Opravená priorita) --- let roleLabel = ""; const hasActions = (results[db] && results[db][user] && results[db][user].total > 0); let wasCU = hasLocalRightsInPeriod || hasActions; // 1. Nejdřív Staff/Ombuds if (isGloballyStaff || historyRes.wasStaff) { roleLabel = isGloballyStaff ? "Current Staff" : "Former Staff (in period)"; } else if (isGloballyOmbuds || historyRes.wasOmbuds) { roleLabel = isGloballyOmbuds ? "Current Ombudsman" : "Former Ombudsman (in period)"; } // 2. Potom CheckUser (Current vs Former) else if (isCurrentLocal) { roleLabel = "Current Local CheckUser"; } else if (wasCU) { roleLabel = "Former Local CheckUser (in period)"; } // 3. A až nakonec Steward (pokud dělal akce bez CU práv) else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (isGloballySteward || historyRes.wasSteward) { roleLabel = isGloballySteward ? "Current Steward" : "Former Steward (in period)"; } else { roleLabel = "Unknown role"; } return { role: roleLabel, log: logText }; } catch (err) { return { role: "Error fetching data", log: "" }; } } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) { const retryAfter = parseInt(err.xhr?.getResponseHeader('Retry-After')) || 60; $('#status-msg').html(`<span style="color:red; font-weight:bold;">Rate limit! Waiting ${retryAfter}s...</span>`); await sleep(retryAfter * 1000); continue; } else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); const iwPrefix = getInterwikiPrefix(db); const projectLink = `[[${iwPrefix}:|${db}]]`; const logLink = `[[${iwPrefix}:Special:CheckUserLog|(log)]]`; wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${projectLink} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small> — ${logLink}\n`; // ---------------------------- let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user}@${db} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); ik51v8t9wrcttpccq6d5fdx3v2rz990 737749 737747 2026-04-12T11:28:33Z MrJaroslavik 44012 e 737749 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit. // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; // Helper function to handle API calls with automatic retry on 429 errors async function robustCall(api, params) { let retries = 0; const maxRetries = 5; while (retries < maxRetries) { try { return await api.get(params); } catch (err) { if (err?.status === 429) { retries++; const retryAfter = parseInt(err.xhr?.getResponseHeader('Retry-After')) || (30 * retries); $('#status-msg').html(`<span style="color:orange; font-weight:bold;">Rate limit hit! Resting ${retryAfter}s... (Attempt ${retries}/${maxRetries})</span>`); await sleep(retryAfter * 1000); } else { throw err; // Re-throw other errors } } } throw new Error("Max retries reached"); } function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } function getInterwikiPrefix(db) { const specials = { 'commonswiki': 'commons', 'metawiki': 'm', 'wikidatawiki': 'd', 'mediawikiwiki': 'mw', 'specieswiki': 'wikispecies', 'foundationwiki': 'wikimedia', 'sourceswiki': 'wikisource' }; if (specials[db]) return specials[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return 's:' + name.slice(0, -10); if (name.endsWith('wikiversity')) return 'v:' + name.slice(0, -11); if (name.endsWith('wiktionary')) return 'wikt:' + name.slice(0, -10); if (name.endsWith('wikivoyage')) return 'voy:' + name.slice(0, -10); if (name.endsWith('wikibooks')) return 'b:' + name.slice(0, -9); if (name.endsWith('wikiquote')) return 'q:' + name.slice(0, -9); if (name.endsWith('wikinews')) return 'n:' + name.slice(0, -8); if (name.endsWith('wikimedia')) return 'wikimedia:' + name.slice(0, -9); if (name.endsWith('wiki')) return 'w:' + name.slice(0, -4); return 'w:' + name; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php'); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await robustCall(api, { action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await robustCall(metaApi, { action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); // 1. FETCH CURRENT GLOBAL GROUPS (Cached) if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'); const isGloballyStaff = gGroups.includes('staff'); const isGloballyOmbuds = gGroups.includes('ombuds') || gGroups.includes('ombudsman'); // 2. FETCH GLOBAL HISTORY (To identify roles held during the period but lost since) if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; // 3. CHECK CURRENT LOCAL CHECKUSER STATUS let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; // --- 4. DEEP RIGHTS LOG SCAN (Pagination to bypass 500-limit) --- let events = []; let continueToken = null; let finished = false; let hasLocalRightsInPeriod = false; try { while (!finished) { let params = { action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); // Use robustCall to prevent 429 failures during history scan const res = await robustCall(metaApi, params); events = events.concat(res.query.logevents || []); if (res.continue) continueToken = res.continue; else finished = true; } let logEntries = []; let pendingRemoved = null; let lastAddedTime = null; // Track last processed ADD to avoid duplicates like Xaosflux const LIMIT_COMBINE_MINS = 43200; for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); const eventDate = new Date(e.timestamp); const exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; if (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)) hasLocalRightsInPeriod = true; if (eventDate >= auditStart && eventDate <= auditEnd && (cuAdded || cuRemoved)) { let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') expiryDate = new Date(cuMeta.expiry); } const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (cuAdded) { // If we find an ADD and have a REMOVE waiting, pair them if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; lastAddedTime = exactTime; } else if (expiryDate) { // Expiry pairing const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; lastAddedTime = exactTime; } else if (lastAddedTime !== exactTime) { // Only add as "Active" if it's not a duplicate record of the one we just paired logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); lastAddedTime = exactTime; } } else if (cuRemoved) { if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } if (res.continue) continueToken = res.continue; else finished = true; } let logEntries = []; let pendingRemoved = null; const LIMIT_COMBINE_MINS = 43200; // 30 days for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); const eventDate = new Date(e.timestamp); const exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; if (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)) hasLocalRightsInPeriod = true; if (eventDate >= auditStart && eventDate <= auditEnd && (cuAdded || cuRemoved)) { let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') expiryDate = new Date(cuMeta.expiry); } const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (cuAdded) { if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; } else { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = null; logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (cuRemoved) { if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); if (logEntries.length) logText = '\n' + logEntries.join('\n'); // --- ROLE CLASSIFICATION (Opravená priorita) --- let roleLabel = ""; const hasActions = (results[db] && results[db][user] && results[db][user].total > 0); let wasCU = hasLocalRightsInPeriod || hasActions; // 1. Nejdřív Staff/Ombuds if (isGloballyStaff || historyRes.wasStaff) { roleLabel = isGloballyStaff ? "Current Staff" : "Former Staff (in period)"; } else if (isGloballyOmbuds || historyRes.wasOmbuds) { roleLabel = isGloballyOmbuds ? "Current Ombudsman" : "Former Ombudsman (in period)"; } // 2. Potom CheckUser (Current vs Former) else if (isCurrentLocal) { roleLabel = "Current Local CheckUser"; } else if (wasCU) { roleLabel = "Former Local CheckUser (in period)"; } // 3. A až nakonec Steward (pokud dělal akce bez CU práv) else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (isGloballySteward || historyRes.wasSteward) { roleLabel = isGloballySteward ? "Current Steward" : "Former Steward (in period)"; } else { roleLabel = "Unknown role"; } return { role: roleLabel, log: logText }; } catch (err) { return { role: "Error fetching data", log: "" }; } } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false; let continueToken = null; let api; try { api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); } catch (e) { failedWikis.push(db); continue; // Skip invalid domains immediately } while (!successLocal && isRunning) { try { let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); // robustCall automatically retries 429s. If it fails completely, it throws. let res = await robustCall(api, params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) { continueToken = res.continue; } else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { // Only reached if robustCall exhausted all retries or hit a non-429 error console.warn(`Audit failed for ${db}`, err); failedWikis.push(db); successLocal = true; } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { // Safely fetch metrics so 429 doesn't skip the whole wiki row let metrics; try { metrics = await fetchWikiMetrics(db); } catch (e) { metrics = { active: 0 }; } const fmtActive = metrics.active.toLocaleString('en-US'); const iwPrefix = getInterwikiPrefix(db); const projectLink = `[[${iwPrefix}:|${db}]]`; const logLink = `[[${iwPrefix}:Special:CheckUserLog|(log)]]`; wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${projectLink} <small style="font-weight:normal; color:#54595d;">(Active Users: ${fmtActive})</small> — ${logLink}\n`; let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { // Safely fetch user data so 429 doesn't skip the whole wiki row let m; try { m = await fetchUserData(user, db, START, END); } catch (e) { m = { role: "Data Error (429)", log: "" }; } const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user}@${db} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); dy6v9g2jg9ow9k7136ynaslkhr5t0tx 737750 737749 2026-04-12T11:35:12Z MrJaroslavik 44012 Undid revision [[Special:Diff/737749|737749]] by [[Special:Contributions/MrJaroslavik|MrJaroslavik]] ([[User talk:MrJaroslavik|talk]]) 737750 javascript text/javascript // GlobalCheckUserStats.js // Features: // - Global Audit: Scans CheckUser logs across 900+ Wikimedia projects at once. // - Smart Categorization: Identifies roles (Local CU, Steward, Staff, etc.). // - Steward Logic: Detects temporary access, exact durations, and longest active periods. // - Deep Scan: Automated pagination to bypass the 500-entry API limit. // - Robust Connection: Automated retries for 429 rate-limits and custom domain mapping. // - Full Reporting: Outputs sortable Wikitables and detailed rights change logs. // - Custom UI: Integrated control panel on [[Special:BlankPage/GlobalCheckUserStats]]. // - With help of Gemini 3 (function () { 'use strict'; if (mw.config.get('wgCanonicalSpecialPageName') !== 'Blankpage' || mw.config.get('wgTitle').indexOf('GlobalCheckUserStats') === -1) return; const rawWikis = ['abstractwiki', 'abwiki', 'acewiki', 'adywiki', 'afwiki', 'afwikibooks', 'afwikiquote', 'afwiktionary', 'alswiki', 'altwiki', 'amiwiki', 'amwiki', 'amwiktionary', 'angwiki', 'angwiktionary', 'annwiki', 'anpwiki', 'anwiki', 'anwiktionary', 'arcwiki', 'arwiki', 'arwikibooks', 'arwikimedia', 'arwikinews', 'arwikiquote', 'arwikisource', 'arwikiversity', 'arwiktionary', 'arywiki', 'arzwiki', 'astwiki', 'astwiktionary', 'aswiki', 'aswikiquote', 'aswikisource', 'atjwiki', 'avkwiki', 'avwiki', 'awawiki', 'aywiki', 'aywiktionary', 'azbwiki', 'azwiki', 'azwikibooks', 'azwikiquote', 'azwikisource', 'azwiktionary', 'banwiki', 'banwikisource', 'barwiki', 'bat_smgwiki', 'bawiki', 'bawikibooks', 'bbcwiki', 'bclwiki', 'bclwikiquote', 'bclwikisource', 'bclwiktionary', 'bdrwiki', 'bdwikimedia', 'be_x_oldwiki', 'betawikiversity', 'bewiki', 'bewikibooks', 'bewikimedia', 'bewikiquote', 'bewikisource', 'bewiktionary', 'bewwiki', 'bewwiktionary', 'bgwiki', 'bgwikibooks', 'bgwikiquote', 'bgwikisource', 'bgwiktionary', 'bhwiki', 'biwiki', 'bjnwiki', 'bjnwikiquote', 'bjnwiktionary', 'blkwiki', 'blkwiktionary', 'bmwiki', 'bnwiki', 'bnwikibooks', 'bnwikiquote', 'bnwikisource', 'bnwikivoyage', 'bnwiktionary', 'bowiki', 'bpywiki', 'brwiki', 'brwikimedia', 'brwikiquote', 'brwikisource', 'brwiktionary', 'bswiki', 'bswikibooks', 'bswikinews', 'bswikiquote', 'bswikisource', 'bswiktionary', 'btmwiki', 'btmwiktionary', 'bugwiki', 'bxrwiki', 'cawiki', 'cawikibooks', 'cawikimedia', 'cawikinews', 'cawikiquote', 'cawikisource', 'cawiktionary', 'cbk_zamwiki', 'cdowiki', 'cebwiki', 'cewiki', 'chrwiki', 'chrwiktionary', 'chwiki', 'chywiki', 'ckbwiki', 'ckbwiktionary', 'commonswiki', 'cowiki', 'cowikimedia', 'cowiktionary', 'crhwiki', 'csbwiki', 'csbwiktionary', 'cswiki', 'cswikibooks', 'cswikinews', 'cswikiquote', 'cswikisource', 'cswikiversity', 'cswikivoyage', 'cswiktionary', 'cuwiki', 'cvwiki', 'cvwikibooks', 'cywiki', 'cywikibooks', 'cywikiquote', 'cywikisource', 'cywiktionary', 'dagwiki', 'dawiki', 'dawikibooks', 'dawikiquote', 'dawikisource', 'dawiktionary', 'dewiki', 'dewikibooks', 'dewikinews', 'dewikiquote', 'dewikisource', 'dewikiversity', 'dewikivoyage', 'dewiktionary', 'dgawiki', 'dinwiki', 'diqwiki', 'diqwiktionary', 'dkwikimedia', 'dsbwiki', 'dtpwiki', 'dtywiki', 'dvwiki', 'dvwiktionary', 'dzwiki', 'eewiki', 'elwiki', 'elwikibooks', 'elwikinews', 'elwikiquote', 'elwikisource', 'elwikiversity', 'elwikivoyage', 'elwiktionary', 'emlwiki', 'enwiki', 'enwikibooks', 'enwikinews', 'enwikiquote', 'enwikisource', 'enwikiversity', 'enwikivoyage', 'enwiktionary', 'eowiki', 'eowikibooks', 'eowikinews', 'eowikiquote', 'eowikisource', 'eowikivoyage', 'eowiktionary', 'eswiki', 'eswikibooks', 'eswikinews', 'eswikiquote', 'eswikisource', 'eswikiversity', 'eswikivoyage', 'eswiktionary', 'etwiki', 'etwikibooks', 'eewikimedia', 'etwikiquote', 'etwikisource', 'etwiktionary', 'euwiki', 'euwikibooks', 'euwikiquote', 'euwikisource', 'euwiktionary', 'extwiki', 'fatwiki', 'fawiki', 'fawikibooks', 'fawikinews', 'fawikiquote', 'fawikisource', 'fawikivoyage', 'fawiktionary', 'ffwiki', 'fiu_vrowiki', 'fiwiki', 'fiwikibooks', 'fiwikimedia', 'fiwikinews', 'fiwikiquote', 'fiwikisource', 'fiwikiversity', 'fiwikivoyage', 'fiwiktionary', 'fjwiki', 'fjwiktionary', 'fonwiki', 'foundationwiki', 'fowiki', 'fowikisource', 'fowiktionary', 'frpwiki', 'frrwiki', 'frwiki', 'frwikibooks', 'frwikinews', 'frwikiquote', 'frwikisource', 'frwikiversity', 'frwikivoyage', 'frwiktionary', 'furwiki', 'fywiki', 'fywikibooks', 'fywiktionary', 'gagwiki', 'ganwiki', 'gawiki', 'gawiktionary', 'gcrwiki', 'gdwiki', 'gdwiktionary', 'glkwiki', 'glwiki', 'glwikibooks', 'glwikiquote', 'glwikisource', 'glwiktionary', 'gnwiki', 'gnwiktionary', 'gomwiki', 'gomwiktionary', 'gorwiki', 'gorwikiquote', 'gorwiktionary', 'gotwiki', 'gpewiki', 'gucwiki', 'gurwiki', 'guwiki', 'guwikiquote', 'guwikisource', 'guwiktionary', 'guwwiki', 'guwwikinews', 'guwwikiquote', 'guwwiktionary', 'gvwiki', 'gvwiktionary', 'hakwiki', 'hawiki', 'hawiktionary', 'hawwiki', 'hewiki', 'hewikibooks', 'hewikinews', 'hewikiquote', 'hewikisource', 'hewikivoyage', 'hewiktionary', 'hifwiki', 'hifwiktionary', 'hiwiki', 'hiwikibooks', 'hiwikiquote', 'hiwikisource', 'hiwikiversity', 'hiwikivoyage', 'hiwiktionary', 'hrwiki', 'hrwikibooks', 'hrwikiquote', 'hrwikisource', 'hrwiktionary', 'hsbwiki', 'hsbwiktionary', 'htwiki', 'huwiki', 'huwikibooks', 'huwikisource', 'huwiktionary', 'hywiki', 'hywikibooks', 'hywikiquote', 'hywikisource', 'hywiktionary', 'hywwiki', 'iawiki', 'iawikibooks', 'iawiktionary', 'ibawiki', 'idwiki', 'idwikibooks', 'idwikiquote', 'idwikisource', 'idwikivoyage', 'idwiktionary', 'iewiki', 'iewiktionary', 'iglwiki', 'igwiki', 'igwikiquote', 'igwiktionary', 'ikwiki', 'ilowiki', 'incubatorwiki', 'inhwiki', 'iowiki', 'iowiktionary', 'iswiki', 'iswikibooks', 'iswikiquote', 'iswikisource', 'iswiktionary', 'itwiki', 'itwikibooks', 'itwikinews', 'itwikiquote', 'itwikisource', 'itwikiversity', 'itwikivoyage', 'itwiktionary', 'iuwiki', 'iuwiktionary', 'jamwiki', 'jawiki', 'jawikibooks', 'jawikinews', 'jawikisource', 'jawikiversity', 'jawikivoyage', 'jawiktionary', 'jbowiki', 'jbowiktionary', 'jvwiki', 'jvwikisource', 'jvwiktionary', 'kaawiki', 'kaawiktionary', 'kabwiki', 'kaiwiki', 'kajwiki', 'kawiki', 'kawikibooks', 'kawikiquote', 'kawikisource', 'kawiktionary', 'kbdwiki', 'kbdwiktionary', 'kbpwiki', 'kcgwiki', 'kcgwiktionary', 'kgewiki', 'kgwiki', 'kiwiki', 'kkwiki', 'kkwikibooks', 'kkwiktionary', 'klwiktionary', 'kmwiki', 'kmwikibooks', 'kmwiktionary', 'kncwiki', 'knwiki', 'knwikiquote', 'knwikisource', 'knwiktionary', 'koiwiki', 'kowiki', 'kowikibooks', 'kowikinews', 'kowikiquote', 'kowikisource', 'kowikiversity', 'kowiktionary', 'krcwiki', 'kshwiki', 'kswiki', 'kswiktionary', 'kuswiki', 'kuwiki', 'kuwikibooks', 'kuwikiquote', 'kuwiktionary', 'kvwiki', 'kwwiki', 'kwwiktionary', 'kywiki', 'kywikiquote', 'kywiktionary', 'labswiki', 'ladwiki', 'lawiki', 'lawikibooks', 'lawikiquote', 'lawikisource', 'lawiktionary', 'lbewiki', 'lbwiki', 'lbwiktionary', 'lezwiki', 'lfnwiki', 'lgwiki', 'lijwiki', 'lijwikisource', 'liwiki', 'liwikibooks', 'liwikinews', 'liwikiquote', 'liwikisource', 'liwiktionary', 'lldwiki', 'lmowiki', 'lmowiktionary', 'lnwiki', 'lnwiktionary', 'lowiki', 'lowiktionary', 'ltgwiki', 'ltwiki', 'ltwikibooks', 'ltwikiquote', 'ltwikisource', 'ltwiktionary', 'lvwiki', 'lvwiktionary', 'madwiki', 'madwikisource', 'madwiktionary', 'maiwiki', 'map_bmswiki', 'mdfwiki', 'mediawikiwiki', 'metawiki', 'mgwiki', 'mgwikibooks', 'mgwiktionary', 'mhrwiki', 'minwiki', 'minwikibooks', 'minwikisource', 'minwiktionary', 'miwiki', 'miwiktionary', 'mkwiki', 'mkwikibooks', 'mkwikimedia', 'mkwikisource', 'mkwiktionary', 'mlwiki', 'mlwikibooks', 'mlwikiquote', 'mlwikisource', 'mlwiktionary', 'mniwiki', 'mniwiktionary', 'mnwiki', 'mnwiktionary', 'mnwwiki', 'mnwwiktionary', 'moswiki', 'mrjwiki', 'mrwiki', 'mrwikibooks', 'mrwikiquote', 'mrwikisource', 'mrwiktionary', 'mswiki', 'mswikibooks', 'mswikiquote', 'mswikisource', 'mswiktionary', 'mtwiki', 'mtwiktionary', 'mwlwiki', 'mxwikimedia', 'myvwiki', 'mywiki', 'mywikisource', 'mywiktionary', 'mznwiki', 'nahwiki', 'nahwiktionary', 'napwiki', 'napwikisource', 'nawiktionary', 'nds_nlwiki', 'ndswiki', 'ndswiktionary', 'newiki', 'newikibooks', 'newiktionary', 'newwiki', 'niawiki', 'niawiktionary', 'nlwiki', 'nlwikibooks', 'nlwikimedia', 'nlwikinews', 'nlwikiquote', 'nlwikisource', 'nlwikivoyage', 'nlwiktionary', 'nnwiki', 'nnwikiquote', 'nnwiktionary', 'novwiki', 'nowiki', 'nowikibooks', 'nowikimedia', 'nowikinews', 'nowikiquote', 'nowikisource', 'nowiktionary', 'nqowiki', 'nrmwiki', 'nrwiki', 'nsowiki', 'nupwiki', 'nvwiki', 'nycwikimedia', 'nywiki', 'ocwiki', 'ocwikibooks', 'ocwiktionary', 'olowiki', 'omwiki', 'omwiktionary', 'orwiki', 'orwikisource', 'orwiktionary', 'oswiki', 'outreachwiki', 'pagwiki', 'pamwiki', 'papwiki', 'pawiki', 'pawikibooks', 'pawikisource', 'pawiktionary', 'pcdwiki', 'pcmwiki', 'pcmwikiquote', 'pdcwiki', 'pflwiki', 'piwiki', 'plwiki', 'plwikibooks', 'plwikimedia', 'plwikinews', 'plwikiquote', 'plwikisource', 'plwikivoyage', 'plwiktionary', 'pmswiki', 'pmswikisource', 'pnbwiki', 'pnbwiktionary', 'pntwiki', 'pplwiki', 'pswiki', 'pswikivoyage', 'pswiktionary', 'ptwiki', 'ptwikibooks', 'ptwikimedia', 'ptwikinews', 'ptwikiquote', 'ptwikisource', 'ptwikiversity', 'ptwikivoyage', 'ptwiktionary', 'pwnwiki', 'quwiktionary', 'rkiwiki', 'rmwiki', 'rmywiki', 'rnwiki', 'roa_rupwiki', 'roa_rupwiktionary', 'roa_tarawiki', 'rowiki', 'rowikibooks', 'rowikinews', 'rowikiquote', 'rowiktionary', 'rskwiki', 'ruewiki', 'ruwiki', 'ruwikibooks', 'ruwikinews', 'ruwikiquote', 'ruwikisource', 'ruwikiversity', 'ruwikivoyage', 'ruwiktionary', 'rwwiki', 'rwwiktionary', 'sahwiki', 'sahwikiquote', 'sahwikisource', 'satwiki', 'satwiktionary', 'sawiki', 'sawikibooks', 'sawikiquote', 'sawikisource', 'sawiktionary', 'scnwiki', 'scnwiktionary', 'scowiki', 'scwiki', 'sdwiki', 'sdwiktionary', 'sewiki', 'sewikimedia', 'sgwiki', 'sgwiktionary', 'shiwiki', 'shnwiki', 'shnwikibooks', 'shnwikinews', 'shnwikivoyage', 'shnwiktionary', 'shwiki', 'shwiktionary', 'shywiktionary', 'simplewiki', 'simplewiktionary', 'siwiki', 'siwikibooks', 'siwiktionary', 'skwiki', 'skrwiki', 'skrwiktionary', 'slwiki', 'slwikibooks', 'slwikiquote', 'slwikisource', 'slwikiversity', 'slwiktionary', 'smnwiki', 'smwiki', 'smwiktionary', 'snwiki', 'sourceswiki', 'sowiki', 'sowiktionary', 'specieswiki', 'sqwiki', 'sqwikibooks', 'sqwikinews', 'sqwikiquote', 'sqwiktionary', 'srnwiki', 'srwiki', 'srwikibooks', 'srwikinews', 'srwikiquote', 'srwikisource', 'srwiktionary', 'sswiki', 'sswiktionary', 'stqwiki', 'stwiki', 'stwiktionary', 'suwiki', 'suwikiquote', 'suwikisource', 'suwiktionary', 'svwiki', 'svwikibooks', 'svwikinews', 'svwikiquote', 'svwikisource', 'svwikiversity', 'svwikivoyage', 'svwiktionary', 'swwiki', 'swwiktionary', 'sylwiki', 'szlwiki', 'szywiki', 'tawiki', 'tawikibooks', 'tawikinews', 'tawikiquote', 'tawikisource', 'tawiktionary', 'taywiki', 'tcywiki', 'tcywikisource', 'tcywiktionary', 'tddwiki', 'tewiki', 'tewikibooks', 'tewikiquote', 'tewikisource', 'tewiktionary', 'tgwiki', 'tgwikibooks', 'tgwiktionary', 'thwiki', 'thwikibooks', 'thwikimedia', 'thwikiquote', 'thwikisource', 'thwiktionary', 'tigwiki', 'tiwiki', 'tiwiktionary', 'tkwiki', 'tkwiktionary', 'tlwiki', 'tlwikibooks', 'tlwikiquote', 'tlwikisource', 'tlwiktionary', 'tlywiki', 'tnwiki', 'tnwiktionary', 'tokwiki', 'towiki', 'tpiwiki', 'tpiwiktionary', 'trvwiki', 'trwiki', 'trwikibooks', 'trwikimedia', 'trwikinews', 'trwikiquote', 'trwikisource', 'trwikivoyage', 'trwiktionary', 'tswiki', 'tswiktionary', 'ttwiki', 'ttwikibooks', 'ttwikiquote', 'ttwiktionary', 'tumwiki', 'twwiki', 'twwiktionary', 'tyvwiki', 'tywiki', 'uawikimedia', 'udmwiki', 'ugwiki', 'ugwiktionary', 'ukwiki', 'ukwikibooks', 'ukwikinews', 'ukwikiquote', 'ukwikisource', 'ukwikivoyage', 'ukwiktionary', 'urwiki', 'urwikibooks', 'urwikiquote', 'urwikisource', 'urwiktionary', 'uzwiki', 'uzwikiquote', 'uzwiktionary', 'vecwiki', 'vecwikisource', 'vecwiktionary', 'vepwiki', 'vewiki', 'viwiki', 'viwikibooks', 'viwikiquote', 'viwikisource', 'viwikivoyage', 'viwiktionary', 'vlswiki', 'vowiki', 'vowiktionary', 'warwiki', 'wawiki', 'wawikisource', 'wawiktionary', 'wikidatawiki', 'wikimaniawiki', 'wowiki', 'wowiktionary', 'wuuwiki', 'xalwiki', 'xhwiki', 'xmfwiki', 'yiwiki', 'yiwikisource', 'yiwiktionary', 'yowiki', 'zawiki', 'zeawiki', 'zghwiki', 'zghwiktionary', 'zh_classicalwiki', 'zh_min_nanwiki', 'zh_min_nanwikisource', 'zh_min_nanwiktionary', 'zh_yuewiki', 'zhwiki', 'zhwikibooks', 'zhwikinews', 'zhwikiquote', 'zhwikisource', 'zhwikiversity', 'zhwikivoyage', 'zhwiktionary', 'zuwiki', 'zuwiktionary', 'test2wiki', 'testwiki']; const DELAY_MS = 800; const sleep = ms => new Promise(r => setTimeout(r, ms)); let userCache = {}; let historyCache = {}; function getDomain(db) { const mapping = { 'commonswiki': 'commons.wikimedia.org', 'metawiki': 'meta.wikimedia.org', 'wikidatawiki': 'www.wikidata.org', 'mediawikiwiki': 'www.mediawiki.org', 'sourceswiki': 'wikisource.org', 'foundationwiki': 'foundation.wikimedia.org', 'incubatorwiki': 'incubator.wikimedia.org', 'outreachwiki': 'outreach.wikimedia.org', 'be_x_oldwiki': 'be-tarask.wikipedia.org', 'labswiki': 'wikitech.wikimedia.org', 'wikimaniawiki': 'wikimania.wikimedia.org', 'specieswiki': 'species.wikimedia.org', 'abstractwiki': 'abstract.wikipedia.org', 'betawikiversity': 'beta.wikiversity.org', 'mo_wiki': 'ro.wikipedia.org', 'testwiki': 'test.wikipedia.org', 'test2wiki': 'test2.wikipedia.org', 'wikifunctionswiki': 'www.wikifunctions.org', 'testcommonswiki': 'test-commons.wikimedia.org', 'testwikidatawiki': 'test.wikidata.org', }; if (mapping[db]) return mapping[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return name.slice(0, -10) + '.wikisource.org'; if (name.endsWith('wikiversity')) return name.slice(0, -11) + '.wikiversity.org'; if (name.endsWith('wiktionary')) return name.slice(0, -10) + '.wiktionary.org'; if (name.endsWith('wikivoyage')) return name.slice(0, -10) + '.wikivoyage.org'; if (name.endsWith('wikibooks')) return name.slice(0, -9) + '.wikibooks.org'; if (name.endsWith('wikiquote')) return name.slice(0, -9) + '.wikiquote.org'; if (name.endsWith('wikinews')) return name.slice(0, -8) + '.wikinews.org'; if (name.endsWith('wikimedia')) return name.slice(0, -9) + '.wikimedia.org'; if (name.endsWith('wiki')) return name.slice(0, -4) + '.wikipedia.org'; return name + '.wikipedia.org'; } function getInterwikiPrefix(db) { const specials = { 'commonswiki': 'commons', 'metawiki': 'm', 'wikidatawiki': 'd', 'mediawikiwiki': 'mw', 'specieswiki': 'wikispecies', 'foundationwiki': 'wikimedia', 'sourceswiki': 'wikisource' }; if (specials[db]) return specials[db]; const name = db.replace(/_/g, '-'); if (name.endsWith('wikisource')) return 's:' + name.slice(0, -10); if (name.endsWith('wikiversity')) return 'v:' + name.slice(0, -11); if (name.endsWith('wiktionary')) return 'wikt:' + name.slice(0, -10); if (name.endsWith('wikivoyage')) return 'voy:' + name.slice(0, -10); if (name.endsWith('wikibooks')) return 'b:' + name.slice(0, -9); if (name.endsWith('wikiquote')) return 'q:' + name.slice(0, -9); if (name.endsWith('wikinews')) return 'n:' + name.slice(0, -8); if (name.endsWith('wikimedia')) return 'wikimedia:' + name.slice(0, -9); if (name.endsWith('wiki')) return 'w:' + name.slice(0, -4); return 'w:' + name; } mw.loader.using(['mediawiki.api', 'mediawiki.ForeignApi']).then(function () { const metaApi = new mw.ForeignApi('https://meta.wikimedia.org/w/api.php'); const now = new Date(); let results = {}, emptyWikis = [], failedWikis = [], scannedWikis = [], isRunning = false; let currentFilterMode = 'all'; let currentUserFilter = 'all'; function setupUI() { const currentYear = now.getFullYear(); let yearOpts = ''; for (let y = currentYear; y >= 2005; y--) yearOpts += `<option value="${y}">${y}</option>`; let monthOptsFrom = ''; let monthOptsTo = ''; for (let m = 1; m <= 12; m++) { monthOptsFrom += `<option value="${m}" ${m === 1 ? 'selected' : ''}>${m}</option>`; monthOptsTo += `<option value="${m}" ${m === 12 ? 'selected' : ''}>${m}</option>`; } $('#firstHeading').text('GlobalCheckUserStats.js'); $('#mw-content-text').empty().append(` <div style="border:1px solid #a2a9b1; padding:15px; background:#f8f9fa;"> <h3>Stats Range</h3> From: <select id="y-f" style="width:70px;">${yearOpts}</select> <select id="m-f" style="width:50px;">${monthOptsFrom}</select> &nbsp;&nbsp;&nbsp;To: <select id="y-t" style="width:70px;">${yearOpts}</select> <select id="m-t" style="width:50px;">${monthOptsTo}</select> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>Wiki Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-all" checked> All wikis</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-except"> All wikis except</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="wiki-mode" id="btn-only"> Only these wikis</label> <span id="wiki-help-trigger" style="cursor:help; background:#36c; color:#fff; border-radius:50%; width:18px; height:18px; display:inline-block; text-align:center; font-weight:bold; font-size:12px; line-height:18px;" title="Show all wiki DB names">?</span> </div> <div id="filter-input-container" style="display:none; margin-top:10px;"> <input id="wiki-filter" type="text" style="width:100%; max-width:600px;" placeholder=""> </div> <div style="margin-top:15px; display:flex; align-items:center; gap:20px; font-size:13px;"> <strong>User Filter:</strong> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-all" checked> All users</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-local"> Only Local CUs</label> <label style="cursor:pointer; display:flex; align-items:center; gap:5px;"><input type="radio" name="user-mode" id="u-steward"> Only Stewards</label> </div> <div id="wiki-list-help" style="display:none; margin-top:10px; padding:10px; background:#fff; border:1px solid #a2a9b1; font-size:11px; max-height:120px; overflow-y:auto; font-family:monospace; color:#202122;"> <strong>Available Wikis (alphabetical):</strong><br>${[...rawWikis].sort().join(', ')} </div> <div style="margin-top:20px;"> <button id="start" class="mw-ui-button mw-ui-progressive">Run GlobalCheckUserStats.js</button> <button id="stop" class="mw-ui-button mw-ui-destructive" disabled>Stop</button> </div> <div id="status-msg" style="margin-top:10px; font-weight:bold; color:#0056b3;">Ready.</div> <div style="margin-top:5px;"><progress id="bar" value="0" max="${rawWikis.length}" style="width:100%"></progress></div> <textarea id="out" style="width:100%; height:450px; margin-top:10px; display:none; font-family:monospace; font-size:12px;"></textarea> </div> `); $('#btn-all').click(() => { currentFilterMode = 'all'; $('#filter-input-container').hide(); }); $('#btn-except').click(() => { currentFilterMode = 'exclude'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Exclude (dbname1, dbname2)...').focus(); }); $('#btn-only').click(() => { currentFilterMode = 'include'; $('#filter-input-container').show(); $('#wiki-filter').attr('placeholder', 'Only (dbname1, dbname2)...').focus(); }); $('#u-all').click(() => { currentUserFilter = 'all'; }); $('#u-local').click(() => { currentUserFilter = 'local'; }); $('#u-steward').click(() => { currentUserFilter = 'steward'; }); $('#wiki-help-trigger').click(() => $('#wiki-list-help').toggle()); $('#start').click(() => runAudit($('#y-f').val(), $('#m-f').val(), $('#y-t').val(), $('#m-t').val())); $('#stop').click(() => isRunning = false); } async function fetchWikiMetrics(db) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const res = await api.get({ action: 'query', meta: 'siteinfo', siprop: 'statistics', formatversion: 2 }); return { active: res.query.statistics.activeusers || 0 }; } catch (e) { return { active: 0 }; } } async function checkGlobalHistory(user, start, end) { try { const res = await metaApi.get({ action: 'query', list: 'logevents', letype: 'gblrights', letitle: 'User:' + user, lelimit: 'max', formatversion: 2 }); const logs = res.query.logevents || []; const auditStart = new Date(start), auditEnd = new Date(end); let state = { steward: false, staff: false, ombuds: false }; const priorLogs = logs.filter(l => new Date(l.timestamp) <= auditStart).sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp)); if (priorLogs.length > 0) { const p = priorLogs[0].params || {}; const groupsInLog = p.newGroups || p[1] || []; state.steward = groupsInLog.includes('steward'); state.staff = groupsInLog.includes('staff'); state.ombuds = groupsInLog.includes('ombuds'); } let held = { wasSteward: state.steward, wasStaff: state.staff, wasOmbuds: state.ombuds }; logs.filter(l => { const ts = new Date(l.timestamp); return ts > auditStart && ts < auditEnd; }).forEach(e => { const p = e.params || {}; const added = p.newGroups || p[1] || []; if (added.includes('steward')) held.wasSteward = true; if (added.includes('staff')) held.wasStaff = true; if (added.includes('ombuds')) held.wasOmbuds = true; }); return held; } catch (e) { return { wasSteward: false, wasStaff: false, wasOmbuds: false }; } } async function fetchUserData(user, db, start, end) { const auditStart = new Date(start), auditEnd = new Date(end); // 1. FETCH CURRENT GLOBAL GROUPS (Cached) if (!userCache[user]) { try { const gres = await metaApi.get({ action: 'query', meta: 'globaluserinfo', guiprop: 'groups', guiuser: user, formatversion: 2 }); userCache[user] = gres.query.globaluserinfo.groups || []; } catch (e) { userCache[user] = []; } } const gGroups = userCache[user]; const isGloballySteward = gGroups.includes('steward'); const isGloballyStaff = gGroups.includes('staff'); const isGloballyOmbuds = gGroups.includes('ombuds') || gGroups.includes('ombudsman'); // 2. FETCH GLOBAL HISTORY (To identify roles held during the period but lost since) if (!historyCache[user]) historyCache[user] = await checkGlobalHistory(user, start, end); const historyRes = historyCache[user]; // 3. CHECK CURRENT LOCAL CHECKUSER STATUS let isCurrentLocal = false; try { const localApi = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); const ures = await localApi.get({ action: 'query', list: 'users', ususers: user, usprop: 'groups', formatversion: 2 }); const lGroups = (ures.query.users[0] && ures.query.users[0].groups) || []; isCurrentLocal = lGroups.includes('checkuser'); } catch (e) {} const target = 'User:' + user + '@' + db; let logText = '', addTime = null, removeTime = null, isSelfAssign = false, maxDurationMins = -1, longestTimeStr = "", assignCount = 0; // --- 4. DEEP RIGHTS LOG SCAN (Pagination to bypass 500-limit) --- let events = []; let continueToken = null; let finished = false; let hasLocalRightsInPeriod = false; try { while (!finished) { let params = { action: 'query', list: 'logevents', letype: 'rights', letitle: target, ledir: 'older', lelimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); const res = await metaApi.get(params); events = events.concat(res.query.logevents || []); if (res.continue) continueToken = res.continue; else finished = true; } let logEntries = []; let pendingRemoved = null; const LIMIT_COMBINE_MINS = 43200; // 30 days for (let i = 0; i < events.length; i++) { const e = events[i], p = e.params || {}; const cuAdded = (p.add || []).includes('checkuser') || ((p.newgroups || []).includes('checkuser') && !(p.oldgroups || []).includes('checkuser')); const cuRemoved = (p.remove || []).includes('checkuser') || (!(p.newgroups || []).includes('checkuser') && (p.oldgroups || []).includes('checkuser')); const eventDate = new Date(e.timestamp); const exactTime = e.timestamp.replace('T', ' ').replace('Z', ''); if (cuAdded) addTime = eventDate; if (cuRemoved) removeTime = eventDate; if (addTime && addTime <= auditEnd && (!removeTime || removeTime >= auditStart)) hasLocalRightsInPeriod = true; if (eventDate >= auditStart && eventDate <= auditEnd && (cuAdded || cuRemoved)) { let expiryDate = null; if (p.newmetadata) { const cuMeta = p.newmetadata.find(m => m.group === 'checkuser'); if (cuMeta && cuMeta.expiry && cuMeta.expiry !== 'infinity') expiryDate = new Date(cuMeta.expiry); } const isSelf = (e.user === user || !e.user) ? " (Self-assign)" : ""; if (e.user === user || !e.user) isSelfAssign = true; if (cuAdded) { if (pendingRemoved) { const diffMins = Math.round(Math.abs(pendingRemoved.date - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; if (diffMins <= LIMIT_COMBINE_MINS) { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; pendingRemoved = null; } else { logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = null; logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (expiryDate) { const diffMins = Math.round(Math.abs(expiryDate - eventDate) / 60000); const d = Math.floor(diffMins / 1440), h = Math.floor((diffMins % 1440) / 60), m = diffMins % 60; const durStr = `${d > 0 ? d+'d ' : ''}${h > 0 ? h+'h ' : ''}${m}m`; const exactExpiryTime = expiryDate.toISOString().replace('T', ' ').substring(0, 19); logEntries.unshift(`* ADDED: ${exactTime} | EXPIRED: ${exactExpiryTime} by ${e.user}${isSelf} (Duration: ${durStr})`); if (diffMins > maxDurationMins) { maxDurationMins = diffMins; longestTimeStr = durStr; } assignCount++; } else { logEntries.unshift(`* ADDED: ${exactTime} | REMOVED: (Active/Not removed) by ${e.user}${isSelf}`); } } else if (cuRemoved) { if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); pendingRemoved = { time: exactTime, date: eventDate, user: e.user, isSelf: isSelf }; } } } if (pendingRemoved) logEntries.unshift(`* REMOVED: ${pendingRemoved.time} by ${pendingRemoved.user}${pendingRemoved.isSelf}`); if (logEntries.length) logText = '\n' + logEntries.join('\n'); // --- ROLE CLASSIFICATION (Opravená priorita) --- let roleLabel = ""; const hasActions = (results[db] && results[db][user] && results[db][user].total > 0); let wasCU = hasLocalRightsInPeriod || hasActions; // 1. Nejdřív Staff/Ombuds if (isGloballyStaff || historyRes.wasStaff) { roleLabel = isGloballyStaff ? "Current Staff" : "Former Staff (in period)"; } else if (isGloballyOmbuds || historyRes.wasOmbuds) { roleLabel = isGloballyOmbuds ? "Current Ombudsman" : "Former Ombudsman (in period)"; } // 2. Potom CheckUser (Current vs Former) else if (isCurrentLocal) { roleLabel = "Current Local CheckUser"; } else if (wasCU) { roleLabel = "Former Local CheckUser (in period)"; } // 3. A až nakonec Steward (pokud dělal akce bez CU práv) else if (longestTimeStr && isSelfAssign && (isGloballySteward || historyRes.wasSteward)) { roleLabel = `Steward action (Self-assign: ${assignCount > 1 ? assignCount + 'x, longest ' : ''}${longestTimeStr})`; } else if (isGloballySteward || historyRes.wasSteward) { roleLabel = isGloballySteward ? "Current Steward" : "Former Steward (in period)"; } else { roleLabel = "Unknown role"; } return { role: roleLabel, log: logText }; } catch (err) { return { role: "Error fetching data", log: "" }; } } async function runAudit(yf, mf, yt, mt) { isRunning = true; userCache = {}; historyCache = {}; results = {}; emptyWikis = []; failedWikis = []; scannedWikis = []; const filterText = $('#wiki-filter').val().trim().toLowerCase(); const filterList = filterText ? filterText.split(',').map(s => s.trim()).filter(s => s !== "") : []; let wikisToScan = rawWikis; if (currentFilterMode === 'include') wikisToScan = rawWikis.filter(w => filterList.includes(w)); else if (currentFilterMode === 'exclude') wikisToScan = rawWikis.filter(w => !filterList.includes(w)); if (wikisToScan.length === 0) { alert("No wikis selected!"); return; } $('#start').prop('disabled', true); $('#stop').prop('disabled', false); $('#out').hide(); $('#bar').attr('max', wikisToScan.length).val(0); const START = `${yf}-${String(mf).padStart(2, '0')}-01T00:00:00Z`; const END = `${yt}-${String(mt).padStart(2, '0')}-${new Date(Date.UTC(yt, mt, 0)).getUTCDate().toString().padStart(2, '0')}T23:59:59Z`; const monthCols = []; let currY = parseInt(yf), currM = parseInt(mf), endY = parseInt(yt), endM = parseInt(mt); while (currY < endY || (currY === endY && currM <= endM)) { monthCols.push({ key: `${currY}-${String(currM).padStart(2, '0')}`, label: `${["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][currM - 1]} ${currY}` }); currM++; if (currM > 12) { currM = 1; currY++; } } for (let i = 0; i < wikisToScan.length; i++) { if (!isRunning) break; const db = wikisToScan[i]; scannedWikis.push(db); $('#status-msg').text(`Scanning ${db} (${i + 1}/${wikisToScan.length})...`); let successLocal = false, continueToken = null; while (!successLocal && isRunning) { try { const api = new mw.ForeignApi(`https://${getDomain(db)}/w/api.php`); let params = { action: 'query', list: 'checkuserlog', culfrom: START, culto: END, culdir: 'newer', cullimit: 'max', formatversion: 2 }; if (continueToken) Object.assign(params, continueToken); let res = await api.get(params); const ent = res.query?.checkuserlog?.entries || []; if (ent.length) { if (!results[db]) results[db] = {}; ent.forEach(e => { const u = e.checkuser; if (!results[db][u]) results[db][u] = { total: 0, months: {} }; const mKey = e.timestamp.slice(0, 7); results[db][u].total++; results[db][u].months[mKey] = (results[db][u].months[mKey] || 0) + 1; }); } if (res.continue && isRunning) continueToken = res.continue; else { if (!results[db]) emptyWikis.push(db); successLocal = true; } } catch (err) { if (err?.status === 429) { const retryAfter = parseInt(err.xhr?.getResponseHeader('Retry-After')) || 60; $('#status-msg').html(`<span style="color:red; font-weight:bold;">Rate limit! Waiting ${retryAfter}s...</span>`); await sleep(retryAfter * 1000); continue; } else { failedWikis.push(db); successLocal = true; } } } $('#bar').val(i + 1); await sleep(DELAY_MS); } $('#status-msg').text(`Generating report...`); const today = new Date().toISOString().split('T')[0]; const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19) + ' (UTC)'; let wt = `== Global CheckUser Stats (${mf}/${yf} - ${mt}/${yt}) ==\n''Report generated on: ${timestamp}''\n\n`; let rightsLog = `\n== Rights Log (In Period) ==\n`; wt += `{| class="wikitable sortable" style="font-size:90%; text-align:right;"\n! Wiki / User !! Category !! '''Total''' !! per 1k active users ${monthCols.map(m => `!! ${m.label}`).join(' ')}\n`; const sortedDBs = Object.keys(results).sort(); for (const db of sortedDBs) { const metrics = await fetchWikiMetrics(db); const fmtActive = metrics.active.toLocaleString('en-US'); const iwPrefix = getInterwikiPrefix(db); const projectLink = `[[${iwPrefix}:|${db}]]`; const logLink = `[[${iwPrefix}:Special:CheckUserLog|(log)]]`; wt += `|-\n! colspan="${4 + monthCols.length}" style="background:#eaecf0; text-align:center;" | ${projectLink} <small style="font-weight:normal; color:#54595d;">(Active Users as of ${today}: ${fmtActive})</small> — ${logLink}\n`; // ---------------------------- let wikiRows = [], wT = 0, wMS = {}; monthCols.forEach(col => wMS[col.key] = 0); const projectUsers = Object.keys(results[db]).sort(); for (const user of projectUsers) { const m = await fetchUserData(user, db, START, END); const isSteward = m.role.includes("Steward") || m.role.includes("Staff") || m.role.includes("Ombudsman"); const isLocalCU = m.role.includes("Local CheckUser"); if (currentUserFilter === 'local' && !isLocalCU) continue; if (currentUserFilter === 'steward' && !isSteward) continue; const uD = results[db][user]; wT += uD.total; monthCols.forEach(col => wMS[col.key] += (uD.months[col.key] || 0)); let uP1kU = metrics.active > 0 ? ((uD.total / metrics.active) * 1000).toFixed(1) : "0.0"; let row = `|-\n| style="text-align:left;" | ${user}@${db} || <small>${m.role}</small> || '''${uD.total}''' || ${uP1kU}`; monthCols.forEach(col => row += ` || ${uD.months[col.key] || 0}`); wikiRows.push({ html: row + "\n", log: m.log ? `'''${user}@${db}''':${m.log}\n\n` : "" }); } let wP1kU = metrics.active > 0 ? ((wT / metrics.active) * 1000).toFixed(1) : "0.0"; let totalRow = `|- style="background:#f8f9fa; font-weight:bold;"\n| style="text-align:left;" | TOTAL ${db} || — || ${wT} || ${wP1kU}`; monthCols.forEach(col => totalRow += ` || ${wMS[col.key]}`); wt += totalRow + "\n"; wikiRows.forEach(r => { wt += r.html; if (r.log) rightsLog += r.log; }); } wt += `|}\n\n== Projects with 0 actions ==\n<div style="font-size:85%; color:#54595d;">${emptyWikis.sort().join(', ')}</div>\n`; wt += rightsLog + `\n\n<references />\n`; $('#out').val(wt).show(); $('#status-msg').text(`Done.`); $('#start').prop('disabled', false); $('#stop').prop('disabled', true); } setupUI(); }); })(); ik51v8t9wrcttpccq6d5fdx3v2rz990 Usuario discusión:Taichi 0 174801 737585 737572 2026-04-11T13:53:22Z Nacaru 54746 Aviso de resolución de solicitud mediante [[WP:TL|Twinkle Lite]] 737585 wikitext text/x-wiki == Resolución de tu solicitud en el tablón de Miscelánea == ''(Este es un aviso generado automáticamente a través de [[WP:TL|Twinkle Lite]])'' Tu solicitud en el tablón de Miscelánea ha sido resuelta. Puedes acceder a la misma a través del siguiente enlace: * [[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscelánea/Actual#Retomo_reporte_de_CPP_política|Enlace a la resolución]]. Ten en cuenta que el enlace caducará una vez se haya archivado el hilo. Saludos. [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:12, 11 April 2026 (UTC) == Resolución de tu solicitud en el tablón de Miscelánea == ''(Este es un aviso generado automáticamente a través de [[WP:TL|Twinkle Lite]])'' Tu solicitud en el tablón de Miscelánea ha sido resuelta. Puedes acceder a la misma a través del siguiente enlace: * [[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscelánea/Actual#Situación_extraña_con_tinte_político|Enlace a la resolución]]. Ten en cuenta que el enlace caducará una vez se haya archivado el hilo. Saludos. [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC) 4bne5bcoqvrm3u9r6uxsk1p3c6fi0us 737587 737585 2026-04-11T13:53:35Z Nacaru 54746 Aviso de resolución de solicitud mediante [[WP:TL|Twinkle Lite]] 737587 wikitext text/x-wiki == Resolución de tu solicitud en el tablón de Miscelánea == ''(Este es un aviso generado automáticamente a través de [[WP:TL|Twinkle Lite]])'' Tu solicitud en el tablón de Miscelánea ha sido resuelta. Puedes acceder a la misma a través del siguiente enlace: * [[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscelánea/Actual#Retomo_reporte_de_CPP_política|Enlace a la resolución]]. Ten en cuenta que el enlace caducará una vez se haya archivado el hilo. Saludos. [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 00:12, 11 April 2026 (UTC) == Resolución de tu solicitud en el tablón de Miscelánea == ''(Este es un aviso generado automáticamente a través de [[WP:TL|Twinkle Lite]])'' Tu solicitud en el tablón de Miscelánea ha sido resuelta. Puedes acceder a la misma a través del siguiente enlace: * [[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscelánea/Actual#Situación_extraña_con_tinte_político|Enlace a la resolución]]. Ten en cuenta que el enlace caducará una vez se haya archivado el hilo. Saludos. [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC) == Resolución de tu solicitud en el tablón de Miscelánea == ''(Este es un aviso generado automáticamente a través de [[WP:TL|Twinkle Lite]])'' Tu solicitud en el tablón de Miscelánea ha sido resuelta. Puedes acceder a la misma a través del siguiente enlace: * [[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscelánea/Actual#Santos500p|Enlace a la resolución]]. Ten en cuenta que el enlace caducará una vez se haya archivado el hilo. Saludos. [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC) dl023i8p8jckbr94ppp1oj97mnonr5e NovemTest100 0 174802 737689 737579 2026-04-11T19:57:42Z Novem Linguae 49714 Nominated for deletion; see [[:Wikipedia:Articles for deletion/NovemTest100]]. 737689 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{Article for deletion/dated|page=NovemTest100|timestamp=20260411195742|year=2026|month=April|day=11|substed=yes|help=off}} <!-- Once discussion is closed, please place on talk page: {{Old AfD multi|page=NovemTest100|date=11 April 2026|result='''keep'''}} --> <!-- End of AfD message, feel free to edit beyond this point --> Testr n6ka29og0gv4iwzzxrh2zfdsjxbjzmi Usuario discusión:Jake Park 0 174803 737589 2026-04-11T13:53:48Z Nacaru 54746 Aviso de resolución de solicitud mediante [[WP:TL|Twinkle Lite]] 737589 wikitext text/x-wiki == Resolución de tu solicitud en el tablón de Miscelánea == ''(Este es un aviso generado automáticamente a través de [[WP:TL|Twinkle Lite]])'' Tu solicitud en el tablón de Miscelánea ha sido resuelta. Puedes acceder a la misma a través del siguiente enlace: * [[Wikipedia:Tablón_de_anuncios_de_los_bibliotecarios/Portal/Archivo/Miscelánea/Actual#Propuesta_de_desbloqueo_para_Lenis_Felipe|Enlace a la resolución]]. Ten en cuenta que el enlace caducará una vez se haya archivado el hilo. Saludos. [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 13:53, 11 April 2026 (UTC) 24drtlnjxo8si7nkel319s9g6tth2xi Usuario discusión:MZMcBride 0 174804 737592 2026-04-11T14:13:34Z Nacaru 54746 Aviso al usuario del posible borrado de [[Switch]] mediante [[WP:Twinkle Lite|Twinkle Lite]] 737592 wikitext text/x-wiki {{subst:Aviso destruir|Switch|g6|g7}} [[User:Nacaru|Nacaru]] ([[User talk:Nacaru|talk]]) 14:13, 11 April 2026 (UTC) chgcs1jr4f5ijvdkeqvotb6py6b6caj Module:Sandbox/KockaAdmiralac 828 174805 737621 2026-04-11T17:42:38Z KockaAdmiralac 73426 Test 737621 Scribunto text/plain -- <nowiki> local p = {} function mw.addCategory(cat) mw.getCurrentFrame():preprocess('[[Category:' .. cat .. ']]') end function p.tmpl() mw.addCategory('Cats') return 'Oh no' end function p.decat(frame) return frame:preprocess('{{#invoke:Sandbox/KockaAdmiralac|tmpl}}') end return p -- </nowiki> 5vkuiyosfrlfl04yhj4mw60y1kr07bm 737624 737621 2026-04-11T17:48:00Z KockaAdmiralac 73426 Hmm 737624 Scribunto text/plain -- <nowiki> local p = {} local function addCategory(cat) mw.getCurrentFrame():preprocess('[[Category:' .. cat .. ']]') end function p.tmpl() addCategory('Cats') return 'Oh no' end function p.decat(frame) return frame:preprocess('{{#invoke:Sandbox/KockaAdmiralac|tmpl}}') end return p -- </nowiki> cmhu4jt13lzbyonbhl0hrjvtb8aghjj User:KockaAdmiralac/Sandbox 2 174806 737622 2026-04-11T17:44:36Z KockaAdmiralac 73426 Hmm 737622 wikitext text/x-wiki {{#invoke:Sandbox/KockaAdmiralac|decat}} 85e7r61mh0h1qmt8vezvz992b84yxmj 737623 737622 2026-04-11T17:44:50Z KockaAdmiralac 73426 Hmm 737623 wikitext text/x-wiki {{#invoke:Sandbox/KockaAdmiralac|decat}} {{#invoke:Sandbox/KockaAdmiralac|tmpl}} 2u5mlwazqu7cpvcsojx6mw4qkyopypd Template:R protected/template 10 174807 737634 2026-01-10T23:38:19Z en>Andrybak 0 wrap categorization in <includeonly></includeonly> to remove this page from [[:Category:Wikipedia pages with incorrect protection templates]] 737634 wikitext text/x-wiki {{Redirect template |id=R template-protected |name=[[:Category:Wikipedia template-protected redirects|Template-protected]] |from=a page that is template-protected from editing for any of several possible reasons. Only administrators and template editors may edit this page |info=** '''Please do not replace these redirected links''' with links directly to the target page unless expressly advised to do so below or elsewhere on this page, or if the change is supported by a policy or guideline. |template category=<!--for automatic namespace detection--> }}<includeonly>{{#ifeq:{{{nocat|}}}|true||{{#ifeq:{{FULLPAGENAME}}|Template:R template-protected||{{#ifeq: {{SUBPAGENAME}}|sandbox||{{#switch: {{PROTECTIONLEVEL:move}} |templateeditor=[[Category:Wikipedia template-protected redirects]] |sysop=[[Category:Wikipedia move-protected pages]] }}{{#switch: {{PROTECTIONLEVEL:edit}} |templateeditor=[[Category:Wikipedia template-protected redirects]] |sysop|autoconfirmed|extendedconfirmed|#default=[[Category:Wikipedia pages with incorrect protection templates]] }}}}}}}}</includeonly><noinclude> <!-- Place categories on /doc subpage; interwikis go to Wikidata. --> {{documentation}} </noinclude> jn1kvzk5qpnk0dh8vbq74u19oomhxvv 737635 737634 2026-04-11T19:54:08Z Novem Linguae 49714 1 revision imported from [[:en:Template:R_protected/template]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737634 wikitext text/x-wiki {{Redirect template |id=R template-protected |name=[[:Category:Wikipedia template-protected redirects|Template-protected]] |from=a page that is template-protected from editing for any of several possible reasons. Only administrators and template editors may edit this page |info=** '''Please do not replace these redirected links''' with links directly to the target page unless expressly advised to do so below or elsewhere on this page, or if the change is supported by a policy or guideline. |template category=<!--for automatic namespace detection--> }}<includeonly>{{#ifeq:{{{nocat|}}}|true||{{#ifeq:{{FULLPAGENAME}}|Template:R template-protected||{{#ifeq: {{SUBPAGENAME}}|sandbox||{{#switch: {{PROTECTIONLEVEL:move}} |templateeditor=[[Category:Wikipedia template-protected redirects]] |sysop=[[Category:Wikipedia move-protected pages]] }}{{#switch: {{PROTECTIONLEVEL:edit}} |templateeditor=[[Category:Wikipedia template-protected redirects]] |sysop|autoconfirmed|extendedconfirmed|#default=[[Category:Wikipedia pages with incorrect protection templates]] }}}}}}}}</includeonly><noinclude> <!-- Place categories on /doc subpage; interwikis go to Wikidata. --> {{documentation}} </noinclude> jn1kvzk5qpnk0dh8vbq74u19oomhxvv Template:AfD templates 10 174808 737658 2025-11-04T12:36:11Z en>Redrose64 0 fix v-t-e links 737658 wikitext text/x-wiki {{navbox | name = AfD templates | title = [[WP:Articles for deletion|Articles for deletion]] templates | bodyclass = hlist | state = {{{state<includeonly>|expanded</includeonly>}}} | group1 = Article page<br />AfD notice | list1 = * {{tla|Article for deletion|Afd}} (1st time nomination) * {{tl|Afd-merge to}} (merge contents from AfD'ed article) * {{tl|AfD-userfied}} (drafted pursuant to AfD) * {{tla|Article for deletion/dated|AfDM}} (1st time nomination) * {{tl|Afdx}} (2nd etc. nomination) * {{tl|Cleanup AfD}} (Cleanup req'd after AfD) * {{tl|Db-g4}} (Post AfD CSD G4 deletion needed) * {{tl|Db-xfd}} (Post AfD CSD G6 deletion needed) | group2 = User talk page<br />AfD discussion notifications | list2 = *{{tl|Afd notice}} | group3 = Discussion page<br />AfD templates | list3 = * {{tl|Priorxfd}} (previous deletion discussions) * {{tl|Closing}} (closing in process) * {{tl|Duplicate vote}} (participation clarification) * {{tl|Not a ballot}} (discussion clarification) * {{tl|Old AfD list}} (previous discussions) * {{tl|Page creator}} (participant clarification) * {{tl|Single-purpose account}} (participant clarification) * {{tl|Confirmed sockmaster}} (participant is confirmed to have used sockpuppets) * {{tl|Confirmed sockpuppet}} (participant is a confirmed sockpuppet) * {{tl|Canvassed}} (participant clarification) * {{tl|COI editor}} (participant clarification) * {{tl|Xfd-privacy}} (sensitive discussion close) * {{tl|Deletion sorting}} (debate added to deletion sorting list) * {{tl|Notified}} (debate mentioned on talk page) | group4 = User talk page<br />AfD process notifications | list4 = * {{tl|Afd-top-notice}} (for nominator mistake) * {{tl|Afd-welcome}} (for new participant) * {{tl|Uw-notvote}} (warning) | group5 = Article talk page<br />AfD notice | list5 = * {{tl|Old XfD multi}} (1st and subsequent nominations, preferred template) * {{tl|Afd-merge from}} (merge contents in AfD'ed article) * {{tl|Afd-merged-from}} (contents merged into AfD'ed article) * {{tl|Blank and redirect notice}} (destination for redirected articles) * {{tl|Article history}} (AfD, Good/Featured, and many other article "events") |below = {{see also|Template:Proposed deletion templates{{!}}Proposed deletion templates|Template:Speedy deletion templates{{!}}Speedy deletion templates}} | group6 = See also | list6 = {{tl|Mfd notice}} }}<noinclude> {{Documentation}} </noinclude> fdfchaf6drosh7bmx8bt35e72ag5pl8 737659 737658 2026-04-11T19:54:21Z Novem Linguae 49714 1 revision imported from [[:en:Template:AfD_templates]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737658 wikitext text/x-wiki {{navbox | name = AfD templates | title = [[WP:Articles for deletion|Articles for deletion]] templates | bodyclass = hlist | state = {{{state<includeonly>|expanded</includeonly>}}} | group1 = Article page<br />AfD notice | list1 = * {{tla|Article for deletion|Afd}} (1st time nomination) * {{tl|Afd-merge to}} (merge contents from AfD'ed article) * {{tl|AfD-userfied}} (drafted pursuant to AfD) * {{tla|Article for deletion/dated|AfDM}} (1st time nomination) * {{tl|Afdx}} (2nd etc. nomination) * {{tl|Cleanup AfD}} (Cleanup req'd after AfD) * {{tl|Db-g4}} (Post AfD CSD G4 deletion needed) * {{tl|Db-xfd}} (Post AfD CSD G6 deletion needed) | group2 = User talk page<br />AfD discussion notifications | list2 = *{{tl|Afd notice}} | group3 = Discussion page<br />AfD templates | list3 = * {{tl|Priorxfd}} (previous deletion discussions) * {{tl|Closing}} (closing in process) * {{tl|Duplicate vote}} (participation clarification) * {{tl|Not a ballot}} (discussion clarification) * {{tl|Old AfD list}} (previous discussions) * {{tl|Page creator}} (participant clarification) * {{tl|Single-purpose account}} (participant clarification) * {{tl|Confirmed sockmaster}} (participant is confirmed to have used sockpuppets) * {{tl|Confirmed sockpuppet}} (participant is a confirmed sockpuppet) * {{tl|Canvassed}} (participant clarification) * {{tl|COI editor}} (participant clarification) * {{tl|Xfd-privacy}} (sensitive discussion close) * {{tl|Deletion sorting}} (debate added to deletion sorting list) * {{tl|Notified}} (debate mentioned on talk page) | group4 = User talk page<br />AfD process notifications | list4 = * {{tl|Afd-top-notice}} (for nominator mistake) * {{tl|Afd-welcome}} (for new participant) * {{tl|Uw-notvote}} (warning) | group5 = Article talk page<br />AfD notice | list5 = * {{tl|Old XfD multi}} (1st and subsequent nominations, preferred template) * {{tl|Afd-merge from}} (merge contents in AfD'ed article) * {{tl|Afd-merged-from}} (contents merged into AfD'ed article) * {{tl|Blank and redirect notice}} (destination for redirected articles) * {{tl|Article history}} (AfD, Good/Featured, and many other article "events") |below = {{see also|Template:Proposed deletion templates{{!}}Proposed deletion templates|Template:Speedy deletion templates{{!}}Speedy deletion templates}} | group6 = See also | list6 = {{tl|Mfd notice}} }}<noinclude> {{Documentation}} </noinclude> fdfchaf6drosh7bmx8bt35e72ag5pl8 Template:Article for deletion/switch 10 174809 737660 2026-04-04T18:00:24Z en>MusikBot II 0 Protected "[[Template:Article for deletion/switch]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 637 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) 737660 wikitext text/x-wiki {{#switch:{{{1|}}}|merge|merging={{{2|}}}|redirect|redirecting={{{3|}}}|draft|draftify|draftifying|draftification={{{4|}}}|#default={{{5|}}}}} kt00ajso6gh46pgewygd3osen9twtjc 737661 737660 2026-04-11T19:54:21Z Novem Linguae 49714 1 revision imported from [[:en:Template:Article_for_deletion/switch]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737660 wikitext text/x-wiki {{#switch:{{{1|}}}|merge|merging={{{2|}}}|redirect|redirecting={{{3|}}}|draft|draftify|draftifying|draftification={{{4|}}}|#default={{{5|}}}}} kt00ajso6gh46pgewygd3osen9twtjc Module:Old XfD multi 828 174810 737668 2025-11-27T04:47:08Z en>Sohom Datta 0 per talk page 737668 Scribunto text/plain local yesno = require('Module:Yesno') local mMessageBox = require('Module:Message box') local TEMPLATE_PAGE = 'Template:Old XfD multi' ------------------------------------------------------------------------------- -- Helper functions ------------------------------------------------------------------------------- local function exists(page) local success, exists = pcall(function () local title = mw.title.new(page) return title.exists end) return success and exists end local function getAfdPage(page) if page and mw.title.new(page) then if mw.title.new(page).namespace ~= 0 then return page else return 'Wikipedia:Articles for deletion/' .. page end else return nil end end local function getVfdPage(page) if page and mw.title.new(page) then if mw.title.new(page).rootPageTitle.fullText == 'Wikipedia:Votes for deletion' then return page else return 'Wikipedia:Votes for deletion/' .. page end else return nil end end local function makeWikilink(page, display) display = display or 'discussion' if page then return string.format('[[%s|%s]]', page, display) else return display --probably a bad title end end local function makeUrlLink(page, display) display = display or 'discussion' return string.format('[%s %s]', page, display) end local function pageTypeName(title) local display = mw.ustring.lower(title.subjectNsText) local pageTypes = { [''] = 'article', ['user'] = 'user page', ['wikipedia'] = 'project page', ['mediawiki'] = 'interface page', ['help'] = 'help page' } if pageTypes[display] then display = pageTypes[display] end return display end local function cleanupTitle(title) if not title then return title end title = mw.uri.decode(title, 'PATH') title = string.gsub(title, '|.*', '') title = string.gsub(title, '[%[%]{}]', '') return title end ------------------------------------------------------------------------------- -- OldAfdMulti class ------------------------------------------------------------------------------- local OldAfdMulti = {} OldAfdMulti.__index = OldAfdMulti function OldAfdMulti.new(args) local self = setmetatable({}, OldAfdMulti) self.currentTitle = mw.title.getCurrentTitle() -- Preprocess the row args for easier looping. self.rowData = {} for k, v in pairs(args) do if type(k) == 'string' then local prefix, num = k:match('^(.-)([1-9][0-9]*)$') if prefix and num then num = tonumber(num) if prefix == 'result' or prefix == 'date' or prefix == 'page' or prefix == 'link' or prefix == 'caption' or prefix == 'votepage' or prefix == 'merge' then self.rowData[num] = self.rowData[num] or {} self.rowData[num][prefix] = v if v and v ~= '' and prefix=='merge' then self.isMerge = true end end end end end -- Set aliases for parameters ending in "1". if self.rowData[1] then self.rowData[1].result = self.rowData[1].result or args.result self.rowData[1].date = self.rowData[1].date or args.date self.rowData[1].page = self.rowData[1].page or args.page self.rowData[1].votepage = self.rowData[1].votepage or args.votepage self.rowData[1].link = self.rowData[1].link or args.link self.rowData[1].caption = self.rowData[1].caption or args.caption self.rowData[1].merge = self.rowData[1].merge or args.merge elseif args.result or args.date or args.page or args.votepage or args.link or args.caption or args.merge then self.rowData[1] = { result = args.result, date = args.date, page = args.page, votepage = args.votepage, link = args.link, caption = args.caption, merge = args.merge } end -- Remove any gaps in the array we made. local function compressSparseArray(t) local ret, nums = {}, {} for num, data in pairs(t) do nums[#nums + 1] = num end table.sort(nums) for i, num in ipairs(nums) do ret[i] = t[num] end return ret end self.rowData = compressSparseArray(self.rowData) -- Set aliases that apply to all of the data tables. for i, data in ipairs(self.rowData) do data.page = data.page or data.votepage data.page = cleanupTitle(data.page) data.votepage = nil end -- Set collapsedness self.collapse = tonumber(args.collapse) if not self.collapse then self.collapse = yesno(args.collapse) end -- Set other properties self.isNumbered = yesno(args.numbered) self.isSmall = yesno(args.small) self.pageType = args.type or pageTypeName(self.currentTitle) if args.merge and args.merge ~= '' then self.isMerge = true end self.deletion = args.deletion return self end function OldAfdMulti:renderResult(result) return result or "'''Keep'''" end function OldAfdMulti:renderDate(date) if date then return date else self.hasMissingDate = true return string.format( '<sup>%s[[%s|date missing]]%s</sup>', mw.text.nowiki('['), TEMPLATE_PAGE, mw.text.nowiki(']') ) end end function OldAfdMulti:renderPageText(linkFunc, page, caption) return string.format(', see %s.', linkFunc(page, caption)) end function OldAfdMulti:renderRow(result, date, link, merge) local result = self:renderResult(result) local date = self:renderDate(date) local mergeText = '' if merge and merge ~= '' then mergeText = string.format('Merge with [[:%s]]: ', merge) end if link then return string.format('%s%s, %s, see %s.', mergeText, result, date, link) else return string.format('%s%s, %s', mergeText, result, date) end end function OldAfdMulti:renderFirstRow(data) local link if data.link then link = makeUrlLink(data.link, data.caption) else local page = data.page or self.currentTitle.text link = makeWikilink(getAfdPage(page), data.caption) end return self:renderRow(data.result, data.date, link, data.merge) end function OldAfdMulti:renderSubsequentRow(data) local link if data.page then link = makeWikilink(getAfdPage(data.page), data.caption) elseif data.link then link = makeUrlLink(data.link, data.caption) end return self:renderRow(data.result, data.date, link, data.merge) end function OldAfdMulti:renderRows() local root = mw.html.create() local nRows = #self.rowData local i = nRows local nCollapsedRows if type(self.collapse) == 'number' then nCollapsedRows = self.collapse elseif self.collapse then nCollapsedRows = nRows else nCollapsedRows = 0 end local hasNormalRows = nRows - nCollapsedRows > 0 local function makeList(isCollapsed, header) local tableRoot = root:tag('table') tableRoot :addClass(isCollapsed and 'mw-collapsible mw-collapsed' or nil) :css('width', '100%') if header then tableRoot :tag('tr') :tag('th') :wikitext(header) end return tableRoot :tag('tr') :tag('td') :tag(self.isNumbered and 'ol' or 'ul') end local function renderRow(html, method, data) html :tag('li') :attr('value', self.isNumbered and i or nil) :wikitext(self[method](self, data)) end -- Render normal rows if hasNormalRows then local normalList = makeList(false) while i > 1 and i > nCollapsedRows do renderRow(normalList, 'renderSubsequentRow', self.rowData[i]) i = i - 1 end if i == 1 and i > nCollapsedRows then renderRow(normalList, 'renderFirstRow', self.rowData[i]) i = i - 1 end end -- Render collapsed rows if nCollapsedRows > 0 then local header if hasNormalRows then header = 'Older deletion discussions:' elseif nRows > 1 then header = 'Deletion discussions:' else header = 'Deletion discussion:' end local collapsedList = makeList(true, header) while i > 1 do renderRow(collapsedList, 'renderSubsequentRow', self.rowData[i]) i = i - 1 end renderRow(collapsedList, 'renderFirstRow', self.rowData[i]) end return tostring(root) end function OldAfdMulti:renderFirstRowOnly() local data = self.rowData[1] or {} local caption = data.caption or "the discussion" local bold = "'''" local link if data.link then link = makeUrlLink(data.link, caption) else local page = data.page or self.currentTitle.text if exists(getAfdPage(page)) then link = bold .. makeWikilink(getAfdPage(page), caption) .. bold elseif exists(getVfdPage(page)) then link = bold .. makeWikilink(getVfdPage(page), caption) .. bold else link = caption -- Make this an error? end end local result = self:renderResult(data.result or "'''keep'''") return string.format( 'The result of %s was %s.', link, result ) end function OldAfdMulti:renderBannerText() local nRows = #self.rowData local ret = {} if self.deletion then if nRows < 1 or not self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was previously nominated for %s.', self.pageType, self.deletion ) elseif nRows == 1 and self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was nominated for %s on %s.', self.pageType, self.deletion, self.rowData[1].date ) else ret[#ret + 1] = string.format( 'This %s was nominated for %s.', self.pageType, self.deletion ) end elseif self.isMerge then if nRows < 1 or not self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was considered for [[Wikipedia:Deletion policy#Merging|merging]] with %s.', self.pageType, self.rowData[1].merge ) elseif nRows == 1 and self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was considered for [[Wikipedia:Deletion policy#Merging|merging]] with [[:%s]] on %s.', self.pageType, self.rowData[1].merge, self.rowData[1].date ) else ret[#ret + 1] = string.format( 'This %s was nominated for [[Wikipedia:Deletion policy|deletion]] or considered for [[Wikipedia:Deletion policy#Merging|merging]].', self.pageType ) end else if nRows < 1 or not self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was previously nominated for [[Wikipedia:Deletion policy|deletion]].', self.pageType ) elseif nRows == 1 and self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was nominated for [[Wikipedia:Deletion policy|deletion]] on %s.', self.pageType, self.rowData[1].date ) else ret[#ret + 1] = string.format( 'This %s was nominated for [[Wikipedia:Deletion policy|deletion]].', self.pageType ) end end if nRows > 1 then ret[#ret + 1] = ' ' if self.isSmall then ret[#ret + 1] = 'Review prior discussions if considering re-nomination:' else ret[#ret + 1] = 'Please review the prior discussions if you are considering re-nomination:' end ret[#ret + 1] = '\n' ret[#ret + 1] = self:renderRows() else ret[#ret + 1] = ' ' ret[#ret + 1] = self:renderFirstRowOnly() end return table.concat(ret) end function OldAfdMulti:renderBanner() return mMessageBox.main('tmbox', { small = self.isSmall, type = 'notice', image = '[[File:Clipboard.svg|35px|Articles for deletion]]', smallimage = 'none', text = self:renderBannerText() }) end function OldAfdMulti:renderTrackingCategories() local ret = {} if self.hasMissingDate and self.currentTitle.isTalkPage then ret[#ret + 1] = '[[Category:Old XfD multi templates with errors]]' end return table.concat(ret) end function OldAfdMulti:__tostring() return self:renderBanner() .. self:renderTrackingCategories() end ------------------------------------------------------------------------------- -- Exports ------------------------------------------------------------------------------- local p = {} function p._main(args) local afd = OldAfdMulti.new(args) return tostring(afd) end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = TEMPLATE_PAGE }) return p._main(args) end return p 996swiiuuk93gphjhg4d3xqyo1vemuz 737669 737668 2026-04-11T19:54:43Z Novem Linguae 49714 1 revision imported from [[:en:Module:Old_XfD_multi]]: Copied content from another wiki; see the linked page's history for attribution ([[w:User:Novem Linguae/Scripts/CWWEditSummary.js|CWWEditSummary]]) 737668 Scribunto text/plain local yesno = require('Module:Yesno') local mMessageBox = require('Module:Message box') local TEMPLATE_PAGE = 'Template:Old XfD multi' ------------------------------------------------------------------------------- -- Helper functions ------------------------------------------------------------------------------- local function exists(page) local success, exists = pcall(function () local title = mw.title.new(page) return title.exists end) return success and exists end local function getAfdPage(page) if page and mw.title.new(page) then if mw.title.new(page).namespace ~= 0 then return page else return 'Wikipedia:Articles for deletion/' .. page end else return nil end end local function getVfdPage(page) if page and mw.title.new(page) then if mw.title.new(page).rootPageTitle.fullText == 'Wikipedia:Votes for deletion' then return page else return 'Wikipedia:Votes for deletion/' .. page end else return nil end end local function makeWikilink(page, display) display = display or 'discussion' if page then return string.format('[[%s|%s]]', page, display) else return display --probably a bad title end end local function makeUrlLink(page, display) display = display or 'discussion' return string.format('[%s %s]', page, display) end local function pageTypeName(title) local display = mw.ustring.lower(title.subjectNsText) local pageTypes = { [''] = 'article', ['user'] = 'user page', ['wikipedia'] = 'project page', ['mediawiki'] = 'interface page', ['help'] = 'help page' } if pageTypes[display] then display = pageTypes[display] end return display end local function cleanupTitle(title) if not title then return title end title = mw.uri.decode(title, 'PATH') title = string.gsub(title, '|.*', '') title = string.gsub(title, '[%[%]{}]', '') return title end ------------------------------------------------------------------------------- -- OldAfdMulti class ------------------------------------------------------------------------------- local OldAfdMulti = {} OldAfdMulti.__index = OldAfdMulti function OldAfdMulti.new(args) local self = setmetatable({}, OldAfdMulti) self.currentTitle = mw.title.getCurrentTitle() -- Preprocess the row args for easier looping. self.rowData = {} for k, v in pairs(args) do if type(k) == 'string' then local prefix, num = k:match('^(.-)([1-9][0-9]*)$') if prefix and num then num = tonumber(num) if prefix == 'result' or prefix == 'date' or prefix == 'page' or prefix == 'link' or prefix == 'caption' or prefix == 'votepage' or prefix == 'merge' then self.rowData[num] = self.rowData[num] or {} self.rowData[num][prefix] = v if v and v ~= '' and prefix=='merge' then self.isMerge = true end end end end end -- Set aliases for parameters ending in "1". if self.rowData[1] then self.rowData[1].result = self.rowData[1].result or args.result self.rowData[1].date = self.rowData[1].date or args.date self.rowData[1].page = self.rowData[1].page or args.page self.rowData[1].votepage = self.rowData[1].votepage or args.votepage self.rowData[1].link = self.rowData[1].link or args.link self.rowData[1].caption = self.rowData[1].caption or args.caption self.rowData[1].merge = self.rowData[1].merge or args.merge elseif args.result or args.date or args.page or args.votepage or args.link or args.caption or args.merge then self.rowData[1] = { result = args.result, date = args.date, page = args.page, votepage = args.votepage, link = args.link, caption = args.caption, merge = args.merge } end -- Remove any gaps in the array we made. local function compressSparseArray(t) local ret, nums = {}, {} for num, data in pairs(t) do nums[#nums + 1] = num end table.sort(nums) for i, num in ipairs(nums) do ret[i] = t[num] end return ret end self.rowData = compressSparseArray(self.rowData) -- Set aliases that apply to all of the data tables. for i, data in ipairs(self.rowData) do data.page = data.page or data.votepage data.page = cleanupTitle(data.page) data.votepage = nil end -- Set collapsedness self.collapse = tonumber(args.collapse) if not self.collapse then self.collapse = yesno(args.collapse) end -- Set other properties self.isNumbered = yesno(args.numbered) self.isSmall = yesno(args.small) self.pageType = args.type or pageTypeName(self.currentTitle) if args.merge and args.merge ~= '' then self.isMerge = true end self.deletion = args.deletion return self end function OldAfdMulti:renderResult(result) return result or "'''Keep'''" end function OldAfdMulti:renderDate(date) if date then return date else self.hasMissingDate = true return string.format( '<sup>%s[[%s|date missing]]%s</sup>', mw.text.nowiki('['), TEMPLATE_PAGE, mw.text.nowiki(']') ) end end function OldAfdMulti:renderPageText(linkFunc, page, caption) return string.format(', see %s.', linkFunc(page, caption)) end function OldAfdMulti:renderRow(result, date, link, merge) local result = self:renderResult(result) local date = self:renderDate(date) local mergeText = '' if merge and merge ~= '' then mergeText = string.format('Merge with [[:%s]]: ', merge) end if link then return string.format('%s%s, %s, see %s.', mergeText, result, date, link) else return string.format('%s%s, %s', mergeText, result, date) end end function OldAfdMulti:renderFirstRow(data) local link if data.link then link = makeUrlLink(data.link, data.caption) else local page = data.page or self.currentTitle.text link = makeWikilink(getAfdPage(page), data.caption) end return self:renderRow(data.result, data.date, link, data.merge) end function OldAfdMulti:renderSubsequentRow(data) local link if data.page then link = makeWikilink(getAfdPage(data.page), data.caption) elseif data.link then link = makeUrlLink(data.link, data.caption) end return self:renderRow(data.result, data.date, link, data.merge) end function OldAfdMulti:renderRows() local root = mw.html.create() local nRows = #self.rowData local i = nRows local nCollapsedRows if type(self.collapse) == 'number' then nCollapsedRows = self.collapse elseif self.collapse then nCollapsedRows = nRows else nCollapsedRows = 0 end local hasNormalRows = nRows - nCollapsedRows > 0 local function makeList(isCollapsed, header) local tableRoot = root:tag('table') tableRoot :addClass(isCollapsed and 'mw-collapsible mw-collapsed' or nil) :css('width', '100%') if header then tableRoot :tag('tr') :tag('th') :wikitext(header) end return tableRoot :tag('tr') :tag('td') :tag(self.isNumbered and 'ol' or 'ul') end local function renderRow(html, method, data) html :tag('li') :attr('value', self.isNumbered and i or nil) :wikitext(self[method](self, data)) end -- Render normal rows if hasNormalRows then local normalList = makeList(false) while i > 1 and i > nCollapsedRows do renderRow(normalList, 'renderSubsequentRow', self.rowData[i]) i = i - 1 end if i == 1 and i > nCollapsedRows then renderRow(normalList, 'renderFirstRow', self.rowData[i]) i = i - 1 end end -- Render collapsed rows if nCollapsedRows > 0 then local header if hasNormalRows then header = 'Older deletion discussions:' elseif nRows > 1 then header = 'Deletion discussions:' else header = 'Deletion discussion:' end local collapsedList = makeList(true, header) while i > 1 do renderRow(collapsedList, 'renderSubsequentRow', self.rowData[i]) i = i - 1 end renderRow(collapsedList, 'renderFirstRow', self.rowData[i]) end return tostring(root) end function OldAfdMulti:renderFirstRowOnly() local data = self.rowData[1] or {} local caption = data.caption or "the discussion" local bold = "'''" local link if data.link then link = makeUrlLink(data.link, caption) else local page = data.page or self.currentTitle.text if exists(getAfdPage(page)) then link = bold .. makeWikilink(getAfdPage(page), caption) .. bold elseif exists(getVfdPage(page)) then link = bold .. makeWikilink(getVfdPage(page), caption) .. bold else link = caption -- Make this an error? end end local result = self:renderResult(data.result or "'''keep'''") return string.format( 'The result of %s was %s.', link, result ) end function OldAfdMulti:renderBannerText() local nRows = #self.rowData local ret = {} if self.deletion then if nRows < 1 or not self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was previously nominated for %s.', self.pageType, self.deletion ) elseif nRows == 1 and self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was nominated for %s on %s.', self.pageType, self.deletion, self.rowData[1].date ) else ret[#ret + 1] = string.format( 'This %s was nominated for %s.', self.pageType, self.deletion ) end elseif self.isMerge then if nRows < 1 or not self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was considered for [[Wikipedia:Deletion policy#Merging|merging]] with %s.', self.pageType, self.rowData[1].merge ) elseif nRows == 1 and self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was considered for [[Wikipedia:Deletion policy#Merging|merging]] with [[:%s]] on %s.', self.pageType, self.rowData[1].merge, self.rowData[1].date ) else ret[#ret + 1] = string.format( 'This %s was nominated for [[Wikipedia:Deletion policy|deletion]] or considered for [[Wikipedia:Deletion policy#Merging|merging]].', self.pageType ) end else if nRows < 1 or not self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was previously nominated for [[Wikipedia:Deletion policy|deletion]].', self.pageType ) elseif nRows == 1 and self.rowData[1].date then ret[#ret + 1] = string.format( 'This %s was nominated for [[Wikipedia:Deletion policy|deletion]] on %s.', self.pageType, self.rowData[1].date ) else ret[#ret + 1] = string.format( 'This %s was nominated for [[Wikipedia:Deletion policy|deletion]].', self.pageType ) end end if nRows > 1 then ret[#ret + 1] = ' ' if self.isSmall then ret[#ret + 1] = 'Review prior discussions if considering re-nomination:' else ret[#ret + 1] = 'Please review the prior discussions if you are considering re-nomination:' end ret[#ret + 1] = '\n' ret[#ret + 1] = self:renderRows() else ret[#ret + 1] = ' ' ret[#ret + 1] = self:renderFirstRowOnly() end return table.concat(ret) end function OldAfdMulti:renderBanner() return mMessageBox.main('tmbox', { small = self.isSmall, type = 'notice', image = '[[File:Clipboard.svg|35px|Articles for deletion]]', smallimage = 'none', text = self:renderBannerText() }) end function OldAfdMulti:renderTrackingCategories() local ret = {} if self.hasMissingDate and self.currentTitle.isTalkPage then ret[#ret + 1] = '[[Category:Old XfD multi templates with errors]]' end return table.concat(ret) end function OldAfdMulti:__tostring() return self:renderBanner() .. self:renderTrackingCategories() end ------------------------------------------------------------------------------- -- Exports ------------------------------------------------------------------------------- local p = {} function p._main(args) local afd = OldAfdMulti.new(args) return tostring(afd) end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = TEMPLATE_PAGE }) return p._main(args) end return p 996swiiuuk93gphjhg4d3xqyo1vemuz Wikipedia:Articles for deletion/Mainspace (18th nomination) 4 174811 737683 2026-04-11T19:56:17Z Novem Linguae 49714 Creating deletion discussion page for [[:Mainspace]]. 737683 wikitext text/x-wiki ===[[:Mainspace]]=== {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD|?}} <div class="infobox" style="width:33%">AfDs for this article:<ul class="listify">{{Special:Prefixindex/Wikipedia:Articles for deletion/Mainspace}}</ul></div> <noinclude>{{AFD help}}</noinclude> :{{la|Mainspace}} – (<includeonly>[[Wikipedia:Articles for deletion/Mainspace (18th nomination)|View AfD]]</includeonly><noinclude>[[Wikipedia:Articles for deletion/Log/2026 April 11#{{anchorencode:Mainspace}}|View log]]</noinclude>{{int:dot-separator}} <span class="plainlinks">[https://tools.wmflabs.org/jackbot/snottywong/cgi-bin/votecounter.cgi?page=Wikipedia:Articles_for_deletion/Mainspace_(18th_nomination) Stats]</span>) :({{Find sources AFD|Mainspace}}) Test –[[User:Novem Linguae|<span style="color:blue">'''Novem Linguae'''</span>]] <small>([[User talk:Novem Linguae|talk]])</small> 19:56, 11 April 2026 (UTC) 6ynq2pvm0vwmpslhy8w5cb3b32v5py9 Wikipedia:Articles for deletion/Log/2026 April 11 4 174812 737684 2026-04-11T19:56:17Z Novem Linguae 49714 Adding [[:Wikipedia:Articles for deletion/Mainspace (18th nomination)]]. 737684 wikitext text/x-wiki {{Recent AfDs}} <div class="boilerplate metadata vfd" style="background-color: #F3F9FF; margin: 0 auto; padding: 0 1px 0 0; border: 1px solid #AAAAAA; font-size:10px"> {| width = "100%" |- ! width="50%" align="left" | <span style="color:gray">&lt;</span> [[Wikipedia:Articles for deletion/Log/2026 April 10|April 10]] ! width="50%" align="right" | [[Wikipedia:Articles for deletion/Log/2026 April 12|April 12]] <span style="color:gray">&gt;</span> |} </div> <div align = "center">'''[[Wikipedia:Guide to deletion|Guide to deletion]]'''</div> {{Cent}} <small>{{purge|Purge server cache}}</small> __TOC__ <!-- Add new entries to the TOP of the following list --> {{Wikipedia:Articles for deletion/Mainspace (18th nomination)}} knndkvyrj7dazw0c529r967zdkl46kv 737688 737684 2026-04-11T19:56:43Z Novem Linguae 49714 Adding [[:Wikipedia:Articles for deletion/Mainspace (19th nomination)]]. 737688 wikitext text/x-wiki {{Recent AfDs}} <div class="boilerplate metadata vfd" style="background-color: #F3F9FF; margin: 0 auto; padding: 0 1px 0 0; border: 1px solid #AAAAAA; font-size:10px"> {| width = "100%" |- ! width="50%" align="left" | <span style="color:gray">&lt;</span> [[Wikipedia:Articles for deletion/Log/2026 April 10|April 10]] ! width="50%" align="right" | [[Wikipedia:Articles for deletion/Log/2026 April 12|April 12]] <span style="color:gray">&gt;</span> |} </div> <div align = "center">'''[[Wikipedia:Guide to deletion|Guide to deletion]]'''</div> {{Cent}} <small>{{purge|Purge server cache}}</small> __TOC__ <!-- Add new entries to the TOP of the following list --> {{Wikipedia:Articles for deletion/Mainspace (19th nomination)}} {{Wikipedia:Articles for deletion/Mainspace (18th nomination)}} omhhy2voqwffgqgn1m8hlakf7be1hlu 737692 737688 2026-04-11T19:57:42Z Novem Linguae 49714 Adding [[:Wikipedia:Articles for deletion/NovemTest100]]. 737692 wikitext text/x-wiki {{Recent AfDs}} <div class="boilerplate metadata vfd" style="background-color: #F3F9FF; margin: 0 auto; padding: 0 1px 0 0; border: 1px solid #AAAAAA; font-size:10px"> {| width = "100%" |- ! width="50%" align="left" | <span style="color:gray">&lt;</span> [[Wikipedia:Articles for deletion/Log/2026 April 10|April 10]] ! width="50%" align="right" | [[Wikipedia:Articles for deletion/Log/2026 April 12|April 12]] <span style="color:gray">&gt;</span> |} </div> <div align = "center">'''[[Wikipedia:Guide to deletion|Guide to deletion]]'''</div> {{Cent}} <small>{{purge|Purge server cache}}</small> __TOC__ <!-- Add new entries to the TOP of the following list --> {{Wikipedia:Articles for deletion/NovemTest100}} {{Wikipedia:Articles for deletion/Mainspace (19th nomination)}} {{Wikipedia:Articles for deletion/Mainspace (18th nomination)}} ds7c95b6e3ufzguw6csgmvog3pdksjq 737697 737692 2026-04-11T19:58:29Z Novem Linguae 49714 Adding [[:Wikipedia:Articles for deletion/NovemTest101]]. 737697 wikitext text/x-wiki {{Recent AfDs}} <div class="boilerplate metadata vfd" style="background-color: #F3F9FF; margin: 0 auto; padding: 0 1px 0 0; border: 1px solid #AAAAAA; font-size:10px"> {| width = "100%" |- ! width="50%" align="left" | <span style="color:gray">&lt;</span> [[Wikipedia:Articles for deletion/Log/2026 April 10|April 10]] ! width="50%" align="right" | [[Wikipedia:Articles for deletion/Log/2026 April 12|April 12]] <span style="color:gray">&gt;</span> |} </div> <div align = "center">'''[[Wikipedia:Guide to deletion|Guide to deletion]]'''</div> {{Cent}} <small>{{purge|Purge server cache}}</small> __TOC__ <!-- Add new entries to the TOP of the following list --> {{Wikipedia:Articles for deletion/NovemTest101}} {{Wikipedia:Articles for deletion/NovemTest100}} {{Wikipedia:Articles for deletion/Mainspace (19th nomination)}} {{Wikipedia:Articles for deletion/Mainspace (18th nomination)}} 2qyfr0qlh6asfn4676zfuhccmrnxxsv 737702 737697 2026-04-11T19:59:03Z Novem Linguae 49714 Adding [[:Wikipedia:Articles for deletion/NovemTest102]]. 737702 wikitext text/x-wiki {{Recent AfDs}} <div class="boilerplate metadata vfd" style="background-color: #F3F9FF; margin: 0 auto; padding: 0 1px 0 0; border: 1px solid #AAAAAA; font-size:10px"> {| width = "100%" |- ! width="50%" align="left" | <span style="color:gray">&lt;</span> [[Wikipedia:Articles for deletion/Log/2026 April 10|April 10]] ! width="50%" align="right" | [[Wikipedia:Articles for deletion/Log/2026 April 12|April 12]] <span style="color:gray">&gt;</span> |} </div> <div align = "center">'''[[Wikipedia:Guide to deletion|Guide to deletion]]'''</div> {{Cent}} <small>{{purge|Purge server cache}}</small> __TOC__ <!-- Add new entries to the TOP of the following list --> {{Wikipedia:Articles for deletion/NovemTest102}} {{Wikipedia:Articles for deletion/NovemTest101}} {{Wikipedia:Articles for deletion/NovemTest100}} {{Wikipedia:Articles for deletion/Mainspace (19th nomination)}} {{Wikipedia:Articles for deletion/Mainspace (18th nomination)}} qpnriufy2ypd78h2hxphh9uklovonpb 737707 737702 2026-04-11T19:59:55Z Novem Linguae 49714 Adding [[:Wikipedia:Articles for deletion/NovemTest103]]. 737707 wikitext text/x-wiki {{Recent AfDs}} <div class="boilerplate metadata vfd" style="background-color: #F3F9FF; margin: 0 auto; padding: 0 1px 0 0; border: 1px solid #AAAAAA; font-size:10px"> {| width = "100%" |- ! width="50%" align="left" | <span style="color:gray">&lt;</span> [[Wikipedia:Articles for deletion/Log/2026 April 10|April 10]] ! width="50%" align="right" | [[Wikipedia:Articles for deletion/Log/2026 April 12|April 12]] <span style="color:gray">&gt;</span> |} </div> <div align = "center">'''[[Wikipedia:Guide to deletion|Guide to deletion]]'''</div> {{Cent}} <small>{{purge|Purge server cache}}</small> __TOC__ <!-- Add new entries to the TOP of the following list --> {{Wikipedia:Articles for deletion/NovemTest103}} {{Wikipedia:Articles for deletion/NovemTest102}} {{Wikipedia:Articles for deletion/NovemTest101}} {{Wikipedia:Articles for deletion/NovemTest100}} {{Wikipedia:Articles for deletion/Mainspace (19th nomination)}} {{Wikipedia:Articles for deletion/Mainspace (18th nomination)}} 5sfyjy8sv3h7poc1c5mhy9bnpmmbo2r Wikipedia:Articles for deletion/Mainspace (19th nomination) 4 174813 737687 2026-04-11T19:56:43Z Novem Linguae 49714 Creating deletion discussion page for [[:Mainspace]]. 737687 wikitext text/x-wiki ===[[:Mainspace]]=== {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD|?}} <div class="infobox" style="width:33%">AfDs for this article:<ul class="listify">{{Special:Prefixindex/Wikipedia:Articles for deletion/Mainspace}}</ul></div> <noinclude>{{AFD help}}</noinclude> :{{la|Mainspace}} – (<includeonly>[[Wikipedia:Articles for deletion/Mainspace (19th nomination)|View AfD]]</includeonly><noinclude>[[Wikipedia:Articles for deletion/Log/2026 April 11#{{anchorencode:Mainspace}}|View log]]</noinclude>{{int:dot-separator}} <span class="plainlinks">[https://tools.wmflabs.org/jackbot/snottywong/cgi-bin/votecounter.cgi?page=Wikipedia:Articles_for_deletion/Mainspace_(19th_nomination) Stats]</span>) :({{Find sources AFD|Mainspace}}) Test 2 –[[User:Novem Linguae|<span style="color:blue">'''Novem Linguae'''</span>]] <small>([[User talk:Novem Linguae|talk]])</small> 19:56, 11 April 2026 (UTC) enl42lo7wtknfv56zkgpnphjlnwgl3h Wikipedia:Articles for deletion/NovemTest100 4 174814 737691 2026-04-11T19:57:42Z Novem Linguae 49714 Creating deletion discussion page for [[:NovemTest100]]. 737691 wikitext text/x-wiki ===[[:NovemTest100]]=== {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD|?}} <noinclude>{{AFD help}}</noinclude> :{{la|NovemTest100}} – (<includeonly>[[Wikipedia:Articles for deletion/NovemTest100|View AfD]]</includeonly><noinclude>[[Wikipedia:Articles for deletion/Log/2026 April 11#{{anchorencode:NovemTest100}}|View log]]</noinclude>{{int:dot-separator}} <span class="plainlinks">[https://tools.wmflabs.org/jackbot/snottywong/cgi-bin/votecounter.cgi?page=Wikipedia:Articles_for_deletion/NovemTest100 Stats]</span>) :({{Find sources AFD|NovemTest100}}) Test –[[User:Novem Linguae|<span style="color:blue">'''Novem Linguae'''</span>]] <small>([[User talk:Novem Linguae|talk]])</small> 19:57, 11 April 2026 (UTC) 878h8xojdv7snhm6yh6u3opvkfr7lvo NovemTest101 0 174815 737693 2026-04-11T19:58:14Z Novem Linguae 49714 Created page with "test" 737693 wikitext text/x-wiki test jrwjerxiekdtj9k82lg930wpkr6tq6r 737694 737693 2026-04-11T19:58:29Z Novem Linguae 49714 Nominated for deletion; see [[:Wikipedia:Articles for deletion/NovemTest101]]. 737694 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{Article for deletion/dated|page=NovemTest101|timestamp=20260411195829|year=2026|month=April|day=11|substed=yes|help=off|outcome=merging}} <!-- Once discussion is closed, please place on talk page: {{Old AfD multi|page=NovemTest101|date=11 April 2026|result='''keep'''}} --> <!-- End of AfD message, feel free to edit beyond this point --> test ek7g49cas5ipznu46ivubyh2uum6635 Wikipedia:Articles for deletion/NovemTest101 4 174816 737695 2026-04-11T19:58:29Z Novem Linguae 49714 Creating deletion discussion page for [[:NovemTest101]]. 737695 wikitext text/x-wiki ===[[:NovemTest101]]=== {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD|?}} <noinclude>{{AFD help}}</noinclude> :{{la|NovemTest101}} – (<includeonly>[[Wikipedia:Articles for deletion/NovemTest101|View AfD]]</includeonly><noinclude>[[Wikipedia:Articles for deletion/Log/2026 April 11#{{anchorencode:NovemTest101}}|View log]]</noinclude>{{int:dot-separator}} <span class="plainlinks">[https://tools.wmflabs.org/jackbot/snottywong/cgi-bin/votecounter.cgi?page=Wikipedia:Articles_for_deletion/NovemTest101 Stats]</span>) :({{Find sources AFD|NovemTest101}}) Test 2 –[[User:Novem Linguae|<span style="color:blue">'''Novem Linguae'''</span>]] <small>([[User talk:Novem Linguae|talk]])</small> 19:58, 11 April 2026 (UTC) fw884xt3cfwoxjtu0jcvgnno92g3zlg NovemTest102 0 174817 737698 2026-04-11T19:58:50Z Novem Linguae 49714 Created page with "test" 737698 wikitext text/x-wiki test jrwjerxiekdtj9k82lg930wpkr6tq6r 737699 737698 2026-04-11T19:59:03Z Novem Linguae 49714 Nominated for deletion; see [[:Wikipedia:Articles for deletion/NovemTest102]]. 737699 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{Article for deletion/dated|page=NovemTest102|timestamp=20260411195903|year=2026|month=April|day=11|substed=yes|help=off|outcome=redirecting}} <!-- Once discussion is closed, please place on talk page: {{Old AfD multi|page=NovemTest102|date=11 April 2026|result='''keep'''}} --> <!-- End of AfD message, feel free to edit beyond this point --> test cf8zdz76gzi6cwho570bk6hcdtkkufc Wikipedia:Articles for deletion/NovemTest102 4 174818 737700 2026-04-11T19:59:03Z Novem Linguae 49714 Creating deletion discussion page for [[:NovemTest102]]. 737700 wikitext text/x-wiki ===[[:NovemTest102]]=== {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD|?}} <noinclude>{{AFD help}}</noinclude> :{{la|NovemTest102}} – (<includeonly>[[Wikipedia:Articles for deletion/NovemTest102|View AfD]]</includeonly><noinclude>[[Wikipedia:Articles for deletion/Log/2026 April 11#{{anchorencode:NovemTest102}}|View log]]</noinclude>{{int:dot-separator}} <span class="plainlinks">[https://tools.wmflabs.org/jackbot/snottywong/cgi-bin/votecounter.cgi?page=Wikipedia:Articles_for_deletion/NovemTest102 Stats]</span>) :({{Find sources AFD|NovemTest102}}) redirect –[[User:Novem Linguae|<span style="color:blue">'''Novem Linguae'''</span>]] <small>([[User talk:Novem Linguae|talk]])</small> 19:59, 11 April 2026 (UTC) coos4mi65rve35owjhna6i9z3vck7dp NovemTest103 0 174819 737703 2026-04-11T19:59:43Z Novem Linguae 49714 Created page with "test" 737703 wikitext text/x-wiki test jrwjerxiekdtj9k82lg930wpkr6tq6r 737704 737703 2026-04-11T19:59:54Z Novem Linguae 49714 Nominated for deletion; see [[:Wikipedia:Articles for deletion/NovemTest103]]. 737704 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{Article for deletion/dated|page=NovemTest103|timestamp=20260411195954|year=2026|month=April|day=11|substed=yes|help=off|outcome=draftification}} <!-- Once discussion is closed, please place on talk page: {{Old AfD multi|page=NovemTest103|date=11 April 2026|result='''keep'''}} --> <!-- End of AfD message, feel free to edit beyond this point --> test rutih93oa17fgn3o3r85oorditld6th 737708 737704 2026-04-11T20:00:09Z Novem Linguae 49714 737708 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{Article for deletion/dated|page=NovemTest103|timestamp=20260411195954|year=2026|month=April|day=11|substed=yes|help=off|outcome=draftification2}} <!-- Once discussion is closed, please place on talk page: {{Old AfD multi|page=NovemTest103|date=11 April 2026|result='''keep'''}} --> <!-- End of AfD message, feel free to edit beyond this point --> test orfwtcd1ztnxm76w8hjcyq4awkpkil4 737709 737708 2026-04-11T20:00:25Z Novem Linguae 49714 Revert to revision 737704 dated 2026-04-11 19:59:54 by Novem Linguae using [[:en:Wikipedia:Tools/Navigation_popups|popups]] 737709 wikitext text/x-wiki <!-- Please do not remove or change this AfD message until the discussion has been closed. --> {{Article for deletion/dated|page=NovemTest103|timestamp=20260411195954|year=2026|month=April|day=11|substed=yes|help=off|outcome=draftification}} <!-- Once discussion is closed, please place on talk page: {{Old AfD multi|page=NovemTest103|date=11 April 2026|result='''keep'''}} --> <!-- End of AfD message, feel free to edit beyond this point --> test rutih93oa17fgn3o3r85oorditld6th Wikipedia:Articles for deletion/NovemTest103 4 174820 737706 2026-04-11T19:59:55Z Novem Linguae 49714 Creating deletion discussion page for [[:NovemTest103]]. 737706 wikitext text/x-wiki ===[[:NovemTest103]]=== {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD|?}} <noinclude>{{AFD help}}</noinclude> :{{la|NovemTest103}} – (<includeonly>[[Wikipedia:Articles for deletion/NovemTest103|View AfD]]</includeonly><noinclude>[[Wikipedia:Articles for deletion/Log/2026 April 11#{{anchorencode:NovemTest103}}|View log]]</noinclude>{{int:dot-separator}} <span class="plainlinks">[https://tools.wmflabs.org/jackbot/snottywong/cgi-bin/votecounter.cgi?page=Wikipedia:Articles_for_deletion/NovemTest103 Stats]</span>) :({{Find sources AFD|NovemTest103}}) draftify –[[User:Novem Linguae|<span style="color:blue">'''Novem Linguae'''</span>]] <small>([[User talk:Novem Linguae|talk]])</small> 19:59, 11 April 2026 (UTC) 4pb5m3veuoi761hgu6bl4avgsk8m386 Wikipedia:Articles for deletion/Mainspace (20th nomination) 4 174821 737736 2026-04-12T09:15:39Z Novem Linguae 49714 Creating deletion discussion page for [[:Mainspace]]. 737736 wikitext text/x-wiki ===[[:Mainspace]]=== {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD|?}} <div class="infobox" style="width:33%">AfDs for this article:<ul class="listify">{{Special:Prefixindex/Wikipedia:Articles for deletion/Mainspace}}</ul></div> <noinclude>{{AFD help}}</noinclude> :{{la|Mainspace}} – (<includeonly>[[Wikipedia:Articles for deletion/Mainspace (20th nomination)|View AfD]]</includeonly><noinclude>[[Wikipedia:Articles for deletion/Log/2026 April 12#{{anchorencode:Mainspace}}|View log]]</noinclude>{{int:dot-separator}} <span class="plainlinks">[https://tools.wmflabs.org/jackbot/snottywong/cgi-bin/votecounter.cgi?page=Wikipedia:Articles_for_deletion/Mainspace_(20th_nomination) Stats]</span>) :({{Find sources AFD|Mainspace}}) –[[User:Novem Linguae|<span style="color:blue">'''Novem Linguae'''</span>]] <small>([[User talk:Novem Linguae|talk]])</small> 09:15, 12 April 2026 (UTC) r7qgmdf9rrh4domv7owhg5aexjpp4um Wikipedia:Articles for deletion/Log/2026 April 12 4 174822 737737 2026-04-12T09:15:39Z Novem Linguae 49714 Adding [[:Wikipedia:Articles for deletion/Mainspace (20th nomination)]]. 737737 wikitext text/x-wiki {{Recent AfDs}} <div class="boilerplate metadata vfd" style="background-color: #F3F9FF; margin: 0 auto; padding: 0 1px 0 0; border: 1px solid #AAAAAA; font-size:10px"> {| width = "100%" |- ! width="50%" align="left" | <span style="color:gray">&lt;</span> [[Wikipedia:Articles for deletion/Log/2026 April 11|April 11]] ! width="50%" align="right" | [[Wikipedia:Articles for deletion/Log/2026 April 13|April 13]] <span style="color:gray">&gt;</span> |} </div> <div align = "center">'''[[Wikipedia:Guide to deletion|Guide to deletion]]'''</div> {{Cent}} <small>{{purge|Purge server cache}}</small> __TOC__ <!-- Add new entries to the TOP of the following list --> {{Wikipedia:Articles for deletion/Mainspace (20th nomination)}} 3wwimbivz3j3rj9bf48gt67vbvacy0b 737741 737737 2026-04-12T09:17:07Z Novem Linguae 49714 Adding [[:Wikipedia:Articles for deletion/Mainspace (21th nomination)]]. 737741 wikitext text/x-wiki {{Recent AfDs}} <div class="boilerplate metadata vfd" style="background-color: #F3F9FF; margin: 0 auto; padding: 0 1px 0 0; border: 1px solid #AAAAAA; font-size:10px"> {| width = "100%" |- ! width="50%" align="left" | <span style="color:gray">&lt;</span> [[Wikipedia:Articles for deletion/Log/2026 April 11|April 11]] ! width="50%" align="right" | [[Wikipedia:Articles for deletion/Log/2026 April 13|April 13]] <span style="color:gray">&gt;</span> |} </div> <div align = "center">'''[[Wikipedia:Guide to deletion|Guide to deletion]]'''</div> {{Cent}} <small>{{purge|Purge server cache}}</small> __TOC__ <!-- Add new entries to the TOP of the following list --> {{Wikipedia:Articles for deletion/Mainspace (21th nomination)}} {{Wikipedia:Articles for deletion/Mainspace (20th nomination)}} 5gk5udff9812m38klqwo7y4gqc1jy38 737745 737741 2026-04-12T10:05:37Z Novem Linguae 49714 Adding [[:Wikipedia:Articles for deletion/Mainspace (22th nomination)]]. 737745 wikitext text/x-wiki {{Recent AfDs}} <div class="boilerplate metadata vfd" style="background-color: #F3F9FF; margin: 0 auto; padding: 0 1px 0 0; border: 1px solid #AAAAAA; font-size:10px"> {| width = "100%" |- ! width="50%" align="left" | <span style="color:gray">&lt;</span> [[Wikipedia:Articles for deletion/Log/2026 April 11|April 11]] ! width="50%" align="right" | [[Wikipedia:Articles for deletion/Log/2026 April 13|April 13]] <span style="color:gray">&gt;</span> |} </div> <div align = "center">'''[[Wikipedia:Guide to deletion|Guide to deletion]]'''</div> {{Cent}} <small>{{purge|Purge server cache}}</small> __TOC__ <!-- Add new entries to the TOP of the following list --> {{Wikipedia:Articles for deletion/Mainspace (22th nomination)}} {{Wikipedia:Articles for deletion/Mainspace (21th nomination)}} {{Wikipedia:Articles for deletion/Mainspace (20th nomination)}} r0pjdvee0v68plg9ytdp05jxd4r5w7r Wikipedia:Articles for deletion/Mainspace (21th nomination) 4 174823 737739 2026-04-12T09:17:07Z Novem Linguae 49714 Creating deletion discussion page for [[:Mainspace]]. 737739 wikitext text/x-wiki ===[[:Mainspace]]=== {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD|?}} <div class="infobox" style="width:33%">AfDs for this article:<ul class="listify">{{Special:Prefixindex/Wikipedia:Articles for deletion/Mainspace}}</ul></div> <noinclude>{{AFD help}}</noinclude> :{{la|Mainspace}} – (<includeonly>[[Wikipedia:Articles for deletion/Mainspace (21th nomination)|View AfD]]</includeonly><noinclude>[[Wikipedia:Articles for deletion/Log/2026 April 12#{{anchorencode:Mainspace}}|View log]]</noinclude>{{int:dot-separator}} <span class="plainlinks">[https://tools.wmflabs.org/jackbot/snottywong/cgi-bin/votecounter.cgi?page=Wikipedia:Articles_for_deletion/Mainspace_(21th_nomination) Stats]</span>) :({{Find sources AFD|Mainspace}}) –[[User:Novem Linguae|<span style="color:blue">'''Novem Linguae'''</span>]] <small>([[User talk:Novem Linguae|talk]])</small> 09:17, 12 April 2026 (UTC) lnlskidh4xyugygrx5gfxt9y98pebva Wikipedia:Articles for deletion/Mainspace (22th nomination) 4 174824 737744 2026-04-12T10:05:37Z Novem Linguae 49714 Creating deletion discussion page for [[:Mainspace]]. 737744 wikitext text/x-wiki ===[[:Mainspace]]=== {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD|?}} <div class="infobox" style="width:33%">AfDs for this article:<ul class="listify">{{Special:Prefixindex/Wikipedia:Articles for deletion/Mainspace}}</ul></div> <noinclude>{{AFD help}}</noinclude> :{{la|Mainspace}} – (<includeonly>[[Wikipedia:Articles for deletion/Mainspace (22th nomination)|View AfD]]</includeonly><noinclude>[[Wikipedia:Articles for deletion/Log/2026 April 12#{{anchorencode:Mainspace}}|View log]]</noinclude>{{int:dot-separator}} <span class="plainlinks">[https://tools.wmflabs.org/jackbot/snottywong/cgi-bin/votecounter.cgi?page=Wikipedia:Articles_for_deletion/Mainspace_(22th_nomination) Stats]</span>) :({{Find sources AFD|Mainspace}}) –[[User:Novem Linguae|<span style="color:blue">'''Novem Linguae'''</span>]] <small>([[User talk:Novem Linguae|talk]])</small> 10:05, 12 April 2026 (UTC) jscwbi88860a9q48zjbuukc9le9q8qn Talk:Nada 1 174825 737746 2026-04-12T10:28:09Z ~2026-22430-49 73523 /* Test */ new section 737746 wikitext text/x-wiki == Test == I think there is something missing. [[Special:Contributions/&#126;2026-22430-49|&#126;2026-22430-49]] ([[User talk:&#126;2026-22430-49|talk]]) 10:28, 12 April 2026 (UTC) cb2rb4ka28360u4zy80pkl1462icgc0 User talk:Ерідан 3 174826 737748 2026-04-12T11:07:25Z Ерідан 39642 Bot: Adding Hello. ~~~~ 737748 wikitext text/x-wiki Hello. [[User:Ерідан|Ерідан]] ([[User talk:Ерідан|talk]]) 11:07, 12 April 2026 (UTC) asgp5jo700iuki86i37nn7slieansxq