Update to MediaWiki 1.28.0

This commit is contained in:
Pierre Schmitz 2017-01-15 11:27:25 +01:00
parent 9cb00af847
commit b8136f04aa
4600 changed files with 289377 additions and 90653 deletions

26
.stylelintrc Normal file
View File

@ -0,0 +1,26 @@
{
"rules": {
"color-hex-case": [ "lower" ],
"color-hex-length": [ "short" ],
"color-named": [ "never" ],
"color-no-invalid-hex": true,
"declaration-bang-space-after": [ "never" ],
"declaration-bang-space-before": [ "always" ],
"declaration-colon-space-after": [ "always" ],
"declaration-colon-space-before": [ "never" ],
"font-family-name-quotes": [ "always-unless-keyword" ],
"font-weight-notation": [ "named-where-possible" ],
"function-calc-no-unspaced-operator": true,
"function-comma-newline-after": "never-multi-line",
"function-comma-newline-before": "never-multi-line",
"function-comma-space-after": [ "always" ],
"function-comma-space-before": [ "never" ],
"function-parentheses-newline-inside": [ "never-multi-line" ],
"function-parentheses-space-inside": [ "always" ],
"function-url-quotes": [ "never" ],
"function-whitespace-after": [ "always" ],
}
}

600
CREDITS
View File

@ -1,256 +1,662 @@
{{int:version-credits-summary}}
<!--
MediaWiki 1.27 is a collaborative project released under the
MediaWiki 1.28 is a collaborative project released under the
GNU General Public License v2. We would like to recognize the
following names for their contribution to the product.
-->
<!-- Please notice that the following can be found parsed under Special:Version/Credits -->
== Developers ==
== Contributors ==
<!-- Updates to this list made with maintenance/updateCredits.php -->
<!-- BEGIN CONTRIBUTOR LIST -->
* aalekhN
* Aaron Ball
* Aaron Pramana
* Aaron Schulz
* Aarti Dwivedi
* Aashaka Shah
* abhinand
* Abhishek Das
* Adam Miller
* Adam Roses Wight
* addshore
* Aditya Sastry
* Adrian Heine
* Adrian Lang
* Ævar Arnfjörð Bjarmason
* Agbad
* Ahmad Sherif
* Ajayrahul P
* Alangi Derick
* Albert221
* Alejandro Mery
* AlephNull
* Alex Ivanov
* Alex Shih-Han Lin
* Alex Z.
* Alexander Emsenhuber
* Alexander I. Mashin
* Alexander Lehmann
* Alexander Monk
* Alexander Sigachov
* Alexandre Emsenhuber
* Alexia E. Smith
* Amalthea
* Amir E. Aharoni
* Amir Sarabadani
* ananay
* Anders Wegge Jakobsen
* Andre Engels
* Andrew Bogott
* Andrew Dunbar
* Andrew Garrett
* Andrew Green
* Andrew H
* Andrew Harris
* Andrew Otto
* Andrius R
* andymw
* Angela Beesley Starling
* ankur
* Antoine Musso
* Antonio Ospite
* apexkid
* April King
* Aran Dunkley
* Arash Boostani
* Arcane21
* Ariel Glenn
* Arlo Breault
* Arne Heizmann
* Arthur Richards
* Aryeh Gregor
* Asher Feldman
* Asier Lostalé
* ayush_garg
* Azliq7
* Bagariavivek
* Bahodir Mansurov
* balloonguy
* Bartosz Dziewoński
* Beau
* Ben Davis
* Ben Hartshorne
* Bene
* Benny Situ
* Bergi
* Bertrand Grondin
* Bill Traynor
* Billinghurst
* billm
* blotmandroid
* Bogdan Stancescu
* Boris Nagaev
* Borislav Manolov
* Brad Jorsch
* Brandon Black
* Brandon Harris
* Brent G
* Brent Garber
* Brian Wolff
* Brianna Laugher
* Brion Vibber
* Bryan Davis
* Bryan Tong Minh
* Chad Horohoe
* Charles Melbye
* Chris Steipp
* church of emacs
* Daniel Friesen
* Daniel Kinzler
* Daniel Renfro
* Danny B.
* David McCabe
* Derk-Jan Hartman
* Domas Mituzas
* Emufarmers
* Fran Rogers
* Greg Sabino Mullane
* Guy Van den Broeck
* Happy-melon
* Hojjat
* Ian Baker
* Ilmari Karonen
* Jack D. Pond
* Jack Phoenix
* Jackmcbarn
* James Forrester
* Jan Paul Posma
* Jason Richey
* Jeroen De Dauw
* John Du Hart
* Jon Harald Søby
* Juliano F. Ravasi
* Leo Koppelkamm
* Leon Weber
* Leslie Hoare
* Marco Schuster
* Marius Hoch
* Matěj Grabovský
* Matt Johnston
* Matthew Flaschen
* Max Semenik
* Meno25
* MinuteElectron
* Mohamed Magdy
* Nathaniel Herman
* Neil Kandalgaonkar
* Nicolas Dumazet
* Niklas Laxström
* Ori Livneh
* Patrick Reilly
* Philip Tzou
* Platonides
* Purodha Blissenbach
* Raimond Spekking
* Remember the dot
* Roan Kattouw
* Robert Stojnić
* Robin Pepermans
* Rotem Liss
* Ryan Kaldari
* Ryan Lane
* Ryan Schmidt
* Sam Reed
* Shinjiman
* Siebrand Mazeland
* Soxred93
* SQL
* Szymon Świerkosz
* This, that and the other
* Thomas Bleher
* Thomas Gries
* Tim Starling
* Timo Tijhof
* Trevor Parscal
* Tyler Anthony Romeo
* Victor Vasiliev
* Yesid Carrillo
* Yuri Astrakhan
== Patch Contributors ==
* Aaron Ball
* Aaron Pramana
* Agbad
* Ahmad Sherif
* Alejandro Mery
* Amalthea
* Amir E. Aharoni
* Andrew Dunbar
* Antonio Ospite
* Asier Lostalé
* Azliq7
* Bagariavivek
* Beau
* Benny Situ
* Bergi
* Borislav Manolov
* Brent G
* Brianna Laugher
* burthsceh
* C. Scott Ananian
* Cacycle
* Calak
* Camille Constans
* Carl Fürstenberg
* Carlin
* Carsten Nielsen
* Cblair91
* cenarium
* Chad Horohoe
* Charles Melbye
* Chiefwei
* Chris McMahon
* Chris Seaton
* Chris Steipp
* Christian Aistleitner
* Christian List
* Christian Neubauer
* Christopher Johnson
* church of emacs
* Cindy Cicalese
* ckoerner
* Conrad Irwin
* cryptocoryne
* Dan Barrett
* Dan Collins
* Dan Duvall
* Dan Nessett
* Dan Poltawski
* dan-nl
* Daniel A. R. Werner
* Daniel Arnold
* Daniel Cannon
* Daniel De Marco
* Daniel Evans
* Daniel Friesen
* Daniel Kinzler
* Daniel Renfro
* Daniel Werner
* DanielRenfro
* Danny B.
* Darian Anthony Patrick
* Darkdragon09
* DaSch
* David Baumgarten
* David Chan
* David E. Narváez
* David Lynch
* David McCabe
* David Mudrák
* dcausse
* dennisroczek
* Denny Vrandecic
* Dereckson
* Derk-Jan Hartman
* Derric Atzrott
* Derrick Coetzee
* Dévai Tamás
* Devi Krishnan
* Diederik van Liere
* Domas Mituzas
* Douglas Gardner
* DPStokesNZ
* dr0ptp4kt
* Ebrahim Byagowi
* Ed Sanders
* Edward Chernenko
* Edward Z. Yang
* Elisabeth Bauer
* Elliott Eggleston
* Elvis Stansvik
* Emil Podlaszewski
* Emmanuel Engelhart
* Emmanuel Gil Peyrot
* Emmet Hikory
* Emufarmers
* enigmaeth
* Entlinkt
* Eranroz
* Eric Evans
* Eric Schneider
* Erich Lerch
* Erick Guan
* Erik Bernhardson
* Erik Moeller
* Erwin Dokter
* Étienne Beaulé
* Evan McIntire
* Evan Prodromou
* ExplosiveHippo
* Faidon Liambotis
* Federico Leva
* Fenzik Joseph
* firebus
* Florian Schmidt
* fomafix
* Fran Rogers
* Fred Emmott
* FunPika
* Gabriel Wicke
* Gary Guo
* gbt248
* Geoffrey Mon
* georggi
* Gergő Tisza
* Gero Scholz
* gicode
* Giftpflanze
* Gilles Dubuc
* Gilles van den Hoven
* Giuseppe Lavagetto
* gladoscc
* glaisher
* Greg Maxwell
* Greg Sabino Mullane
* Gregory Szorc
* Grunny
* Guillaume Blanchard
* Guy Van den Broeck
* Happy-melon
* haritha28
* Harry Burt
* Hazard-SJ
* Hector A Escobedo
* Helder
* Henning Snater
* Hojjat
* Huji
* Hydriz
* Ian Baker
* Ilmari Karonen
* Inez Korczyński
* IoannisKydonis
* Ireas
* isarra
* Ivan Lanin
* Jack D. Pond
* Jack Phoenix
* Jackmcbarn
* Jacob Block
* Jacob Clark
* jagori
* Jakub Vrana
* James Earl Douglas
* James Forrester
* Jan Berkel
* Jan Drewniak
* Jan Gerber
* Jan Luca Naumann
* Jan Paul Posma
* Jan Zerebecki
* Jared Flores
* Jaroslav Škarvada
* jarrettmunton
* jarry1250
* Jaska Zedlik
* Jason Richey
* jeblad
* Jeff Janes
* jeff303
* Jens Frank
* Jens Ohlig
* Jérémie Roquet
* Jeremy Baron
* Jeremy Postlethwaite
* jeremyb
* Jeroen De Dauw
* Jerome Jamnicky
* Jesús Martínez Novo
* jhobs
* Jiabao
* Jidanni
* Jimmy Collins
* Jimmy Xu
* joakin
* Joan Creus
* Joel Natividad
* Joerg
* Johan Dahlin
* John Du Hart
* John N
* Jon Harald Søby
* Jon Robson
* Jonathan Wiltshire
* Jools Wills
* jsahleen
* Julian Ostrow
* Juliano F. Ravasi
* Juliusz Gonera
* JuneHyeon Bae
* Jure Kajzer
* Justin Du
* Kai_WMDE
* kaligula
* Kartik Mistry
* Karun Dambiec
* Katie Filbert
* Kevin Israel
* Kghbln
* Kim Eik
* Kim Hyun-Joon
* kipod
* kishanio
* konarak
* krishna keshav
* Krzysztof Krzyzaniak
* Krzysztof Zbudniewek
* Kunal Grover
* Kunal Mehta
* Kwan Ting Chan
* Laurence Parry
* Lee Bousfield
* Lee Daniel Crocker
* Lee Worden
* Lejonel
* lekshmi
* Leo Koppelkamm
* Leon Liesener
* Leon Weber
* Leonardo Gregianin
* Leons Petrazickis
* Leslie Hoare
* Leszek Manicki
* lethosor
* Lewis Cawte
* Liam Edwards-Playne
* liangent
* Lisa Ridley
* Ljudusika
* Lojjik Braughler
* Louperivois
* Ltrlg
* Luc Van Oostenryck
* Lucas Garczewski
* Luigi Corsaro
* Luis Felipe Schenone
* Luke Faraone
* Lupin
* Lupo
* lwelling
* m4tx
* Madman
* madurangasiriwardena
* Magnus Manske
* Manuel Menal
* Manuel Schneider
* Marc Ordinas i Llopis
* Marc-André Pelletier
* Marcin Cieślak
* Marco Falke
* Marco Schuster
* MarcoAurelio
* Marcus Buck
* Marius Hoch
* Mark Bergsma
* Mark Clements
* Mark Hershberger
* Mark Holmquist
* Marko Obrovac
* Markus Glaser
* Markus Krötzsch
* Marooned
* Martin Urbanec
* Massaf
* Matěj Grabovský
* matejsuchanek
* Mathias Ertl
* mati
* Matt Fitzpatrick
* Matt Johnston
* Matt Russell
* Matthew Bowker
* Matthew Britton
* Matthew Flaschen
* Matthias Jordan
* Matthias Mullie
* MatthiasDD
* Max
* Max Semenik
* Max Sikström
* mayankmadan
* Meno25
* merl
* Merlijn S. van Deen
* MGChecker
* mgooley
* mhutti1
* Michael Dale
* Michael De La Rue
* Michael Holloway
* Michael M.
* Michael Newton
* Michael Walsh
* Michał Łazowik
* Michał Roszka
* Michał Zieliński
* Mike Horvath
* Minh Nguyễn
* MinuteElectron
* Misza13
* mjbmr
* moejoe0000
* Mohamed Magdy
* Molly White
* Moriel Schottlender
* Mormegil
* Mr. E23
* MrBlueSky
* MrPete
* Mukunda Modell
* Mwalker
* mwjames
* mybugs.mail
* MZMcBride
* nadeesha
* Nakon
* Namit
* Nathan Larson
* Nathaniel Herman
* Neil Kandalgaonkar
* Nemo bis
* nephele
* Nicholas Pisarro, Jr
* Nick Jenkins
* nicoco007
* Nicolas Dumazet
* Nicolas Weeger
* Nik
* Nik Everett
* Niklas Laxström
* Nikola Kovacs
* Nikola Smolenski
* Nikolaos S. Karastathis
* Nimish Gautam
* Nischay Nahata
* nischayn22
* nomoa
* nullspoon
* Nuria Ruiz
* Nx.devnull
* Ocean behind ears
* Olaf Lenz
* Olivier Finlay Beaton
* onei
* opatel99
* Oren Held
* Ori Livneh
* oskar.jauch@gmail.com
* OverlordQ
* Owen Davis
* Paa Kwesi Imbeah
* paladox
* Patricio Molina
* Patrick Reilly
* Patrick Westerhoff
* Pau Giner
* Paul Copperman
* Paul Oranje
* Pavel Astakhov
* Pavel Selitskas
* Pcoombe
* Perside Rosalie
* Peter Gehres
* Peter Hedenskog
* Peter Potrowl
* Petr Bena
* Petr Kadlec
* Petr Onderka
* Petr Pchelko
* Philip Tzou
* physikerwelt (Moritz Schubotz)
* PieRRoMaN
* Pikne
* PiRSquared17
* Platonides
* Pmlineditor
* pmolina
* prageck
* Pranav Ravichandran
* PranavK
* Prateek Saxena
* Priyanka Dhanda
* Prod
* ptarjan
* pubudu538
* Purodha Blissenbach
* quiddity
* quietust
* Quim Gil
* rahul21
* Raimond Spekking
* Ramunas Geciauskas
* Remember the dot
* René Kijewski
* Reza
* rgcjonas
* Ricordisamoa
* rillke
* River Tarnell
* Roan Kattouw
* Rob Church
* Rob Lanphier
* Rob Moen
* Robert Hoenig
* Robert Leverington
* Robert Rohde
* Robert Stojnić
* Robert Treat
* Robert Vogel
* Robin Pepermans
* robinhood701
* RockMFR
* Rohan
* Roman Nosov
* Roman Tsukanov
* Rotem Liss
* Rowan Collins
* Russ Nelson
* Russell Blau
* Rusty Burchfield
* Ruud Koot
* Ryan Bies
* Ryan Finnie
* Ryan Kaldari
* Ryan Lane
* Ryan Schmidt
* S Page
* Salvatore Ingala
* Sam Reed
* Sam Smith
* Santhosh Thottingal
* Schnark
* Scimonster
* scnd
* Scott Colcord
* se4598
* Sean Colombo
* Sean Pringle
* Seb35
* Sebastian Brückner
* Sébastien Santoro
* Sergio Santoro
* Sethakill
* Shahyar
* Shane Gibbons
* Shane King
* Shinjiman
* shirayuki
* Sidhant Gupta
* Siebrand Mazeland
* Simon Walker
* Smriti Singh
* Solitarius
* Sorawee Porncharoenwase
* Søren Løvborg
* Southparkfan
* Soxred93
* SQL
* Srikanth Lakshmanan
* Stanislav Malyshev
* Stefano Codari
* Steinsplitter
* Stephan Gambke
* Stephan Muggli
* Stephane Bisson
* Stephen Liang
* Steve Sanbeg
* Steven Roddis
* Str4nd
* Subramanya Sastry
* Sumit Asthana
* svip
* Swalling
* Szymon Świerkosz
* T.D. Corell
* Tarquin
* The Discoverer
* The Evil IP address
* theopolisme
* Thiemo Mättig (WMDE)
* This, that and the other
* tholam
* Thomas Arrow
* Thomas Bleher
* Thomas Dalton
* Thomas Gries
* ThomasV
* Tim Hollmann
* Tim Landscheidt
* Tim Laqua
* Tim Starling
* Timo Tijhof
* Tina Johnson
* Tisane
* tjlsangria
* Tjones
* TK-999
* Tobias Gritschacher
* Tom Arrow
* Tom Gilder
* Tom Maaswinkel
* Tomasz Finc
* Tomasz W. Kozlowski
* Tomasz Wegrzanowski
* tomek
* Tony Thomas
* Tpt
* Trevor Parscal
* TyA
* Tychay
* Tyler Anthony Romeo
* Tyler Cipriani
* Tyler Romeo
* U-REDMOND\emadelw
* UltrasonicNXT
* Umherirrender
* utkarsh95
* Van de Bugger
* Viačeslav
* Victor Porton
* Victor Vasiliev
* victorbarbu
* Ville Stadista
* vishnu
* Vitaliy Filippov
* Vivek Ghaisas
* vlakoff
* Volker E
* Waldir Pimenta
* wctaiwan
* Wikinaut
* Wil Mahan
* William Demchick
* withoutaname
* WMDE-Fisch
* X!
* XP1
* Yaron Koren
* Yaroslav Melnychuk
* Yesid Carrillo
* Yogesh K S
* Yongmin Hong
* yoonghm
* Yuri Astrakhan
* Yusuke Matsubara
* Yuvi Panda
* Zachary Hauri
* Zak Greant
* Željko Filipin
* Zhaofeng Li
* Zhengzhu Feng
* Zppix
* محمد شعیب
<!-- END CONTRIBUTOR LIST -->
== Translators ==

2
FAQ
View File

@ -1,2 +1,2 @@
The MediaWiki FAQ can be found at:
https://www.mediawiki.org/wiki/Manual:FAQ
https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ

View File

@ -17,16 +17,18 @@ GEM
faker (>= 1.1.2)
yml_reader (>= 0.6)
diff-lcs (1.2.5)
domain_name (0.5.20160310)
domain_name (0.5.20160615)
unf (>= 0.0.5, < 1.0.0)
faker (1.6.3)
faker (1.6.6)
i18n (~> 0.5)
faraday (0.9.2)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
faraday (>= 0.7.4)
http-cookie (~> 1.0.0)
ffi (1.9.10)
faraday_middleware (0.10.0)
faraday (>= 0.7.4, < 0.10)
ffi (1.9.14)
gherkin (2.12.2)
multi_json (~> 1.3)
headless (2.2.3)
@ -34,26 +36,27 @@ GEM
domain_name (~> 0.5)
i18n (0.7.0)
json (1.8.3)
mediawiki_api (0.5.0)
mediawiki_api (0.7.0)
faraday (~> 0.9, >= 0.9.0)
faraday-cookie_jar (~> 0.0, >= 0.0.6)
mediawiki_selenium (1.7.0)
faraday_middleware (~> 0.10, >= 0.10.0)
mediawiki_selenium (1.7.2)
cucumber (~> 1.3, >= 1.3.20)
headless (~> 2.0, >= 2.1.0)
json (~> 1.8, >= 1.8.1)
mediawiki_api (~> 0.5, >= 0.5.0)
mediawiki_api (~> 0.7, >= 0.7.0)
page-object (~> 1.0)
rest-client (~> 1.6, >= 1.6.7)
rspec-core (~> 2.14, >= 2.14.4)
rspec-expectations (~> 2.14, >= 2.14.4)
syntax (~> 1.2, >= 1.2.0)
thor (~> 0.19, >= 0.19.1)
mime-types (2.99.1)
multi_json (1.11.3)
mime-types (2.99.2)
multi_json (1.12.1)
multi_test (0.1.2)
multipart-post (2.0.0)
netrc (0.11.0)
page-object (1.1.1)
page-object (1.2.0)
page_navigation (>= 0.9)
selenium-webdriver (>= 2.44.0)
watir-webdriver (>= 0.6.11)
@ -79,16 +82,16 @@ GEM
ruby-progressbar (~> 1.4)
ruby-progressbar (1.7.5)
rubyzip (1.2.0)
selenium-webdriver (2.53.0)
selenium-webdriver (2.53.4)
childprocess (~> 0.5)
rubyzip (~> 1.0)
websocket (~> 1.0)
syntax (1.2.0)
syntax (1.2.1)
thor (0.19.1)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.2)
watir-webdriver (0.9.1)
watir-webdriver (0.9.3)
selenium-webdriver (>= 2.46.2)
websocket (1.2.3)
yml_reader (0.7)
@ -97,9 +100,6 @@ PLATFORMS
ruby
DEPENDENCIES
mediawiki_selenium (~> 1.7)
mediawiki_selenium (~> 1.7, >= 1.7.2)
rake (~> 11.1, >= 11.1.1)
rubocop (~> 0.32.1)
BUNDLED WITH
1.10.6

View File

@ -2,6 +2,7 @@
module.exports = function ( grunt ) {
grunt.loadNpmTasks( 'grunt-contrib-copy' );
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
grunt.loadNpmTasks( 'grunt-stylelint' );
grunt.loadNpmTasks( 'grunt-contrib-watch' );
grunt.loadNpmTasks( 'grunt-banana-checker' );
grunt.loadNpmTasks( 'grunt-jscs' );
@ -39,9 +40,15 @@ module.exports = function ( grunt ) {
api: 'includes/api/i18n/',
installer: 'includes/installer/i18n/'
},
stylelint: {
options: {
syntax: 'less'
},
src: '{resources/src/*,mw-config/**}/*.{css,less}'
},
watch: {
files: [
'.js*',
'.{stylelintrc,jscsrc,jshintignore,jshintrc}',
'**/*',
'!{docs,extensions,node_modules,skins,vendor}/**'
],
@ -96,7 +103,7 @@ module.exports = function ( grunt ) {
return !!( process.env.MW_SERVER && process.env.MW_SCRIPT_PATH );
} );
grunt.registerTask( 'lint', [ 'jshint', 'jscs', 'jsonlint', 'banana' ] );
grunt.registerTask( 'lint', [ 'jshint', 'jscs', 'jsonlint', 'banana', 'stylelint' ] );
grunt.registerTask( 'qunit', [ 'assert-mw-env', 'karma:main' ] );
grunt.registerTask( 'test', [ 'lint' ] );

595
HISTORY
View File

@ -1,4 +1,587 @@
Change notes from older releases. For current info see RELEASE-NOTES-1.27.
Change notes from older releases. For current info see RELEASE-NOTES-1.28.
= MediaWiki 1.27 =
== MediaWiki 1.27.0 ==
=== PHP version requirement in 1.27 ===
As of 1.27, MediaWiki now requires PHP 5.5.9 or higher (see Compatibility
section). Additionally, the following PHP extensions are required:
* ctype
* iconv
* json
* mbstring (new requirement in 1.27)
* xml
The following PHP extensions are strongly recommended:
* openssl
=== Configuration changes in 1.27 ===
* $wgAllowMicrodataAttributes and $wgAllowRdfaAttributes were removed,
now always enabled. If you use RDFa on your wiki, you now have to explicitly
set $wgHtml5Version to 'HTML+RDFa 1.0' or 'XHTML+RDFa 1.0'.
* $wgUseLinkNamespaceDBFields was removed.
* Deprecated $wgResourceLoaderMinifierStatementsOnOwnLine and
$wgResourceLoaderMinifierMaxLineLength, because there was little value in
making the behavior configurable. The default values (`false` for the former,
1000 for the latter) are now hard-coded.
* $wgDebugDumpSqlLength was removed (deprecated in 1.24).
* $wgDebugDBTransactions was removed (deprecated in 1.20).
* $wgUseXVO has been removed, as it provides functionality only used by
custom Wikimedia patches against Squid 2.x that probably noone uses in
production anymore. There is now $wgUseKeyHeader that provides similar
functionality but instead of the MediaWiki-specific X-Vary-Options header,
uses the draft Key header standard.
* $wgScriptExtension (and support for '.php5' entry points) was removed. See the
deprecation notice in the release notes for version 1.25 for advice on how to
preserve support for '.php5' entry points via URL rewriting.
* Password handling via the User object has been deprecated and partially
removed, pending the future introduction of AuthManager. In particular:
** expirePassword(), getPasswordExpireDate(), resetPasswordExpiration(), and
getPasswordExpired() have been removed. They were unused outside of core.
** The mPassword, mNewpassword, mNewpassTime, and mPasswordExpires fields are
now private and will be removed in the future.
** The getPassword() and getTemporaryPassword() methods now throw
BadMethodCallException and will be removed in the future.
** The ability to pass 'password' and 'newpassword' to createNew() has been
removed. The only users of it seem to have been using it to set invalid
passwords, and so shouldn't be greatly affected.
** setPassword(), setInternalPassword(), and setNewpassword() have been
deprecated, pending the introduction of AuthManager.
** User::randomPassword() is deprecated in favor of a new method
PasswordFactory::generateRandomPasswordString()
** User::getPasswordFactory() is deprecated, callers should just create a
PasswordFactory themselves.
** A new constructor, User::newSystemUser(), has been added to simplify the
creation of passwordless "system" users for logged actions.
* $wgMaxSquidPurgeTitles was removed.
* $wgAjaxWatch was removed. This is now enabled by default.
* $wgUseInstantCommons now hotlinks Commons images by default instead of
downloading originals and thumbnailing them locally. This allows wikis to save
on CPU and bandwidth while reducing time to first byte for pages, even without
a thumbnail handler. See $wgForeignFileRepos documentation for tweaks.
* (T27397) WebP is enabled by default as an uploadable filetype.
* (T48998) $wgArticlePath must now be either a full url, or start with a "/".
* $wgRateLimitLog was removed; use $wgDebugLogGroups['ratelimit'] instead.
* Deprecated API formats dbg, txt, and yaml have been removed.
* CLDRPluralRule* classes have been replaced with
wikimedia/cldr-plural-rule-parser.
* Removed $wgProfilePerHost, $wgUDPProfilerHost, $wgUDPProfilerPort,
$wgUDPProfilerFormatString, $wgStatsMethod, $wgAggregateStatsID,
$wgStatsFormatString, and $wgProfileCallTree (deprecated since 1.20).
* For proper operation of LocalIdLookup with shared user tables, ensure that
$wgSharedDB and $wgSharedTables are properly set even on the "central" wiki
that all others are sharing from and that $wgLocalDatabases is set to the
full list of sharing wikis on all those wikis.
* Massive overhaul to session handling:
** $wgSessionsInObjectCache is no longer supported and must be true, due to
MediaWiki\Session\SessionManager. $wgSessionHandler is similarly no longer
used.
** ObjectCacheSessionHandler is removed, replaced with
MediaWiki\Session\PhpSessionHandler.
** PHP session handling in general ($_SESSION, session_id(), and so on) is
deprecated. Use MediaWiki\Session\SessionManager instead. A new config
variable, $wgPHPSessionHandling, is available to cause use of $_SESSION to
issue a deprecation warning or to cause most PHP session handling to throw
exceptions.
** Deprecated UserSetCookies hook. Session-handling extensions should generally
be creating a custom subclass of CookieSessionProvider. Other extensions
messing with cookies can no longer count on user data being saved in cookies
versus other methods.
** Deprecated UserLoadFromSession hook, extensions should create a
MediaWiki\Session\SessionProvider.
** The User cannot be loaded from session until after Setup.php completes.
Attempts to do so will be ignored and the User will remain unloaded.
** CSRF tokens may be fetched from the MediaWiki\Session\Session, which uses
the MediaWiki\Session\Token class.
* MediaWiki will now auto-create users as necessary, removing the need for
extensions to do so. An 'autocreateaccount' right is added to allow
auto-creation when 'createaccount' is not granted to all users.
* Deprecated AuthPluginAutoCreate hook in favor of LocalUserCreated.
* Most cookie-handling methods in User are deprecated.
* $wgAllowAsyncCopyUploads and $CopyUploadAsyncTimeout were removed. This was an
experimental feature that has never worked.
* Login and createaccount tokens now vary by timestamp.
* LoginForm::getLoginToken() and LoginForm::getCreateaccountToken()
return a MediaWiki\Session\Token, and tokens must be checked using that
class's methods.
* $wgEnotifUseJobQ was removed and the job queue is always used.
* The functionality of the ApiSandbox extension has been merged into core. The
extension should no longer be used.
* $wgPreloadJavaScriptMwUtil was removed (deprecated in 1.26).
Extensions, skins, gadgets and scripts that use the mediawiki.util module must
express a dependency on it.
* $wgIncludeLegacyJavaScript, deprecated in MediaWiki 1.26, now defaults false.
Extensions, skins, gadgets and scripts that need the mediawiki.legacy.wikibits
module should express a dependency on it.
* Removed configuration option $wgCopyrightIcon (deprecated since 1.18). Use
$wgFooterIcons['copyright']['copyright'] instead.
* If the openssl and mcrypt PHP extensions are both unavailable, secure
session storage (used for login) will raise an exception. This exception may
be bypassed by setting $wgSessionInsecureSecrets = true.
* Massive overhaul to authentication:
** AuthPlugin and AuthPluginUser are deprecated.
** LoginForm and associated templates are deprecated. Extensions which called
static LoginForm methods should be converted into authentication providers.
** The following hooks are deprecated:
*** AbortAutoAccount (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** AbortLogin (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** AbortNewAccount (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** AddNewAccount (use LocalUserCreated instead)
*** AuthPluginSetup (create a MediaWiki\Auth\PrimaryAuthenticationProvider instead)
*** ChangePasswordForm (use AuthChangeFormFields instead, or security levels)
*** LoginUserMigrated (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** UserCreateForm (create a MediaWiki\Auth\AuthenticationProvider of some type instead)
*** UserLoginForm (create a MediaWiki\Auth\AuthenticationProvider of some type instead)
** The following hooks are removed:
*** AbortChangePassword
*** LoginPasswordResetMessage
*** PrefsPasswordAudit
** The UserLoginComplete hook will no longer be called for all logins, only for
those via the web UI. Use UserLoggedIn if you need to do something on all
logins.
** $wgRequirePasswordforEmailChange is removed.
=== New features in 1.27 ===
* $wgDataCenterUpdateStickTTL was also added. This decides how long a user
sticks to the primary DC (via cookies) after they make changes to the site.
* Added a new hook, 'UserMailerTransformContent', to transform the contents
of an email. This is similar to the EmailUser hook but applies to all mail
sent via UserMailer.
* Added a new hook, 'UserMailerTransformMessage', to transform the contents
of an emai after MIME encoding.
* Added a new hook, 'UserMailerSplitTo', to control which users have to be
emailed separately (ie. there is a single address in the To: field) so
user-specific changes to the email can be applied safely.
* $wgCdnMaxageLagged was added, which limits the CDN cache TTL
when any load balancer uses a DB that is lagged beyond the 'max lag'
setting in the relevant section of $wgLBFactoryConf.
* User::newSystemUser() may be used to simplify the creation of passwordless
"system" users for logged actions from scripts and extensions.
* Extensions can now return detailed error information via the API when
preventing user actions using 'getUserPermissionsErrors' and similar hooks
by using ApiMessage instances instead of strings for the $result value.
* $wgAPIMaxLagThreshold was added to limit bot changes when databases lag
becomes too high.
* Skins and extensions can now use FlexBox mixins (.flex-display(@display: flex)
and .flex(@grow: 1, @shrink: 1, @width: auto, @order: 1)) in Less to create
cross-browser-compatible FlexBox rules. Users will still need to add fallback
float rules or the like for compatibility with IE9- separately.
* Added MWTimestamp::getTimezoneString() which returns the localized timezone
string, if available. To localize this string, see the comments of
$wgLocaltimezone in includes/DefaultSettings.php.
* Added CentralIdLookup, a service that allows extensions needing a concept of
"central" users to get that without having to know about specific central
authentication extensions.
* $wgMaxUserDBWriteDuration added to limit huge user-generated transactions.
Regular web request transactions that takes longer than this are aborted.
* Added a new hook, 'TitleMoveCompleting', which runs before a page move is
committed.
* $wgCdnReboundPurgeDelay was added to provide secondary delayed purges of URLs
from CDN to mitigate DB replication lag and WAN cache purge lag.
* (T49162) Installer will default to setting CACHE_ACCEL as the main cache type
if it is available.
* It is now possible to patrol file uploads (both for new files and new versions
of existing files). Special:NewFiles has gained an option to filter by patrol
status. This functionality can be disabled using $wgUseFilePatrol.
* MediaWiki\Session infrastructure allows for easier use of session mechanisms
other than the usual cookies.
** SessionMetadata and SessionCheckInfo hooks allow for setting and checking
custom session metadata.
* Added MWGrants and associated configuration settings $wgGrantPermissions and
$wgGrantPermissionGroups to hold configuration for authentication features
such as OAuth that want to allow restricting the user rights a user may make
use of.
** If you're already using the OAuth extension, these new variables are
identical to (and will replace) $wgMWOAuthGrantPermissions and
$wgMWOAuthGrantPermissionGroups.
* Added MWRestrictions as a class to check restrictions on a WebRequest, e.g.
to assert that the request comes from a particular IP range.
* Added bot passwords, a rights-restricted login mechanism for API-using bots.
* Whitelisted the following HTML attributes for all elements in wikitext:
aria-describedby, aria-flowto, aria-label, aria-labelledby, aria-owns.
* Removed "presentation" restriction on the HTML role attribute in wikitext.
All values are now allowed for the role attribute.
* $wgContentHandlers now also supports callbacks to create an instance of the
appropriate ContentHandler subclass.
* Added $wgAuthenticationTokenVersion, which if non-null prevents the
user_token database field from being exposed in cookies. Setting this would
be a good idea, but will log out all current sessions.
* $wgEventRelayerConfig was added, for managing PubSub event relay configuration,
specifically for reliable CDN url purges.
* Requests have unique IDs, equal to the UNIQUE_ID environment variable (when
MediaWiki is behind Apache+mod_unique_id or something similar) or a randomly-
generated 24-character string. This request ID is used to annotate log records
and error messages. It is available client-side via mw.config.get( 'wgRequestId' ).
The request ID supplants exception IDs. Accordingly, MWExceptionHandler::getLogId()
is deprecated.
* (T33313) Add a preference for watching uploads by default, also applies
to API-based upload tools.
* $wgJpegPixelFormat was added to override chroma subsampling for JPEG image
thumbnails created via ImageMagick. Defaults to 'yuv420', providing bandwidth
savings versus the previous behavior on many files.
* MediaWiki\Auth infrastructure (called "AuthManager") allows for more flexible
configuration of multiple authentication pieces that was possible with
AuthPlugin. For example, it's now easy to plug in second-factor
authentication, or add additional checks to the login process, or to support
multiple login methods at once, or to support non-password-based login methods.
** Providers are configured via the global setting $wgAuthManagerConfig.
** A global, $wgDisableAuthManager, is temporarily available to disable
AuthManager until extensions are ready to support it.
** New hook, AuthChangeFormFields, to adjust the form fields on
AuthManager-related special pages.
** New hook, AuthManagerLoginAuthenticateAudit, for additional logging of
AuthManager-related authentication requests.
** New hook, ChangeAuthenticationDataAudit, for additional logging of
AuthManager-related authentication data changes.
** New hook, SecuritySensitiveOperationStatus, to work with the new mechanism
for requiring a recent login before taking security-sensitive operations
like changing a password.
** Two new globals, $wgChangeCredentialsBlacklist and $wgRemoveCredentialsBlacklist
can be used to prevent the web UI and the API changing certain authentication data.
* The file upload dialog (available if you install WikiEditor or VisualEditor)
can now be configured using $wgUploadDialog.
=== External library changes in 1.27 ===
==== Upgraded external libraries ====
* Updated oojs/oojs-ui from v0.12.12 to v0.13.3.
* Updated composer/semver from v1.0.0 to v1.2.0.
* Updated liuggio/statsd-php-client to 1.0.18.
* Updated QUnit from v1.18.0 to v1.22.0.
==== New external libraries ====
* Added wikimedia/base-convert v1.0.1.
* Added wikimedia/cldr-plural-rule-parser v1.0.0.
* Added wikimedia/relpath v1.0.3.
* Added wikimedia/running-stat v1.1.0.
* Added wikimedia/php-session-serializer v1.0.3.
==== Removed and replaced external libraries ====
=== Bug fixes in 1.27 ===
* Special:Upload will now display correct maximum allowed file size when running
under HHVM (T116347).
* (T54077) The APIEditBeforeSave hook will once again give only the content of
the section being edited, rather than the whole revision. This reverts the
change made in MediaWiki 1.22.
=== Action API changes in 1.27 ===
* Added list=allrevisions.
* generator=recentchanges now has the option to generate revids.
* ApiPageSet::setRedirectMergePolicy() was added. This allows generator
modules to define how generator data for a redirect source gets merged
into the redirect destination.
* prop=imageinfo&iiprop=uploadwarning will no longer include the possibility of
"was-deleted" warning.
* Added difftotextpst to query=revisions which preforms a pre-save transform on
the text before diffing it.
* Deprecated formats dbg, txt, and yaml have been removed.
* (T47988) The protect log event details now use new-style formatting.
* The following response properties from action=login are deprecated, and may
be removed in the future: lgtoken, cookieprefix, sessionid. Clients should
handle cookies to properly manage session state.
* action=login transparently allows login using bot passwords. Clients should
merely need to change the username and password used after setting up a bot
password.
* action=upload no longer understands statuskey, asyncdownload or leavemessage.
* Several changes when $wgDisableAuthManager is false:
** action=login is deprecated for uses other than bot passwords.
** list=users can now indicate if a missing username is creatable.
** action=createaccount is changed in a non-backwards-compatible manner.
** Added action=query&meta=authmanagerinfo.
** Added action=clientlogin to be used to log into the main account instead of
action=login.
** Added action=linkaccount.
** Added action=unlinkaccount.
** Added action=changeauthenticationdata.
** Added action=removeauthenticationdata.
** Added action=resetpassword.
=== Action API internal changes in 1.27 ===
* ApiQueryORM removed.
* The following classes have been removed:
** ApiFormatDbg
** ApiFormatTxt
** ApiFormatYaml
* ApiBase::addTokenProperties() was removed (deprecated since 1.24).
* ApiBase::getFinalPossibleErrors() was removed (deprecated since 1.24).
* ApiBase::getFinalResultProperties() was removed (deprecated since 1.24).
* ApiBase::getRequireAtLeastOneParameterErrorMessages() was removed (deprecated since 1.24).
* ApiBase::getPossibleErrors() was removed (deprecated since 1.24).
* ApiBase::getRequireMaxOneParameterErrorMessages() was removed (deprecated since 1.24).
* ApiBase::getRequireOnlyOneParameterErrorMessages() was removed (deprecated since 1.24).
* ApiBase::getResultProperties() was removed (deprecated since 1.24).
* ApiBase::getTitleOrPageIdErrorMessage() was removed (deprecated since 1.24).
* ApiBase::parseErrors() was removed (deprecated since 1.24).
* ApiQueryBase::titleToKey(), ApiQueryBase::keyToTitle() and
ApiQueryBase::keyPartToTitle() all removed (deprecated since 1.24).
* ApiQueryBase::checkRowCount() was removed (deprecated since 1.24).
* ApiQueryBase::getDirectionDescription() was removed (deprecated since 1.25).
* ApiQuery::getGenerators() was removed (deprecated since 1.21).
* ApiQuery::getModules() was removed (deprecated since 1.21).
* ApiQuery::getModuleType() was removed (deprecated since 1.21).
* ApiQuery::setGeneratorContinue() was removed (deprecated since 1.24).
* ApiMain::getModules() was removed (deprecated since 1.21).
* ApiBase::getVersion() was removed (deprecated since 1.21).
* ApiMain::getShowVersions() was removed (deprecated in 1.21).
* ApiMain::addModule() was removed (deprecated in 1.21).
* ApiMain::addFormat() was removed (deprecated in 1.21).
* ApiMain::getFormats() was removed (deprecated in 1.21).
* ApiPageSet::finishPageSetGeneration() was removed (deprecated in 1.21).
* ApiCreateAccount is deprecated, and will be removed soon.
=== Languages updated in 1.27 ===
MediaWiki supports over 350 languages. Many localisations are updated
regularly. Below only new and removed languages are listed, as well as
changes to languages because of Phabricator reports.
* (T113688) Change default numerals from Gurmukhi to Arabic for Punjabi locale.
* (T116020) Aliases of magic words in MessagesXx.php are sorted by usage.
=== Other changes in 1.27 ===
* Added dependency injection (DI) infrastructure, see docs/injection.txt for details.
It is planned to incrementally move MediaWiki code towards using DI, using the
service locator (SL) pattern as a stepping stone.
* ProfilerOutputUdp was removed. Note that there is a ProfilerOutputStats class.
* WikiPage::doDeleteArticleReal() and WikiPage::doDeleteArticle() now
ignore the 2nd and 3rd arguments (formerly $id and $commit).
* Removed "loaderScripts" option from ResourceLoaderFileModule class.
* Removed ORM-like wrapper added in 1.20.
* LinkCache::getGoodLinks and LinkCache::getBadLinks were removed
(deprecated in 1.26).
* WikiPage::doQuickEdit() was removed (deprecated since 1.21).
* Removed SiteObject and SiteArray classes (deprecated in 1.21).
* MessageBlobStore::getInstance() was removed (deprecated since 1.25).
* (T84937) Free external links ("autolinked" urls) will now be terminated
by &nbsp; and HTML entity encodings of &nbsp, <, and >.
* (T36948) The default file revert message's timestamp is now in
$wgLocaltimezone, instead of UTC.
* The default name of the 'suppress' group page has been changed from
'Project:Oversight' to 'Project:Suppress'.
* DatabaseBase::resultObject() is now protected (use outside Database classes
not necessary since 1.11).
* Calling ResourceLoaderFileModule::readStyleFiles() without a
ResourceLoaderContext instance is deprecated.
* ResourceLoader::getLessCompiler() now takes an optional parameter of
additional LESS variables to set for the compiler.
* wfBaseConvert() marked as deprecated, use Wikimedia\base_convert() directly
instead.
* Obsolete maintenance scripts clearCacheStats.php and showCacheStats.php
were removed. The underlying data is sent to StatsD (see $wgStatsdServer).
* Removed msg_resource_links database table and associated code.
* Removed msg_resource database table and associated code.
* Skin::getNamespaceNotice() was removed.
* wfIsConfiguredProxy() was removed (deprecated since 1.24).
* wfDebugTimer() was removed (deprecated since 1.25).
* wfIsTrustedProxy() was removed (deprecated since 1.24).
* wfGetIP() was removed (deprecated since 1.19).
* MWHookException was removed.
* OutputPage::appendSubtitle() was removed (deprecated since 1.19).
* OutputPage::loginToUse() was removed (deprecated since 1.19).
* Article::loadContent() was removed (deprecated since 1.19).
* User::editToken() was removed (deprecated since 1.19).
* Removed --force-normal option of dumpBackup.php, as it no longer served
any useful purpose since 1.22.
* The functions processOption() and processArgs() on the BackupDumper and
TextPassDumper classes have been removed.
* The maintenance/backupTextPass.inc file was deleted. You should include
maintenance/dumpTextPass.php instead.
* WikiPage::getUsedTemplates() was removed (deprecated since 1.19).
* wfEmptyMsg() was removed (deprecated since 1.18).
* OutputPage::permissionRequired() was removed (deprecated since 1.18).
* OutputPage::blockedPage() was removed (deprecated since 1.18).
* User::getSkin() was removed (deprecated since 1.18).
* OutputPage::includeJQuery() was removed (deprecated since 1.17).
* WikiPage::updateRestrictions() was removed (deprecated since 1.19).
* WikiPage::testPreSaveTransform() was removed (deprecated since 1.19).
* LogPage::logName() was removed (deprecated since 1.19).
* LogPage::logHeader() was removed (deprecated since 1.19).
* wfCheckLimits() was removed (deprecated since 1.24).
* Linker::makeKnownLinkObj() was removed (deprecated since 1.16).
* Linker::makeLinkObj() was removed (deprecated since 1.16).
* wfMsgForContentNoTrans() was removed (deprecated since 1.18).
* ChangesList::usePatrol was removed (deprecated since 1.22).
* wfMsgNoTrans() was removed (deprecated since 1.18).
* Linker::makeImageLink2 was removed (deprecated since 1.20).
* Title::userIsWatching() was removed (deprecated since 1.20).
* Removed WaitForSlave maintenance script; use SELECT MASTER_POS_WAIT()
database function directly instead.
* wfMsg() was removed (deprecated since 1.18).
* wfMsgForContent() was removed (deprecated since 1.18).
* wfMsgReal() was removed (deprecated since 1.18).
* wfMsgGetKey() was removed (deprecated since 1.18).
* wfMsgHtml() was removed (deprecated since 1.18).
* wfMsgWikiHtml() was removed (deprecated since 1.18).
* wfMsgExt() was removed (deprecated since 1.18).
* Language::armourMath() was removed (deprecated since 1.22).
* LanguageConverter::armourMath() was removed (deprecated since 1.22).
* FakeConverter::armourMath() was removed (deprecated since 1.22).
* The unused jquery.validate ResourceLoader module was removed.
* FileRepo::getRootUrl() was removed (deprecated since 1.20).
* User::generateToken() was removed (deprecated since 1.20).
* WikiPage::getRawText() was removed (deprecated since 1.21).
* ParserOutput::hasCustomDataUpdates() was removed (deprecated since 1.25).
* ParserOutput::addSecondaryDataUpdate() was removed (deprecated since 1.25).
* ParserOutput::getSecondaryDataUpdates() was removed (deprecated since 1.25).
* Gallery images with multiple caption pipes no longer concatenate them all
together but instead pick the final one, similar to image syntax.
* XML-like parser tags (such as <gallery>), when unclosed, will be left unparsed
rather than consume everything until the end of the page.
* New maintenance script resetUserEmail.php allows sysadmins to reset user emails in case
a user forgot password/account was stolen.
* wfCheckEntropy() was removed (deprecated in 1.27).
* Browser support for Internet Explorer 8 lowered from Grade A to Grade C.
* ContentHandler::supportsCategories method added. Default is true.
CategoryMembershipChangeJob updates are skipped for content that
does not support categories.
* wikidiff difference engine is no longer supported, anyone still using it are encouraged
to upgrade to wikidiff2 which is actively maintained and has better package availability.
* Database logic was removed from WatchedItem and a WatchedItemStore was created:
** WatchedItem::IGNORE_USER_RIGHTS and WatchedItem::CHECK_USER_RIGHTS were deprecated.
User::IGNORE_USER_RIGHTS and User::CHECK_USER_RIGHTS were introduced.
** WatchedItem::fromUserTitle was deprecated in favour of the constructor.
** WatchedItem::resetNotificationTimestamp was deprecated.
** WatchedItem::batchAddWatch was deprecated.
** WatchedItem::addWatch was deprecated.
** WatchedItem::removeWatch was deprecated.
** WatchedItem::isWatched was deprecated.
** WatchedItem::duplicateEntries was deprecated.
** EmailNotification::updateWatchlistTimestamp was deprecated.
** User::getWatchedItem was removed.
* Unit tests don't work with external PHPUnit anymore, Composer is now the only supported
way. Run `composer install` to install it and other dev dependencies to run unit tests.
* wl_id field added to the watchlist table.
* Revision::getRawText() was removed (deprecated since 1.21).
* WikiPage::replaceSection() was removed (deprecated since 1.21).
* Article::replaceSection() was removed (deprecated since 1.21).
* Language::getLangObj() was removed (deprecated since 1.24).
* Language::getLanguageName() was removed (deprecated since 1.20).
* Language::getLanguageNames() was removed (deprecated since 1.20).
* Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
* Language::specialPage() was removed (deprecated since 1.24).
* MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
* OutputPage::getHeadItems() was removed (deprecated since 1.24).
* OutputPage::getScript() was removed (deprecated since 1.24).
* OutputPage::out() was removed (deprecated since 1.22).
* OutputPage::setAllowedModules() was removed (deprecated since 1.24).
* UserrightsPage::makeGroupNameListForLog() was removed (deprecated since 1.21).
* MediaWikiSite::newFromGlobalId() was removed (deprecated since 1.21).
* Title::newFromRedirect() was removed (deprecated since 1.21).
* Skin::commonPrintStylesheet() was removed (deprecated since 1.22).
* Skin::getCommonStylePath() was removed (deprecated since 1.24).
* Skin::newFromKey() was removed (deprecated since 1.24).
* Skin::getUsableSkins() was removed (deprecated since 1.23).
* LoadBalancer::pickRandom() was removed (deprecated in 1.21).
* Article::getUndoText() and WikiPage::getUndoText were removed (deprecated since
1.21).
* DifferenceEngine::setText() was removed (deprecated in 1.21).
* Title::newFromRedirectArray() was removed (deprecated in 1.21).
* UserMailer::send() no longer accepts $replyto as the 5th argument and $contentType
as the 6th. These must be passed in the options array now.
* Title::newFromRedirectRecurse() was removed (deprecated in 1.21).
* Skin::accesskey was removed (deprecated since 1.21).
* Skin::blockLink was removed (deprecated since 1.21).
* Skin::buildRollbackLink was removed (deprecated since 1.21).
* Skin::emailLink was removed (deprecated since 1.21).
* Skin::formatComment was removed (deprecated since 1.21).
* Skin::formatHiddenCategories was removed (deprecated since 1.21).
* Skin::formatLinksInComment was removed (deprecated since 1.21).
* Skin::formatRevisionSize was removed (deprecated since 1.21).
* Skin::formatSize was removed (deprecated since 1.21).
* Skin::formatTemplates was removed (deprecated since 1.21).
* Skin::generateTOC was removed (deprecated since 1.21).
* Skin::getInternalLinkAttributes was removed (deprecated since 1.21).
* Skin::getInternalLinkAttributesObj was removed (deprecated since 1.21).
* Skin::getInterwikiLinkAttributes was removed (deprecated since 1.21).
* Skin::getInvalidTitleDescription was removed (deprecated since 1.21).
* Skin::getLinkColour was removed (deprecated since 1.21).
* Skin::getRevDeleteLink was removed (deprecated since 1.21).
* Skin::getRollbackEditCount was removed (deprecated since 1.21).
* Skin::makeBrokenImageLinkObj was removed (deprecated since 1.21).
* Skin::makeCommentLink was removed (deprecated since 1.21).
* Skin::makeExternalImage was removed (deprecated since 1.21).
* Skin::makeExternalLink was removed (deprecated since 1.21).
* Skin::makeHeadline was removed (deprecated since 1.21).
* Skin::makeImageLink was removed (deprecated since 1.21).
* Skin::makeMediaLinkFile was removed (deprecated since 1.21).
* Skin::makeMediaLinkObj was removed (deprecated since 1.21).
* Skin::makeSelfLinkObj was removed (deprecated since 1.21).
* Skin::makeThumbLink2 was removed (deprecated since 1.21).
* Skin::makeThumbLinkObj was removed (deprecated since 1.21).
* Skin::normaliseSpecialPage was removed (deprecated since 1.21).
* Skin::normalizeSubpageLink was removed (deprecated since 1.21).
* Skin::processResponsiveImages was removed (deprecated since 1.21).
* Skin::revComment was removed (deprecated since 1.21).
* Skin::revDeleteLink was removed (deprecated since 1.21).
* Skin::revDeleteLinkDisabled was removed (deprecated since 1.21).
* Skin::revUserLink was removed (deprecated since 1.21).
* Skin::revUserTools was removed (deprecated since 1.21).
* Skin::specialLink was removed (deprecated since 1.21).
* Skin::splitTrail was removed (deprecated since 1.21).
* Skin::titleAttrib was removed (deprecated since 1.21).
* Skin::tocIndent was removed (deprecated since 1.21).
* Skin::tocLine was removed (deprecated since 1.21).
* Skin::tocLineEnd was removed (deprecated since 1.21).
* Skin::tocList was removed (deprecated since 1.21).
* Skin::tocUnindent was removed (deprecated since 1.21).
* Skin::tooltip was removed (deprecated since 1.21).
* Skin::tooltipAndAccesskeyAttribs was removed (deprecated since 1.21).
* Skin::userTalkLink was removed (deprecated since 1.21).
* Skin::userToolLinksRedContribs was removed (deprecated since 1.21).
* wikidiff3 is now the default and only PHP diff engine. It provides improved diff
performance on complex changes. $wgExternalDiffEngine = 'wikidiff3' therefore
makes no difference now. Users are still recommended to use wikidiff2 if possible,
though.
* User::addNewUserLogEntry() was deprecated.
* User::addNewUserLogEntryAutoCreate() was deprecated.
* User::isPasswordReminderThrottled() was deprecated.
* Bot-oriented parameters to Special:UserLogin (wpCookieCheck, wpSkipCookieCheck)
were removed.
* Installer can now be customized without patching MediaWiki code, see
mw-config/overrides/README for details.
=== Compatibility ===
MediaWiki 1.27 requires PHP 5.5.9 or later. There is experimental support for
HHVM 3.6.5 or later.
MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
support for them is somewhat less mature. There is experimental support for
Oracle and Microsoft SQL Server.
The supported versions are:
* MySQL 5.0.3 or later
* PostgreSQL 8.3 or later
* SQLite 3.3.7 or later
* Oracle 9.0.1 or later
* Microsoft SQL Server 2005 (9.00.1399)
=== Upgrading ===
1.27 has several database changes since 1.26, and will not work without schema
updates. Note that due to changes to some very large tables like the revision
table, the schema update may take quite long (minutes on a medium sized site,
many hours on a large site).
If upgrading from before 1.11, and you are using a wiki as a commons
repository, make sure that it is updated as well. Otherwise, errors may arise
due to database schema changes.
If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
new database fields are filled with data.
If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
with MediaWiki 1.21.
Don't forget to always back up your database before upgrading!
See the file UPGRADE for more detailed upgrade instructions.
For notes on 1.26.x and older releases, see HISTORY.
= MediaWiki 1.26 =
@ -418,8 +1001,8 @@ This is a bug fix release of the MediaWiki 1.25 branch.
* Added a new hook, "ContentAlterParserOutput", to allow extensions to modify the
parser output for a content object before links update.
* (T37785) Enhanced recent changes and extended watchlist are now default.
Documentation: https://meta.wikimedia.org/wiki/Help:Enhanced_recent_changes
and https://www.mediawiki.org/wiki/Manual:$wgDefaultUserOptions.
Documentation: https://meta.wikimedia.org/wiki/Special:MyLanguage/Help:Enhanced_recent_changes
and https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgDefaultUserOptions.
* (T69341) SVG images will no longer be base64-encoded when being embedded
in CSS. This results in slight size increase before gzip compression (due to
percent-encoding), but up to 20% decrease after it.
@ -431,7 +1014,7 @@ This is a bug fix release of the MediaWiki 1.25 branch.
- Basic wikitext syntax: <indicator name="foo">[[File:Foo.svg|20px]]</indicator>
- Usage instructions: https://www.mediawiki.org/wiki/Help:Page_status_indicators
- Adjusting custom skins to support indicators:
https://www.mediawiki.org/wiki/Manual:Skinning#Page_status_indicators
https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skinning#Page_status_indicators
* Edit tokens may now be time-limited: passing a maximum age to
User::matchEditToken will reject any older tokens.
* The debug logging internals have been overhauled, and are now using the
@ -504,7 +1087,7 @@ This is a bug fix release of the MediaWiki 1.25 branch.
This library provides the interfaces set by the PSR-3 standard (http://www.php-fig.org/psr/psr-3/)
which are used by MediaWiki internally via the
MediaWiki\Logger\LoggerFactory class.
See the structured logging RfC (https://www.mediawiki.org/wiki/Requests_for_comment/Structured_logging)
See the structured logging RfC (https://www.mediawiki.org/wiki/Special:MyLanguage/Requests_for_comment/Structured_logging)
for more background information.
** cssjanus/cssjanus
This library was formerly bundled with MediaWiki core and has been removed.
@ -515,7 +1098,7 @@ This is a bug fix release of the MediaWiki 1.25 branch.
** wikimedia/cdb
This library was formerly a part of MediaWiki core, and has been moved into a separate library.
It provides CDB functions which are used in the Interwiki and Localization caches.
More information about the library can be found at https://www.mediawiki.org/wiki/CDB.
More information about the library can be found at https://www.mediawiki.org/wiki/Special:MyLanguage/CDB.
** liuggio/statsd-php-client
This library provides a StatsD client API for logging application metrics to a remote server.

View File

@ -21,7 +21,7 @@ If your PHP is configured as a CGI plug-in rather than an Apache module you may
experience problems, as this configuration is not well tested.
Support for rendering mathematical formulas requires installing the Math extension,
see https://www.mediawiki.org/wiki/Extension:Math
see https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Math
Don't forget to check the RELEASE-NOTES file...
@ -30,7 +30,7 @@ Additional documentation is available online, which may include more detailed
notes on particular operating systems and workarounds for difficult hosting
environments:
https://www.mediawiki.org/wiki/Manual:Installation_guide
https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Installation_guide
******************* WARNING *******************

8
README
View File

@ -17,15 +17,15 @@ For system requirements, installation, and upgrade details, see the files
RELEASE-NOTES, INSTALL, and UPGRADE.
* Ready to get started?
** https://www.mediawiki.org/wiki/Download
** https://www.mediawiki.org/wiki/Special:MyLanguage/Download
* Looking for the technical manual?
** https://www.mediawiki.org/wiki/Manual:Contents
** https://www.mediawiki.org/wiki/Special:MyLangyage/Manual:Contents
* Seeking help from a person?
** https://www.mediawiki.org/wiki/Communication
** https://www.mediawiki.org/wiki/Special:MyLanguage/Communication
* Looking to file a bug report or a feature request?
** https://bugs.mediawiki.org/
* Interested in helping out?
** https://www.mediawiki.org/wiki/How_to_contribute
** https://www.mediawiki.org/wiki/Special:MyLanguage/How_to_contribute
MediaWiki is the result of global collaboration and cooperation. The CREDITS
file lists technical contributors to the project. The COPYING file explains

View File

@ -1,623 +0,0 @@
== MediaWiki 1.27.1 ==
This is a maintenance release of the MediaWiki 1.27 branch.
=== Changes since 1.27.0 ===
* BREAKING CHANGE: $wgHTTPProxy is now *required* for all external requests
made by MediaWiki via a proxy. Relying on the http_proxy environment
variable is no longer supported.
* (T139565) SECURITY: API: Generate head items in the context of the given title
* (T137264) SECURITY: XSS in unclosed internal links
* (T133147) SECURITY: Escape '<' and ']]>' in inline <style> blocks
* (T133147) SECURITY: Require login to preview user CSS pages
* (T132926) SECURITY: Do not allow undeleting a revision deleted file if it is
the top file
* (T129738) SECURITY: Make $wgBlockDisablesLogin also restrict logged in
permissions
* (T129738) SECURITY: Make blocks log users out if $wgBlockDisablesLogin is true
* (T115333) SECURITY: Check read permission when loading page content in ApiParse
* (T57548) Remove support for $wgWellFormedXml = false, all output is now well formed
* (T139670) Move 'UserGetRights' call before application of Session::getAllowedUserRights()
== MediaWiki 1.27 ==
=== PHP version requirement ===
As of 1.27, MediaWiki now requires PHP 5.5.9 or higher (see Compatibility
section). Additionally, the following PHP extensions are required:
* ctype
* iconv
* json
* mbstring (new requirement in 1.27)
* xml
The following PHP extensions are strongly recommended:
* openssl
=== Configuration changes in 1.27 ===
* $wgAllowMicrodataAttributes and $wgAllowRdfaAttributes were removed,
now always enabled. If you use RDFa on your wiki, you now have to explicitly
set $wgHtml5Version to 'HTML+RDFa 1.0' or 'XHTML+RDFa 1.0'.
* $wgUseLinkNamespaceDBFields was removed.
* Deprecated $wgResourceLoaderMinifierStatementsOnOwnLine and
$wgResourceLoaderMinifierMaxLineLength, because there was little value in
making the behavior configurable. The default values (`false` for the former,
1000 for the latter) are now hard-coded.
* $wgDebugDumpSqlLength was removed (deprecated in 1.24).
* $wgDebugDBTransactions was removed (deprecated in 1.20).
* $wgUseXVO has been removed, as it provides functionality only used by
custom Wikimedia patches against Squid 2.x that probably noone uses in
production anymore. There is now $wgUseKeyHeader that provides similar
functionality but instead of the MediaWiki-specific X-Vary-Options header,
uses the draft Key header standard.
* $wgScriptExtension (and support for '.php5' entry points) was removed. See the
deprecation notice in the release notes for version 1.25 for advice on how to
preserve support for '.php5' entry points via URL rewriting.
* Password handling via the User object has been deprecated and partially
removed, pending the future introduction of AuthManager. In particular:
** expirePassword(), getPasswordExpireDate(), resetPasswordExpiration(), and
getPasswordExpired() have been removed. They were unused outside of core.
** The mPassword, mNewpassword, mNewpassTime, and mPasswordExpires fields are
now private and will be removed in the future.
** The getPassword() and getTemporaryPassword() methods now throw
BadMethodCallException and will be removed in the future.
** The ability to pass 'password' and 'newpassword' to createNew() has been
removed. The only users of it seem to have been using it to set invalid
passwords, and so shouldn't be greatly affected.
** setPassword(), setInternalPassword(), and setNewpassword() have been
deprecated, pending the introduction of AuthManager.
** User::randomPassword() is deprecated in favor of a new method
PasswordFactory::generateRandomPasswordString()
** User::getPasswordFactory() is deprecated, callers should just create a
PasswordFactory themselves.
** A new constructor, User::newSystemUser(), has been added to simplify the
creation of passwordless "system" users for logged actions.
* $wgMaxSquidPurgeTitles was removed.
* $wgAjaxWatch was removed. This is now enabled by default.
* $wgUseInstantCommons now hotlinks Commons images by default instead of
downloading originals and thumbnailing them locally. This allows wikis to save
on CPU and bandwidth while reducing time to first byte for pages, even without
a thumbnail handler. See $wgForeignFileRepos documentation for tweaks.
* (T27397) WebP is enabled by default as an uploadable filetype.
* (T48998) $wgArticlePath must now be either a full url, or start with a "/".
* $wgRateLimitLog was removed; use $wgDebugLogGroups['ratelimit'] instead.
* Deprecated API formats dbg, txt, and yaml have been removed.
* CLDRPluralRule* classes have been replaced with
wikimedia/cldr-plural-rule-parser.
* Removed $wgProfilePerHost, $wgUDPProfilerHost, $wgUDPProfilerPort,
$wgUDPProfilerFormatString, $wgStatsMethod, $wgAggregateStatsID,
$wgStatsFormatString, and $wgProfileCallTree (deprecated since 1.20).
* For proper operation of LocalIdLookup with shared user tables, ensure that
$wgSharedDB and $wgSharedTables are properly set even on the "central" wiki
that all others are sharing from and that $wgLocalDatabases is set to the
full list of sharing wikis on all those wikis.
* Massive overhaul to session handling:
** $wgSessionsInObjectCache is no longer supported and must be true, due to
MediaWiki\Session\SessionManager. $wgSessionHandler is similarly no longer
used.
** ObjectCacheSessionHandler is removed, replaced with
MediaWiki\Session\PhpSessionHandler.
** PHP session handling in general ($_SESSION, session_id(), and so on) is
deprecated. Use MediaWiki\Session\SessionManager instead. A new config
variable, $wgPHPSessionHandling, is available to cause use of $_SESSION to
issue a deprecation warning or to cause most PHP session handling to throw
exceptions.
** Deprecated UserSetCookies hook. Session-handling extensions should generally
be creating a custom subclass of CookieSessionProvider. Other extensions
messing with cookies can no longer count on user data being saved in cookies
versus other methods.
** Deprecated UserLoadFromSession hook, extensions should create a
MediaWiki\Session\SessionProvider.
** The User cannot be loaded from session until after Setup.php completes.
Attempts to do so will be ignored and the User will remain unloaded.
** CSRF tokens may be fetched from the MediaWiki\Session\Session, which uses
the MediaWiki\Session\Token class.
* MediaWiki will now auto-create users as necessary, removing the need for
extensions to do so. An 'autocreateaccount' right is added to allow
auto-creation when 'createaccount' is not granted to all users.
* Deprecated AuthPluginAutoCreate hook in favor of LocalUserCreated.
* Most cookie-handling methods in User are deprecated.
* $wgAllowAsyncCopyUploads and $CopyUploadAsyncTimeout were removed. This was an
experimental feature that has never worked.
* Login and createaccount tokens now vary by timestamp.
* LoginForm::getLoginToken() and LoginForm::getCreateaccountToken()
return a MediaWiki\Session\Token, and tokens must be checked using that
class's methods.
* $wgEnotifUseJobQ was removed and the job queue is always used.
* The functionality of the ApiSandbox extension has been merged into core. The
extension should no longer be used.
* $wgPreloadJavaScriptMwUtil was removed (deprecated in 1.26).
Extensions, skins, gadgets and scripts that use the mediawiki.util module must
express a dependency on it.
* $wgIncludeLegacyJavaScript, deprecated in MediaWiki 1.26, now defaults false.
Extensions, skins, gadgets and scripts that need the mediawiki.legacy.wikibits
module should express a dependency on it.
* Removed configuration option $wgCopyrightIcon (deprecated since 1.18). Use
$wgFooterIcons['copyright']['copyright'] instead.
* If the openssl and mcrypt PHP extensions are both unavailable, secure
session storage (used for login) will raise an exception. This exception may
be bypassed by setting $wgSessionInsecureSecrets = true.
* Massive overhaul to authentication:
** AuthPlugin and AuthPluginUser are deprecated.
** LoginForm and associated templates are deprecated. Extensions which called
static LoginForm methods should be converted into authentication providers.
** The following hooks are deprecated:
*** AbortAutoAccount (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** AbortLogin (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** AbortNewAccount (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** AddNewAccount (use LocalUserCreated instead)
*** AuthPluginSetup (create a MediaWiki\Auth\PrimaryAuthenticationProvider instead)
*** ChangePasswordForm (use AuthChangeFormFields instead, or security levels)
*** LoginUserMigrated (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** UserCreateForm (create a MediaWiki\Auth\AuthenticationProvider of some type instead)
*** UserLoginForm (create a MediaWiki\Auth\AuthenticationProvider of some type instead)
** The following hooks are removed:
*** AbortChangePassword
*** LoginPasswordResetMessage
*** PrefsPasswordAudit
** The UserLoginComplete hook will no longer be called for all logins, only for
those via the web UI. Use UserLoggedIn if you need to do something on all
logins.
** $wgRequirePasswordforEmailChange is removed.
* $wgWellFormedXml has been removed.
=== New features in 1.27 ===
* $wgDataCenterUpdateStickTTL was also added. This decides how long a user
sticks to the primary DC (via cookies) after they make changes to the site.
* Added a new hook, 'UserMailerTransformContent', to transform the contents
of an email. This is similar to the EmailUser hook but applies to all mail
sent via UserMailer.
* Added a new hook, 'UserMailerTransformMessage', to transform the contents
of an emai after MIME encoding.
* Added a new hook, 'UserMailerSplitTo', to control which users have to be
emailed separately (ie. there is a single address in the To: field) so
user-specific changes to the email can be applied safely.
* $wgCdnMaxageLagged was added, which limits the CDN cache TTL
when any load balancer uses a DB that is lagged beyond the 'max lag'
setting in the relevant section of $wgLBFactoryConf.
* User::newSystemUser() may be used to simplify the creation of passwordless
"system" users for logged actions from scripts and extensions.
* Extensions can now return detailed error information via the API when
preventing user actions using 'getUserPermissionsErrors' and similar hooks
by using ApiMessage instances instead of strings for the $result value.
* $wgAPIMaxLagThreshold was added to limit bot changes when databases lag
becomes too high.
* Skins and extensions can now use FlexBox mixins (.flex-display(@display: flex)
and .flex(@grow: 1, @shrink: 1, @width: auto, @order: 1)) in Less to create
cross-browser-compatible FlexBox rules. Users will still need to add fallback
float rules or the like for compatibility with IE9- separately.
* Added MWTimestamp::getTimezoneString() which returns the localized timezone
string, if available. To localize this string, see the comments of
$wgLocaltimezone in includes/DefaultSettings.php.
* Added CentralIdLookup, a service that allows extensions needing a concept of
"central" users to get that without having to know about specific central
authentication extensions.
* $wgMaxUserDBWriteDuration added to limit huge user-generated transactions.
Regular web request transactions that takes longer than this are aborted.
* Added a new hook, 'TitleMoveCompleting', which runs before a page move is
committed.
* $wgCdnReboundPurgeDelay was added to provide secondary delayed purges of URLs
from CDN to mitigate DB replication lag and WAN cache purge lag.
* (T49162) Installer will default to setting CACHE_ACCEL as the main cache type
if it is available.
* It is now possible to patrol file uploads (both for new files and new versions
of existing files). Special:NewFiles has gained an option to filter by patrol
status. This functionality can be disabled using $wgUseFilePatrol.
* MediaWiki\Session infrastructure allows for easier use of session mechanisms
other than the usual cookies.
** SessionMetadata and SessionCheckInfo hooks allow for setting and checking
custom session metadata.
* Added MWGrants and associated configuration settings $wgGrantPermissions and
$wgGrantPermissionGroups to hold configuration for authentication features
such as OAuth that want to allow restricting the user rights a user may make
use of.
** If you're already using the OAuth extension, these new variables are
identical to (and will replace) $wgMWOAuthGrantPermissions and
$wgMWOAuthGrantPermissionGroups.
* Added MWRestrictions as a class to check restrictions on a WebRequest, e.g.
to assert that the request comes from a particular IP range.
* Added bot passwords, a rights-restricted login mechanism for API-using bots.
* Whitelisted the following HTML attributes for all elements in wikitext:
aria-describedby, aria-flowto, aria-label, aria-labelledby, aria-owns.
* Removed "presentation" restriction on the HTML role attribute in wikitext.
All values are now allowed for the role attribute.
* $wgContentHandlers now also supports callbacks to create an instance of the
appropriate ContentHandler subclass.
* Added $wgAuthenticationTokenVersion, which if non-null prevents the
user_token database field from being exposed in cookies. Setting this would
be a good idea, but will log out all current sessions.
* $wgEventRelayerConfig was added, for managing PubSub event relay configuration,
specifically for reliable CDN url purges.
* Requests have unique IDs, equal to the UNIQUE_ID environment variable (when
MediaWiki is behind Apache+mod_unique_id or something similar) or a randomly-
generated 24-character string. This request ID is used to annotate log records
and error messages. It is available client-side via mw.config.get( 'wgRequestId' ).
The request ID supplants exception IDs. Accordingly, MWExceptionHandler::getLogId()
is deprecated.
* (T33313) Add a preference for watching uploads by default, also applies
to API-based upload tools.
* $wgJpegPixelFormat was added to override chroma subsampling for JPEG image
thumbnails created via ImageMagick. Defaults to 'yuv420', providing bandwidth
savings versus the previous behavior on many files.
* MediaWiki\Auth infrastructure (called "AuthManager") allows for more flexible
configuration of multiple authentication pieces that was possible with
AuthPlugin. For example, it's now easy to plug in second-factor
authentication, or add additional checks to the login process, or to support
multiple login methods at once, or to support non-password-based login methods.
** Providers are configured via the global setting $wgAuthManagerConfig.
** New hook, AuthChangeFormFields, to adjust the form fields on
AuthManager-related special pages.
** New hook, AuthManagerLoginAuthenticateAudit, for additional logging of
AuthManager-related authentication requests.
** New hook, ChangeAuthenticationDataAudit, for additional logging of
AuthManager-related authentication data changes.
** New hook, SecuritySensitiveOperationStatus, to work with the new mechanism
for requiring a recent login before taking security-sensitive operations
like changing a password.
** Two new globals, $wgChangeCredentialsBlacklist and $wgRemoveCredentialsBlacklist
can be used to prevent the web UI and the API changing certain authentication data.
* The file upload dialog (available if you install WikiEditor or VisualEditor)
can now be configured using $wgUploadDialog.
=== External library changes in 1.27 ===
==== Upgraded external libraries ====
* Updated oojs/oojs-ui from v0.12.12 to v0.13.3.
* Updated composer/semver from v1.0.0 to v1.2.0.
* Updated liuggio/statsd-php-client to 1.0.18.
* Updated QUnit from v1.18.0 to v1.22.0.
==== New external libraries ====
* Added wikimedia/base-convert v1.0.1.
* Added wikimedia/cldr-plural-rule-parser v1.0.0.
* Added wikimedia/relpath v1.0.3.
* Added wikimedia/running-stat v1.1.0.
* Added wikimedia/php-session-serializer v1.0.3.
==== Removed and replaced external libraries ====
=== Bug fixes in 1.27 ===
* Special:Upload will now display correct maximum allowed file size when running
under HHVM (T116347).
* (T54077) The APIEditBeforeSave hook will once again give only the content of
the section being edited, rather than the whole revision. This reverts the
change made in MediaWiki 1.22.
=== Action API changes in 1.27 ===
* Added list=allrevisions.
* generator=recentchanges now has the option to generate revids.
* ApiPageSet::setRedirectMergePolicy() was added. This allows generator
modules to define how generator data for a redirect source gets merged
into the redirect destination.
* prop=imageinfo&iiprop=uploadwarning will no longer include the possibility of
"was-deleted" warning.
* Added difftotextpst to query=revisions which preforms a pre-save transform on
the text before diffing it.
* Deprecated formats dbg, txt, and yaml have been removed.
* (T47988) The protect log event details now use new-style formatting.
* The following response properties from action=login are deprecated, and may
be removed in the future: lgtoken, cookieprefix, sessionid. Clients should
handle cookies to properly manage session state.
* action=login transparently allows login using bot passwords. Clients should
merely need to change the username and password used after setting up a bot
password.
* action=upload no longer understands statuskey, asyncdownload or leavemessage.
* action=login is deprecated for uses other than bot passwords.
* list=users can now indicate if a missing username is creatable.
* action=createaccount is changed in a non-backwards-compatible manner.
* Added action=query&meta=authmanagerinfo.
* Added action=clientlogin to be used to log into the main account instead of
action=login.
* Added action=linkaccount.
* Added action=unlinkaccount.
* Added action=changeauthenticationdata.
* Added action=removeauthenticationdata.
* Added action=resetpassword.
=== Action API internal changes in 1.27 ===
* ApiQueryORM removed.
* The following classes have been removed:
** ApiFormatDbg
** ApiFormatTxt
** ApiFormatYaml
* ApiBase::addTokenProperties() was removed (deprecated since 1.24).
* ApiBase::getFinalPossibleErrors() was removed (deprecated since 1.24).
* ApiBase::getFinalResultProperties() was removed (deprecated since 1.24).
* ApiBase::getRequireAtLeastOneParameterErrorMessages() was removed (deprecated since 1.24).
* ApiBase::getPossibleErrors() was removed (deprecated since 1.24).
* ApiBase::getRequireMaxOneParameterErrorMessages() was removed (deprecated since 1.24).
* ApiBase::getRequireOnlyOneParameterErrorMessages() was removed (deprecated since 1.24).
* ApiBase::getResultProperties() was removed (deprecated since 1.24).
* ApiBase::getTitleOrPageIdErrorMessage() was removed (deprecated since 1.24).
* ApiBase::parseErrors() was removed (deprecated since 1.24).
* ApiQueryBase::titleToKey(), ApiQueryBase::keyToTitle() and
ApiQueryBase::keyPartToTitle() all removed (deprecated since 1.24).
* ApiQueryBase::checkRowCount() was removed (deprecated since 1.24).
* ApiQueryBase::getDirectionDescription() was removed (deprecated since 1.25).
* ApiQuery::getGenerators() was removed (deprecated since 1.21).
* ApiQuery::getModules() was removed (deprecated since 1.21).
* ApiQuery::getModuleType() was removed (deprecated since 1.21).
* ApiQuery::setGeneratorContinue() was removed (deprecated since 1.24).
* ApiMain::getModules() was removed (deprecated since 1.21).
* ApiBase::getVersion() was removed (deprecated since 1.21).
* ApiMain::getShowVersions() was removed (deprecated in 1.21).
* ApiMain::addModule() was removed (deprecated in 1.21).
* ApiMain::addFormat() was removed (deprecated in 1.21).
* ApiMain::getFormats() was removed (deprecated in 1.21).
* ApiPageSet::finishPageSetGeneration() was removed (deprecated in 1.21).
* ApiCreateAccount is deprecated, and will be removed soon.
=== Languages updated in 1.27 ===
MediaWiki supports over 350 languages. Many localisations are updated
regularly. Below only new and removed languages are listed, as well as
changes to languages because of Phabricator reports.
* (T113688) Change default numerals from Gurmukhi to Arabic for Punjabi locale.
* (T116020) Aliases of magic words in MessagesXx.php are sorted by usage.
=== Other changes in 1.27 ===
* Added dependency injection (DI) infrastructure, see docs/injection.txt for details.
It is planned to incrementally move MediaWiki code towards using DI, using the
service locator (SL) pattern as a stepping stone.
* ProfilerOutputUdp was removed. Note that there is a ProfilerOutputStats class.
* WikiPage::doDeleteArticleReal() and WikiPage::doDeleteArticle() now
ignore the 2nd and 3rd arguments (formerly $id and $commit).
* Removed "loaderScripts" option from ResourceLoaderFileModule class.
* Removed ORM-like wrapper added in 1.20.
* LinkCache::getGoodLinks and LinkCache::getBadLinks were removed
(deprecated in 1.26).
* WikiPage::doQuickEdit() was removed (deprecated since 1.21).
* Removed SiteObject and SiteArray classes (deprecated in 1.21).
* MessageBlobStore::getInstance() was removed (deprecated since 1.25).
* (T84937) Free external links ("autolinked" urls) will now be terminated
by &nbsp; and HTML entity encodings of &nbsp, <, and >.
* (T36948) The default file revert message's timestamp is now in
$wgLocaltimezone, instead of UTC.
* The default name of the 'suppress' group page has been changed from
'Project:Oversight' to 'Project:Suppress'.
* DatabaseBase::resultObject() is now protected (use outside Database classes
not necessary since 1.11).
* Calling ResourceLoaderFileModule::readStyleFiles() without a
ResourceLoaderContext instance is deprecated.
* ResourceLoader::getLessCompiler() now takes an optional parameter of
additional LESS variables to set for the compiler.
* wfBaseConvert() marked as deprecated, use Wikimedia\base_convert() directly
instead.
* Obsolete maintenance scripts clearCacheStats.php and showCacheStats.php
were removed. The underlying data is sent to StatsD (see $wgStatsdServer).
* Removed msg_resource_links database table and associated code.
* Removed msg_resource database table and associated code.
* Skin::getNamespaceNotice() was removed.
* wfIsConfiguredProxy() was removed (deprecated since 1.24).
* wfDebugTimer() was removed (deprecated since 1.25).
* wfIsTrustedProxy() was removed (deprecated since 1.24).
* wfGetIP() was removed (deprecated since 1.19).
* MWHookException was removed.
* OutputPage::appendSubtitle() was removed (deprecated since 1.19).
* OutputPage::loginToUse() was removed (deprecated since 1.19).
* Article::loadContent() was removed (deprecated since 1.19).
* User::editToken() was removed (deprecated since 1.19).
* Removed --force-normal option of dumpBackup.php, as it no longer served
any useful purpose since 1.22.
* The functions processOption() and processArgs() on the BackupDumper and
TextPassDumper classes have been removed.
* The maintenance/backupTextPass.inc file was deleted. You should include
maintenance/dumpTextPass.php instead.
* WikiPage::getUsedTemplates() was removed (deprecated since 1.19).
* wfEmptyMsg() was removed (deprecated since 1.18).
* OutputPage::permissionRequired() was removed (deprecated since 1.18).
* OutputPage::blockedPage() was removed (deprecated since 1.18).
* User::getSkin() was removed (deprecated since 1.18).
* OutputPage::includeJQuery() was removed (deprecated since 1.17).
* WikiPage::updateRestrictions() was removed (deprecated since 1.19).
* WikiPage::testPreSaveTransform() was removed (deprecated since 1.19).
* LogPage::logName() was removed (deprecated since 1.19).
* LogPage::logHeader() was removed (deprecated since 1.19).
* wfCheckLimits() was removed (deprecated since 1.24).
* Linker::makeKnownLinkObj() was removed (deprecated since 1.16).
* Linker::makeLinkObj() was removed (deprecated since 1.16).
* wfMsgForContentNoTrans() was removed (deprecated since 1.18).
* ChangesList::usePatrol was removed (deprecated since 1.22).
* wfMsgNoTrans() was removed (deprecated since 1.18).
* Linker::makeImageLink2 was removed (deprecated since 1.20).
* Title::userIsWatching() was removed (deprecated since 1.20).
* Removed WaitForSlave maintenance script; use SELECT MASTER_POS_WAIT()
database function directly instead.
* wfMsg() was removed (deprecated since 1.18).
* wfMsgForContent() was removed (deprecated since 1.18).
* wfMsgReal() was removed (deprecated since 1.18).
* wfMsgGetKey() was removed (deprecated since 1.18).
* wfMsgHtml() was removed (deprecated since 1.18).
* wfMsgWikiHtml() was removed (deprecated since 1.18).
* wfMsgExt() was removed (deprecated since 1.18).
* Language::armourMath() was removed (deprecated since 1.22).
* LanguageConverter::armourMath() was removed (deprecated since 1.22).
* FakeConverter::armourMath() was removed (deprecated since 1.22).
* The unused jquery.validate ResourceLoader module was removed.
* FileRepo::getRootUrl() was removed (deprecated since 1.20).
* User::generateToken() was removed (deprecated since 1.20).
* WikiPage::getRawText() was removed (deprecated since 1.21).
* ParserOutput::hasCustomDataUpdates() was removed (deprecated since 1.25).
* ParserOutput::addSecondaryDataUpdate() was removed (deprecated since 1.25).
* ParserOutput::getSecondaryDataUpdates() was removed (deprecated since 1.25).
* Gallery images with multiple caption pipes no longer concatenate them all
together but instead pick the final one, similar to image syntax.
* XML-like parser tags (such as <gallery>), when unclosed, will be left unparsed
rather than consume everything until the end of the page.
* New maintenance script resetUserEmail.php allows sysadmins to reset user emails in case
a user forgot password/account was stolen.
* wfCheckEntropy() was removed (deprecated in 1.27).
* Browser support for Internet Explorer 8 lowered from Grade A to Grade C.
* ContentHandler::supportsCategories method added. Default is true.
CategoryMembershipChangeJob updates are skipped for content that
does not support categories.
* wikidiff difference engine is no longer supported, anyone still using it are encouraged
to upgrade to wikidiff2 which is actively maintained and has better package availability.
* Database logic was removed from WatchedItem and a WatchedItemStore was created:
** WatchedItem::IGNORE_USER_RIGHTS and WatchedItem::CHECK_USER_RIGHTS were deprecated.
User::IGNORE_USER_RIGHTS and User::CHECK_USER_RIGHTS were introduced.
** WatchedItem::fromUserTitle was deprecated in favour of the constructor.
** WatchedItem::resetNotificationTimestamp was deprecated.
** WatchedItem::batchAddWatch was deprecated.
** WatchedItem::addWatch was deprecated.
** WatchedItem::removeWatch was deprecated.
** WatchedItem::isWatched was deprecated.
** WatchedItem::duplicateEntries was deprecated.
** EmailNotification::updateWatchlistTimestamp was deprecated.
** User::getWatchedItem was removed.
* Unit tests don't work with external PHPUnit anymore, Composer is now the only supported
way. Run `composer install` to install it and other dev dependencies to run unit tests.
* wl_id field added to the watchlist table.
* Revision::getRawText() was removed (deprecated since 1.21).
* WikiPage::replaceSection() was removed (deprecated since 1.21).
* Article::replaceSection() was removed (deprecated since 1.21).
* Language::getLangObj() was removed (deprecated since 1.24).
* Language::getLanguageName() was removed (deprecated since 1.20).
* Language::getLanguageNames() was removed (deprecated since 1.20).
* Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
* Language::specialPage() was removed (deprecated since 1.24).
* MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
* OutputPage::getHeadItems() was removed (deprecated since 1.24).
* OutputPage::getScript() was removed (deprecated since 1.24).
* OutputPage::out() was removed (deprecated since 1.22).
* OutputPage::setAllowedModules() was removed (deprecated since 1.24).
* UserrightsPage::makeGroupNameListForLog() was removed (deprecated since 1.21).
* MediaWikiSite::newFromGlobalId() was removed (deprecated since 1.21).
* Title::newFromRedirect() was removed (deprecated since 1.21).
* Skin::commonPrintStylesheet() was removed (deprecated since 1.22).
* Skin::getCommonStylePath() was removed (deprecated since 1.24).
* Skin::newFromKey() was removed (deprecated since 1.24).
* Skin::getUsableSkins() was removed (deprecated since 1.23).
* LoadBalancer::pickRandom() was removed (deprecated in 1.21).
* Article::getUndoText() and WikiPage::getUndoText were removed (deprecated since
1.21).
* DifferenceEngine::setText() was removed (deprecated in 1.21).
* Title::newFromRedirectArray() was removed (deprecated in 1.21).
* UserMailer::send() no longer accepts $replyto as the 5th argument and $contentType
as the 6th. These must be passed in the options array now.
* Title::newFromRedirectRecurse() was removed (deprecated in 1.21).
* Skin::accesskey was removed (deprecated since 1.21).
* Skin::blockLink was removed (deprecated since 1.21).
* Skin::buildRollbackLink was removed (deprecated since 1.21).
* Skin::emailLink was removed (deprecated since 1.21).
* Skin::formatComment was removed (deprecated since 1.21).
* Skin::formatHiddenCategories was removed (deprecated since 1.21).
* Skin::formatLinksInComment was removed (deprecated since 1.21).
* Skin::formatRevisionSize was removed (deprecated since 1.21).
* Skin::formatSize was removed (deprecated since 1.21).
* Skin::formatTemplates was removed (deprecated since 1.21).
* Skin::generateTOC was removed (deprecated since 1.21).
* Skin::getInternalLinkAttributes was removed (deprecated since 1.21).
* Skin::getInternalLinkAttributesObj was removed (deprecated since 1.21).
* Skin::getInterwikiLinkAttributes was removed (deprecated since 1.21).
* Skin::getInvalidTitleDescription was removed (deprecated since 1.21).
* Skin::getLinkColour was removed (deprecated since 1.21).
* Skin::getRevDeleteLink was removed (deprecated since 1.21).
* Skin::getRollbackEditCount was removed (deprecated since 1.21).
* Skin::makeBrokenImageLinkObj was removed (deprecated since 1.21).
* Skin::makeCommentLink was removed (deprecated since 1.21).
* Skin::makeExternalImage was removed (deprecated since 1.21).
* Skin::makeExternalLink was removed (deprecated since 1.21).
* Skin::makeHeadline was removed (deprecated since 1.21).
* Skin::makeImageLink was removed (deprecated since 1.21).
* Skin::makeMediaLinkFile was removed (deprecated since 1.21).
* Skin::makeMediaLinkObj was removed (deprecated since 1.21).
* Skin::makeSelfLinkObj was removed (deprecated since 1.21).
* Skin::makeThumbLink2 was removed (deprecated since 1.21).
* Skin::makeThumbLinkObj was removed (deprecated since 1.21).
* Skin::normaliseSpecialPage was removed (deprecated since 1.21).
* Skin::normalizeSubpageLink was removed (deprecated since 1.21).
* Skin::processResponsiveImages was removed (deprecated since 1.21).
* Skin::revComment was removed (deprecated since 1.21).
* Skin::revDeleteLink was removed (deprecated since 1.21).
* Skin::revDeleteLinkDisabled was removed (deprecated since 1.21).
* Skin::revUserLink was removed (deprecated since 1.21).
* Skin::revUserTools was removed (deprecated since 1.21).
* Skin::specialLink was removed (deprecated since 1.21).
* Skin::splitTrail was removed (deprecated since 1.21).
* Skin::titleAttrib was removed (deprecated since 1.21).
* Skin::tocIndent was removed (deprecated since 1.21).
* Skin::tocLine was removed (deprecated since 1.21).
* Skin::tocLineEnd was removed (deprecated since 1.21).
* Skin::tocList was removed (deprecated since 1.21).
* Skin::tocUnindent was removed (deprecated since 1.21).
* Skin::tooltip was removed (deprecated since 1.21).
* Skin::tooltipAndAccesskeyAttribs was removed (deprecated since 1.21).
* Skin::userTalkLink was removed (deprecated since 1.21).
* Skin::userToolLinksRedContribs was removed (deprecated since 1.21).
* wikidiff3 is now the default and only PHP diff engine. It provides improved diff
performance on complex changes. $wgExternalDiffEngine = 'wikidiff3' therefore
makes no difference now. Users are still recommended to use wikidiff2 if possible,
though.
* User::addNewUserLogEntry() was deprecated.
* User::addNewUserLogEntryAutoCreate() was deprecated.
* User::isPasswordReminderThrottled() was deprecated.
* Bot-oriented parameters to Special:UserLogin (wpCookieCheck, wpSkipCookieCheck)
were removed.
* Installer can now be customized without patching MediaWiki code, see
mw-config/overrides/README for details.
== Compatibility ==
MediaWiki 1.27 requires PHP 5.5.9 or later. There is experimental support for
HHVM 3.6.5 or later.
MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
support for them is somewhat less mature. There is experimental support for
Oracle and Microsoft SQL Server.
The supported versions are:
* MySQL 5.0.3 or later
* PostgreSQL 8.3 or later
* SQLite 3.3.7 or later
* Oracle 9.0.1 or later
* Microsoft SQL Server 2005 (9.00.1399)
== Upgrading ==
1.27 has several database changes since 1.26, and will not work without schema
updates. Note that due to changes to some very large tables like the revision
table, the schema update may take quite long (minutes on a medium sized site,
many hours on a large site).
If upgrading from before 1.11, and you are using a wiki as a commons
repository, make sure that it is updated as well. Otherwise, errors may arise
due to database schema changes.
If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
new database fields are filled with data.
If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
with MediaWiki 1.21.
Don't forget to always back up your database before upgrading!
See the file UPGRADE for more detailed upgrade instructions.
For notes on 1.26.x and older releases, see HISTORY.
== Online documentation ==
Documentation for both end-users and site administrators is available on
MediaWiki.org, and is covered under the GNU Free Documentation License (except
for pages that explicitly state that their contents are in the public domain):
https://www.mediawiki.org/wiki/Documentation
== Mailing list ==
A mailing list is available for MediaWiki user support and discussion:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
A low-traffic announcements-only list is also available:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
It's highly recommended that you sign up for one of these lists if you're
going to run a public MediaWiki, so you can be notified of security fixes.
== IRC help ==
There's usually someone online in #mediawiki on irc.freenode.net.

321
RELEASE-NOTES-1.28 Normal file
View File

@ -0,0 +1,321 @@
== MediaWiki 1.28 ==
THIS IS NOT A RELEASE YET
MediaWiki 1.28 is an alpha-quality branch and is not recommended for use in
production.
=== Changes since 1.28.0rc0 ===
* (T142210) The changes to move the parser "NewPP limit report" from a HTML
comment to a machine-readable JavaScript config option 'wgPageParseReport'
have been undone. They caused the human-readable limit report to be shown
incompletely or not at all. ParserOutput::setLimitReportData() and
getLimitReportData() behave as they did in MediaWiki 1.27 again.
* (T149510) Value of {{DISPLAYTITLE:}} parser function will not be used for
the text of subheadings on a category page when creating it. This wasn't
working correctly.
* (T106793) MediaWiki will no longer try to perform a HTTP redirect to the
canonical pretty URL when a non-pretty URL is used. It resulted in redirect
loops in some clients and in some server configurations. This undoes a change
made in MediaWiki 1.26.
* (T149759) manifest_version: 2 was removed.
=== Configuration changes in 1.28 ===
* $wgSend404Code now affects status code of action=history if the page is not there.
* BREAKING CHANGE: $wgHTTPProxy is now *required* for all external requests
made by MediaWiki via a proxy. Relying on the http_proxy environment
variable is no longer supported.
* The load.php entry point now enforces the existing policy of not allowing
access to session data, which includes the session user and the session
user's language. If such access is attempted, an exception will be thrown.
* The number of internal PBKDF2 iterations used to derive the session secret
is configurable via $wgSessionPbkdf2Iterations.
* Upload dialog's file upload log comment can now be configured separately for
local and foreign uploads.
* $wgForeignUploadTargets now defaults to `[ 'local' ]`, where `'local'`
signifies local uploads. A value of `[]` (empty array) now means that
no upload targets are allowed, effectively disabling the upload dialog.
* The deprecated $wgEditEncoding variable has been removed; it was only used
for Esperanto language character conversion. You are now recommended to use
input methods provided by the UniversalLanguageSelector extension.
* When $wgPingback is true, MediaWiki will periodically ping
https://www.mediawiki.org/beacon with basic information about the local
MediaWiki installation. This data includes, for example, the type of system,
PHP version, and chosen database backend. This behavior is off by default.
* When $wgEditSubmitButtonLabelPublish is true, MediaWiki will label the button
to store-to-database-and-show-to-others as "Publish page"/"Publish changes";
if false, the default, they will be "Save page"/"Save changes".
* The 'editcontentmodel' permission is now granted to all logged-in users ('user').
instead of just administrators ('sysop'). Documentation for this feature is
available at <https://www.mediawiki.org/wiki/Help:ChangeContentModel>.
* $wgRevisionCacheExpiry is now set to one week by default instead of being disabled.
* Magic links are now disabled by default, and can be re-enabled by modifying the value
of $wgEnableMagicLinks. Their usage is discouraged, but if they are manually enabled,
a tracking category will be added to help identify usage and make it easier to migrate
away from. If you depend upon magic link functionality, it is requested that you comment
on <https://www.mediawiki.org/wiki/Requests_for_comment/Future_of_magic_links> and
explain your use case(s).
* New config variable $wgCSPFalsePositiveUrls to control what URLs to ignore
in upcoming Content-Security-Policy feature's reporting.
=== New features in 1.28 ===
* User::isBot() method for checking if an account is a bot role account.
* Added a new 'slideshow' mode for galleries.
* Added a new hook, 'UserIsBot', to aid in determining if a user is a bot.
* Added a new hook, 'ApiMakeParserOptions', to allow extensions to better
interact with API parsing.
* Added a new hook, 'UploadVerifyUpload', which can be used to reject a file
upload. Unlike 'UploadVerifyFile' it provides information about upload comment
and the file description page, but does not run for uploads to stash.
* (T141604) Extensions can now provide a better error message when their
maintenance scripts are run without the extension being installed.
* (T8948) Numeric sorting in categories is now supported by setting $wgCategoryCollation
to 'uca-default-u-kn' or 'uca-<langcode>-u-kn'. If you can't use UCA collations,
a 'numeric' collation is also available. If migrating from another
collation, you will need to run the updateCollation.php maintenance script.
* Two new codes have been added to #time parser function: "xit" for days in current
month, and "xiz" for days passed in the year, both in Iranian calendar.
* mw.Api has a new option, useUS, to use U+001F (Unit Separator) when
appropriate for sending multi-valued parameters. This defaults to true when
the mw.Api instance seems to be for the local wiki.
* After a client performs an action which alters a database that has replica databases,
MediaWiki will wait for the replica databases to synchronize with the master database
while it renders the HTML output. However, if the output is a redirect to another wiki
on the wiki farm with a different domain, MediaWiki will instead alter the redirect
URL to include a ?cpPosTime parameter that triggers the database synchronization when
the URL is followed by the client. The same-domain case uses a new cpPosTime cookie.
* Added new hooks, 'ApiQueryBaseBeforeQuery', 'ApiQueryBaseAfterQuery', and
'ApiQueryBaseProcessRow', to make it easier for extensions to add 'prop' and
'show' parameters to existing API query modules.
=== External library changes in 1.28 ===
==== Upgraded external libraries ====
* Updated es5-shim from v4.1.5 to v4.5.8
* Updated composer/semver from v1.4.1 to v1.4.2
* Updated wikimedia/php-session-serializer from v1.0.3 to v1.0.4
==== New external libraries ====
* Added wikimedia/scoped-callback v1.0.0
* Added wikimedia/wait-condition-loop v1.0.1
=== Bug fixes in 1.28 ===
* (T146496) action=history pages should return 404 HTTP error code if the page does not exist
* (T137264) SECURITY: XSS in unclosed internal links
* (T133147) SECURITY: Escape '<' and ']]>' in inline <style> blocks
* (T133147) SECURITY: Require login to preview user CSS pages
* (T132926) SECURITY: Do not allow undeleting a revision deleted file if it is
the top file
* (T129738) SECURITY: Make $wgBlockDisablesLogin also restrict logged in
permissions
* (T129738) SECURITY: Make blocks log users out if $wgBlockDisablesLogin is true
* (T139670) Move 'UserGetRights' call before application of
Session::getAllowedUserRights()
=== Action API changes in 1.28 ===
* Added 'maxarticlesize' property to action=query&meta=siteinfo which contains
the value of $wgMaxArticleSize.
* Property 'modulemessages' from action=parse&prop=modules was removed
(deprecated since 1.26).
* The following response properties from action=login, deprecated in 1.27, are
now removed: lgtoken, cookieprefix, sessionid. Clients should handle cookies
to properly manage session state.
* Submitting the lgtoken and lgpassword parameters in the query string to
action=login is now deprecated and outputs a warning. They should be submitted
in the POST body instead.
* Submitting sensitive authentication request parameters to action=clientlogin,
action=createaccount, action=linkaccount, and action=changeauthenticationdata
in the query string is now deprecated and outputs a warning. They should be
submitted in the POST body instead.
* (T141960) Multi-valued parameters may now be separated using U+001F (Unit Separator)
instead of the pipe character. This will be useful if some of the multiple
values need to contain pipes, e.g. for action=options.
* The API will now warn if input is not NFC-normalized Unicode or if it
contains invalid characters.
* The 'normalized' list output by action=query and other modules that use
ApiPageSet may contain entries where the 'from' value is percent-encoded as
the raw value cannot be represented in a valid API response. These are
indicated by a 'fromencoded' boolean alongside the existing 'from' parameter.
* (T28680) action=paraminfo can now return info about all submodules of a
module without listing them all explicitly.
* (T146770) It is now possible to assert that the current user is a specific
named user, using the 'assertuser' parameter.
* (T141963) Added a 'known' property when missing-but-known titles (e.g. from
the 'TitleIsAlwaysKnown' hook) are output in various modules.
=== Action API internal changes in 1.28 ===
* Added a new hook, 'ApiMakeParserOptions', to allow extensions to better
interact with ApiParse and ApiExpandTemplates.
* (T139565) SECURITY: API: Generate head items in the context of the given title
* (T115333) SECURITY: Check read permission when loading page content in ApiParse
* ApiBase::getResultData() was removed (deprecated since 1.25)
* ApiBase::makeHelpArrayToString() was removed (deprecated since 1.25)
* ApiBase::makeHelpMsgParameters() was removed (deprecated since 1.25)
* ApiBase::makeHelpMsg() was removed (deprecated since 1.25)
* ApiFormatBase::formatHTML() was removed (deprecated since 1.25)
* ApiFormatBase::getNeedsRawData() was removed (deprecated since 1.25)
* ApiFormatBase::getWantsHelp() was removed (deprecated since 1.25)
* ApiFormatBase::setBufferResult() was removed (deprecated since 1.25)
* ApiFormatBase::setHelp() was removed (deprecated since 1.25)
* ApiFormatBase::setUnescapeAmps() was removed (deprecated since 1.25)
* ApiMain::makeHelpMsgHeader() was removed (deprecated since 1.25)
* ApiMain::reallyMakeHelpMsg() was removed (deprecated since 1.25)
* ApiMain::setHelp() was removed (deprecated since 1.25)
* ApiResult::beginContinuation() was removed (deprecated since 1.25)
* ApiResult::cleanUpUTF8() was removed (deprecated since 1.25)
* ApiResult::convertStatusToArray() was removed (deprecated since 1.25)
* ApiResult::disableSizeCheck() was removed (deprecated since 1.24)
* ApiResult::enableSizeCheck() was removed (deprecated since 1.24)
* ApiResult::endContinuation() was removed (deprecated since 1.25)
* ApiResult::getData() was removed (deprecated since 1.25)
* ApiResult::getIsRawMode() was removed (deprecated since 1.25)
* ApiResult::setContent() was removed (deprecated since 1.25)
* ApiResult::setContinueParam() was removed (deprecated since 1.25)
* ApiResult::setElement() was removed (deprecated since 1.25)
* ApiResult::setGeneratorContinueParam() was removed (deprecated since 1.25)
* ApiResult::setIndexedTagName_internal() was removed (deprecated since 1.25)
* ApiResult::setIndexedTagName_recursive() was removed (deprecated since 1.25)
* ApiResult::setMainForContinuation() was removed (deprecated since 1.25)
* ApiResult::setParsedLimit() was removed (deprecated since 1.25)
* ApiResult::setRawMode() was removed (deprecated since 1.25)
* ApiResult::size() was removed (deprecated since 1.25)
* Added new hooks, 'ApiQueryBaseBeforeQuery', 'ApiQueryBaseAfterQuery', and
'ApiQueryBaseProcessRow', to make it easier for extensions to add 'prop' and
'show' parameters to existing API query modules. A query module can enable
these hooks by passing an array for $hookData to ApiQueryBase::select() and
by calling ApiQueryBase->processRow() before adding a row's data to the
result.
=== Languages updated in 1.28 ===
MediaWiki supports over 375 languages. Many localisations are updated
regularly. Below only new and removed languages are listed, as well as
changes to languages because of Phabricator reports.
* (T137411) ban (Balinese), thanks to translators Adi Mayndra, Andru,
BASAbali, M. Adiputra, Naval Scene, Nemo bis, NoiX180, and 아라.
* (T135867) shn (Shan), thanks to translators Khun Sar, Piangpha,
Saiddzone Saimawnkham, Saosukham, and Sengwan.
* Czech (cs) and Slovak (sk) set as reciprocal fallbacks.
* (T146744) Livvi-Karelian (olo) namespace messages created thanks to translator Ilja.mos.
=== Other changes in 1.28 ===
* (T128697) Improved handling of large diffs.
* [BREAKING CHANGE] $wgExtendedLoginCookies has been removed. You can
use or update a custom session provider if needed.
* Deprecated APIEditBeforeSave hook in favor of EditFilterMergedContent.
* The 'UploadVerification' hook is deprecated. Use 'UploadVerifyFile' instead.
* SiteConfiguration::isLocalVHost() was removed (deprecated since 1.25).
* The 'UserLoginComplete' hook has a new parameter to differentiate between actual
login and visiting the login page while already logged in.
* ResourceLoader::makeLoaderURL() was removed (deprecated since 1.24).
* $.fn.liveAndTestAtStart was removed (deprecated since 1.24).
* mw.util.tooltipAccessKeyPrefix was removed (deprecated since 1.24).
* mw.util.tooltipAccessKeyRegexp was removed (deprecated since 1.24).
* Linker::link() and Linker::linkKnown() were deprecated; please instead use
MediaWiki\Linker\LinkRenderer. In addition, the LinkBegin and LinkEnd hooks
were replaced by HtmlPageLinkRendererBegin and HtmlPageLinkRendererEnd
respectively. See docs/hooks.txt for the specific changes needed for those hooks.
* Linker::formatSize() was deprecated. Use Language::formatSize() directly.
* Aliases for Linker methods, deprecated since 1.21, were removed from Skin:
* Skin::commentBlock() (use Linker::commentBlock() instead)
* Skin::generateRollback() (use Linker::generateRollback() instead)
* Skin::link() (use MediaWiki\Linker\LinkRenderer instead)
* Skin::linkKnown() (use MediaWiki\Linker\LinkRenderer instead)
* Skin::userLink() (use Linker::userLink() instead)
* Skin::userToolLinks() (use Linker::userToolLinks() instead)
* Disabled "bug 2702" HTML tidying of parsed UI messages on wikis where Tidy is
disabled.
* DifferenceEngine::generateDiffBody() was removed (deprecated since 1.21).
* UploadBase::stashFileGetKey() and UploadBase::stashSession() were deprecated.
Use ...->stashFile()->getFileKey() instead.
* "Public domain" was removed as a wiki license option from the installer, in
favour of CC-0.
* AuthenticationRequest::$required is now changed from REQUIRED to PRIMARY_REQUIRED
on requests needed by primary providers even if all primaries need them.
Primary providers are discouraged from returning multiple REQUIRED requests.
* OOjs UI PHP widgets constructed with the `'infusable' => true` config option
will no longer be automatically infused. You should call `OO.ui.infuse()`
on them yourself from your JavaScript code.
* parserTests.php has moved to tests/parser/parserTests.php
* The command line options specific to parser tests have been removed from
phpunit.php: --regex and --keep-uploads. Instead of --regex, use --filter.
Instead of --keep-uploads, use the same option to parserTests.php, but you
must specify a directory with --upload-dir.
* The 'jquery.arrowSteps' ResourceLoader module is now deprecated.
* IP::isConfiguredProxy() and IP::isTrustedProxy() were removed. Callers should
migrate to using the same functions on a ProxyLookup instance, obtainable from
MediaWikiServices.
* The ArticleAfterFetchContent, ArticleInsertComplete, ArticleSave, ArticleSaveComplete,
ArticleViewCustom, EditFilterMerged, EditPageGetDiffText, EditPageGetPreviewText and
ShowRawCssJs hooks will now emit deprecation warnings if used.
* (T68404) CSS3 attr() function with url type is no longer allowed
in inline styles.
* Database::getSearchEngine() is deprecated, use SearchEngineFactory::getSearchEngineClass
instead.
== Compatibility ==
MediaWiki 1.28 requires PHP 5.5.9 or later. There is experimental support for
HHVM 3.6.5 or later.
MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
support for them is somewhat less mature. There is experimental support for
Oracle and Microsoft SQL Server.
The supported versions are:
* MySQL 5.0.3 or later
* PostgreSQL 8.3 or later
* SQLite 3.3.7 or later
* Oracle 9.0.1 or later
* Microsoft SQL Server 2005 (9.00.1399)
== Upgrading ==
1.28 has several database changes since 1.27, and will not work without schema
updates. Note that due to changes to some very large tables like the revision
table, the schema update may take quite long (minutes on a medium sized site,
many hours on a large site).
If upgrading from before 1.11, and you are using a wiki as a commons
repository, make sure that it is updated as well. Otherwise, errors may arise
due to database schema changes.
If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
new database fields are filled with data.
If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
with MediaWiki 1.21.
Don't forget to always back up your database before upgrading!
See the file UPGRADE for more detailed upgrade instructions.
For notes on 1.27.x and older releases, see HISTORY.
== Online documentation ==
Documentation for both end-users and site administrators is available on
MediaWiki.org, and is covered under the GNU Free Documentation License (except
for pages that explicitly state that their contents are in the public domain):
https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
== Mailing list ==
A mailing list is available for MediaWiki user support and discussion:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
A low-traffic announcements-only list is also available:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
It's highly recommended that you sign up for one of these lists if you're
going to run a public MediaWiki, so you can be notified of security fixes.
== IRC help ==
There's usually someone online in #mediawiki on irc.freenode.net.

View File

@ -1,18 +1,17 @@
This file provides an overview of the MediaWiki upgrade process. For help with
specific problems, check
* the documentation at https://www.mediawiki.org
* the documentation at https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents
* the mediawiki-l mailing list archive at
http://lists.wikimedia.org/pipermail/mediawiki-l/
* the bug tracker at https://phabricator.wikimedia.org
* the bug tracker at https://phabricator.wikimedia.org/
for information and workarounds to common issues.
== Overview ==
Comprehensive documentation on upgrading to the latest version of the software
is available at https://www.mediawiki.org/wiki/Manual:Upgrading.
is available at https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Upgrading
=== Consult the release notes ===
@ -28,7 +27,7 @@ you take a complete backup of your wiki database and files and verify it. While
the upgrade scripts are somewhat robust, there is no guarantee that things will
not fail, leaving the database in an inconsistent state.
https://www.mediawiki.org/wiki/Manual:Backing_up_a_wiki provides an overview of
https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Backing_up_a_wiki provides an overview of
the backup process. You should also refer to the documentation for your
database management system for information on backing up a database, and to
your operating system documentation for information on making copies of files.

View File

@ -5,10 +5,12 @@ global $wgAutoloadLocalClasses;
$wgAutoloadLocalClasses = [
'APCBagOStuff' => __DIR__ . '/includes/libs/objectcache/APCBagOStuff.php',
'APCUBagOStuff' => __DIR__ . '/includes/libs/objectcache/APCUBagOStuff.php',
'AbstractContent' => __DIR__ . '/includes/content/AbstractContent.php',
'Action' => __DIR__ . '/includes/actions/Action.php',
'ActiveUsersPager' => __DIR__ . '/includes/specials/pagers/ActiveUsersPager.php',
'ActivityUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/ActivityUpdateJob.php',
'AddRFCAndPMIDInterwiki' => __DIR__ . '/maintenance/addRFCandPMIDInterwiki.php',
'AjaxDispatcher' => __DIR__ . '/includes/AjaxDispatcher.php',
'AjaxResponse' => __DIR__ . '/includes/AjaxResponse.php',
'AllMessagesTablePager' => __DIR__ . '/includes/specials/pagers/AllMessagesTablePager.php',
@ -21,6 +23,7 @@ $wgAutoloadLocalClasses = [
'ApiAuthManagerHelper' => __DIR__ . '/includes/api/ApiAuthManagerHelper.php',
'ApiBase' => __DIR__ . '/includes/api/ApiBase.php',
'ApiBlock' => __DIR__ . '/includes/api/ApiBlock.php',
'ApiCSPReport' => __DIR__ . '/includes/api/ApiCSPReport.php',
'ApiChangeAuthenticationData' => __DIR__ . '/includes/api/ApiChangeAuthenticationData.php',
'ApiCheckToken' => __DIR__ . '/includes/api/ApiCheckToken.php',
'ApiClearHasMsg' => __DIR__ . '/includes/api/ApiClearHasMsg.php',
@ -152,9 +155,11 @@ $wgAutoloadLocalClasses = [
'AtomFeed' => __DIR__ . '/includes/Feed.php',
'AtomicSectionUpdate' => __DIR__ . '/includes/deferred/AtomicSectionUpdate.php',
'AttachLatest' => __DIR__ . '/maintenance/attachLatest.php',
'AugmentPageProps' => __DIR__ . '/includes/search/AugmentPageProps.php',
'AuthManagerSpecialPage' => __DIR__ . '/includes/specialpage/AuthManagerSpecialPage.php',
'AuthPlugin' => __DIR__ . '/includes/AuthPlugin.php',
'AuthPluginUser' => __DIR__ . '/includes/AuthPlugin.php',
'AutoCommitUpdate' => __DIR__ . '/includes/deferred/AutoCommitUpdate.php',
'AutoLoader' => __DIR__ . '/includes/AutoLoader.php',
'AutoloadGenerator' => __DIR__ . '/includes/utils/AutoloadGenerator.php',
'Autopromote' => __DIR__ . '/includes/Autopromote.php',
@ -163,6 +168,7 @@ $wgAutoloadLocalClasses = [
'BacklinkJobUtils' => __DIR__ . '/includes/jobqueue/utils/BacklinkJobUtils.php',
'BackupDumper' => __DIR__ . '/maintenance/backup.inc',
'BackupReader' => __DIR__ . '/maintenance/importDump.php',
'BadRequestError' => __DIR__ . '/includes/exception/BadRequestError.php',
'BadTitleError' => __DIR__ . '/includes/exception/BadTitleError.php',
'BagOStuff' => __DIR__ . '/includes/libs/objectcache/BagOStuff.php',
'BaseDump' => __DIR__ . '/maintenance/backupPrefetch.inc',
@ -186,8 +192,9 @@ $wgAutoloadLocalClasses = [
'BitmapHandler' => __DIR__ . '/includes/media/Bitmap.php',
'BitmapHandler_ClientOnly' => __DIR__ . '/includes/media/Bitmap_ClientOnly.php',
'BitmapMetadataHandler' => __DIR__ . '/includes/media/BitmapMetadataHandler.php',
'Blob' => __DIR__ . '/includes/db/DatabaseUtility.php',
'Blob' => __DIR__ . '/includes/libs/rdbms/encasing/Blob.php',
'Block' => __DIR__ . '/includes/Block.php',
'BlockLevelPass' => __DIR__ . '/includes/parser/BlockLevelPass.php',
'BlockListPager' => __DIR__ . '/includes/specials/pagers/BlockListPager.php',
'BlockLogFormatter' => __DIR__ . '/includes/logging/BlockLogFormatter.php',
'BmpHandler' => __DIR__ . '/includes/media/BMP.php',
@ -237,10 +244,11 @@ $wgAutoloadLocalClasses = [
'CheckStorage' => __DIR__ . '/maintenance/storage/checkStorage.php',
'CheckSyntax' => __DIR__ . '/maintenance/checkSyntax.php',
'CheckUsernames' => __DIR__ . '/maintenance/checkUsernames.php',
'ChronologyProtector' => __DIR__ . '/includes/db/ChronologyProtector.php',
'ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php',
'ClassCollector' => __DIR__ . '/includes/utils/AutoloadGenerator.php',
'CleanupAncientTables' => __DIR__ . '/maintenance/cleanupAncientTables.php',
'CleanupBlocks' => __DIR__ . '/maintenance/cleanupBlocks.php',
'CleanupEmptyCategories' => __DIR__ . '/maintenance/cleanupEmptyCategories.php',
'CleanupPreferences' => __DIR__ . '/maintenance/cleanupPreferences.php',
'CleanupRemovedModules' => __DIR__ . '/maintenance/cleanupRemovedModules.php',
'CleanupSpam' => __DIR__ . '/maintenance/cleanupSpam.php',
@ -276,54 +284,60 @@ $wgAutoloadLocalClasses = [
'ConvertLinks' => __DIR__ . '/maintenance/convertLinks.php',
'ConvertUserOptions' => __DIR__ . '/maintenance/convertUserOptions.php',
'ConverterRule' => __DIR__ . '/languages/ConverterRule.php',
'ConvertibleTimestamp' => __DIR__ . '/includes/libs/time/ConvertibleTimestamp.php',
'Cookie' => __DIR__ . '/includes/libs/Cookie.php',
'CookieJar' => __DIR__ . '/includes/libs/CookieJar.php',
'CopyFileBackend' => __DIR__ . '/maintenance/copyFileBackend.php',
'CopyFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'CopyFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/CopyFileOp.php',
'CopyJobQueue' => __DIR__ . '/maintenance/copyJobQueue.php',
'CoreParserFunctions' => __DIR__ . '/includes/parser/CoreParserFunctions.php',
'CoreTagHooks' => __DIR__ . '/includes/parser/CoreTagHooks.php',
'CoreVersionChecker' => __DIR__ . '/includes/registration/CoreVersionChecker.php',
'CreateAndPromote' => __DIR__ . '/maintenance/createAndPromote.php',
'CreateFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'CreateFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/CreateFileOp.php',
'CreditsAction' => __DIR__ . '/includes/actions/CreditsAction.php',
'CryptHKDF' => __DIR__ . '/includes/libs/CryptHKDF.php',
'CryptRand' => __DIR__ . '/includes/libs/CryptRand.php',
'CssContent' => __DIR__ . '/includes/content/CssContent.php',
'CssContentHandler' => __DIR__ . '/includes/content/CssContentHandler.php',
'CsvStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'CurlHttpRequest' => __DIR__ . '/includes/HttpFunctions.php',
'CurlHttpRequest' => __DIR__ . '/includes/http/CurlHttpRequest.php',
'DBAccessBase' => __DIR__ . '/includes/dao/DBAccessBase.php',
'DBAccessError' => __DIR__ . '/includes/db/loadbalancer/LBFactory.php',
'DBAccessError' => __DIR__ . '/includes/libs/rdbms/exception/DBAccessError.php',
'DBAccessObjectUtils' => __DIR__ . '/includes/dao/DBAccessObjectUtils.php',
'DBConnRef' => __DIR__ . '/includes/db/DBConnRef.php',
'DBConnectionError' => __DIR__ . '/includes/db/DatabaseError.php',
'DBError' => __DIR__ . '/includes/db/DatabaseError.php',
'DBExpectedError' => __DIR__ . '/includes/db/DatabaseError.php',
'DBConnRef' => __DIR__ . '/includes/libs/rdbms/database/DBConnRef.php',
'DBConnectionError' => __DIR__ . '/includes/libs/rdbms/exception/DBConnectionError.php',
'DBError' => __DIR__ . '/includes/libs/rdbms/exception/DBError.php',
'DBExpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBExpectedError.php',
'DBFileJournal' => __DIR__ . '/includes/filebackend/filejournal/DBFileJournal.php',
'DBLockManager' => __DIR__ . '/includes/filebackend/lockmanager/DBLockManager.php',
'DBMasterPos' => __DIR__ . '/includes/db/DatabaseUtility.php',
'DBQueryError' => __DIR__ . '/includes/db/DatabaseError.php',
'DBReadOnlyError' => __DIR__ . '/includes/db/DatabaseError.php',
'DBReplicationWaitError' => __DIR__ . '/includes/db/loadbalancer/LBFactory.php',
'DBLockManager' => __DIR__ . '/includes/libs/lockmanager/DBLockManager.php',
'DBMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/DBMasterPos.php',
'DBQueryError' => __DIR__ . '/includes/libs/rdbms/exception/DBQueryError.php',
'DBReadOnlyError' => __DIR__ . '/includes/libs/rdbms/exception/DBReadOnlyError.php',
'DBReplicationWaitError' => __DIR__ . '/includes/libs/rdbms/exception/DBReplicationWaitError.php',
'DBSiteStore' => __DIR__ . '/includes/site/DBSiteStore.php',
'DBTransactionError' => __DIR__ . '/includes/db/DatabaseError.php',
'DBUnexpectedError' => __DIR__ . '/includes/db/DatabaseError.php',
'DBTransactionError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionError.php',
'DBTransactionSizeError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionSizeError.php',
'DBUnexpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBUnexpectedError.php',
'DataUpdate' => __DIR__ . '/includes/deferred/DataUpdate.php',
'Database' => __DIR__ . '/includes/db/Database.php',
'DatabaseBase' => __DIR__ . '/includes/db/Database.php',
'Database' => __DIR__ . '/includes/libs/rdbms/database/Database.php',
'DatabaseBase' => __DIR__ . '/includes/libs/rdbms/database/Database.php',
'DatabaseDomain' => __DIR__ . '/includes/libs/rdbms/database/DatabaseDomain.php',
'DatabaseInstaller' => __DIR__ . '/includes/installer/DatabaseInstaller.php',
'DatabaseLag' => __DIR__ . '/maintenance/lag.php',
'DatabaseLogEntry' => __DIR__ . '/includes/logging/LogEntry.php',
'DatabaseMssql' => __DIR__ . '/includes/db/DatabaseMssql.php',
'DatabaseMysql' => __DIR__ . '/includes/db/DatabaseMysql.php',
'DatabaseMysqlBase' => __DIR__ . '/includes/db/DatabaseMysqlBase.php',
'DatabaseMysqli' => __DIR__ . '/includes/db/DatabaseMysqli.php',
'DatabaseMysql' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMysql.php',
'DatabaseMysqlBase' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMysqlBase.php',
'DatabaseMysqli' => __DIR__ . '/includes/libs/rdbms/database/DatabaseMysqli.php',
'DatabaseOracle' => __DIR__ . '/includes/db/DatabaseOracle.php',
'DatabasePostgres' => __DIR__ . '/includes/db/DatabasePostgres.php',
'DatabaseSqlite' => __DIR__ . '/includes/db/DatabaseSqlite.php',
'DatabasePostgres' => __DIR__ . '/includes/libs/rdbms/database/DatabasePostgres.php',
'DatabaseSqlite' => __DIR__ . '/includes/libs/rdbms/database/DatabaseSqlite.php',
'DatabaseUpdater' => __DIR__ . '/includes/installer/DatabaseUpdater.php',
'DateFormats' => __DIR__ . '/maintenance/language/date-formats.php',
'DateFormatter' => __DIR__ . '/includes/parser/DateFormatter.php',
'DeadendPagesPage' => __DIR__ . '/includes/specials/SpecialDeadendpages.php',
'DeferrableCallback' => __DIR__ . '/includes/deferred/DeferrableCallback.php',
'DeferrableUpdate' => __DIR__ . '/includes/deferred/DeferrableUpdate.php',
'DeferredStringifier' => __DIR__ . '/includes/libs/DeferredStringifier.php',
'DeferredUpdates' => __DIR__ . '/includes/deferred/DeferredUpdates.php',
@ -333,7 +347,7 @@ $wgAutoloadLocalClasses = [
'DeleteBatch' => __DIR__ . '/maintenance/deleteBatch.php',
'DeleteDefaultMessages' => __DIR__ . '/maintenance/deleteDefaultMessages.php',
'DeleteEqualMessages' => __DIR__ . '/maintenance/deleteEqualMessages.php',
'DeleteFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'DeleteFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/DeleteFileOp.php',
'DeleteLinksJob' => __DIR__ . '/includes/jobqueue/jobs/DeleteLinksJob.php',
'DeleteLogFormatter' => __DIR__ . '/includes/logging/DeleteLogFormatter.php',
'DeleteOldRevisions' => __DIR__ . '/maintenance/deleteOldRevisions.php',
@ -348,9 +362,9 @@ $wgAutoloadLocalClasses = [
'DerivativeContext' => __DIR__ . '/includes/context/DerivativeContext.php',
'DerivativeRequest' => __DIR__ . '/includes/DerivativeRequest.php',
'DerivativeResourceLoaderContext' => __DIR__ . '/includes/resourceloader/DerivativeResourceLoaderContext.php',
'DescribeFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'DescribeFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/DescribeFileOp.php',
'Diff' => __DIR__ . '/includes/diff/DairikiDiff.php',
'DiffEngine' => __DIR__ . '/includes/diff/DairikiDiff.php',
'DiffEngine' => __DIR__ . '/includes/diff/DiffEngine.php',
'DiffFormatter' => __DIR__ . '/includes/diff/DiffFormatter.php',
'DiffHistoryBlob' => __DIR__ . '/includes/HistoryBlob.php',
'DiffOp' => __DIR__ . '/includes/diff/DairikiDiff.php',
@ -366,6 +380,7 @@ $wgAutoloadLocalClasses = [
'DoubleRedirectsPage' => __DIR__ . '/includes/specials/SpecialDoubleRedirects.php',
'DoubleReplacer' => __DIR__ . '/includes/libs/replacers/DoubleReplacer.php',
'DummyLinker' => __DIR__ . '/includes/DummyLinker.php',
'DummySearchIndexFieldDefinition' => __DIR__ . '/includes/search/DummySearchIndexFieldDefinition.php',
'DummyTermColorer' => __DIR__ . '/maintenance/term/MWTerm.php',
'Dump7ZipOutput' => __DIR__ . '/includes/export/Dump7ZipOutput.php',
'DumpBZip2Output' => __DIR__ . '/includes/export/DumpBZip2Output.php',
@ -385,6 +400,7 @@ $wgAutoloadLocalClasses = [
'DumpPipeOutput' => __DIR__ . '/includes/export/DumpPipeOutput.php',
'DumpRenderer' => __DIR__ . '/maintenance/renderDump.php',
'DumpRev' => __DIR__ . '/maintenance/storage/dumpRev.php',
'DumpStringOutput' => __DIR__ . '/includes/export/DumpStringOutput.php',
'DuplicateJob' => __DIR__ . '/includes/jobqueue/jobs/DuplicateJob.php',
'EditAction' => __DIR__ . '/includes/actions/EditAction.php',
'EditCLI' => __DIR__ . '/maintenance/edit.php',
@ -400,7 +416,7 @@ $wgAutoloadLocalClasses = [
'EnhancedChangesList' => __DIR__ . '/includes/changes/EnhancedChangesList.php',
'EnotifNotifyJob' => __DIR__ . '/includes/jobqueue/jobs/EnotifNotifyJob.php',
'EnqueueJob' => __DIR__ . '/includes/jobqueue/jobs/EnqueueJob.php',
'EnqueueableDataUpdate' => __DIR__ . '/includes/deferred/DataUpdate.php',
'EnqueueableDataUpdate' => __DIR__ . '/includes/deferred/EnqueueableDataUpdate.php',
'EraseArchivedFile' => __DIR__ . '/maintenance/eraseArchivedFile.php',
'ErrorPageError' => __DIR__ . '/includes/exception/ErrorPageError.php',
'EventRelayer' => __DIR__ . '/includes/libs/eventrelayer/EventRelayer.php',
@ -420,18 +436,18 @@ $wgAutoloadLocalClasses = [
'ExternalStoreHttp' => __DIR__ . '/includes/externalstore/ExternalStoreHttp.php',
'ExternalStoreMedium' => __DIR__ . '/includes/externalstore/ExternalStoreMedium.php',
'ExternalStoreMwstore' => __DIR__ . '/includes/externalstore/ExternalStoreMwstore.php',
'FSFile' => __DIR__ . '/includes/filebackend/FSFile.php',
'FSFileBackend' => __DIR__ . '/includes/filebackend/FSFileBackend.php',
'FSFileBackendDirList' => __DIR__ . '/includes/filebackend/FSFileBackend.php',
'FSFileBackendFileList' => __DIR__ . '/includes/filebackend/FSFileBackend.php',
'FSFileBackendList' => __DIR__ . '/includes/filebackend/FSFileBackend.php',
'FSFileOpHandle' => __DIR__ . '/includes/filebackend/FSFileBackend.php',
'FSLockManager' => __DIR__ . '/includes/filebackend/lockmanager/FSLockManager.php',
'FSFile' => __DIR__ . '/includes/libs/filebackend/fsfile/FSFile.php',
'FSFileBackend' => __DIR__ . '/includes/libs/filebackend/FSFileBackend.php',
'FSFileBackendDirList' => __DIR__ . '/includes/libs/filebackend/FSFileBackend.php',
'FSFileBackendFileList' => __DIR__ . '/includes/libs/filebackend/FSFileBackend.php',
'FSFileBackendList' => __DIR__ . '/includes/libs/filebackend/FSFileBackend.php',
'FSFileOpHandle' => __DIR__ . '/includes/libs/filebackend/FSFileBackend.php',
'FSLockManager' => __DIR__ . '/includes/libs/lockmanager/FSLockManager.php',
'FSRepo' => __DIR__ . '/includes/filerepo/FSRepo.php',
'FakeAuthTemplate' => __DIR__ . '/includes/specialpage/LoginSignupSpecialPage.php',
'FakeConverter' => __DIR__ . '/languages/FakeConverter.php',
'FakeMaintenance' => __DIR__ . '/maintenance/Maintenance.php',
'FakeResultWrapper' => __DIR__ . '/includes/db/DatabaseUtility.php',
'FakeResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php',
'FatalError' => __DIR__ . '/includes/exception/FatalError.php',
'FauxRequest' => __DIR__ . '/includes/FauxRequest.php',
'FauxResponse' => __DIR__ . '/includes/WebResponse.php',
@ -439,29 +455,29 @@ $wgAutoloadLocalClasses = [
'FeedUtils' => __DIR__ . '/includes/FeedUtils.php',
'FetchText' => __DIR__ . '/maintenance/fetchText.php',
'FewestrevisionsPage' => __DIR__ . '/includes/specials/SpecialFewestrevisions.php',
'Field' => __DIR__ . '/includes/db/DatabaseUtility.php',
'Field' => __DIR__ . '/includes/libs/rdbms/field/Field.php',
'File' => __DIR__ . '/includes/filerepo/file/File.php',
'FileAwareNodeVisitor' => __DIR__ . '/maintenance/findDeprecated.php',
'FileBackend' => __DIR__ . '/includes/filebackend/FileBackend.php',
'FileBackend' => __DIR__ . '/includes/libs/filebackend/FileBackend.php',
'FileBackendDBRepoWrapper' => __DIR__ . '/includes/filerepo/FileBackendDBRepoWrapper.php',
'FileBackendError' => __DIR__ . '/includes/filebackend/FileBackend.php',
'FileBackendException' => __DIR__ . '/includes/filebackend/FileBackend.php',
'FileBackendError' => __DIR__ . '/includes/libs/filebackend/FileBackendError.php',
'FileBackendGroup' => __DIR__ . '/includes/filebackend/FileBackendGroup.php',
'FileBackendMultiWrite' => __DIR__ . '/includes/filebackend/FileBackendMultiWrite.php',
'FileBackendStore' => __DIR__ . '/includes/filebackend/FileBackendStore.php',
'FileBackendStoreOpHandle' => __DIR__ . '/includes/filebackend/FileBackendStore.php',
'FileBackendStoreShardDirIterator' => __DIR__ . '/includes/filebackend/FileBackendStore.php',
'FileBackendStoreShardFileIterator' => __DIR__ . '/includes/filebackend/FileBackendStore.php',
'FileBackendStoreShardListIterator' => __DIR__ . '/includes/filebackend/FileBackendStore.php',
'FileBackendMultiWrite' => __DIR__ . '/includes/libs/filebackend/FileBackendMultiWrite.php',
'FileBackendStore' => __DIR__ . '/includes/libs/filebackend/FileBackendStore.php',
'FileBackendStoreOpHandle' => __DIR__ . '/includes/libs/filebackend/FileBackendStore.php',
'FileBackendStoreShardDirIterator' => __DIR__ . '/includes/libs/filebackend/FileBackendStore.php',
'FileBackendStoreShardFileIterator' => __DIR__ . '/includes/libs/filebackend/FileBackendStore.php',
'FileBackendStoreShardListIterator' => __DIR__ . '/includes/libs/filebackend/FileBackendStore.php',
'FileBasedSiteLookup' => __DIR__ . '/includes/site/FileBasedSiteLookup.php',
'FileCacheBase' => __DIR__ . '/includes/cache/FileCacheBase.php',
'FileContentHandler' => __DIR__ . '/includes/content/FileContentHandler.php',
'FileContentsHasher' => __DIR__ . '/includes/utils/FileContentsHasher.php',
'FileDeleteForm' => __DIR__ . '/includes/FileDeleteForm.php',
'FileDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
'FileDuplicateSearchPage' => __DIR__ . '/includes/specials/SpecialFileDuplicateSearch.php',
'FileJournal' => __DIR__ . '/includes/filebackend/filejournal/FileJournal.php',
'FileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'FileOpBatch' => __DIR__ . '/includes/filebackend/FileOpBatch.php',
'FileJournal' => __DIR__ . '/includes/libs/filebackend/filejournal/FileJournal.php',
'FileOp' => __DIR__ . '/includes/libs/filebackend/fileop/FileOp.php',
'FileOpBatch' => __DIR__ . '/includes/libs/filebackend/FileOpBatch.php',
'FileRepo' => __DIR__ . '/includes/filerepo/FileRepo.php',
'FileRepoStatus' => __DIR__ . '/includes/filerepo/FileRepoStatus.php',
'FindDeprecated' => __DIR__ . '/maintenance/findDeprecated.php',
@ -501,46 +517,53 @@ $wgAutoloadLocalClasses = [
'GenericArrayObject' => __DIR__ . '/includes/libs/GenericArrayObject.php',
'GetConfiguration' => __DIR__ . '/maintenance/getConfiguration.php',
'GetLagTimes' => __DIR__ . '/maintenance/getLagTimes.php',
'GetSlaveServer' => __DIR__ . '/maintenance/getSlaveServer.php',
'GetSlaveServer' => __DIR__ . '/maintenance/getReplicaServer.php',
'GetTextMaint' => __DIR__ . '/maintenance/getText.php',
'GitInfo' => __DIR__ . '/includes/GitInfo.php',
'GlobalDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
'GlobalVarConfig' => __DIR__ . '/includes/config/GlobalVarConfig.php',
'HTMLApiField' => __DIR__ . '/includes/htmlform/HTMLApiField.php',
'HTMLAutoCompleteSelectField' => __DIR__ . '/includes/htmlform/HTMLAutoCompleteSelectField.php',
'HTMLButtonField' => __DIR__ . '/includes/htmlform/HTMLButtonField.php',
'HHVMMakeRepo' => __DIR__ . '/maintenance/hhvm/makeRepo.php',
'HTMLApiField' => __DIR__ . '/includes/htmlform/fields/HTMLApiField.php',
'HTMLAutoCompleteSelectField' => __DIR__ . '/includes/htmlform/fields/HTMLAutoCompleteSelectField.php',
'HTMLButtonField' => __DIR__ . '/includes/htmlform/fields/HTMLButtonField.php',
'HTMLCacheUpdate' => __DIR__ . '/includes/deferred/HTMLCacheUpdate.php',
'HTMLCacheUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/HTMLCacheUpdateJob.php',
'HTMLCheckField' => __DIR__ . '/includes/htmlform/HTMLCheckField.php',
'HTMLCheckMatrix' => __DIR__ . '/includes/htmlform/HTMLCheckMatrix.php',
'HTMLComboboxField' => __DIR__ . '/includes/htmlform/HTMLComboboxField.php',
'HTMLEditTools' => __DIR__ . '/includes/htmlform/HTMLEditTools.php',
'HTMLCheckField' => __DIR__ . '/includes/htmlform/fields/HTMLCheckField.php',
'HTMLCheckMatrix' => __DIR__ . '/includes/htmlform/fields/HTMLCheckMatrix.php',
'HTMLComboboxField' => __DIR__ . '/includes/htmlform/fields/HTMLComboboxField.php',
'HTMLDateTimeField' => __DIR__ . '/includes/htmlform/fields/HTMLDateTimeField.php',
'HTMLEditTools' => __DIR__ . '/includes/htmlform/fields/HTMLEditTools.php',
'HTMLFileCache' => __DIR__ . '/includes/cache/HTMLFileCache.php',
'HTMLFloatField' => __DIR__ . '/includes/htmlform/HTMLFloatField.php',
'HTMLFloatField' => __DIR__ . '/includes/htmlform/fields/HTMLFloatField.php',
'HTMLForm' => __DIR__ . '/includes/htmlform/HTMLForm.php',
'HTMLFormActionFieldLayout' => __DIR__ . '/includes/htmlform/HTMLFormElement.php',
'HTMLFormElement' => __DIR__ . '/includes/htmlform/HTMLFormElement.php',
'HTMLFormField' => __DIR__ . '/includes/htmlform/HTMLFormField.php',
'HTMLFormFieldCloner' => __DIR__ . '/includes/htmlform/HTMLFormFieldCloner.php',
'HTMLFormFieldCloner' => __DIR__ . '/includes/htmlform/fields/HTMLFormFieldCloner.php',
'HTMLFormFieldLayout' => __DIR__ . '/includes/htmlform/HTMLFormElement.php',
'HTMLFormFieldRequiredOptionsException' => __DIR__ . '/includes/htmlform/HTMLFormFieldRequiredOptionsException.php',
'HTMLFormFieldWithButton' => __DIR__ . '/includes/htmlform/HTMLFormFieldWithButton.php',
'HTMLHiddenField' => __DIR__ . '/includes/htmlform/HTMLHiddenField.php',
'HTMLInfoField' => __DIR__ . '/includes/htmlform/HTMLInfoField.php',
'HTMLIntField' => __DIR__ . '/includes/htmlform/HTMLIntField.php',
'HTMLMultiSelectField' => __DIR__ . '/includes/htmlform/HTMLMultiSelectField.php',
'HTMLFormFieldWithButton' => __DIR__ . '/includes/htmlform/fields/HTMLFormFieldWithButton.php',
'HTMLHiddenField' => __DIR__ . '/includes/htmlform/fields/HTMLHiddenField.php',
'HTMLInfoField' => __DIR__ . '/includes/htmlform/fields/HTMLInfoField.php',
'HTMLIntField' => __DIR__ . '/includes/htmlform/fields/HTMLIntField.php',
'HTMLMultiSelectField' => __DIR__ . '/includes/htmlform/fields/HTMLMultiSelectField.php',
'HTMLNestedFilterable' => __DIR__ . '/includes/htmlform/HTMLNestedFilterable.php',
'HTMLRadioField' => __DIR__ . '/includes/htmlform/HTMLRadioField.php',
'HTMLSelectAndOtherField' => __DIR__ . '/includes/htmlform/HTMLSelectAndOtherField.php',
'HTMLSelectField' => __DIR__ . '/includes/htmlform/HTMLSelectField.php',
'HTMLSelectLimitField' => __DIR__ . '/includes/htmlform/HTMLSelectLimitField.php',
'HTMLSelectNamespace' => __DIR__ . '/includes/htmlform/HTMLSelectNamespace.php',
'HTMLSelectNamespaceWithButton' => __DIR__ . '/includes/htmlform/HTMLSelectNamespaceWithButton.php',
'HTMLSelectOrOtherField' => __DIR__ . '/includes/htmlform/HTMLSelectOrOtherField.php',
'HTMLSubmitField' => __DIR__ . '/includes/htmlform/HTMLSubmitField.php',
'HTMLTagFilter' => __DIR__ . '/includes/htmlform/HTMLTagFilter.php',
'HTMLTextAreaField' => __DIR__ . '/includes/htmlform/HTMLTextAreaField.php',
'HTMLTextField' => __DIR__ . '/includes/htmlform/HTMLTextField.php',
'HTMLTextFieldWithButton' => __DIR__ . '/includes/htmlform/HTMLTextFieldWithButton.php',
'HTMLTitleTextField' => __DIR__ . '/includes/htmlform/HTMLTitleTextField.php',
'HTMLUserTextField' => __DIR__ . '/includes/htmlform/HTMLUserTextField.php',
'HTMLRadioField' => __DIR__ . '/includes/htmlform/fields/HTMLRadioField.php',
'HTMLRestrictionsField' => __DIR__ . '/includes/htmlform/fields/HTMLRestrictionsField.php',
'HTMLSelectAndOtherField' => __DIR__ . '/includes/htmlform/fields/HTMLSelectAndOtherField.php',
'HTMLSelectField' => __DIR__ . '/includes/htmlform/fields/HTMLSelectField.php',
'HTMLSelectLimitField' => __DIR__ . '/includes/htmlform/fields/HTMLSelectLimitField.php',
'HTMLSelectNamespace' => __DIR__ . '/includes/htmlform/fields/HTMLSelectNamespace.php',
'HTMLSelectNamespaceWithButton' => __DIR__ . '/includes/htmlform/fields/HTMLSelectNamespaceWithButton.php',
'HTMLSelectOrOtherField' => __DIR__ . '/includes/htmlform/fields/HTMLSelectOrOtherField.php',
'HTMLSubmitField' => __DIR__ . '/includes/htmlform/fields/HTMLSubmitField.php',
'HTMLTagFilter' => __DIR__ . '/includes/htmlform/fields/HTMLTagFilter.php',
'HTMLTextAreaField' => __DIR__ . '/includes/htmlform/fields/HTMLTextAreaField.php',
'HTMLTextField' => __DIR__ . '/includes/htmlform/fields/HTMLTextField.php',
'HTMLTextFieldWithButton' => __DIR__ . '/includes/htmlform/fields/HTMLTextFieldWithButton.php',
'HTMLTitleTextField' => __DIR__ . '/includes/htmlform/fields/HTMLTitleTextField.php',
'HTMLUserTextField' => __DIR__ . '/includes/htmlform/fields/HTMLUserTextField.php',
'HTTPFileStreamer' => __DIR__ . '/includes/libs/filebackend/HTTPFileStreamer.php',
'HWLDFWordAccumulator' => __DIR__ . '/includes/diff/DairikiDiff.php',
'HashBagOStuff' => __DIR__ . '/includes/libs/objectcache/HashBagOStuff.php',
'HashConfig' => __DIR__ . '/includes/config/HashConfig.php',
@ -554,20 +577,25 @@ $wgAutoloadLocalClasses = [
'HistoryPager' => __DIR__ . '/includes/actions/HistoryAction.php',
'Hooks' => __DIR__ . '/includes/Hooks.php',
'Html' => __DIR__ . '/includes/Html.php',
'HtmlArmor' => __DIR__ . '/includes/libs/HtmlArmor.php',
'HtmlFormatter' => __DIR__ . '/includes/HtmlFormatter.php',
'Http' => __DIR__ . '/includes/HttpFunctions.php',
'Http' => __DIR__ . '/includes/http/Http.php',
'HttpError' => __DIR__ . '/includes/exception/HttpError.php',
'HttpStatus' => __DIR__ . '/includes/libs/HttpStatus.php',
'IApiMessage' => __DIR__ . '/includes/api/ApiMessage.php',
'ICacheHelper' => __DIR__ . '/includes/cache/CacheHelper.php',
'IContextSource' => __DIR__ . '/includes/context/IContextSource.php',
'IDBAccessObject' => __DIR__ . '/includes/dao/IDBAccessObject.php',
'IDatabase' => __DIR__ . '/includes/db/IDatabase.php',
'IEContentAnalyzer' => __DIR__ . '/includes/libs/IEContentAnalyzer.php',
'IDatabase' => __DIR__ . '/includes/libs/rdbms/database/IDatabase.php',
'IEContentAnalyzer' => __DIR__ . '/includes/libs/mime/IEContentAnalyzer.php',
'IEUrlExtension' => __DIR__ . '/includes/libs/IEUrlExtension.php',
'IExpiringStore' => __DIR__ . '/includes/libs/objectcache/IExpiringStore.php',
'IJobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php',
'IP' => __DIR__ . '/includes/utils/IP.php',
'ILBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/ILBFactory.php',
'ILoadBalancer' => __DIR__ . '/includes/libs/rdbms/loadbalancer/ILoadBalancer.php',
'ILoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/ILoadMonitor.php',
'IMaintainableDatabase' => __DIR__ . '/includes/libs/rdbms/database/IMaintainableDatabase.php',
'IP' => __DIR__ . '/includes/libs/IP.php',
'IPSet' => __DIR__ . '/includes/compat/IPSetCompat.php',
'IPTC' => __DIR__ . '/includes/media/IPTC.php',
'IRCColourfulRCFeedFormatter' => __DIR__ . '/includes/rcfeed/IRCColourfulRCFeedFormatter.php',
@ -603,7 +631,8 @@ $wgAutoloadLocalClasses = [
'InstallerSessionProvider' => __DIR__ . '/includes/installer/InstallerSessionProvider.php',
'Interwiki' => __DIR__ . '/includes/interwiki/Interwiki.php',
'InvalidPassword' => __DIR__ . '/includes/password/InvalidPassword.php',
'IteratorDecorator' => __DIR__ . '/includes/utils/iterators/IteratorDecorator.php',
'InvalidateUserSesssions' => __DIR__ . '/maintenance/invalidateUserSessions.php',
'IteratorDecorator' => __DIR__ . '/includes/libs/iterators/IteratorDecorator.php',
'IuConverter' => __DIR__ . '/languages/classes/LanguageIu.php',
'JSCompilerContext' => __DIR__ . '/includes/libs/jsminplus.php',
'JSMinPlus' => __DIR__ . '/includes/libs/jsminplus.php',
@ -637,11 +666,10 @@ $wgAutoloadLocalClasses = [
'JsonContentHandler' => __DIR__ . '/includes/content/JsonContentHandler.php',
'KkConverter' => __DIR__ . '/languages/classes/LanguageKk.php',
'KuConverter' => __DIR__ . '/languages/classes/LanguageKu.php',
'LBFactory' => __DIR__ . '/includes/db/loadbalancer/LBFactory.php',
'LBFactoryFake' => __DIR__ . '/includes/db/loadbalancer/LBFactoryFake.php',
'LBFactoryMulti' => __DIR__ . '/includes/db/loadbalancer/LBFactoryMulti.php',
'LBFactorySimple' => __DIR__ . '/includes/db/loadbalancer/LBFactorySimple.php',
'LBFactorySingle' => __DIR__ . '/includes/db/loadbalancer/LBFactorySingle.php',
'LBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactory.php',
'LBFactoryMulti' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactoryMulti.php',
'LBFactorySimple' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactorySimple.php',
'LBFactorySingle' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactorySingle.php',
'LCStore' => __DIR__ . '/includes/cache/localisation/LCStore.php',
'LCStoreCDB' => __DIR__ . '/includes/cache/localisation/LCStoreCDB.php',
'LCStoreDB' => __DIR__ . '/includes/cache/localisation/LCStoreDB.php',
@ -657,7 +685,6 @@ $wgAutoloadLocalClasses = [
'LanguageConverter' => __DIR__ . '/languages/LanguageConverter.php',
'LanguageCu' => __DIR__ . '/languages/classes/LanguageCu.php',
'LanguageDsb' => __DIR__ . '/languages/classes/LanguageDsb.php',
'LanguageEo' => __DIR__ . '/languages/classes/LanguageEo.php',
'LanguageEs' => __DIR__ . '/languages/classes/LanguageEs.php',
'LanguageEt' => __DIR__ . '/languages/classes/LanguageEt.php',
'LanguageFi' => __DIR__ . '/languages/classes/LanguageFi.php',
@ -700,7 +727,7 @@ $wgAutoloadLocalClasses = [
'LegacyLogFormatter' => __DIR__ . '/includes/logging/LogFormatter.php',
'License' => __DIR__ . '/includes/Licenses.php',
'Licenses' => __DIR__ . '/includes/Licenses.php',
'LikeMatch' => __DIR__ . '/includes/db/DatabaseUtility.php',
'LikeMatch' => __DIR__ . '/includes/libs/rdbms/encasing/LikeMatch.php',
'LinkBatch' => __DIR__ . '/includes/cache/LinkBatch.php',
'LinkCache' => __DIR__ . '/includes/cache/LinkCache.php',
'LinkFilter' => __DIR__ . '/includes/LinkFilter.php',
@ -713,11 +740,11 @@ $wgAutoloadLocalClasses = [
'ListToggle' => __DIR__ . '/includes/ListToggle.php',
'ListVariants' => __DIR__ . '/maintenance/language/listVariants.php',
'ListredirectsPage' => __DIR__ . '/includes/specials/SpecialListredirects.php',
'LoadBalancer' => __DIR__ . '/includes/db/loadbalancer/LoadBalancer.php',
'LoadBalancerSingle' => __DIR__ . '/includes/db/loadbalancer/LBFactorySingle.php',
'LoadMonitor' => __DIR__ . '/includes/db/loadbalancer/LoadMonitor.php',
'LoadMonitorMySQL' => __DIR__ . '/includes/db/loadbalancer/LoadMonitorMySQL.php',
'LoadMonitorNull' => __DIR__ . '/includes/db/loadbalancer/LoadMonitor.php',
'LoadBalancer' => __DIR__ . '/includes/libs/rdbms/loadbalancer/LoadBalancer.php',
'LoadBalancerSingle' => __DIR__ . '/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php',
'LoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitor.php',
'LoadMonitorMySQL' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php',
'LoadMonitorNull' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php',
'LocalFile' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalFileDeleteBatch' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalFileLockError' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
@ -728,7 +755,7 @@ $wgAutoloadLocalClasses = [
'LocalSettingsGenerator' => __DIR__ . '/includes/installer/LocalSettingsGenerator.php',
'LocalisationCache' => __DIR__ . '/includes/cache/localisation/LocalisationCache.php',
'LocalisationCacheBulkLoad' => __DIR__ . '/includes/cache/localisation/LocalisationCacheBulkLoad.php',
'LockManager' => __DIR__ . '/includes/filebackend/lockmanager/LockManager.php',
'LockManager' => __DIR__ . '/includes/libs/lockmanager/LockManager.php',
'LockManagerGroup' => __DIR__ . '/includes/filebackend/lockmanager/LockManagerGroup.php',
'LogEntry' => __DIR__ . '/includes/logging/LogEntry.php',
'LogEntryBase' => __DIR__ . '/includes/logging/LogEntry.php',
@ -744,17 +771,20 @@ $wgAutoloadLocalClasses = [
'LonelyPagesPage' => __DIR__ . '/includes/specials/SpecialLonelypages.php',
'LongPagesPage' => __DIR__ . '/includes/specials/SpecialLongpages.php',
'MIMEsearchPage' => __DIR__ . '/includes/specials/SpecialMIMEsearch.php',
'MWCallableUpdate' => __DIR__ . '/includes/deferred/CallableUpdate.php',
'MWCallableUpdate' => __DIR__ . '/includes/deferred/MWCallableUpdate.php',
'MWContentSerializationException' => __DIR__ . '/includes/content/ContentHandler.php',
'MWCryptHKDF' => __DIR__ . '/includes/utils/MWCryptHKDF.php',
'MWCryptHash' => __DIR__ . '/includes/utils/MWCryptHash.php',
'MWCryptHash' => __DIR__ . '/includes/libs/MWCryptHash.php',
'MWCryptRand' => __DIR__ . '/includes/utils/MWCryptRand.php',
'MWDebug' => __DIR__ . '/includes/debug/MWDebug.php',
'MWDocGen' => __DIR__ . '/maintenance/mwdocgen.php',
'MWException' => __DIR__ . '/includes/exception/MWException.php',
'MWExceptionHandler' => __DIR__ . '/includes/exception/MWExceptionHandler.php',
'MWGrants' => __DIR__ . '/includes/utils/MWGrants.php',
'MWHttpRequest' => __DIR__ . '/includes/HttpFunctions.php',
'MWExceptionRenderer' => __DIR__ . '/includes/exception/MWExceptionRenderer.php',
'MWFileProps' => __DIR__ . '/includes/utils/MWFileProps.php',
'MWGrants' => __DIR__ . '/includes/MWGrants.php',
'MWHttpRequest' => __DIR__ . '/includes/http/MWHttpRequest.php',
'MWLBFactory' => __DIR__ . '/includes/db/MWLBFactory.php',
'MWMemcached' => __DIR__ . '/includes/compat/MemcachedClientCompat.php',
'MWMessagePack' => __DIR__ . '/includes/libs/MWMessagePack.php',
'MWNamespace' => __DIR__ . '/includes/MWNamespace.php',
@ -768,24 +798,24 @@ $wgAutoloadLocalClasses = [
'MagicWord' => __DIR__ . '/includes/MagicWord.php',
'MagicWordArray' => __DIR__ . '/includes/MagicWordArray.php',
'MailAddress' => __DIR__ . '/includes/mail/MailAddress.php',
'MainConfigDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
'Maintenance' => __DIR__ . '/maintenance/Maintenance.php',
'MaintenanceFormatInstallDoc' => __DIR__ . '/maintenance/formatInstallDoc.php',
'MakeTestEdits' => __DIR__ . '/maintenance/makeTestEdits.php',
'MalformedTitleException' => __DIR__ . '/includes/title/MalformedTitleException.php',
'ManualLogEntry' => __DIR__ . '/includes/logging/LogEntry.php',
'MapCacheLRU' => __DIR__ . '/includes/libs/MapCacheLRU.php',
'MappedDiff' => __DIR__ . '/includes/diff/DairikiDiff.php',
'MappedIterator' => __DIR__ . '/includes/libs/MappedIterator.php',
'MarkpatrolledAction' => __DIR__ . '/includes/actions/MarkpatrolledAction.php',
'McTest' => __DIR__ . '/maintenance/mctest.php',
'MediaHandler' => __DIR__ . '/includes/media/MediaHandler.php',
'MediaHandlerFactory' => __DIR__ . '/includes/media/MediaHandlerFactory.php',
'MediaStatisticsPage' => __DIR__ . '/includes/specials/SpecialMediaStatistics.php',
'MediaTransformError' => __DIR__ . '/includes/media/MediaTransformOutput.php',
'MediaTransformInvalidParametersException' => __DIR__ . '/includes/media/MediaTransformInvalidParametersException.php',
'MediaTransformOutput' => __DIR__ . '/includes/media/MediaTransformOutput.php',
'MediaWiki' => __DIR__ . '/includes/MediaWiki.php',
'MediaWikiI18N' => __DIR__ . '/includes/skins/MediaWikiI18N.php',
'MediaWikiPageLinkRenderer' => __DIR__ . '/includes/title/MediaWikiPageLinkRenderer.php',
'MediaWikiSite' => __DIR__ . '/includes/site/MediaWikiSite.php',
'MediaWikiTitleCodec' => __DIR__ . '/includes/title/MediaWikiTitleCodec.php',
'MediaWikiVersionFetcher' => __DIR__ . '/includes/MediaWikiVersionFetcher.php',
@ -824,8 +854,14 @@ $wgAutoloadLocalClasses = [
'MediaWiki\\Auth\\Throttler' => __DIR__ . '/includes/auth/Throttler.php',
'MediaWiki\\Auth\\UserDataAuthenticationRequest' => __DIR__ . '/includes/auth/UserDataAuthenticationRequest.php',
'MediaWiki\\Auth\\UsernameAuthenticationRequest' => __DIR__ . '/includes/auth/UsernameAuthenticationRequest.php',
'MediaWiki\\Diff\\ComplexityException' => __DIR__ . '/includes/diff/ComplexityException.php',
'MediaWiki\\Diff\\WordAccumulator' => __DIR__ . '/includes/diff/WordAccumulator.php',
'MediaWiki\\Interwiki\\ClassicInterwikiLookup' => __DIR__ . '/includes/interwiki/ClassicInterwikiLookup.php',
'MediaWiki\\Interwiki\\InterwikiLookup' => __DIR__ . '/includes/interwiki/InterwikiLookup.php',
'MediaWiki\\Languages\\Data\\Names' => __DIR__ . '/languages/data/Names.php',
'MediaWiki\\Languages\\Data\\ZhConversion' => __DIR__ . '/languages/data/ZhConversion.php',
'MediaWiki\\Linker\\LinkRenderer' => __DIR__ . '/includes/linker/LinkRenderer.php',
'MediaWiki\\Linker\\LinkRendererFactory' => __DIR__ . '/includes/linker/LinkRendererFactory.php',
'MediaWiki\\Linker\\LinkTarget' => __DIR__ . '/includes/linker/LinkTarget.php',
'MediaWiki\\Logger\\LegacyLogger' => __DIR__ . '/includes/debug/logger/LegacyLogger.php',
'MediaWiki\\Logger\\LegacySpi' => __DIR__ . '/includes/debug/logger/LegacySpi.php',
@ -842,7 +878,15 @@ $wgAutoloadLocalClasses = [
'MediaWiki\\Logger\\NullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php',
'MediaWiki\\Logger\\Spi' => __DIR__ . '/includes/debug/logger/Spi.php',
'MediaWiki\\MediaWikiServices' => __DIR__ . '/includes/MediaWikiServices.php',
'MediaWiki\\Services\\ServiceContainer' => __DIR__ . '/includes/Services/ServiceContainer.php',
'MediaWiki\\Search\\ParserOutputSearchDataExtractor' => __DIR__ . '/includes/search/ParserOutputSearchDataExtractor.php',
'MediaWiki\\Services\\CannotReplaceActiveServiceException' => __DIR__ . '/includes/services/CannotReplaceActiveServiceException.php',
'MediaWiki\\Services\\ContainerDisabledException' => __DIR__ . '/includes/services/ContainerDisabledException.php',
'MediaWiki\\Services\\DestructibleService' => __DIR__ . '/includes/services/DestructibleService.php',
'MediaWiki\\Services\\NoSuchServiceException' => __DIR__ . '/includes/services/NoSuchServiceException.php',
'MediaWiki\\Services\\SalvageableService' => __DIR__ . '/includes/services/SalvageableService.php',
'MediaWiki\\Services\\ServiceAlreadyDefinedException' => __DIR__ . '/includes/services/ServiceAlreadyDefinedException.php',
'MediaWiki\\Services\\ServiceContainer' => __DIR__ . '/includes/services/ServiceContainer.php',
'MediaWiki\\Services\\ServiceDisabledException' => __DIR__ . '/includes/services/ServiceDisabledException.php',
'MediaWiki\\Session\\BotPasswordSessionProvider' => __DIR__ . '/includes/session/BotPasswordSessionProvider.php',
'MediaWiki\\Session\\CookieSessionProvider' => __DIR__ . '/includes/session/CookieSessionProvider.php',
'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' => __DIR__ . '/includes/session/ImmutableSessionProviderWithCookie.php',
@ -859,7 +903,14 @@ $wgAutoloadLocalClasses = [
'MediaWiki\\Session\\Token' => __DIR__ . '/includes/session/Token.php',
'MediaWiki\\Session\\UserInfo' => __DIR__ . '/includes/session/UserInfo.php',
'MediaWiki\\Site\\MediaWikiPageNameNormalizer' => __DIR__ . '/includes/site/MediaWikiPageNameNormalizer.php',
'MediaWiki\\Tidy\\BalanceActiveFormattingElements' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\BalanceElement' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\BalanceMarker' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\BalanceSets' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\BalanceStack' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\Balancer' => __DIR__ . '/includes/tidy/Balancer.php',
'MediaWiki\\Tidy\\Html5Depurate' => __DIR__ . '/includes/tidy/Html5Depurate.php',
'MediaWiki\\Tidy\\Html5Internal' => __DIR__ . '/includes/tidy/Html5Internal.php',
'MediaWiki\\Tidy\\RaggettBase' => __DIR__ . '/includes/tidy/RaggettBase.php',
'MediaWiki\\Tidy\\RaggettExternal' => __DIR__ . '/includes/tidy/RaggettExternal.php',
'MediaWiki\\Tidy\\RaggettInternalHHVM' => __DIR__ . '/includes/tidy/RaggettInternalHHVM.php',
@ -868,18 +919,19 @@ $wgAutoloadLocalClasses = [
'MediaWiki\\Tidy\\TidyDriverBase' => __DIR__ . '/includes/tidy/TidyDriverBase.php',
'MediaWiki\\Widget\\ComplexNamespaceInputWidget' => __DIR__ . '/includes/widget/ComplexNamespaceInputWidget.php',
'MediaWiki\\Widget\\ComplexTitleInputWidget' => __DIR__ . '/includes/widget/ComplexTitleInputWidget.php',
'MediaWiki\\Widget\\DateTimeInputWidget' => __DIR__ . '/includes/widget/DateTimeInputWidget.php',
'MediaWiki\\Widget\\NamespaceInputWidget' => __DIR__ . '/includes/widget/NamespaceInputWidget.php',
'MediaWiki\\Widget\\SearchInputWidget' => __DIR__ . '/includes/widget/SearchInputWidget.php',
'MediaWiki\\Widget\\TitleInputWidget' => __DIR__ . '/includes/widget/TitleInputWidget.php',
'MediaWiki\\Widget\\UserInputWidget' => __DIR__ . '/includes/widget/UserInputWidget.php',
'MemCachedClientforWiki' => __DIR__ . '/includes/compat/MemcachedClientCompat.php',
'MemcLockManager' => __DIR__ . '/includes/filebackend/lockmanager/MemcLockManager.php',
'MemcLockManager' => __DIR__ . '/includes/libs/lockmanager/MemcLockManager.php',
'MemcachedBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedBagOStuff.php',
'MemcachedClient' => __DIR__ . '/includes/libs/objectcache/MemcachedClient.php',
'MemcachedPeclBagOStuff' => __DIR__ . '/includes/objectcache/MemcachedPeclBagOStuff.php',
'MemcachedPeclBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedPeclBagOStuff.php',
'MemcachedPhpBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedPhpBagOStuff.php',
'MemoizedCallable' => __DIR__ . '/includes/libs/MemoizedCallable.php',
'MemoryFileBackend' => __DIR__ . '/includes/filebackend/MemoryFileBackend.php',
'MemoryFileBackend' => __DIR__ . '/includes/libs/filebackend/MemoryFileBackend.php',
'MergeHistory' => __DIR__ . '/includes/MergeHistory.php',
'MergeHistoryPager' => __DIR__ . '/includes/specials/pagers/MergeHistoryPager.php',
'MergeLogFormatter' => __DIR__ . '/includes/logging/MergeLogFormatter.php',
@ -892,6 +944,7 @@ $wgAutoloadLocalClasses = [
'MessageSpecifier' => __DIR__ . '/includes/libs/MessageSpecifier.php',
'MigrateFileRepoLayout' => __DIR__ . '/maintenance/migrateFileRepoLayout.php',
'MigrateUserGroup' => __DIR__ . '/maintenance/migrateUserGroup.php',
'MimeAnalyzer' => __DIR__ . '/includes/libs/mime/MimeAnalyzer.php',
'MimeMagic' => __DIR__ . '/includes/MimeMagic.php',
'MinifyScript' => __DIR__ . '/maintenance/minify.php',
'MostcategoriesPage' => __DIR__ . '/includes/specials/SpecialMostcategories.php',
@ -902,14 +955,14 @@ $wgAutoloadLocalClasses = [
'MostlinkedTemplatesPage' => __DIR__ . '/includes/specials/SpecialMostlinkedtemplates.php',
'MostrevisionsPage' => __DIR__ . '/includes/specials/SpecialMostrevisions.php',
'MoveBatch' => __DIR__ . '/maintenance/moveBatch.php',
'MoveFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'MoveFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/MoveFileOp.php',
'MoveLogFormatter' => __DIR__ . '/includes/logging/MoveLogFormatter.php',
'MovePage' => __DIR__ . '/includes/MovePage.php',
'MovePageForm' => __DIR__ . '/includes/specials/SpecialMovepage.php',
'MssqlBlob' => __DIR__ . '/includes/db/DatabaseMssql.php',
'MssqlField' => __DIR__ . '/includes/db/DatabaseMssql.php',
'MssqlBlob' => __DIR__ . '/includes/libs/rdbms/encasing/MssqlBlob.php',
'MssqlField' => __DIR__ . '/includes/libs/rdbms/field/MssqlField.php',
'MssqlInstaller' => __DIR__ . '/includes/installer/MssqlInstaller.php',
'MssqlResultWrapper' => __DIR__ . '/includes/db/DatabaseMssql.php',
'MssqlResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php',
'MssqlUpdater' => __DIR__ . '/includes/installer/MssqlUpdater.php',
'MultiConfig' => __DIR__ . '/includes/config/MultiConfig.php',
'MultiHttpClient' => __DIR__ . '/includes/libs/MultiHttpClient.php',
@ -917,9 +970,9 @@ $wgAutoloadLocalClasses = [
'MutableConfig' => __DIR__ . '/includes/config/MutableConfig.php',
'MutableContext' => __DIR__ . '/includes/context/MutableContext.php',
'MwSql' => __DIR__ . '/maintenance/sql.php',
'MySQLField' => __DIR__ . '/includes/db/DatabaseMysqlBase.php',
'MySQLMasterPos' => __DIR__ . '/includes/db/DatabaseMysqlBase.php',
'MySqlLockManager' => __DIR__ . '/includes/filebackend/lockmanager/DBLockManager.php',
'MySQLField' => __DIR__ . '/includes/libs/rdbms/field/MySQLField.php',
'MySQLMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/MySQLMasterPos.php',
'MySqlLockManager' => __DIR__ . '/includes/filebackend/lockmanager/MySqlLockManager.php',
'MysqlInstaller' => __DIR__ . '/includes/installer/MysqlInstaller.php',
'MysqlUpdater' => __DIR__ . '/includes/installer/MysqlUpdater.php',
'NaiveForeignTitleFactory' => __DIR__ . '/includes/title/NaiveForeignTitleFactory.php',
@ -931,21 +984,22 @@ $wgAutoloadLocalClasses = [
'NewPagesPager' => __DIR__ . '/includes/specials/pagers/NewPagesPager.php',
'NewUsersLogFormatter' => __DIR__ . '/includes/logging/NewUsersLogFormatter.php',
'NolinesImageGallery' => __DIR__ . '/includes/gallery/NolinesImageGallery.php',
'NotRecursiveIterator' => __DIR__ . '/includes/utils/iterators/NotRecursiveIterator.php',
'NotRecursiveIterator' => __DIR__ . '/includes/libs/iterators/NotRecursiveIterator.php',
'NukeNS' => __DIR__ . '/maintenance/nukeNS.php',
'NukePage' => __DIR__ . '/maintenance/nukePage.php',
'NullFileJournal' => __DIR__ . '/includes/filebackend/filejournal/FileJournal.php',
'NullFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'NullFileJournal' => __DIR__ . '/includes/libs/filebackend/filejournal/NullFileJournal.php',
'NullFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/NullFileOp.php',
'NullIndexField' => __DIR__ . '/includes/search/NullIndexField.php',
'NullJob' => __DIR__ . '/includes/jobqueue/jobs/NullJob.php',
'NullLockManager' => __DIR__ . '/includes/filebackend/lockmanager/LockManager.php',
'NullLockManager' => __DIR__ . '/includes/libs/lockmanager/NullLockManager.php',
'NullRepo' => __DIR__ . '/includes/filerepo/NullRepo.php',
'NullStatsdDataFactory' => __DIR__ . '/includes/libs/stats/NullStatsdDataFactory.php',
'NumericUppercaseCollation' => __DIR__ . '/includes/collation/NumericUppercaseCollation.php',
'OOUIHTMLForm' => __DIR__ . '/includes/htmlform/OOUIHTMLForm.php',
'ORAField' => __DIR__ . '/includes/db/DatabaseOracle.php',
'ORAField' => __DIR__ . '/includes/libs/rdbms/field/ORAField.php',
'ORAResult' => __DIR__ . '/includes/db/DatabaseOracle.php',
'ObjectCache' => __DIR__ . '/includes/objectcache/ObjectCache.php',
'ObjectFactory' => __DIR__ . '/includes/libs/ObjectFactory.php',
'ObjectFileCache' => __DIR__ . '/includes/cache/ObjectFileCache.php',
'OldChangesList' => __DIR__ . '/includes/changes/OldChangesList.php',
'OldLocalFile' => __DIR__ . '/includes/filerepo/file/OldLocalFile.php',
'OracleInstaller' => __DIR__ . '/includes/installer/OracleInstaller.php',
@ -957,7 +1011,6 @@ $wgAutoloadLocalClasses = [
'PNGMetadataExtractor' => __DIR__ . '/includes/media/PNGMetadataExtractor.php',
'PPCustomFrame_DOM' => __DIR__ . '/includes/parser/Preprocessor_DOM.php',
'PPCustomFrame_Hash' => __DIR__ . '/includes/parser/Preprocessor_Hash.php',
'PPDAccum_Hash' => __DIR__ . '/includes/parser/Preprocessor_Hash.php',
'PPDPart' => __DIR__ . '/includes/parser/Preprocessor_DOM.php',
'PPDPart_Hash' => __DIR__ . '/includes/parser/Preprocessor_Hash.php',
'PPDStack' => __DIR__ . '/includes/parser/Preprocessor_DOM.php',
@ -985,7 +1038,6 @@ $wgAutoloadLocalClasses = [
'PageArchive' => __DIR__ . '/includes/specials/SpecialUndelete.php',
'PageExists' => __DIR__ . '/maintenance/pageExists.php',
'PageLangLogFormatter' => __DIR__ . '/includes/logging/PageLangLogFormatter.php',
'PageLinkRenderer' => __DIR__ . '/includes/title/PageLinkRenderer.php',
'PageProps' => __DIR__ . '/includes/PageProps.php',
'PageQueryPage' => __DIR__ . '/includes/specialpage/PageQueryPage.php',
'Pager' => __DIR__ . '/includes/pager/Pager.php',
@ -1007,9 +1059,11 @@ $wgAutoloadLocalClasses = [
'PatrolLog' => __DIR__ . '/includes/logging/PatrolLog.php',
'PatrolLogFormatter' => __DIR__ . '/includes/logging/PatrolLogFormatter.php',
'Pbkdf2Password' => __DIR__ . '/includes/password/Pbkdf2Password.php',
'PerRowAugmentor' => __DIR__ . '/includes/search/PerRowAugmentor.php',
'PermissionsError' => __DIR__ . '/includes/exception/PermissionsError.php',
'PhpHttpRequest' => __DIR__ . '/includes/HttpFunctions.php',
'PhpHttpRequest' => __DIR__ . '/includes/http/PhpHttpRequest.php',
'PhpXmlBugTester' => __DIR__ . '/includes/installer/PhpBugTests.php',
'Pingback' => __DIR__ . '/includes/Pingback.php',
'PoolCounter' => __DIR__ . '/includes/poolcounter/PoolCounter.php',
'PoolCounterRedis' => __DIR__ . '/includes/poolcounter/PoolCounterRedis.php',
'PoolCounterWork' => __DIR__ . '/includes/poolcounter/PoolCounterWork.php',
@ -1027,9 +1081,9 @@ $wgAutoloadLocalClasses = [
'PopulateRecentChangesSource' => __DIR__ . '/maintenance/populateRecentChangesSource.php',
'PopulateRevisionLength' => __DIR__ . '/maintenance/populateRevisionLength.php',
'PopulateRevisionSha1' => __DIR__ . '/maintenance/populateRevisionSha1.php',
'PostgreSqlLockManager' => __DIR__ . '/includes/filebackend/lockmanager/DBLockManager.php',
'PostgresBlob' => __DIR__ . '/includes/db/DatabasePostgres.php',
'PostgresField' => __DIR__ . '/includes/db/DatabasePostgres.php',
'PostgreSqlLockManager' => __DIR__ . '/includes/libs/lockmanager/PostgreSqlLockManager.php',
'PostgresBlob' => __DIR__ . '/includes/libs/rdbms/encasing/PostgresBlob.php',
'PostgresField' => __DIR__ . '/includes/libs/rdbms/field/PostgresField.php',
'PostgresInstaller' => __DIR__ . '/includes/installer/PostgresInstaller.php',
'PostgresUpdater' => __DIR__ . '/includes/installer/PostgresUpdater.php',
'Preferences' => __DIR__ . '/includes/Preferences.php',
@ -1057,25 +1111,28 @@ $wgAutoloadLocalClasses = [
'ProtectedPagesPager' => __DIR__ . '/includes/specials/SpecialProtectedpages.php',
'ProtectedTitlesPager' => __DIR__ . '/includes/specials/pagers/ProtectedTitlesPager.php',
'ProtectionForm' => __DIR__ . '/includes/ProtectionForm.php',
'ProxyLookup' => __DIR__ . '/includes/ProxyLookup.php',
'PruneFileCache' => __DIR__ . '/maintenance/pruneFileCache.php',
'PublishStashedFileJob' => __DIR__ . '/includes/jobqueue/jobs/PublishStashedFileJob.php',
'PurgeAction' => __DIR__ . '/includes/actions/PurgeAction.php',
'PurgeChangedFiles' => __DIR__ . '/maintenance/purgeChangedFiles.php',
'PurgeChangedPages' => __DIR__ . '/maintenance/purgeChangedPages.php',
'PurgeJobUtils' => __DIR__ . '/includes/jobqueue/utils/PurgeJobUtils.php',
'PurgeList' => __DIR__ . '/maintenance/purgeList.php',
'PurgeOldText' => __DIR__ . '/maintenance/purgeOldText.php',
'PurgeParserCache' => __DIR__ . '/maintenance/purgeParserCache.php',
'QueryPage' => __DIR__ . '/includes/specialpage/QueryPage.php',
'QuickTemplate' => __DIR__ . '/includes/skins/QuickTemplate.php',
'QuorumLockManager' => __DIR__ . '/includes/filebackend/lockmanager/QuorumLockManager.php',
'QuorumLockManager' => __DIR__ . '/includes/libs/lockmanager/QuorumLockManager.php',
'RCCacheEntry' => __DIR__ . '/includes/changes/RCCacheEntry.php',
'RCCacheEntryFactory' => __DIR__ . '/includes/changes/RCCacheEntryFactory.php',
'RCDatabaseLogEntry' => __DIR__ . '/includes/logging/LogEntry.php',
'RCFeedEngine' => __DIR__ . '/includes/rcfeed/RCFeedEngine.php',
'RCFeedFormatter' => __DIR__ . '/includes/rcfeed/RCFeedFormatter.php',
'RESTBagOStuff' => __DIR__ . '/includes/libs/objectcache/RESTBagOStuff.php',
'RSSFeed' => __DIR__ . '/includes/Feed.php',
'RandomPage' => __DIR__ . '/includes/specials/SpecialRandompage.php',
'RangeDifference' => __DIR__ . '/includes/diff/WikiDiff3.php',
'RangeDifference' => __DIR__ . '/includes/diff/DiffEngine.php',
'RawAction' => __DIR__ . '/includes/actions/RawAction.php',
'RawMessage' => __DIR__ . '/includes/Message.php',
'ReadOnlyError' => __DIR__ . '/includes/exception/ReadOnlyError.php',
@ -1092,10 +1149,10 @@ $wgAutoloadLocalClasses = [
'RecompressTracked' => __DIR__ . '/maintenance/storage/recompressTracked.php',
'RedirectSpecialArticle' => __DIR__ . '/includes/specialpage/RedirectSpecialPage.php',
'RedirectSpecialPage' => __DIR__ . '/includes/specialpage/RedirectSpecialPage.php',
'RedisBagOStuff' => __DIR__ . '/includes/objectcache/RedisBagOStuff.php',
'RedisConnRef' => __DIR__ . '/includes/clientpool/RedisConnectionPool.php',
'RedisConnectionPool' => __DIR__ . '/includes/clientpool/RedisConnectionPool.php',
'RedisLockManager' => __DIR__ . '/includes/filebackend/lockmanager/RedisLockManager.php',
'RedisBagOStuff' => __DIR__ . '/includes/libs/objectcache/RedisBagOStuff.php',
'RedisConnRef' => __DIR__ . '/includes/libs/redis/RedisConnRef.php',
'RedisConnectionPool' => __DIR__ . '/includes/libs/redis/RedisConnectionPool.php',
'RedisLockManager' => __DIR__ . '/includes/libs/lockmanager/RedisLockManager.php',
'RedisPubSubFeedEngine' => __DIR__ . '/includes/rcfeed/RedisPubSubFeedEngine.php',
'RefreshFileHeaders' => __DIR__ . '/maintenance/refreshFileHeaders.php',
'RefreshImageMetadata' => __DIR__ . '/maintenance/refreshImageMetadata.php',
@ -1115,6 +1172,7 @@ $wgAutoloadLocalClasses = [
'ResetUserTokens' => __DIR__ . '/maintenance/resetUserTokens.php',
'ResourceFileCache' => __DIR__ . '/includes/cache/ResourceFileCache.php',
'ResourceLoader' => __DIR__ . '/includes/resourceloader/ResourceLoader.php',
'ResourceLoaderClientHtml' => __DIR__ . '/includes/resourceloader/ResourceLoaderClientHtml.php',
'ResourceLoaderContext' => __DIR__ . '/includes/resourceloader/ResourceLoaderContext.php',
'ResourceLoaderEditToolbarModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderEditToolbarModule.php',
'ResourceLoaderFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderFileModule.php',
@ -1129,19 +1187,22 @@ $wgAutoloadLocalClasses = [
'ResourceLoaderOOUIImageModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIImageModule.php',
'ResourceLoaderRawFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderRawFileModule.php',
'ResourceLoaderSiteModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSiteModule.php',
'ResourceLoaderSiteStylesModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSiteStylesModule.php',
'ResourceLoaderSkinModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSkinModule.php',
'ResourceLoaderSpecialCharacterDataModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php',
'ResourceLoaderStartUpModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderStartUpModule.php',
'ResourceLoaderUploadDialogModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUploadDialogModule.php',
'ResourceLoaderUserCSSPrefsModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUserCSSPrefsModule.php',
'ResourceLoaderUserDefaultsModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUserDefaultsModule.php',
'ResourceLoaderUserGroupsModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUserGroupsModule.php',
'ResourceLoaderUserModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUserModule.php',
'ResourceLoaderUserOptionsModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUserOptionsModule.php',
'ResourceLoaderUserStylesModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUserStylesModule.php',
'ResourceLoaderUserTokensModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUserTokensModule.php',
'ResourceLoaderWikiModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderWikiModule.php',
'RestbaseVirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/RestbaseVirtualRESTService.php',
'ResultWrapper' => __DIR__ . '/includes/db/DatabaseUtility.php',
'ResultAugmentor' => __DIR__ . '/includes/search/ResultAugmentor.php',
'ResultSetAugmentor' => __DIR__ . '/includes/search/ResultSetAugmentor.php',
'ResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php',
'RevDelArchiveItem' => __DIR__ . '/includes/revisiondelete/RevDelArchiveItem.php',
'RevDelArchiveList' => __DIR__ . '/includes/revisiondelete/RevDelArchiveList.php',
'RevDelArchivedFileItem' => __DIR__ . '/includes/revisiondelete/RevDelArchivedFileItem.php',
@ -1155,6 +1216,7 @@ $wgAutoloadLocalClasses = [
'RevDelLogList' => __DIR__ . '/includes/revisiondelete/RevDelLogList.php',
'RevDelRevisionItem' => __DIR__ . '/includes/revisiondelete/RevDelRevisionItem.php',
'RevDelRevisionList' => __DIR__ . '/includes/revisiondelete/RevDelRevisionList.php',
'ReverseArrayIterator' => __DIR__ . '/includes/libs/ReverseArrayIterator.php',
'ReverseChronologicalPager' => __DIR__ . '/includes/pager/ReverseChronologicalPager.php',
'RevertAction' => __DIR__ . '/includes/actions/RevertAction.php',
'Revision' => __DIR__ . '/includes/Revision.php',
@ -1172,14 +1234,15 @@ $wgAutoloadLocalClasses = [
'RowUpdateGenerator' => __DIR__ . '/includes/utils/RowUpdateGenerator.php',
'RunJobs' => __DIR__ . '/maintenance/runJobs.php',
'RunningStat' => __DIR__ . '/includes/compat/RunningStatCompat.php',
'SQLiteField' => __DIR__ . '/includes/db/DatabaseSqlite.php',
'SQLiteField' => __DIR__ . '/includes/libs/rdbms/field/SQLiteField.php',
'SVGMetadataExtractor' => __DIR__ . '/includes/media/SVGMetadataExtractor.php',
'SVGReader' => __DIR__ . '/includes/media/SVGMetadataExtractor.php',
'SamplingStatsdClient' => __DIR__ . '/includes/libs/SamplingStatsdClient.php',
'SamplingStatsdClient' => __DIR__ . '/includes/libs/stats/SamplingStatsdClient.php',
'Sanitizer' => __DIR__ . '/includes/Sanitizer.php',
'SavepointPostgres' => __DIR__ . '/includes/db/DatabasePostgres.php',
'ScopedCallback' => __DIR__ . '/includes/libs/ScopedCallback.php',
'ScopedLock' => __DIR__ . '/includes/filebackend/lockmanager/ScopedLock.php',
'SavepointPostgres' => __DIR__ . '/includes/libs/rdbms/database/utils/SavepointPostgres.php',
'ScopedCallback' => __DIR__ . '/includes/compat/ScopedCallback.php',
'ScopedLock' => __DIR__ . '/includes/libs/lockmanager/ScopedLock.php',
'SearchApi' => __DIR__ . '/includes/api/SearchApi.php',
'SearchDatabase' => __DIR__ . '/includes/search/SearchDatabase.php',
'SearchDump' => __DIR__ . '/maintenance/dumpIterator.php',
'SearchEngine' => __DIR__ . '/includes/search/SearchEngine.php',
@ -1188,6 +1251,8 @@ $wgAutoloadLocalClasses = [
'SearchEngineFactory' => __DIR__ . '/includes/search/SearchEngineFactory.php',
'SearchExactMatchRescorer' => __DIR__ . '/includes/search/SearchExactMatchRescorer.php',
'SearchHighlighter' => __DIR__ . '/includes/search/SearchHighlighter.php',
'SearchIndexField' => __DIR__ . '/includes/search/SearchIndexField.php',
'SearchIndexFieldDefinition' => __DIR__ . '/includes/search/SearchIndexFieldDefinition.php',
'SearchMssql' => __DIR__ . '/includes/search/SearchMssql.php',
'SearchMySQL' => __DIR__ . '/includes/search/SearchMySQL.php',
'SearchNearMatchResultSet' => __DIR__ . '/includes/search/SearchNearMatchResultSet.php',
@ -1227,6 +1292,7 @@ $wgAutoloadLocalClasses = [
'SkinFallback' => __DIR__ . '/includes/skins/SkinFallback.php',
'SkinFallbackTemplate' => __DIR__ . '/includes/skins/SkinFallbackTemplate.php',
'SkinTemplate' => __DIR__ . '/includes/skins/SkinTemplate.php',
'SlideshowImageGallery' => __DIR__ . '/includes/gallery/SlideshowImageGallery.php',
'SpecialActiveUsers' => __DIR__ . '/includes/specials/SpecialActiveusers.php',
'SpecialAllMessages' => __DIR__ . '/includes/specials/SpecialAllMessages.php',
'SpecialAllMyUploads' => __DIR__ . '/includes/specials/SpecialMyRedirectPages.php',
@ -1328,7 +1394,7 @@ $wgAutoloadLocalClasses = [
'Status' => __DIR__ . '/includes/Status.php',
'StatusValue' => __DIR__ . '/includes/libs/StatusValue.php',
'StorageTypeStats' => __DIR__ . '/maintenance/storage/storageTypeStats.php',
'StoreFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'StoreFileOp' => __DIR__ . '/includes/libs/filebackend/fileop/StoreFileOp.php',
'StreamFile' => __DIR__ . '/includes/StreamFile.php',
'StringPrefixSearch' => __DIR__ . '/includes/PrefixSearch.php',
'StringUtils' => __DIR__ . '/includes/libs/StringUtils.php',
@ -1338,20 +1404,21 @@ $wgAutoloadLocalClasses = [
'SubmitAction' => __DIR__ . '/includes/actions/SubmitAction.php',
'SubpageImportTitleFactory' => __DIR__ . '/includes/title/SubpageImportTitleFactory.php',
'SvgHandler' => __DIR__ . '/includes/media/SVG.php',
'SwiftFileBackend' => __DIR__ . '/includes/filebackend/SwiftFileBackend.php',
'SwiftFileBackendDirList' => __DIR__ . '/includes/filebackend/SwiftFileBackend.php',
'SwiftFileBackendFileList' => __DIR__ . '/includes/filebackend/SwiftFileBackend.php',
'SwiftFileBackendList' => __DIR__ . '/includes/filebackend/SwiftFileBackend.php',
'SwiftFileOpHandle' => __DIR__ . '/includes/filebackend/SwiftFileBackend.php',
'SwiftFileBackend' => __DIR__ . '/includes/libs/filebackend/SwiftFileBackend.php',
'SwiftFileBackendDirList' => __DIR__ . '/includes/libs/filebackend/SwiftFileBackend.php',
'SwiftFileBackendFileList' => __DIR__ . '/includes/libs/filebackend/SwiftFileBackend.php',
'SwiftFileBackendList' => __DIR__ . '/includes/libs/filebackend/SwiftFileBackend.php',
'SwiftFileOpHandle' => __DIR__ . '/includes/libs/filebackend/SwiftFileBackend.php',
'SwiftVirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/SwiftVirtualRESTService.php',
'SyncFileBackend' => __DIR__ . '/maintenance/syncFileBackend.php',
'TableCleanup' => __DIR__ . '/maintenance/cleanupTable.inc',
'TableDiffFormatter' => __DIR__ . '/includes/diff/TableDiffFormatter.php',
'TablePager' => __DIR__ . '/includes/pager/TablePager.php',
'TagLogFormatter' => __DIR__ . '/includes/logging/TagLogFormatter.php',
'TempFSFile' => __DIR__ . '/includes/filebackend/TempFSFile.php',
'TempFSFile' => __DIR__ . '/includes/libs/filebackend/fsfile/TempFSFile.php',
'TempFileRepo' => __DIR__ . '/includes/filerepo/FileRepo.php',
'TemplateParser' => __DIR__ . '/includes/TemplateParser.php',
'TemplatesOnThisPageFormatter' => __DIR__ . '/includes/TemplatesOnThisPageFormatter.php',
'TestFileOpPerformance' => __DIR__ . '/maintenance/fileOpPerfTest.php',
'TextContent' => __DIR__ . '/includes/content/TextContent.php',
'TextContentHandler' => __DIR__ . '/includes/content/TextContentHandler.php',
@ -1363,7 +1430,7 @@ $wgAutoloadLocalClasses = [
'ThumbnailRenderJob' => __DIR__ . '/includes/jobqueue/jobs/ThumbnailRenderJob.php',
'TidyUpBug37714' => __DIR__ . '/maintenance/tidyUpBug37714.php',
'TiffHandler' => __DIR__ . '/includes/media/Tiff.php',
'TimestampException' => __DIR__ . '/includes/exception/TimestampException.php',
'TimestampException' => __DIR__ . '/includes/libs/time/TimestampException.php',
'Timing' => __DIR__ . '/includes/libs/Timing.php',
'Title' => __DIR__ . '/includes/Title.php',
'TitleArray' => __DIR__ . '/includes/TitleArray.php',
@ -1375,7 +1442,7 @@ $wgAutoloadLocalClasses = [
'TitleValue' => __DIR__ . '/includes/title/TitleValue.php',
'TrackBlobs' => __DIR__ . '/maintenance/storage/trackBlobs.php',
'TraditionalImageGallery' => __DIR__ . '/includes/gallery/TraditionalImageGallery.php',
'TransactionProfiler' => __DIR__ . '/includes/profiler/TransactionProfiler.php',
'TransactionProfiler' => __DIR__ . '/includes/libs/rdbms/TransactionProfiler.php',
'TransformParameterError' => __DIR__ . '/includes/media/MediaTransformOutput.php',
'TransformTooBigImageAreaError' => __DIR__ . '/includes/media/MediaTransformOutput.php',
'TransformationalImageHandler' => __DIR__ . '/includes/media/TransformationalImageHandler.php',
@ -1460,6 +1527,7 @@ $wgAutoloadLocalClasses = [
'WantedTemplatesPage' => __DIR__ . '/includes/specials/SpecialWantedtemplates.php',
'WatchAction' => __DIR__ . '/includes/actions/WatchAction.php',
'WatchedItem' => __DIR__ . '/includes/WatchedItem.php',
'WatchedItemQueryService' => __DIR__ . '/includes/WatchedItemQueryService.php',
'WatchedItemStore' => __DIR__ . '/includes/WatchedItemStore.php',
'WatchlistCleanup' => __DIR__ . '/maintenance/cleanupWatchlist.php',
'WebInstaller' => __DIR__ . '/includes/installer/WebInstaller.php',
@ -1486,7 +1554,6 @@ $wgAutoloadLocalClasses = [
'WebRequestUpload' => __DIR__ . '/includes/WebRequestUpload.php',
'WebResponse' => __DIR__ . '/includes/WebResponse.php',
'WikiCategoryPage' => __DIR__ . '/includes/page/WikiCategoryPage.php',
'WikiDiff3' => __DIR__ . '/includes/diff/WikiDiff3.php',
'WikiExporter' => __DIR__ . '/includes/export/WikiExporter.php',
'WikiFilePage' => __DIR__ . '/includes/page/WikiFilePage.php',
'WikiImporter' => __DIR__ . '/includes/import/WikiImporter.php',
@ -1495,24 +1562,26 @@ $wgAutoloadLocalClasses = [
'WikiReference' => __DIR__ . '/includes/WikiMap.php',
'WikiRevision' => __DIR__ . '/includes/import/WikiRevision.php',
'WikiStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'WikiTextStructure' => __DIR__ . '/includes/content/WikiTextStructure.php',
'WikitextContent' => __DIR__ . '/includes/content/WikitextContent.php',
'WikitextContentHandler' => __DIR__ . '/includes/content/WikitextContentHandler.php',
'WinCacheBagOStuff' => __DIR__ . '/includes/libs/objectcache/WinCacheBagOStuff.php',
'WithoutInterwikiPage' => __DIR__ . '/includes/specials/SpecialWithoutinterwiki.php',
'WordLevelDiff' => __DIR__ . '/includes/diff/DairikiDiff.php',
'WordLevelDiff' => __DIR__ . '/includes/diff/WordLevelDiff.php',
'WrapOldPasswords' => __DIR__ . '/maintenance/wrapOldPasswords.php',
'XCFHandler' => __DIR__ . '/includes/media/XCF.php',
'XCacheBagOStuff' => __DIR__ . '/includes/libs/objectcache/XCacheBagOStuff.php',
'XMLRCFeedFormatter' => __DIR__ . '/includes/rcfeed/XMLRCFeedFormatter.php',
'XMPInfo' => __DIR__ . '/includes/media/XMPInfo.php',
'XMPReader' => __DIR__ . '/includes/media/XMP.php',
'XMPValidate' => __DIR__ . '/includes/media/XMPValidate.php',
'XMPInfo' => __DIR__ . '/includes/libs/xmp/XMPInfo.php',
'XMPReader' => __DIR__ . '/includes/libs/xmp/XMP.php',
'XMPValidate' => __DIR__ . '/includes/libs/xmp/XMPValidate.php',
'Xhprof' => __DIR__ . '/includes/libs/Xhprof.php',
'XhprofData' => __DIR__ . '/includes/libs/XhprofData.php',
'Xml' => __DIR__ . '/includes/Xml.php',
'XmlDumpWriter' => __DIR__ . '/includes/export/XmlDumpWriter.php',
'XmlJsCode' => __DIR__ . '/includes/Xml.php',
'XmlSelect' => __DIR__ . '/includes/XmlSelect.php',
'XmlTypeCheck' => __DIR__ . '/includes/libs/XmlTypeCheck.php',
'XmlTypeCheck' => __DIR__ . '/includes/libs/mime/XmlTypeCheck.php',
'ZhConverter' => __DIR__ . '/languages/classes/LanguageZh.php',
'ZipDirectoryReader' => __DIR__ . '/includes/utils/ZipDirectoryReader.php',
'ZipDirectoryReaderError' => __DIR__ . '/includes/utils/ZipDirectoryReader.php',

View File

@ -16,7 +16,7 @@
"wiki": "https://www.mediawiki.org/"
},
"require": {
"composer/semver": "1.4.0",
"composer/semver": "1.4.2",
"cssjanus/cssjanus": "1.1.2",
"ext-ctype": "*",
"ext-iconv": "*",
@ -25,30 +25,33 @@
"ext-xml": "*",
"liuggio/statsd-php-client": "1.0.18",
"mediawiki/at-ease": "1.1.0",
"oojs/oojs-ui": "0.17.1",
"oojs/oojs-ui": "0.17.10",
"oyejorge/less.php": "1.7.0.10",
"php": ">=5.5.9",
"psr/log": "1.0.0",
"wikimedia/assert": "0.2.2",
"wikimedia/base-convert": "1.0.1",
"wikimedia/cdb": "1.3.0",
"wikimedia/cdb": "1.4.1",
"wikimedia/cldr-plural-rule-parser": "1.0.0",
"wikimedia/composer-merge-plugin": "1.3.1",
"wikimedia/html-formatter": "1.0.1",
"wikimedia/ip-set": "1.1.0",
"wikimedia/php-session-serializer": "1.0.3",
"wikimedia/php-session-serializer": "1.0.4",
"wikimedia/relpath": "1.0.3",
"wikimedia/running-stat": "1.1.0",
"wikimedia/utfnormal": "1.0.3",
"wikimedia/wrappedstring": "2.0.0",
"wikimedia/scoped-callback": "1.0.0",
"wikimedia/utfnormal": "1.1.0",
"wikimedia/wait-condition-loop": "1.0.1",
"wikimedia/wrappedstring": "2.2.0",
"zordius/lightncandy": "0.23"
},
"require-dev": {
"composer/spdx-licenses": "1.1.4",
"jakub-onderka/php-parallel-lint": "0.9.2",
"justinrainbow/json-schema": "~1.3",
"justinrainbow/json-schema": "~3.0",
"mediawiki/mediawiki-codesniffer": "0.7.2",
"monolog/monolog": "~1.18.2",
"nikic/php-parser": "1.4.1",
"nikic/php-parser": "2.1.0",
"nmred/kafka-php": "0.1.5",
"phpunit/phpunit": "4.8.24",
"wikimedia/avro": "1.7.7"

View File

@ -4,8 +4,8 @@
The 'docs' directory contain various text files that should help you understand
the most important parts of the code of MediaWiki. More in-depth documentation
can be found at:
https://www.mediawiki.org/wiki/Manual:Code
https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Code
https://www.mediawiki.org/wiki/Special:MyLanguage/Developer_hub
API documentation is automatically generated and updated daily at:
https://doc.wikimedia.org/mediawiki-core/master/php/html/
@ -14,6 +14,6 @@ You can get a fresh version using 'make doc' or mwdocgen.php in the
For end users, most of the documentation is located online at:
https://www.mediawiki.org/wiki/Help:Contents
https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents
Documentation for MediaWiki site administrators is at:
https://www.mediawiki.org/wiki/Manual:Contents
https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents

View File

@ -8,7 +8,7 @@ By Tim Starling, January 2006.
For information about the MediaWiki database layout, such as a
description of the tables and their contents, please see:
https://www.mediawiki.org/wiki/Manual:Database_layout
https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/core.git;a=blob_plain;f=maintenance/tables.sql;hb=HEAD
https://phabricator.wikimedia.org/diffusion/MW/browse/master/maintenance/tables.sql
------------------------------------------------------------------------

View File

@ -1,23 +1,23 @@
This document is intended to provide useful advice for parties seeking to
redistribute MediaWiki to end users. It's targeted particularly at maintainers
redistribute MediaWiki to end users. It's targeted particularly at maintainers
for Linux distributions, since it's been observed that distribution packages of
MediaWiki often break. We've consistently had to recommend that users seeking
MediaWiki often break. We've consistently had to recommend that users seeking
support use official tarballs instead of their distribution's packages, and
this often solves whatever problem the user is having. It would be nice if
this often solves whatever problem the user is having. It would be nice if
this could change.
== Background: why web applications are different ==
MediaWiki is intended to be usable on any web host that provides support for
PHP and a database. Many users of low-end shared hosting have very limited
PHP and a database. Many users of low-end shared hosting have very limited
access to their machine: often only FTP access to some subdirectory of the web
root. Support for these users entails several restrictions, such as:
root. Support for these users entails several restrictions, such as:
1) We cannot require installation of any files outside the web root. Few of
1) We cannot require installation of any files outside the web root. Few of
our users have access to directories like /usr or /etc.
2) We cannot require the ability to run any utility on the command line.
Many shared hosts have exec() and similar PHP functions disabled.
3) We cannot assume that the software has write access anywhere useful. The
3) We cannot assume that the software has write access anywhere useful. The
user account that MediaWiki (including its installer) runs under is often
different from the account the user used to upload the files, and we might be
restricted by PHP settings such as safe mode or open_basedir.
@ -30,28 +30,28 @@ root. Support for these users entails several restrictions, such as:
Since anything that works on cheap shared hosting will work if you have shell
or root access too, MediaWiki's design is based around catering to the lowest
common denominator. Although we support higher-end setups as well (like
common denominator. Although we support higher-end setups as well (like
Wikipedia!), the way many things work by default is tailored toward shared
hosting. These defaults are unconventional from the point of view of normal
hosting. These defaults are unconventional from the point of view of normal
(non-web) applications -- they might conflict with distributors' policies, and
they certainly aren't ideal for someone who's installing MediaWiki as root.
== Directory structure ==
Because of constraint (1) above, MediaWiki does not conform to normal
Unix filesystem layout. Hopefully we'll offer direct support for standard
Unix filesystem layout. Hopefully we'll offer direct support for standard
layouts in the future, but for now *any change to the location of files is
unsupported*. Moving things and leaving symlinks will *probably* not break
unsupported*. Moving things and leaving symlinks will *probably* not break
anything, but it is *strongly* advised not to try any more intrusive changes to
get MediaWiki to conform more closely to your filesystem hierarchy. Any such
get MediaWiki to conform more closely to your filesystem hierarchy. Any such
attempt will almost certainly result in unnecessary bugs.
The standard recommended location to install MediaWiki, relative to the web
root, is /w (so, e.g., /var/www/w). Rewrite rules can then be used to enable
"pretty URLs" like /wiki/Article instead of /w/index.php?title=Article. (This
root, is /w (so, e.g., /var/www/w). Rewrite rules can then be used to enable
"pretty URLs" like /wiki/Article instead of /w/index.php?title=Article. (This
is the convention Wikipedia uses.) In theory, it should be possible to enable
the appropriate rewrite rules by default, if you can reconfigure the web
server, but you'd need to alter LocalSettings.php too. See
server, but you'd need to alter LocalSettings.php too. See
<https://www.mediawiki.org/wiki/Manual:Short_URL> for details on short URLs.
If you really must mess around with the directory structure, note that the
@ -59,37 +59,38 @@ following files *must* all be web-accessible for MediaWiki to function
correctly:
* api.php, img_auth.php, index.php, load.php, opensearch_desc.php, thumb.php,
profileinfo.php, redirect.php, trackback.php. These are the entry points for
normal usage. This list may be incomplete and is subject to change.
profileinfo.php. These are the entry points for normal usage. This list may be
incomplete and is subject to change.
* mw-config/index.php: Used for web-based installation (sets up the database,
prompts for the name of the wiki, etc.).
* images/: Used for uploaded files. This could be somewhere else if
* images/: Used for uploaded files. This could be somewhere else if
$wgUploadDirectory and $wgUploadPath are changed appropriately.
* skins/*/: Subdirectories of skins/ contain CSS and JavaScript files that
must be accessible to web browsers. The PHP files and Skin.sample in skins/
don't need to be accessible. This could be somewhere else if
must be accessible to web browsers. The PHP files and Skin.sample in skins/
don't need to be accessible. This could be somewhere else if
$wgStyleDirectory and $wgStylePath are changed appropriately.
* extensions/: Many extensions include CSS and JavaScript files in their
extensions directory, and will break if they aren't web-accessible. Some
extensions directory, and will break if they aren't web-accessible. Some
extensions might theoretically provide additional entry points as well, at
least in principle.
But all files should keep their position relative to the web-visible
installation directory no matter what. If you must move includes/ somewhere in
/usr/share, provide a symlink from /var/www/w. If you don't, you *will* break
something. You have been warned.
installation directory no matter what. If you must move includes/ somewhere in
/usr/share, provide a symlink from /var/www/w. If you don't, you *will* break
something. You have been warned.
== Configuration ==
MediaWiki is configured using LocalSettings.php. This is a PHP file that's
MediaWiki is configured using LocalSettings.php. This is a PHP file that's
generated when the user visits mw-config/index.php to install the software, and
which the user can edit by hand thereafter. It's just a plain old PHP file,
and can contain any PHP statements. It usually sets global variables that are
which the user can edit by hand thereafter. It's just a plain old PHP file,
and can contain any PHP statements. It usually sets global variables that are
used for configuration, and includes files used by any extensions.
Distributors can easily add extra statements to the autogenerated
LocalSettings.php by changing mw-config/overrides.php (see that file for details
and examples).
Distributors can easily change the installer behavior, including LocalSettings
generated, by placing their overrides into mw-config/overrides directory. Doing
that is highly preferred to modifying MediaWiki code directly. See
mw-config/overrides/README for more details and examples.
There's a new maintenance/install.php script which could be used for performing
an install through the command line.
@ -98,7 +99,7 @@ Some configuration options that distributors might be in a position to set
intelligently:
* $wgEmergencyContact: An e-mail address that can be used to contact the wiki
administrator. By default, "wikiadmin@ServerName".
administrator. By default, "wikiadmin@ServerName".
* $wgPasswordSender: The e-mail address to use when sending password e-mails.
By default, "MediaWiki Mail <apache@ServerName>".
(with ServerName guessed from the http request)
@ -115,16 +116,16 @@ Any package manager which replaces the files but doesn't update the db is leavin
an inconsistent wiki that may produce blank pages (php errors) when new features
using the changed schema would be used.
Since MediaWiki 1.17 it is possible to upgrade using the installer by providing
Since MediaWiki 1.17 it is possible to upgrade using the web installer by providing
an arbitrary secret value stored as $wgUpgradeKey in LocalSettings (older versions
needed to rename LocalSettings.php in order to upgrade using the installer).
== Documentation ==
MediaWiki's official documentation is split between two places: the source
code, and <https://www.mediawiki.org/>. The source code documentation is written
code, and <https://www.mediawiki.org/>. The source code documentation is written
exclusively by developers, and so is likely to be reliable (at worst,
outdated). However, it can be pretty sparse. mediawiki.org documentation is
outdated). However, it can be pretty sparse. mediawiki.org documentation is
often much more thorough, but it's maintained by a wiki that's open to
anonymous edits, so its quality is sometimes sketchy -- don't assume that
anything there is officially endorsed!
@ -132,31 +133,27 @@ anything there is officially endorsed!
== Upstream ==
MediaWiki is a project hosted and led by the Wikimedia Foundation, the
not-for-profit charity that operates Wikipedia. Wikimedia employs the lead
not-for-profit charity that operates Wikipedia. Wikimedia employs the lead
developer and several other paid developers, but commit access is given out
liberally and there are multiple very active volunteer developers as well. A
liberally and there are multiple very active volunteer developers as well. A
list of developers can be found at <https://www.mediawiki.org/wiki/Developers>.
MediaWiki's bug tracker is at <https://bugzilla.wikimedia.org>. However, most
developers follow the bug tracker little or not at all. The best place to
post if you want to get developers' attention is the wikitech-l mailing list
<https://lists.wikimedia.org/mailman/listinfo/wikitech-l>. Posts to wikitech-l
will inevitably be read by multiple experienced MediaWiki developers. There's
MediaWiki's bug tracker is at <https://phabricator.wikimedia.org>. However, you
might find that the best place to post if you want to get developers' attention
is the wikitech-l mailing list
<https://lists.wikimedia.org/mailman/listinfo/wikitech-l>. Posts to wikitech-l
will inevitably be read by multiple experienced MediaWiki developers. There's
also an active IRC chat at <irc://irc.freenode.net/mediawiki>, where there are
usually several developers at reasonably busy times of day.
Unfortunately, we don't have a very good system for patch review. Patches
should be submitted on Bugzilla (as unified diffs produced with "svn diff"
against the latest trunk revision), but many patches languish without review
until they bitrot into uselessness. You might want to get a developer to
commit to reviewing your patch before you put too much effort into it.
Reasonably straightforward patches shouldn't be too hard to get accepted if
there's an interested developer, however -- posting to Bugzilla and then
dropping a note on wikitech-l if nobody responds is a good tactic.
Our Git repositories are hosted at <https://gerrit.wikimedia.org>, see
<https://www.mediawiki.org/wiki/Gerrit> for more information. Patches should
be submitted there. If you know which developers are best suited to review your
patch, add them to it, otherwise ask on IRC to get better review time.
All redistributors of MediaWiki should be subscribed to mediawiki-announce
<https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce>. It's
extremely low-traffic, with an average of less than one post per month. All
<https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce>. It's
extremely low-traffic, with an average of less than one post per month. All
new releases are announced here, including critical security updates.
== Useful software to install ==
@ -167,41 +164,40 @@ perhaps configure it to use them (see Configuration section of this document):
* APC (Alternative PHP Cache), XCache, or similar: Will greatly speed up the
execution of MediaWiki, and all other PHP applications, at some cost in
memory usage. Will be used automatically for the most part.
* clamav: Can be used for virus scanning of uploaded files. Enable with
memory usage. Will be used automatically for the most part.
* clamav: Can be used for virus scanning of uploaded files. Enable with
"$wgAntivirus = 'clamav';".
* DjVuLibre: Allows processing of DjVu files. To enable this, set
* DjVuLibre: Allows processing of DjVu files. To enable this, set
"$wgDjvuDump = 'djvudump'; $wgDjvuRenderer = 'ddjvu'; $wgDjvuTxt = 'djvutxt';".
* HTML Tidy: Fixes errors in HTML at runtime. Can be enabled with
* HTML Tidy: Fixes errors in HTML at runtime. Can be enabled with
"$wgUseTidy = true;".
* ImageMagick: For resizing images. "$wgUseImageMagick = true;" will enable
it. PHP's GD can also be used, but ImageMagick is preferable.
* Squid: Can provide a drastic speedup and a major cut in resource
consumption, but enabling it may interfere with other applications. It might
be suitable for a separate mediawiki-squid package. For setup details, see:
<https://www.mediawiki.org/wiki/Manual:Squid_caching>
* ImageMagick: For resizing images. "$wgUseImageMagick = true;" will enable
it. PHP's GD can also be used, but ImageMagick is preferable.
* HTTP cache such as Varnish or Squid: can provide a drastic speedup and a
major cut in resource consumption, but enabling it may interfere with other
applications. It might be suitable for a separate package. For setup details, see:
- <https://www.mediawiki.org/wiki/Manual:Varnish_caching>
- <https://www.mediawiki.org/wiki/Manual:Squid_caching>
* rsvg or other SVG rasterizer: ImageMagick can be used for SVG support, but
is not ideal. Wikipedia (as of the time of this writing) uses rsvg. To
is not ideal. Wikipedia (as of the time of this writing) uses rsvg. To
enable, set "$wgSVGConverter = 'rsvg';" (or other as appropriate).
* texvc: Included with MediaWiki. Instructions for compiling and
installing it are in the math/ directory.
MediaWiki uses some standard GNU utilities as well, such as diff and diff3. If
MediaWiki uses some standard GNU utilities as well, such as diff and diff3. If
these are present in /usr/bin or some other reasonable location, they will be
configured automatically on install.
MediaWiki also has a "job queue" that handles background processing. Because
MediaWiki also has a "job queue" that handles background processing. Because
shared hosts often don't provide access to cron, the job queue is run on every
page view by default. This means the background tasks aren't really done in
the background. Busy wikis can set $wgJobRunRate to 0 and run
maintenance/runJobs.php periodically out of cron. Distributors probably
page view by default. This means the background tasks aren't really done in
the background. Busy wikis can set $wgJobRunRate to 0 and run
maintenance/runJobs.php periodically out of cron. Distributors probably
shouldn't set this up as a default, however, since the extra cron job is
unnecessary overhead for a little-used wiki.
== Web server configuration ==
MediaWiki includes several .htaccess files to restrict access to some
directories. If the web server is not configured to support these files, and
directories. If the web server is not configured to support these files, and
the relevant directories haven't been moved someplace inaccessible anyway (e.g.
symlinked in /usr/share with the web server configured to not follow symlinks),
then it might be useful to deny web access to those directories in the web

View File

@ -51,224 +51,7 @@
},
"license-name": {
"type": "string",
"description": "Short identifier for the license under which the extension is released.",
"enum": [
"AFL-1.1",
"AFL-1.2",
"AFL-2.0",
"AFL-2.1",
"AFL-3.0",
"APL-1.0",
"Aladdin",
"ANTLR-PD",
"Apache-1.0",
"Apache-1.1",
"Apache-2.0",
"APSL-1.0",
"APSL-1.1",
"APSL-1.2",
"APSL-2.0",
"Artistic-1.0",
"Artistic-1.0-cl8",
"Artistic-1.0-Perl",
"Artistic-2.0",
"AAL",
"BitTorrent-1.0",
"BitTorrent-1.1",
"BSL-1.0",
"BSD-2-Clause",
"BSD-2-Clause-FreeBSD",
"BSD-2-Clause-NetBSD",
"BSD-3-Clause",
"BSD-3-Clause-Clear",
"BSD-4-Clause",
"BSD-4-Clause-UC",
"CECILL-1.0",
"CECILL-1.1",
"CECILL-2.0",
"CECILL-B",
"CECILL-C",
"ClArtistic",
"CNRI-Python",
"CNRI-Python-GPL-Compatible",
"CPOL-1.02",
"CDDL-1.0",
"CDDL-1.1",
"CPAL-1.0",
"CPL-1.0",
"CATOSL-1.1",
"Condor-1.1",
"CC-BY-1.0",
"CC-BY-2.0",
"CC-BY-2.5",
"CC-BY-3.0",
"CC-BY-ND-1.0",
"CC-BY-ND-2.0",
"CC-BY-ND-2.5",
"CC-BY-ND-3.0",
"CC-BY-NC-1.0",
"CC-BY-NC-2.0",
"CC-BY-NC-2.5",
"CC-BY-NC-3.0",
"CC-BY-NC-ND-1.0",
"CC-BY-NC-ND-2.0",
"CC-BY-NC-ND-2.5",
"CC-BY-NC-ND-3.0",
"CC-BY-NC-SA-1.0",
"CC-BY-NC-SA-2.0",
"CC-BY-NC-SA-2.5",
"CC-BY-NC-SA-3.0",
"CC-BY-SA-1.0",
"CC-BY-SA-2.0",
"CC-BY-SA-2.5",
"CC-BY-SA-3.0",
"CC0-1.0",
"CUA-OPL-1.0",
"D-FSL-1.0",
"WTFPL",
"EPL-1.0",
"eCos-2.0",
"ECL-1.0",
"ECL-2.0",
"EFL-1.0",
"EFL-2.0",
"Entessa",
"ErlPL-1.1",
"EUDatagrid",
"EUPL-1.0",
"EUPL-1.1",
"Fair",
"Frameworx-1.0",
"FTL",
"AGPL-1.0",
"AGPL-3.0",
"GFDL-1.1",
"GFDL-1.2",
"GFDL-1.3",
"GPL-1.0",
"GPL-1.0+",
"GPL-2.0",
"GPL-2.0+",
"GPL-2.0-with-autoconf-exception",
"GPL-2.0-with-bison-exception",
"GPL-2.0-with-classpath-exception",
"GPL-2.0-with-font-exception",
"GPL-2.0-with-GCC-exception",
"GPL-3.0",
"GPL-3.0+",
"GPL-3.0-with-autoconf-exception",
"GPL-3.0-with-GCC-exception",
"LGPL-2.1",
"LGPL-2.1+",
"LGPL-3.0",
"LGPL-3.0+",
"LGPL-2.0",
"LGPL-2.0+",
"gSOAP-1.3b",
"HPND",
"IBM-pibs",
"IPL-1.0",
"Imlib2",
"IJG",
"Intel",
"IPA",
"ISC",
"JSON",
"LPPL-1.3a",
"LPPL-1.0",
"LPPL-1.1",
"LPPL-1.2",
"LPPL-1.3c",
"Libpng",
"LPL-1.02",
"LPL-1.0",
"MS-PL",
"MS-RL",
"MirOS",
"MIT",
"Motosoto",
"MPL-1.0",
"MPL-1.1",
"MPL-2.0",
"MPL-2.0-no-copyleft-exception",
"Multics",
"NASA-1.3",
"Naumen",
"NBPL-1.0",
"NGPL",
"NOSL",
"NPL-1.0",
"NPL-1.1",
"Nokia",
"NPOSL-3.0",
"NTP",
"OCLC-2.0",
"ODbL-1.0",
"PDDL-1.0",
"OGTSL",
"OLDAP-2.2.2",
"OLDAP-1.1",
"OLDAP-1.2",
"OLDAP-1.3",
"OLDAP-1.4",
"OLDAP-2.0",
"OLDAP-2.0.1",
"OLDAP-2.1",
"OLDAP-2.2",
"OLDAP-2.2.1",
"OLDAP-2.3",
"OLDAP-2.4",
"OLDAP-2.5",
"OLDAP-2.6",
"OLDAP-2.7",
"OPL-1.0",
"OSL-1.0",
"OSL-2.0",
"OSL-2.1",
"OSL-3.0",
"OLDAP-2.8",
"OpenSSL",
"PHP-3.0",
"PHP-3.01",
"PostgreSQL",
"Python-2.0",
"QPL-1.0",
"RPSL-1.0",
"RPL-1.1",
"RPL-1.5",
"RHeCos-1.1",
"RSCPL",
"Ruby",
"SAX-PD",
"SGI-B-1.0",
"SGI-B-1.1",
"SGI-B-2.0",
"OFL-1.0",
"OFL-1.1",
"SimPL-2.0",
"Sleepycat",
"SMLNJ",
"SugarCRM-1.1.3",
"SISSL",
"SISSL-1.2",
"SPL-1.0",
"Watcom-1.0",
"NCSA",
"VSL-1.0",
"W3C",
"WXwindows",
"Xnet",
"X11",
"XFree86-1.1",
"YPL-1.0",
"YPL-1.1",
"Zimbra-1.3",
"Zlib",
"ZPL-1.1",
"ZPL-2.0",
"ZPL-2.1",
"Unlicense"
]
"description": "SPDX identifier for the license under which the extension is released."
},
"requires": {
"type": "object",
@ -415,7 +198,11 @@
},
"group": {
"type": "string",
"description": "Group which this module should be loaded together with"
"description": "Group with which this module should be loaded"
},
"deprecated": {
"type": ["object", "boolean"],
"description": "Whether the module is deprecated and usage is discouraged. Either a boolean or an object with key message can be used to customise deprecation message."
},
"position": {
"type": "string",
@ -435,6 +222,52 @@
"items": {
"type": "string"
}
},
"noflip": {
"type": "boolean",
"description": "Whether to skip CSSJanus LTR-to-RTL flipping for this module. Recommended for styles imported from libraries that already properly handle their RTL styles. Default is false, meaning CSSJanus will be applied on RTL-mode output."
}
}
},
{
"description": "A ResourceLoaderWikiModule definition",
"additionalProperties": false,
"properties": {
"class": {
"enum": ["ResourceLoaderWikiModule"]
},
"group": {
"type": "string",
"description": "Group with which this module should be loaded"
},
"position": {
"type": "string",
"description": "Position on the page to load this module at",
"enum": [
"bottom",
"top"
]
},
"targets": {
"type": ["string", "array"],
"description": "ResourceLoader target the module can run on",
"items": {
"type": "string"
}
},
"scripts": {
"type": "array",
"description": "A list of on-wiki pages containing JavaScript that should be loaded",
"items": {
"type": "string"
}
},
"styles": {
"type": "array",
"description": "A list of on-wiki pages containing CSS that should be loaded",
"items": {
"type": "string"
}
}
}
},
@ -500,10 +333,6 @@
"type": "object",
"description": "ResourceLoader LESS variables"
},
"ResourceLoaderLESSImportPaths": {
"type": "object",
"description": "ResourceLoader import paths"
},
"ConfigRegistry": {
"type": "object",
"description": "Registry of factory functions to create Config objects"
@ -535,6 +364,14 @@
"type": "object",
"description": "Central ID lookup providers"
},
"ChangeCredentialsBlacklist": {
"type": "object",
"description": "AuthenticationRequest classes which can only be used internally for credentials change"
},
"RemoveCredentialsBlacklist": {
"type": "object",
"description": "AuthenticationRequest classes which can only be used internally for credentials removal"
},
"namespaces": {
"type": "array",
"description": "Method to add extra namespaces",
@ -579,6 +416,11 @@
"capitallinkoverride": {
"type": "boolean",
"description": "Set $wgCapitalLinks on a per-namespace basis"
},
"conditional": {
"type": "boolean",
"description": "Whether the namespace is conditional upon configuration and should not be registered (requires separate registration via a hook)",
"default": false
}
},
"required": ["id", "constant", "name"]
@ -630,6 +472,29 @@
}
}
},
"GrantPermissions": {
"type": "object",
"description": "Map of permissions granted to authorized consumers to their bundles, called 'grants'",
"patternProperties": {
"^[a-z]+$": {
"type": "object",
"patternProperties": {
"^[a-z]+$": {
"type": "boolean"
}
}
}
}
},
"GrantPermissionGroups": {
"type": "object",
"description": "Map of grants to their UI grouping",
"patternProperties": {
"^[a-z]+$": {
"type": "string"
}
}
},
"ImplicitGroups": {
"type": "array",
"description": "Implicit groups"
@ -805,6 +670,7 @@
"type": "string",
"enum": [
"array_merge_recursive",
"array_replace_recursive",
"array_plus_2d",
"array_plus",
"array_merge"
@ -819,6 +685,10 @@
"type": "array",
"description": "Parser test suite files to be run by parserTests.php when no specific filename is passed to it"
},
"ServiceWiringFiles": {
"type": "array",
"description": "List of service wiring files to be loaded by the default instance of MediaWikiServices"
},
"load_composer_autoloader": {
"type": "boolean",
"description": "Load the composer autoloader for this extension, if one is present"

View File

@ -297,16 +297,6 @@ After a user account is created.
$user: the User object that was created. (Parameter added in 1.7)
$byEmail: true when account was created "by email" (added in 1.12)
'AddNewAccountApiForm': Allow modifying internal login form when creating an
account via API.
$apiModule: the ApiCreateAccount module calling
$loginForm: the LoginForm used
'AddNewAccountApiResult': Modify API output when creating a new account via API.
$apiModule: the ApiCreateAccount module calling
$loginForm: the LoginForm used
&$result: associative array for API result data
'AfterBuildFeedLinks': Executed in OutputPage.php after all feed links (atom, rss,...)
are created. Can be used to omit specific feeds from being outputted. You must not use
this hook to add feeds, use OutputPage::addFeedLink() instead.
@ -371,7 +361,8 @@ $user: Current user
&$message: API usage message to die with, as a message key or array
as accepted by ApiBase::dieUsageMsg.
'APIEditBeforeSave': Before saving a page with api.php?action=edit, after
'APIEditBeforeSave': DEPRECATED! Use EditFilterMergedContent instead.
Before saving a page with api.php?action=edit, after
processing request parameters. Return false to let the request fail, returning
an error message or an <edit result="Failure"> tag if $resultArr was filled.
Unlike for example 'EditFilterMergedContent' this also being run on undo.
@ -443,6 +434,15 @@ an exception is thrown during API action execution.
$apiMain: Calling ApiMain instance.
$e: Exception object.
'ApiMakeParserOptions': Called from ApiParse and ApiExpandTemplates to allow
extensions to adjust the ParserOptions before parsing.
$options: ParserOptions object
$title: Title to be parsed
$params: Parameter array for the API module
$module: API module (which is also a ContextSource)
&$reset: Set to a ScopedCallback used to reset any hooks after the parse is done.
&$suppressCache: Set true if cache should be suppressed.
'ApiOpenSearchSuggest': Called when constructing the OpenSearch results. Hooks
can alter or append to the array.
&$results: array with integer keys to associative arrays. Keys in associative
@ -464,6 +464,41 @@ $moduleManager: ApiModuleManager Module manager instance
action=query submodule. Use this to extend core API modules.
&$module: Module object
'ApiQueryBaseAfterQuery': Called for (some) API query modules after the
database query has returned. An API query module wanting to use this hook
should see the ApiQueryBase::select() and ApiQueryBase::processRow()
documentation.
$module: ApiQueryBase module in question
$result: ResultWrapper|bool returned from the IDatabase::select()
&$hookData: array that was passed to the 'ApiQueryBaseBeforeQuery' hook and
will be passed to the 'ApiQueryBaseProcessRow' hook, intended for inter-hook
communication.
'ApiQueryBaseBeforeQuery': Called for (some) API query modules before a
database query is made. WARNING: It would be very easy to misuse this hook and
break the module! Any joins added *must* join on a unique key of the target
table unless you really know what you're doing. An API query module wanting to
use this hook should see the ApiQueryBase::select() and
ApiQueryBase::processRow() documentation.
$module: ApiQueryBase module in question
&$tables: array of tables to be queried
&$fields: array of columns to select
&$conds: array of WHERE conditionals for query
&$query_options: array of options for the database request
&$join_conds: join conditions for the tables
&$hookData: array that will be passed to the 'ApiQueryBaseAfterQuery' and
'ApiQueryBaseProcessRow' hooks, intended for inter-hook communication.
'ApiQueryBaseProcessRow': Called for (some) API query modules as each row of
the database result is processed. Return false to stop processing the result
set. An API query module wanting to use this hook should see the
ApiQueryBase::select() and ApiQueryBase::processRow() documentation.
$module: ApiQueryBase module in question
$row: stdClass Database result row
&$data: array to be included in the ApiResult.
&$hookData: array that was be passed to the 'ApiQueryBaseBeforeQuery' and
'ApiQueryBaseAfterQuery' hooks, intended for inter-hook communication.
'APIQueryGeneratorAfterExecute': After calling the executeGenerator() method of
an action=query submodule. Use this to extend core API modules.
&$module: Module object
@ -596,8 +631,9 @@ $outputPage: OutputPage that can be used to append the output.
&$user: the user that deleted the article
$reason: the reason the article was deleted
$id: id of the article that was deleted
$content: the Content of the deleted page
$content: the Content of the deleted page (or null, when deleting a broken page)
$logEntry: the ManualLogEntry used to record the deletion
$archivedRevisionCount: the number of revisions archived during the deletion
'ArticleEditUpdateNewTalk': Before updating user_newtalk when a user talk page
was changed.
@ -673,6 +709,10 @@ $oldPageID: the page ID of the revision when archived (may be null)
revisions of an article.
$title: Title object of the article
$ids: Ids to set the visibility for
$visibilityChangeMap: Map of revision id to oldBits and newBits. This array can be
examined to determine exactly what visibility bits have changed for each
revision. This array is of the form
[id => ['oldBits' => $oldBits, 'newBits' => $newBits], ... ]
'ArticleRollbackComplete': After an article rollback is completed.
$wikiPage: the WikiPage that was edited
@ -889,6 +929,7 @@ $image: File
'BlockIpComplete': After an IP address or user is blocked.
$block: the Block object that was saved
$user: the user who did the block (not the one being blocked)
$priorBlock: the Block object for the prior block or null if there was none
'BookInformation': Before information output on Special:Booksources.
$isbn: ISBN to show information for
@ -919,6 +960,7 @@ $wikiPage: WikiPage that was added
'CategoryAfterPageRemoved': After a page is removed from a category.
$category: Category that page was removed from
$wikiPage: WikiPage that was removed
$id: the page ID (original ID in case of page deletions)
'CategoryPageView': Before viewing a categorypage in CategoryPage::view.
&$catpage: CategoryPage instance
@ -1012,6 +1054,18 @@ $user: user initiating the action
uses are in active use.
&$tags: list of all active tags. Append to this array.
'ChangeTagsAfterUpdateTags': Called after tags have been updated with the
ChangeTags::updateTags function. Params:
$addedTags: tags effectively added in the update
$removedTags: tags effectively removed in the update
$prevTags: tags that were present prior to the update
$rc_id: recentchanges table id
$rev_id: revision table id
$log_id: logging table id
$params: tag params
$rc: RecentChange being tagged when the tagging accompanies the action or null
$user: User who performed the tagging when the tagging is subsequent to the action or null
'Collation::factory': Called if $wgCategoryCollation is an unknown collation.
$collationName: Name of the collation in question
&$collationObject: Null. Replace with a subclass of the Collation class that
@ -1087,6 +1141,9 @@ $row: the DB row for this line
$id: User identifier
$title: User page title
&$tools: Array of tool links
$specialPage: SpecialPage instance for context and services. Can be either
SpecialContributions or DeletedContributionsPage. Extensions should type
hint against a generic SpecialPage though.
'ConvertContent': Called by AbstractContent::convert when a conversion to
another content model is requested.
@ -1125,6 +1182,85 @@ $page: SpecialPage object for DeletedContributions
$row: the DB row for this line
&$classes: the classes to add to the surrounding <li>
'DifferenceEngineMarkPatrolledLink': Allows extensions to change the "mark as patrolled" link
which is shown both on the diff header as well as on the bottom of a page, usually
wrapped in a span element which has class="patrollink".
$differenceEngine: DifferenceEngine object
&$markAsPatrolledLink: The "mark as patrolled" link HTML (string)
$rcid: Recent change ID (rc_id) for this change (int)
$token: Patrol token; $rcid is used in generating this variable
'DifferenceEngineMarkPatrolledRCID': Allows extensions to possibly change the rcid parameter.
For example the rcid might be set to zero due to the user being the same as the
performer of the change but an extension might still want to show it under certain
conditions.
&$rcid: rc_id (int) of the change or 0
$differenceEngine: DifferenceEngine object
$change: RecentChange object
$user: User object representing the current user
'DifferenceEngineNewHeader': Allows extensions to change the $newHeader variable, which
contains information about the new revision, such as the revision's author, whether
the revision was marked as a minor edit or not, etc.
$differenceEngine: DifferenceEngine object
&$newHeader: The string containing the various #mw-diff-otitle[1-5] divs, which
include things like revision author info, revision comment, RevisionDelete link and more
$formattedRevisionTools: Array containing revision tools, some of which may have
been injected with the DiffRevisionTools hook
$nextlink: String containing the link to the next revision (if any); also included in $newHeader
$rollback: Rollback link (string) to roll this revision back to the previous one, if any
$newminor: String indicating if the new revision was marked as a minor edit
$diffOnly: Boolean parameter passed to DifferenceEngine#showDiffPage, indicating
whether we should show just the diff; passed in as a query string parameter to the
various URLs constructed here (i.e. $nextlink)
$rdel: RevisionDelete link for the new revision, if the current user is allowed
to use the RevisionDelete feature
$unhide: Boolean parameter indicating whether to show RevisionDeleted revisions
'DifferenceEngineOldHeader': Allows extensions to change the $oldHeader variable, which
contains information about the old revision, such as the revision's author, whether
the revision was marked as a minor edit or not, etc.
$differenceEngine: DifferenceEngine object
&$oldHeader: The string containing the various #mw-diff-otitle[1-5] divs, which
include things like revision author info, revision comment, RevisionDelete link and more
$prevlink: String containing the link to the previous revision (if any); also included in $oldHeader
$oldminor: String indicating if the old revision was marked as a minor edit
$diffOnly: Boolean parameter passed to DifferenceEngine#showDiffPage, indicating
whether we should show just the diff; passed in as a query string parameter to the
various URLs constructed here (i.e. $prevlink)
$ldel: RevisionDelete link for the old revision, if the current user is allowed
to use the RevisionDelete feature
$unhide: Boolean parameter indicating whether to show RevisionDeleted revisions
'DifferenceEngineOldHeaderNoOldRev': Change the $oldHeader variable in cases when
there is no old revision
&$oldHeader: empty string by default
'DifferenceEngineRenderRevisionAddParserOutput': Allows extensions to change the parser output.
Return false to not add parser output via OutputPage's addParserOutput method.
$differenceEngine: DifferenceEngine object
$out: OutputPage object
$parserOutput: ParserOutput object
$wikiPage: WikiPage object
'DifferenceEngineRenderRevisionShowFinalPatrolLink': An extension can hook into this hook
point and return false to not show the final "mark as patrolled" link on the bottom
of a page.
This hook has no arguments.
'DifferenceEngineShowDiff': Allows extensions to affect the diff text which
eventually gets sent to the OutputPage object.
$differenceEngine: DifferenceEngine object
'DifferenceEngineShowEmptyOldContent': Allows extensions to change the diff table
body (without header) in cases when there is no old revision or the old and new
revisions are identical.
$differenceEngine: DifferenceEngine object
'DifferenceEngineShowDiffPage': Add additional output via the available OutputPage
object into the diff view
$out: OutputPage object
'DiffRevisionTools': Override or extend the revision tools available from the
diff view, i.e. undo, etc.
$newRev: Revision object of the "new" revision
@ -1350,6 +1486,7 @@ $changesList: EnhancedChangesList object
&$data: An array with all the components that will be joined in order to create the line
$block: An array of RecentChange objects in that block
$rc: The RecentChange object for this line
&$classes: An array of classes to change
'EnhancedChangesListModifyBlockLineData': to alter data used to build
a non-grouped recent change line in EnhancedChangesList.
@ -1787,7 +1924,8 @@ $title: The page's Title.
$out: The output page.
$cssClassName: CSS class name of the language selector.
'LinkBegin': Used when generating internal and interwiki links in
'LinkBegin': DEPRECATED! Use HtmlPageLinkRendererBegin instead.
Used when generating internal and interwiki links in
Linker::link(), before processing starts. Return false to skip default
processing and return $ret. See documentation for Linker::link() for details on
the expected meanings of parameters.
@ -1804,7 +1942,8 @@ $target: the Title that the link is pointing to
&$options: array of options. Can include 'known', 'broken', 'noclasses'.
&$ret: the value to return if your hook returns false.
'LinkEnd': Used when generating internal and interwiki links in Linker::link(),
'LinkEnd': DEPRECATED! Use HtmlPageLinkRendererEnd hook instead
Used when generating internal and interwiki links in Linker::link(),
just before the function returns a value. If you return true, an <a> element
with HTML attributes $attribs and contents $html will be returned. If you
return false, $ret will be returned.
@ -1839,6 +1978,36 @@ $file: the File object or false if broken link
&$attribs: the attributes to be applied
&$ret: the value to return if your hook returns false
'HtmlPageLinkRendererBegin':
Used when generating internal and interwiki links in
LinkRenderer, before processing starts. Return false to skip default
processing and return $ret.
$linkRenderer: the LinkRenderer object
$target: the LinkTarget that the link is pointing to
&$text: the contents that the <a> tag should have; either a plain, unescaped
string or a HtmlArmor object; null means "default".
&$customAttribs: the HTML attributes that the <a> tag should have, in
associative array form, with keys and values unescaped. Should be merged
with default values, with a value of false meaning to suppress the
attribute.
&$query: the query string to add to the generated URL (the bit after the "?"),
in associative array form, with keys and values unescaped.
&$ret: the value to return if your hook returns false.
'HtmlPageLinkRendererEnd':
Used when generating internal and interwiki links in LinkRenderer,
just before the function returns a value. If you return true, an <a> element
with HTML attributes $attribs and contents $html will be returned. If you
return false, $ret will be returned.
$linkRenderer: the LinkRenderer object
$target: the LinkTarget object that the link is pointing to
$isKnown: boolean indicating whether the page is known or not
&$text: the contents that the <a> tag should have; either a plain, unescaped
string or a HtmlArmor object.
&$attribs: the final HTML attributes of the <a> tag, after processing, in
associative array form.
&$ret: the value to return if your hook returns false.
'LinksUpdate': At the beginning of LinksUpdate::doUpdate() just before the
actual update.
&$linksUpdate: the LinksUpdate object
@ -1852,6 +2021,7 @@ $insertions: an array of links to insert
'LinksUpdateComplete': At the end of LinksUpdate::doUpdate() when updating,
including delete and insert, has completed for all link tables
&$linksUpdate: the LinksUpdate object
$ticket: prior result of LBFactory::getEmptyTransactionTicket()
'LinksUpdateConstructed': At the end of LinksUpdate() is construction.
&$linksUpdate: the LinksUpdate object
@ -1938,13 +2108,6 @@ $e: The exception (in case of a plain old PHP error, a wrapping ErrorException)
$suppressed: true if the error was suppressed via
error_reporting()/wfSuppressWarnings()
'LoginAuthenticateAudit': A login attempt for a valid user account either
succeeded or failed. No return data is accepted; this hook is for auditing only.
$user: the User object being authenticated against
$password: the password being submitted and found wanting
$retval: a LoginForm class constant with authenticateUserData() return
value (SUCCESS, WRONG_PASS, etc.).
'LoginFormValidErrorMessages': Called in LoginForm when a function gets valid
error messages. Allows to add additional error messages (except messages already
in LoginForm::$validErrorMessages).
@ -2019,9 +2182,10 @@ $user: $wgUser
$request: $wgRequest
$mediaWiki: The $mediawiki object
'MediaWikiServices': Override services in the default MediaWikiServices instance.
Extensions may use this to define, replace, or wrap existing services.
However, the preferred way to define a new service is the $wgServiceWiringFiles array.
'MediaWikiServices': Called when a global MediaWikiServices instance is
initialized. Extensions may use this to define, replace, or wrap services.
However, the preferred way to define a new service is
the $wgServiceWiringFiles array.
$services: MediaWikiServices
'MessageCache::get': When fetching a message. Can be used to override the key
@ -2149,6 +2313,7 @@ $sk: The Skin that called OutputPage::headElement
since the last visit.
&$modifiedTimes: array of timestamps.
The following keys are set: page, user, epoch
$out: OutputPage object (since 1.28)
'OutputPageMakeCategoryLinks': Links are about to be generated for the page's
categories. Implementations should return false if they generate the category
@ -2310,24 +2475,12 @@ cache or return false to not use it.
&$parser: Parser object
&$varCache: variable cache (array)
'ParserLimitReport': DEPRECATED! Use ParserLimitReportPrepare and
ParserLimitReportFormat instead.
'ParserLimitReport': DEPRECATED! Use ParserLimitReportPrepare instead.
Called at the end of Parser:parse() when the parser will
include comments about size of the text parsed.
$parser: Parser object
&$limitReport: text that will be included (without comment tags)
'ParserLimitReportFormat': Called for each row in the parser limit report that
needs formatting. If nothing handles this hook, the default is to use "$key" to
get the label, and "$key-value" or "$key-value-text"/"$key-value-html" to
format the value.
$key: Key for the limit report item (string)
&$value: Value of the limit report item
&$report: String onto which to append the data
$isHTML: If true, $report is an HTML table with two columns; if false, it's
text intended for display in a monospaced font.
$localize: If false, $report should be output in English.
'ParserLimitReportPrepare': Called at the end of Parser:parse() when the parser
will include comments about size of the text parsed. Hooks should use
$output->setLimitReportData() to populate data. Functions for this hook should
@ -2369,6 +2522,8 @@ that tests continue to run properly.
$page: the WikiPage of the candidate edit
$content: the Content object of the candidate edit
$output: the ParserOutput result of the candidate edit
$summary: the change summary of the candidate edit
$user: the User considering the edit
'PasswordPoliciesForUser': Alter the effective password policy for a user.
$user: User object whose policy you are modifying
@ -2580,6 +2735,25 @@ search results.
$title: Current Title object being displayed in search results.
&$id: Revision ID (default is false, for latest)
'SearchIndexFields': Add fields to search index mapping.
&$fields: Array of fields, all implement SearchIndexField
$engine: SearchEngine instance for which mapping is being built.
'SearchDataForIndex': Add data to search document. Allows to add any data to
the field map used to index the document.
&$fields: Array of name => value pairs for fields
$handler: ContentHandler for the content being indexed
$page: WikiPage that is being indexed
$output: ParserOutput that is produced from the page
$engine: SearchEngine for which the indexing is intended
'SearchResultsAugment': Allows extension to add its code to the list of search
result augmentors.
&$setAugmentors: List of whole-set augmentor objects, must implement ResultSetAugmentor
&$rowAugmentors: List of per-row augmentor objects, must implement ResultAugmentor.
Note that lists should be in the format name => object and the names in both lists should
be distinct.
'SecondaryDataUpdates': Allows modification of the list of DataUpdates to
perform when page content is modified. Currently called by
AbstractContent::getSecondaryDataUpdates.
@ -2830,6 +3004,12 @@ $id: User id number, only provided for backwards-compatibility
$user: User object representing user contributions are being fetched for
$sp: SpecialPage instance, providing context
'SpecialContributions::formatRow::flags': Called before rendering a
Special:Contributions row.
$context: IContextSource object
$row: Revision information from the database
&$flags: List of flags on this row
'SpecialContributions::getForm::filters': Called with a list of filters to render
on Special:Contributions.
$sp: SpecialContributions object, for context
@ -2960,9 +3140,9 @@ $t: title object searched for
canceled and a normal search will be performed. Returning true without setting
$url does a standard redirect to $title. Setting $url redirects to the
specified URL.
$term - The string the user searched for
$title - The title the 'go' feature has decided to forward the user to
&$url - Initially null, hook subscribers can set this to specify the final url to redirect to
$term: The string the user searched for
$title: The title the 'go' feature has decided to forward the user to
&$url: Initially null, hook subscribers can set this to specify the final url to redirect to
'SpecialSearchNogomatch': Called when user clicked the "Go" button but the
target doesn't exist.
@ -3232,8 +3412,20 @@ added to the descriptor
&$radio: Boolean, if source type should be shown as radio button
$selectedSourceType: The selected source type
'UploadVerification': Additional chances to reject an uploaded file. Consider
using UploadVerifyFile instead.
'UploadStashFile': Before a file is stashed (uploaded to stash).
Note that code which has not been updated for MediaWiki 1.28 may not call this
hook. If your extension absolutely, positively must prevent some files from
being uploaded, use UploadVerifyFile or UploadVerifyUpload.
$upload: (object) An instance of UploadBase, with all info about the upload
$user: (object) An instance of User, the user uploading this file
$props: (array) File properties, as returned by FSFile::getPropsFromPath()
&$error: output: If the file stashing should be prevented, set this to the reason
in the form of array( messagename, param1, param2, ... ) or a MessageSpecifier
instance (you might want to use ApiMessage to provide machine-readable details
for the API).
'UploadVerification': DEPRECATED! Use UploadVerifyFile instead.
Additional chances to reject an uploaded file.
$saveName: (string) destination file name
$tempName: (string) filesystem path to the temporary file for checks
&$error: (string) output: message key for message to show if upload canceled by
@ -3245,9 +3437,27 @@ in most cases over UploadVerification.
$upload: (object) an instance of UploadBase, with all info about the upload
$mime: (string) The uploaded file's MIME type, as detected by MediaWiki.
Handlers will typically only apply for specific MIME types.
&$error: (object) output: true if the file is valid. Otherwise, an indexed array
representing the problem with the file, where the first element is the message
key and the remaining elements are used as parameters to the message.
&$error: (object) output: true if the file is valid. Otherwise, set this to the reason
in the form of array( messagename, param1, param2, ... ) or a MessageSpecifier
instance (you might want to use ApiMessage to provide machine-readable details
for the API).
'UploadVerifyUpload': Upload verification, based on both file properties like
MIME type (same as UploadVerifyFile) and the information entered by the user
(upload comment, file page contents etc.).
$upload: (object) An instance of UploadBase, with all info about the upload
$user: (object) An instance of User, the user uploading this file
$props: (array) File properties, as returned by FSFile::getPropsFromPath()
$comment: (string) Upload log comment (also used as edit summary)
$pageText: (string) File description page text (only used for new uploads)
&$error: output: If the file upload should be prevented, set this to the reason
in the form of array( messagename, param1, param2, ... ) or a MessageSpecifier
instance (you might want to use ApiMessage to provide machine-readable details
for the API).
'UserIsBot': when determining whether a user is a bot account
$user: the user
&$isBot: whether this is user a bot or not (boolean)
'User::mailPasswordInternal': before creation and mailing of a user's new
temporary password
@ -3391,6 +3601,9 @@ $user: User object for the logged-in user
For functionality that needs to run after any login (API or web) use UserLoggedIn.
&$user: the user object that was created on login
&$inject_html: Any HTML to inject after the "logged in" message.
$direct: (bool) The hook is called directly after a successful login. This will only happen once
per login. A UserLoginComplete call with direct=false can happen when the user visits the login
page while already logged in.
'UserLoginForm': DEPRECATED! Create an AuthenticationProvider instead.
Manipulate the login form.
@ -3492,6 +3705,16 @@ $userId: User id of the current user
$userText: User name of the current user
&$items: Array of user tool links as HTML fragments
'UsersPagerDoBatchLookups': Called in UsersPager::doBatchLookups() to give
extensions providing user group data from an alternate source a chance to add
their data into the cache array so that things like global user groups are
displayed correctly in Special:ListUsers.
$dbr: Read-only database handle
$userIds: Array of user IDs whose groups we should look up
&$cache: Array of user ID -> internal user group name (e.g. 'sysop') mappings
&$groups: Array of group name -> bool true mappings for members of a given user
group
'ValidateExtendedMetadataCache': Called to validate the cached metadata in
FormatMetadata::getExtendedMeta (return false means cache will be
invalidated and GetExtendedMetadata hook called again).
@ -3564,9 +3787,14 @@ a page is deleted. Called in WikiPage::getDeletionUpdates(). Note that updates
specific to a content model should be provided by the respective Content's
getDeletionUpdates() method.
$page: the WikiPage
$content: the Content to generate updates for
$content: the Content to generate updates for (or null, if the Content could not be loaded
due to an error)
&$updates: the array of DataUpdate objects. Hook function may want to add to it.
'WikiPageFactory': Override WikiPage class used for a title
$title: Title of the page
&$page: Variable to set the created WikiPage to.
'XmlDumpWriterOpenPage': Called at the end of XmlDumpWriter::openPage, to allow
extra metadata to be added.
$obj: The XmlDumpWriter object.

View File

@ -60,6 +60,27 @@ MediaWikiServices::getInstance() should ideally be accessed only in "static
entry points" such as hook handler functions. See "Migration" below.
== Service Reset ==
Services get their configuration injected, and changes to global
configuration variables will not have any effect on services that were already
instantiated. This would typically be the case for low level services like
the ConfigFactory or the ObjectCacheManager, which are used during extension
registration. To address this issue, Setup.php resets the global service
locator instance by calling MediaWikiServices::resetGlobalInstance() once
configuration and extension registration is complete.
Note that "unmanaged" legacy services services that manage their own singleton
must not keep references to services managed by MediaWikiServices, to allow a
clean reset. After the global MediaWikiServices instance got reset, any such
references would be stale, and using a stale service will result in an error.
Services should either have all dependencies injected and be themselves managed
by MediaWikiServices, or they should use the Service Locator pattern, accessing
service instances via the global MediaWikiServices instance state when needed.
This ensures that no stale service references remain after a reset.
== Configuration ==
When the default MediaWikiServices instance is created, a Config object is

View File

@ -5,7 +5,7 @@ kss: kssnodecheck
# KSS style guide
$(eval KSS_RL_TMP := $(shell mktemp /tmp/tmp.XXXXXXXXXX))
$(eval MODULE_STR := $(shell paste -sd "|" styleGuideModules.txt))
# See OutputPage::makeResourceLoaderLink.
# See ResourceLoaderClientHtml::makeLoad.
@curl -sG "${MEDIAWIKI_LOAD_URL}?modules=${MODULE_STR}&only=styles" > $(KSS_RL_TMP)
@node_modules/.bin/kss-node ../../resources/src/mediawiki.ui static/ --css $(KSS_RL_TMP) -t styleguide-template
@rm $(KSS_RL_TMP)

View File

@ -1,92 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="../../resources/src/mediawiki.action/mediawiki.action.history.diff.css">
<link rel="stylesheet" media="print" href="../../resources/src/mediawiki.action/mediawiki.action.history.diff.print.css">
</head>
<body>
<p>This show various styles for our diff action. Style sheet: <code><a href="../../resources/src/mediawiki.action/mediawiki.action.history.diff.css">resources/src/mediawiki.action/mediawiki.action.history.diff.css</a></code>.</p>
<p>This file might help us fix our diff colors which have been a recurring issues among the community for a loooong time.</p>
<p>Try it out in print mode, too. Style sheet: <code><a href="../../resources/src/mediawiki.action/mediawiki.action.history.diff.print.css">resources/src/mediawiki.action/mediawiki.action.history.diff.print.css</a></code>.</p>
<p>Practical example copied from MediaWiki's HTML output:</p>
<table class="diff diff-contentalign-left">
<colgroup><col class="diff-marker">
<col class="diff-content">
<col class="diff-marker">
<col class="diff-content">
</colgroup>
<tbody>
<tr>
<td class="diff-marker"></td>
<td class="diff-deletedline"><div>Lorem ipsum dolor sit amet<del class="diffchange diffchange-inline">, consectetur adipisicing elit</del>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div></td>
<td class="diff-marker">+</td>
<td class="diff-addedline"><div>Lorem ipsum dolor sit amet, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td class="diff-deletedline"></td>
<td colspan="2" class="diff-empty">&nbsp;</td>
</tr>
<tr>
<td class="diff-marker"></td>
<td class="diff-deletedline"><div>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div></td>
<td colspan="2" class="diff-empty">&nbsp;</td>
</tr>
<tr>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"></td>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"></td>
</tr>
<tr>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"><div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</div></td>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"><div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</div></td>
</tr>
<tr>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"></td>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td class="diff-deletedline"><div>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim<del class="diffchange diffchange-inline"> id est laborum</del>.</div></td>
<td class="diff-marker">+</td>
<td class="diff-addedline"><div>Excepteur sint occaecat cupidatat non proident, sunt<ins class="diffchange diffchange-inline"> reprehenderit in voluptate</ins> in culpa qui officia deserunt mollit anim.</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty">&nbsp;</td>
<td class="diff-marker">+</td>
<td class="diff-addedline"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty">&nbsp;</td>
<td class="diff-marker">+</td>
<td class="diff-addedline"><div>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div></td>
</tr>
</tbody></table>
<p>Below are some basic lines being applied one or two classes. Mainly for debugging purposes.</p>
<table class="diff">
<tr><th>Diff</th></tr>
<tr><td class="diff-addedline"><code>diff-addedline</code>: added line</td></tr>
<tr><td class="diff-deletedline"><code>diff-deletedline</code>: deleted line</td></tr>
<tr><td class="diff-context"><code>diff-context</code>: context</td></tr>
<tr><th>Same as above with a <code>&lt;ins&gt;</code> or <code>&lt;del&gt;</code> child element having the <code>diffchange</code> class:</th></tr>
<tr><td class="diffchange">Diffchange</td></tr>
<tr><td class="diff-addedline"><ins class="diffchange">Added line + diffchange</ins></td></tr>
<tr><td class="diff-deletedline"><del class="diffchange">Deleted line + diffchange</del></td></tr>
</table>
</body>
</html>

View File

@ -0,0 +1,92 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="../../resources/src/mediawiki/mediawiki.diff.styles.css">
<link rel="stylesheet" media="print" href="../../resources/src/mediawiki/mediawiki.diff.styles.print.css">
</head>
<body>
<p>This show various styles for our diff action. Style sheet: <code><a href="../../resources/src/mediawiki/mediawiki.diff.styles.css">resources/src/mediawiki/mediawiki.diff.styles.css</a></code>.</p>
<p>This file might help us fix our diff colors which have been a recurring issues among the community for a loooong time.</p>
<p>Try it out in print mode, too. Style sheet: <code><a href="../../resources/src/mediawiki/mediawiki.diff.styles.print.css">resources/src/mediawiki/mediawiki.diff.styles.print.css</a></code>.</p>
<p>Practical example copied from MediaWiki's HTML output:</p>
<table class="diff diff-contentalign-left">
<colgroup><col class="diff-marker">
<col class="diff-content">
<col class="diff-marker">
<col class="diff-content">
</colgroup>
<tbody>
<tr>
<td class="diff-marker"></td>
<td class="diff-deletedline"><div>Lorem ipsum dolor sit amet<del class="diffchange diffchange-inline">, consectetur adipisicing elit</del>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div></td>
<td class="diff-marker">+</td>
<td class="diff-addedline"><div>Lorem ipsum dolor sit amet, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td class="diff-deletedline"></td>
<td colspan="2" class="diff-empty">&nbsp;</td>
</tr>
<tr>
<td class="diff-marker"></td>
<td class="diff-deletedline"><div>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div></td>
<td colspan="2" class="diff-empty">&nbsp;</td>
</tr>
<tr>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"></td>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"></td>
</tr>
<tr>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"><div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</div></td>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"><div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</div></td>
</tr>
<tr>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"></td>
<td class="diff-marker">&nbsp;</td>
<td class="diff-context"></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td class="diff-deletedline"><div>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim<del class="diffchange diffchange-inline"> id est laborum</del>.</div></td>
<td class="diff-marker">+</td>
<td class="diff-addedline"><div>Excepteur sint occaecat cupidatat non proident, sunt<ins class="diffchange diffchange-inline"> reprehenderit in voluptate</ins> in culpa qui officia deserunt mollit anim.</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty">&nbsp;</td>
<td class="diff-marker">+</td>
<td class="diff-addedline"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty">&nbsp;</td>
<td class="diff-marker">+</td>
<td class="diff-addedline"><div>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div></td>
</tr>
</tbody></table>
<p>Below are some basic lines being applied one or two classes. Mainly for debugging purposes.</p>
<table class="diff">
<tr><th>Diff</th></tr>
<tr><td class="diff-addedline"><code>diff-addedline</code>: added line</td></tr>
<tr><td class="diff-deletedline"><code>diff-deletedline</code>: deleted line</td></tr>
<tr><td class="diff-context"><code>diff-context</code>: context</td></tr>
<tr><th>Same as above with a <code>&lt;ins&gt;</code> or <code>&lt;del&gt;</code> child element having the <code>diffchange</code> class:</th></tr>
<tr><td class="diffchange">Diffchange</td></tr>
<tr><td class="diff-addedline"><ins class="diffchange">Added line + diffchange</ins></td></tr>
<tr><td class="diff-deletedline"><del class="diffchange">Deleted line + diffchange</del></td></tr>
</table>
</body>
</html>

View File

@ -0,0 +1,3 @@
{
"extends": "stylelint-config-wikimedia"
}

View File

@ -1,108 +0,0 @@
<?php
/**
* Expose reference information for a page via prop=references API.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @see https://www.mediawiki.org/wiki/Extension:Cite#API
*/
class ApiQueryReferences extends ApiQueryBase {
public function __construct( $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'rf' );
}
public function getAllowedParams() {
return [
'continue' => [
ApiBase::PARAM_HELP_MSG => 'api-help-param-continue',
],
];
}
public function execute() {
$config = ConfigFactory::getDefaultInstance()->makeConfig( 'cite' );
if ( !$config->get( 'CiteStoreReferencesData' ) ) {
$this->dieUsage( 'Cite extension reference storage is not enabled', 'citestoragedisabled' );
}
$params = $this->extractRequestParams();
$titles = $this->getPageSet()->getGoodTitles();
ksort( $titles );
if ( !is_null( $params['continue'] ) ) {
$startId = (int)$params['continue'];
// check it is definitely an int
$this->dieContinueUsageIf( strval( $startId ) !== $params['continue'] );
} else {
$startId = false;
}
foreach ( $titles as $pageId => $title ) {
// Skip until you have the correct starting point
if ( $startId !== false && $startId !== $pageId ) {
continue;
} else {
$startId = false;
}
$storedRefs = Cite::getStoredReferences( $title );
$allReferences = array();
// some pages may not have references stored
if ( $storedRefs !== false ) {
// a page can have multiple <references> tags but they all have unique keys
foreach ( $storedRefs['refs'] as $index => $grouping ) {
foreach ( $grouping as $group => $members ) {
foreach ( $members as $name => $ref ) {
$ref['name'] = $name;
$key = $ref['key'];
if ( is_string( $name ) ) {
$id = Cite::getReferencesKey( $name . '-' . $key );
} else {
$id = Cite::getReferencesKey( $key );
}
$ref['group'] = $group;
$ref['reflist'] = $index;
$allReferences[$id] = $ref;
}
}
}
}
// set some metadata since its an assoc data structure
ApiResult::setArrayType( $allReferences, 'kvp', 'id' );
// Ship a data representation of the combined references.
$fit = $this->addPageSubItems( $pageId, $allReferences );
if ( !$fit ) {
$this->setContinueEnumParameter( 'continue', $pageId );
break;
}
}
}
public function getCacheMode( $params ) {
return 'public';
}
/**
* @see ApiBase::getExamplesMessages()
*/
protected function getExamplesMessages() {
return array(
'action=query&prop=references&titles=Albert%20Einstein' =>
'apihelp-query+references-example-1',
);
}
}

View File

@ -1,34 +0,0 @@
<?php
/**
* ResourceLoaderFileModule for adding the content language Cite CSS
*
* @file
* @ingroup Extensions
* @copyright 2011-2016 Cite VisualEditor Team and others; see AUTHORS.txt
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
*/
class CiteCSSFileModule extends ResourceLoaderFileModule {
public function __construct(
$options = array(),
$localBasePath = null,
$remoteBasePath = null
) {
global $wgContLang;
parent::__construct( $options, $localBasePath, $remoteBasePath );
// Get the content language code, and all the fallbacks. The first that
// has a ext.cite.style.<lang code>.css file present will be used.
$langCodes = array_merge( array( $wgContLang->getCode() ),
$wgContLang->getFallbackLanguages() );
foreach ( $langCodes as $lang ) {
$langStyleFile = 'ext.cite.style.' . $lang . '.css';
$localPath = $this->getLocalPath( $langStyleFile );
if ( file_exists( $localPath ) ) {
$this->styles[] = $langStyleFile;
break;
}
}
}
}

View File

@ -1,63 +0,0 @@
<?php
/**
* Resource loader module providing extra data from the server to Cite.
*
* Temporary hack for T93800
*
* @file
* @ingroup Extensions
* @copyright 2011-2016 Cite VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see MIT-LICENSE.txt
*/
class CiteDataModule extends ResourceLoaderModule {
/* Protected Members */
protected $origin = self::ORIGIN_USER_SITEWIDE;
protected $targets = array( 'desktop', 'mobile' );
/* Methods */
public function getScript( ResourceLoaderContext $context ) {
$citationDefinition = json_decode(
$context->msg( 'visualeditor-cite-tool-definition.json' )
->inContentLanguage()
->plain()
);
$citationTools = array();
if ( is_array( $citationDefinition ) ) {
foreach ( $citationDefinition as $tool ) {
if ( !isset( $tool->title ) ) {
$tool->title = $context->msg( 'visualeditor-cite-tool-name-' . $tool->name )
->text();
}
$citationTools[] = $tool;
}
}
return
've.init.platform.addMessages(' . FormatJson::encode(
array(
'visualeditor-cite-tool-definition.json' => json_encode( $citationTools )
),
ResourceLoader::inDebugMode()
) . ');';
}
public function getDependencies( ResourceLoaderContext $context = null ) {
return array(
'ext.visualEditor.base',
'ext.visualEditor.mediawiki',
);
}
public function getDefinitionSummary( ResourceLoaderContext $context ) {
$summary = parent::getDefinitionSummary( $context );
$summary[] = array(
'script' => $this->getScript( $context ),
);
return $summary;
}
}

View File

@ -1,135 +0,0 @@
<?php
/**
* Cite extension hooks
*
* @file
* @ingroup Extensions
* @copyright 2011-2016 Cite VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see MIT-LICENSE.txt
*/
class CiteHooks {
/**
* Convert the content model of a message that is actually JSON to JSON. This
* only affects validation and UI when saving and editing, not loading the
* content.
*
* @param Title $title
* @param string $model
* @return bool
*/
public static function onContentHandlerDefaultModelFor( Title $title, &$model ) {
if (
$title->inNamespace( NS_MEDIAWIKI ) &&
$title->getText() == 'Visualeditor-cite-tool-definition.json'
) {
$model = CONTENT_MODEL_JSON;
}
return true;
}
/**
* Conditionally register the unit testing module for the ext.cite.visualEditor module
* only if that module is loaded
*
* @param array $testModules The array of registered test modules
* @param ResourceLoader $resourceLoader The reference to the resource loader
* @return true
*/
public static function onResourceLoaderTestModules(
array &$testModules,
ResourceLoader &$resourceLoader
) {
$resourceModules = $resourceLoader->getConfig()->get( 'ResourceModules' );
if (
isset( $resourceModules[ 'ext.visualEditor.mediawiki' ] ) ||
$resourceLoader->isModuleRegistered( 'ext.visualEditor.mediawiki' )
) {
$testModules['qunit']['ext.cite.visualEditor.test'] = array(
'scripts' => array(
'modules/ve-cite/tests/ve.dm.citeExample.js',
'modules/ve-cite/tests/ve.dm.Converter.test.js',
'modules/ve-cite/tests/ve.dm.InternalList.test.js',
'modules/ve-cite/tests/ve.dm.Transaction.test.js',
),
'dependencies' => array(
'ext.cite.visualEditor',
'ext.visualEditor.test'
),
'localBasePath' => __DIR__,
'remoteExtPath' => 'Cite',
);
}
return true;
}
/**
* Callback for LinksUpdate hook
* Post-output processing of references property, for proper db storage
* Deferred to avoid performance overhead when outputting the page
*
* @param LinksUpdate $linksUpdate
*/
public static function onLinksUpdate( LinksUpdate &$linksUpdate ) {
global $wgCiteStoreReferencesData, $wgCiteCacheRawReferencesOnParse;
if ( !$wgCiteStoreReferencesData ) {
return;
}
$refData = $linksUpdate->getParserOutput()->getExtensionData( Cite::EXT_DATA_KEY );
if ( $refData === null ) {
return;
}
if ( $wgCiteCacheRawReferencesOnParse ) {
// caching
$cache = ObjectCache::getMainWANInstance();
$articleID = $linksUpdate->getTitle()->getArticleID();
$key = $cache->makeKey( Cite::EXT_DATA_KEY, $articleID );
$cache->set( $key, $refData, Cite::CACHE_DURATION_ONPARSE );
}
// JSON encode
$ppValue = FormatJson::encode( $refData, false, FormatJson::ALL_OK );
// GZIP encode references data at maximum compression
$ppValue = gzencode( $ppValue, 9 );
// split the string in smaller parts that can fit into a db blob
$ppValues = str_split( $ppValue, Cite::MAX_STORAGE_LENGTH );
foreach ( $ppValues as $num => $ppValue ) {
$key = 'references-' . intval( $num + 1 );
$linksUpdate->mProperties[$key] = $ppValue;
}
$linksUpdate->getParserOutput()->setExtensionData( Cite::EXT_DATA_KEY, null );
}
/**
* Callback for LinksUpdateComplete hook
* If $wgCiteCacheRawReferencesOnParse is set to false, purges the cache
* when references are modified
*
* @param LinksUpdate $linksUpdate
*/
public static function onLinksUpdateComplete( LinksUpdate &$linksUpdate ) {
global $wgCiteStoreReferencesData, $wgCiteCacheRawReferencesOnParse;
if ( !$wgCiteStoreReferencesData || $wgCiteCacheRawReferencesOnParse ) {
return;
}
// if we can, avoid clearing the cache when references were not changed
if ( method_exists( $linksUpdate, 'getAddedProperties' )
&& method_exists( $linksUpdate, 'getRemovedProperties' )
) {
$addedProps = $linksUpdate->getAddedProperties();
$removedProps = $linksUpdate->getRemovedProperties();
if ( !isset( $addedProps['references-1'] )
&& !isset( $removedProps['references-1'] )
) {
return;
}
}
$cache = ObjectCache::getMainWANInstance();
$articleID = $linksUpdate->getTitle()->getArticleID();
$key = $cache->makeKey( Cite::EXT_DATA_KEY, $articleID );
// delete with reduced hold off period (LinksUpdate uses a master connection)
$cache->delete( $key, WANObjectCache::MAX_COMMIT_DELAY );
}
}

File diff suppressed because it is too large Load Diff

View File

@ -11,6 +11,7 @@ module.exports = function ( grunt ) {
grunt.loadNpmTasks( 'grunt-jscs' );
grunt.loadNpmTasks( 'grunt-jsonlint' );
grunt.loadNpmTasks( 'grunt-banana-checker' );
grunt.loadNpmTasks( 'grunt-stylelint' );
grunt.initConfig( {
jshint: {
options: {
@ -38,6 +39,23 @@ module.exports = function ( grunt ) {
src: '<%= jshint.all %>'
}
},
stylelint: {
core: {
src: [
'**/*.css',
'!modules/ve-cite/**',
'!node_modules/**'
]
},
've-cite': {
options: {
configFile: 'modules/ve-cite/.stylelintrc'
},
src: [
'modules/ve-cite/**/*.css'
]
}
},
jsonlint: {
all: [
'**/*.json',
@ -46,6 +64,6 @@ module.exports = function ( grunt ) {
}
} );
grunt.registerTask( 'test', [ 'jshint', 'jscs:main', 'jsonlint', 'banana' ] );
grunt.registerTask( 'test', [ 'jshint', 'jscs:main', 'stylelint', 'jsonlint', 'banana' ] );
grunt.registerTask( 'default', 'test' );
};

View File

@ -1,7 +0,0 @@
<?php
trigger_error(
'Special:Cite was moved to a separate CiteThisPage extension, ' .
'see <https://www.mediawiki.org/wiki/Extension:CiteThisPage> for information on how to install it',
E_USER_WARNING
);

View File

@ -1,12 +1,15 @@
{
"require-dev": {
"jakub-onderka/php-parallel-lint": "0.9.2",
"mediawiki/mediawiki-codesniffer": "0.5.1"
"mediawiki/mediawiki-codesniffer": "0.7.2"
},
"scripts": {
"test": [
"parallel-lint . --exclude node_modules --exclude vendor",
"phpcs -p -s"
],
"fix": [
"phpcbf"
]
}
}

View File

@ -33,11 +33,17 @@
"ResourceLoaderTestModules": [
"CiteHooks::onResourceLoaderTestModules"
],
"ResourceLoaderRegisterModules": [
"CiteHooks::onResourceLoaderRegisterModules"
],
"LinksUpdate": [
"CiteHooks::onLinksUpdate"
],
"LinksUpdateComplete": [
"CiteHooks::onLinksUpdateComplete"
],
"ResourceLoaderGetConfigVars": [
"CiteHooks::onResourceLoaderGetConfigVars"
]
},
"ResourceModules": {
@ -67,93 +73,6 @@
"desktop",
"mobile"
]
},
"ext.cite.visualEditor.core": {
"scripts": [
"ve-cite/ve.dm.MWReferenceModel.js",
"ve-cite/ve.dm.MWReferencesListNode.js",
"ve-cite/ve.dm.MWReferenceNode.js",
"ve-cite/ve.ce.MWReferencesListNode.js",
"ve-cite/ve.ce.MWReferenceNode.js",
"ve-cite/ve.ui.MWReferencesListCommand.js"
],
"styles": [
"ve-cite/ve.ce.MWReferencesListNode.css",
"ve-cite/ve.ce.MWReferenceNode.css"
],
"dependencies": [
"ext.visualEditor.mwcore"
],
"messages": [
"cite-ve-referenceslist-isempty",
"cite-ve-referenceslist-isempty-default",
"cite-ve-referenceslist-missingref"
],
"targets": [
"desktop",
"mobile"
]
},
"ext.cite.visualEditor.data": {
"class": "CiteDataModule"
},
"ext.cite.visualEditor": {
"scripts": [
"ve-cite/ve.ui.MWReferenceGroupInputWidget.js",
"ve-cite/ve.ui.MWReferenceSearchWidget.js",
"ve-cite/ve.ui.MWReferenceResultWidget.js",
"ve-cite/ve.ui.MWUseExistingReferenceCommand.js",
"ve-cite/ve.ui.MWCitationDialog.js",
"ve-cite/ve.ui.MWReferencesListDialog.js",
"ve-cite/ve.ui.MWReferenceDialog.js",
"ve-cite/ve.ui.MWReferenceDialogTool.js",
"ve-cite/ve.ui.MWCitationDialogTool.js",
"ve-cite/ve.ui.MWReferenceContextItem.js",
"ve-cite/ve.ui.MWReferencesListContextItem.js",
"ve-cite/ve.ui.MWCitationContextItem.js",
"ve-cite/ve.ui.MWCitationAction.js",
"ve-cite/ve.ui.MWReference.init.js"
],
"styles": [
"ve-cite/ve.ui.MWReferenceContextItem.css",
"ve-cite/ve.ui.MWReferenceGroupInputWidget.css",
"ve-cite/ve.ui.MWReferenceIcons.css",
"ve-cite/ve.ui.MWReferenceResultWidget.css",
"ve-cite/ve.ui.MWReferenceSearchWidget.css"
],
"dependencies": [
"ext.cite.visualEditor.core",
"ext.cite.visualEditor.data",
"ext.cite.style",
"ext.visualEditor.mwtransclusion",
"ext.visualEditor.mediawiki"
],
"messages": [
"cite-ve-dialog-reference-editing-reused",
"cite-ve-dialog-reference-options-group-label",
"cite-ve-dialog-reference-options-group-placeholder",
"cite-ve-dialog-reference-options-name-label",
"cite-ve-dialog-reference-options-section",
"cite-ve-dialog-reference-title",
"cite-ve-dialog-reference-useexisting-full-label",
"cite-ve-dialog-reference-useexisting-label",
"cite-ve-dialog-reference-useexisting-tool",
"cite-ve-dialog-referenceslist-contextitem-description-general",
"cite-ve-dialog-referenceslist-contextitem-description-named",
"cite-ve-dialog-referenceslist-title",
"cite-ve-dialogbutton-citation-educationpopup-title",
"cite-ve-dialogbutton-citation-educationpopup-text",
"cite-ve-dialogbutton-reference-full-label",
"cite-ve-dialogbutton-reference-tooltip",
"cite-ve-dialogbutton-reference-title",
"cite-ve-dialogbutton-referenceslist-tooltip",
"cite-ve-reference-input-placeholder",
"cite-ve-toolbar-group-label"
],
"targets": [
"desktop",
"mobile"
]
}
},
"ResourceFileModulePaths": {
@ -170,17 +89,18 @@
"AllowCiteGroups": true,
"CiteCacheReferences": false,
"CiteStoreReferencesData": false,
"CiteCacheReferencesDataOnParse": false
"CiteCacheReferencesDataOnParse": false,
"CiteVisualEditorOtherGroup": false
},
"AutoloadClasses": {
"ApiQueryReferences": "ApiQueryReferences.php",
"Cite": "Cite_body.php",
"CiteHooks": "CiteHooks.php",
"CiteDataModule": "CiteDataModule.php",
"CiteCSSFileModule": "CiteCSSFileModule.php"
"ApiQueryReferences": "includes/ApiQueryReferences.php",
"Cite": "includes/Cite.php",
"CiteHooks": "includes/CiteHooks.php",
"CiteDataModule": "includes/CiteDataModule.php",
"CiteCSSFileModule": "includes/CiteCSSFileModule.php"
},
"ParserTestFiles": [
"citeParserTests.txt"
"tests/parser/citeParserTests.txt"
],
"TrackingCategories": [
"cite-tracking-category-cite-error"

View File

@ -9,10 +9,12 @@
"محمد أحمد عبد الفتاح"
]
},
"apihelp-query+references-description": "يرجع تمثيل لبيانات المراجع المرتبطة مع الصفحات المعطاة.",
"apihelp-query+references-example-1": "المراجع المرتبطة ب<kbd>Albert Einstein</kbd>.",
"cite-desc": "يضيف وسوم <nowiki><ref[ name=id]></nowiki> و <nowiki><references/></nowiki> ، للاستشهادات",
"cite_error": "خطأ استشهاد: $1",
"cite_error_ref_numeric_key": "وسم <code>&lt;ref&gt;</code> غير صحيح؛\nالاسم لا يمكن أن يكون عددا صحيحا بسيطا. استخدم عنوانا وصفيا",
"cite_error_ref_no_key": "وسم <code>&lt;ref&gt;</code> غير صحيح؛\nالمراجع غير ذات المحتوى يجب أن تمتلك اسما",
"cite_error_ref_no_key": "وسم الفتح <code>&lt;ref&gt;</code> غير صحيح أو له اسم سييء.",
"cite_error_ref_too_many_keys": "وسم <code>&lt;ref&gt;</code> غير صحيح؛\nأسماء غير صحيحة، على سبيل المثال كثيرة جدا",
"cite_error_ref_no_input": "وسم <code>&lt;ref&gt;</code> غير صحيح؛\nالمراجع غير ذات الاسم يجب أن تمتلك محتوى",
"cite_error_references_duplicate_key": "وسم <code>&lt;ref&gt;</code> غير صالح؛ الاسم \"$1\" معرف أكثر من مرة بمحتويات مختلفة.",

View File

@ -13,5 +13,6 @@
"cite_references_link_prefix": "sitat_qeyd-",
"cite_references_link_many_format": "<sup>[[#$1|$2]]</sup>",
"cite_references_link_many_sep": "&#32;",
"cite_references_link_many_and": "&#32;"
"cite_references_link_many_and": "&#32;",
"cite_section_preview_references": "İstinadların sınaq göstərişi"
}

View File

@ -4,20 +4,25 @@
"Aspar",
"Erdemaslancan",
"Gorizon",
"Xoser"
"Xoser",
"Kumkumuk",
"1917 Ekim Devrimi"
]
},
"apihelp-query+references-description": "Eleqe referansa deyaye peran de temsilandataya çerx keno",
"apihelp-query+references-example-1": "<kbd>Albert Einstein</kbd>'i ya eleqeyın referanso",
"cite-desc": "Qe çime mucnayîşî, etiketanê <nowiki><ref[ name=id]></nowiki> u <nowiki><references/></nowiki> de keno",
"cite_error": "Ğeletê çime mucnayîşî: $1",
"cite_error": "Xetaya çımeyi: $1",
"cite_error_ref_numeric_key": "Etiket <code>&lt;ref&gt;</code> ke raşt niyo;\nName nieşkeno biyo yew rekam. Çekuyan binuse",
"cite_error_ref_no_key": "Etiket <code>&lt;ref&gt;</code> ke raşt niyo;\nEka kontent çini yo, gani yew name biyo",
"cite_error_ref_too_many_keys": "Etiket <code>&lt;ref&gt;</code> ke raşt niyo;\nname raşt niyo, e.g. zaf esto",
"cite_error_ref_no_input": "Etiket <code>&lt;ref&gt;</code> ke raşt niyo;\nEka name çini yo, gani kontent biyo",
"cite_error_references_duplicate_key": "Nêravêrde <code>&lt;ref&gt;</code> etiket: \"$1\" name yew ra zeder zerrek de şınasiya yo.",
"cite_error_references_invalid_parameters": "Etiket <code>&lt;ref&gt;</code> ke raşt niyo;\nparametrayan ra destur çini yo.\n<code>&lt;references /&gt;</code> sero kar bike",
"cite_error_references_invalid_parameters_group": "Etiket <code>&lt;ref&gt;</code> ke raşt niyo;\nparametrayan ra destur çini yo.\n<code>&lt;references /&gt;</code> sero kar bike, ya zi <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Linkanê Custom backlinkî hin çini yo.\nZerreyê mesajê <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>î de hewna tasvir bike",
"cite_error_no_link_label_group": "Eka etiketinê linkê şexsi ser ena grubi \"$1\" ciniyo.\nZerre mesajê <nowiki>[[MediaWiki:$2]]</nowiki> de zafyer qise bike.",
"cite_error_references_no_text": "Etiket <code>&lt;ref&gt;</code> ke raşt niyo;\nqe refs yew nuşte nidayiyo <code>$1</code>",
"cite_error_references_no_text": "Nêravyarde <code>&lt;ref&gt;</code> etiket;\n<code>$1</code>nameya referansa rê metin nêabıryayo",
"cite_error_included_ref": "<code>&lt;ref&gt;</code>Qandê etiketi <code>&lt;/ref&gt;</code> racnayış kemiyo",
"cite_error_group_refs_without_references": "etiketé <code>&lt;ref&gt;</code>i niesto ser grubé $1'i, feqat etiketé <code>&lt;references/&gt;</code>dé \"$1\"/&gt;nidiyo",
"cite_error_references_group_mismatch": "etiketê <code>&lt;ref&gt;</code>î, zerre <code>&lt;references/&gt;</code> de ser grupê \"$1\"î konflikt keno.",
@ -25,6 +30,8 @@
"cite_error_references_missing_key": "etiketê <code>&lt;ref&gt;</code>î, zerre <code>&lt;references/&gt;</code> de tevisr biyo ser name \"$1\"î verni de niesto.",
"cite_error_references_no_key": "etiketê <code>&lt;ref&gt;</code>î, zerre <code>&lt;references/&gt;</code> de tevsir biyo name xo çini yo.",
"cite_error_empty_references_define": "etiketê <code>&lt;ref&gt;</code>î, zerre <code>&lt;references/&gt;</code> de tevsir biyo \"$1\" kontent xo çini yo.",
"cite-tracking-category-cite-error": "Perê ke xetay çımi tede est o",
"cite-tracking-category-cite-error-desc": "Perabê ena kategori de referansan de xırabin est a.",
"cite_reference_link_key_with_num": "$1_$2",
"cite_reference_link_prefix": "sita_ref-",
"cite_references_link_prefix": "sita_not-",
@ -35,5 +42,8 @@
"cite_references_link_many_sep": "&#32;",
"cite_references_link_many_and": "&#32;",
"cite_references_link_accessibility_label": "Ser çek",
"cite_references_link_many_accessibility_label": "Ser çek:"
"cite_references_link_many_accessibility_label": "Ser çek:",
"cite_section_preview_references": "Verasayışê çımeyan",
"cite_warning": "İqaza sita:$1",
"cite_warning_sectionpreview_no_text": "<code>&lt;ref&gt;</code> nameya etiket <code>$1</code> bêverqayy nêbena, çıkı\nMewcud lete dı yana bê ê leti şınasiya xı çıni ya."
}

View File

@ -7,7 +7,7 @@
"cite-desc": "Lisab viitamiseks sildid <nowiki><ref[ name=id]></nowiki> ja <nowiki><references/></nowiki>.",
"cite_error": "Viitamistõrge: $1",
"cite_error_ref_numeric_key": "Vigane <code>&lt;ref&gt;</code>-silt.\nNimeparameeter ei tohi olla numbriline. Kasuta kirjeldavat nime.",
"cite_error_ref_no_key": "Vigane <code>&lt;ref&gt;</code>-silt.\nSisuta viitamissiltidel peab olema nimi.",
"cite_error_ref_no_key": "Algussilt <code>&lt;ref&gt;</code> on väärdunud või selle nimi on vigane.",
"cite_error_ref_too_many_keys": "Vigane <code>&lt;ref&gt;</code>-silt;\n\"name\" on vigane või liiga pikk.",
"cite_error_ref_no_input": "Vigane <code>&lt;ref&gt;</code>-silt.\nNimeta viitamissiltidel peab olema sisu.",
"cite_error_references_duplicate_key": "Vigane <code>&lt;ref&gt;</code>-silt; nime \"$1\" on määratud mitu korda erineva sisuga.",

View File

@ -1,9 +1,11 @@
{
"@metadata": {
"authors": [
"An13sa"
"An13sa",
"Sator"
]
},
"cite-desc": "<nowiki><ref[ name=id]></nowiki> eta <nowiki><references/></nowiki> etiketak gehitzen ditu, aipuentzako",
"cite_error": "Aipamen errorea: $1"
"cite_error": "Aipamen errorea: $1",
"cite_section_preview_references": "Erreferentzien aurreikuspena"
}

View File

@ -20,6 +20,7 @@
"cite_error_ref_no_key": "Kelpaamaton <code>&lt;ref&gt;</code>-elementti: sisällöttömille refeille pitää määrittää nimi.",
"cite_error_ref_too_many_keys": "Kelpaamaton <code>&lt;ref&gt;</code>-elementti: virheelliset nimet, esim. liian monta",
"cite_error_ref_no_input": "Kelpaamaton <code>&lt;ref&gt;</code>-elementti: viitteillä ilman nimiä täytyy olla sisältöä",
"cite_error_references_duplicate_key": "Virheellinen <code>&lt;ref&gt;</code>-elementti; nimi \"$1\" on määritetty usean kerran eri sisällöillä",
"cite_error_references_invalid_parameters": "Kelpaamaton <code>&lt;references&gt;</code>-elementti: parametrit eivät ole sallittuja. Käytä muotoa <code>&lt;references /&gt;</code>.",
"cite_error_references_invalid_parameters_group": "Kelpaamaton <code>&lt;references&gt;</code>-elementti: vain parametri ”group” on sallittu. Käytä muotoa <code>&lt;references /&gt;</code> tai <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Määritetyt takaisinviittausnimikkeet loppuivat kesken.\nNiitä voi määritellä lisää sivulla <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>.",
@ -33,6 +34,9 @@
"cite_error_references_no_key": "<code>&lt;references&gt;</code>-elementissä määritetyllä <code>&lt;ref&gt;</code>-elementillä ei ole nimimääritettä.",
"cite_error_empty_references_define": "<code>&lt;references&gt;</code>-elementissä määritetyllä <code>&lt;ref&gt;</code>-elementillä nimellä ”$1” ei ole sisältöä.",
"cite-tracking-category-cite-error": "Sivut, joissa on viittausvirheitä",
"cite-tracking-category-cite-error-desc": "Tässä luokassa olevissa sivuissa on virheitä viite-elementtien käytössä.",
"cite_references_link_accessibility_label": "Siirry ylös",
"cite_references_link_many_accessibility_label": "Siirry ylös kohtaan:",
"cite_section_preview_references": "Viitteiden esikatselu",
"cite_warning": "Viittausvaroitus: $1",
"cite_warning_sectionpreview_no_text": "<code>&lt;ref&gt;</code>-viitettä, jonka nimenä on <code>$1</code>, ei voida näyttää esikatselussa, koska se määritetään tämän osion ulkopuolella tai sitä ei ole määritetty lainkaan."

View File

@ -15,7 +15,9 @@
"Verdy p",
"Orlodrim",
"Wyz",
"Wladek92"
"Wladek92",
"The RedBurn",
"Trial"
]
},
"apihelp-query+references-description": "Renvoyer une représentation des données des références associées avec les pages fournies.",
@ -36,7 +38,7 @@
"cite_error_group_refs_without_references": "Des balises <code>&lt;ref&gt;</code> existent pour un groupe nommé « $1», mais aucune balise <code>&lt;references group=\"$1\"/&gt;</code> correspondante na été trouvée, ou bien une balise fermante <code>&lt;/ref&gt;</code> manque.",
"cite_error_references_group_mismatch": "La balise <code>&lt;ref&gt;</code> dans <code>&lt;references&gt;</code> a lattribut de groupe « $1 » qui entre en conflit avec celui de <code>&lt;references&gt;</code>.",
"cite_error_references_missing_group": "La balise <code>&lt;ref&gt;</code> définie dans <code>&lt;references&gt;</code> a un groupe attribué « $1 » qui ne figure pas dans le texte précédent.",
"cite_error_references_missing_key": "La balise <code>&lt;ref&gt;</code> avec le nom « $1 » définie dans <code>&lt;references&gt;</code> nest pas utilisé dans le texte précédent.",
"cite_error_references_missing_key": "La balise <code>&lt;ref&gt;</code> nommée « $1 » définie dans <code>&lt;references&gt;</code> nest pas utilisée dans le texte précédent.",
"cite_error_references_no_key": "La balise <code>&lt;ref&gt;</code> définie dans <code>&lt;references&gt;</code> na pas dattribut de nom.",
"cite_error_empty_references_define": "La balise <code>&lt;ref&gt;</code> défini dans <code>&lt;references&gt;</code> avec le nom « $1 » na pas de contenu.",
"cite-tracking-category-cite-error": "Pages avec des erreurs de référence",

View File

@ -5,7 +5,7 @@
]
},
"cite-desc": "Apond les balises <nowiki><ref[ name=id]></nowiki> et <nowiki><references/></nowiki>, por les citacions.",
"cite_error": "Èrror de citacion $1",
"cite_error": "Fôta de rèference : $1",
"cite_error_ref_numeric_key": "Apèl envalido ; cllâf pas entègrâla atendua.",
"cite_error_ref_no_key": "Balisa <code>&lt;ref&gt;</code> fôssa ;\nles refèrences sen contegnu dêvont avêr un nom.",
"cite_error_ref_too_many_keys": "Apèl envalido ; cllâfs envalides, per ègzemplo, trop de cllâfs spècefiâs ou ben cllâf fôssa.",

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Marwan Mohamad"
]
},
"cite_error": "Tilala mokupe'i: $1"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Hakka"
]
},
"cite_error": "Yín-yung chhâ-chho: $1"
}

View File

@ -7,7 +7,7 @@
"cite-desc": "Bætir <nowiki><ref[ name=id]></nowiki> og <nowiki><references/></nowiki> tögum við fyrir heimildir",
"cite_error": "Tilvísunar villa: $1",
"cite_error_ref_numeric_key": "Villa í <code>&lt;ref&gt;</code> tag;\nnafn tilvísunar má ekki vera heil tala. Notaðu lýsandi titil",
"cite_error_ref_no_key": "Villa í <code>&lt;ref&gt;</code> tag;\ntilvísunin verður annaðhvort að hafa nafn eða innihald.",
"cite_error_ref_no_key": "Opna <code>&lt;ref&gt;</code> merkið er gallað eða hefur ógilt nafn",
"cite_error_ref_too_many_keys": "Villa í <code>&lt;ref&gt;</code> tag;\nógilt nafn, t.d. of mörg",
"cite_error_ref_no_input": "Villa í <code>&lt;ref&gt;</code> tag;\ntilvísunin verður annaðhvort að hafa nafn eða innihald.",
"cite_error_references_invalid_parameters": "Villa í <code>&lt;ref&gt;</code> tag;\nengir stikar eru leyfðir\nNotaðu <code>&lt;references /&gt;</code> í staðinn",

View File

@ -7,7 +7,8 @@
"Erdemaslancan",
"Gianfranco",
"Pietrodn",
"Horcrux92"
"Horcrux92",
"Nemo bis"
]
},
"apihelp-query+references-description": "Restituisce una rappresentazione dati dei riferimenti associati con le pagine indicate.",
@ -35,7 +36,7 @@
"cite-tracking-category-cite-error-desc": "Le pagine in questa categoria hanno errori nell'uso dei tag per le note.",
"cite_references_link_accessibility_label": "Salta",
"cite_references_link_many_accessibility_label": "Salta a:",
"cite_section_preview_references": "Anteprima dei riferimenti",
"cite_section_preview_references": "Anteprima delle note",
"cite_warning": "Attenzione nelle note: $1",
"cite_warning_sectionpreview_no_text": "Il tag <code>&lt;ref&gt;</code> con nome <code>$1</code> non può essere visualizzato in anteprima, perché è definito al di fuori della sezione attuale o non definito affatto."
}

View File

@ -9,7 +9,7 @@
]
},
"cite-desc": "Nambahaké tag <nowiki><ref[ name=id]></nowiki> lan <nowiki><references/></nowiki> kanggo kutipan (sitat)",
"cite_error": "Cacad panyuplik: $1",
"cite_error": "Cacad sitiran: $1",
"cite_error_ref_numeric_key": "Tag <code>&lt;ref&gt;</code> ora absah;\njenengé ora bisa namung angka integer waé. Gunakna irah-irahan (judhul) dèskriptif",
"cite_error_ref_no_key": "Tag <code>&lt;ref&gt;</code> ora absah;\nrefs tanpa isi kudu duwé jeneng",
"cite_error_ref_too_many_keys": "Tag <code>&lt;ref&gt;</code> ora absah;\njeneng-jenengé ora absah, contoné kakèhan",
@ -26,6 +26,8 @@
"cite_error_references_missing_key": "<code>&lt;ref&gt;</code> tag sing didhefinisikaké mawa jeneng \"$1\" <code>&lt;references&gt;</code> ora dianggo nèng tèks sakdurungé.",
"cite_error_references_no_key": "Tag <code>&lt;ref&gt;</code> yang didefinisikan di di <code>&lt;references&gt;</code> tidak memiliki nama atribut.",
"cite_error_empty_references_define": "Tag <code>&lt;ref&gt;</code> yang didefinisikan di di <code>&lt;references&gt;</code> dengan nama \"$1\" tidak memiliki isi.",
"cite-tracking-category-cite-error": "Kaca mawa cacad rujukan",
"cite-tracking-category-cite-error-desc": "Kaca ing kategori iki ngemu cacad ing panganggoning tag rujukan.",
"cite_reference_link_key_with_num": "$1_$2",
"cite_reference_link_prefix": "cite_ref-",
"cite_references_link_prefix": "cite_note-",
@ -35,6 +37,8 @@
"cite_references_link_many_format_backlink_labels": "a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz",
"cite_references_link_many_sep": "&#32;",
"cite_references_link_many_and": "&#32;",
"cite_references_link_accessibility_label": "Mencolot munggah",
"cite_references_link_many_accessibility_label": "Mencolot munggah menyang:"
"cite_references_link_accessibility_label": "Lumpat",
"cite_references_link_many_accessibility_label": "Lumpat nyang:",
"cite_section_preview_references": "Pratuduh rujukan",
"cite_warning": "Pélik sitiran: $1"
}

View File

@ -4,7 +4,9 @@
"David1010",
"Dawid Deutschland",
"Nodar Kherkheulidze",
"გიორგიმელა"
"გიორგიმელა",
"BRUTE",
"Otogi"
]
},
"cite-desc": "ამატებს <nowiki><ref[ name=id]></nowiki> და <nowiki><references/></nowiki> ტეგებს სქოლიოსთვის",
@ -25,11 +27,13 @@
"cite_error_references_missing_key": "ტეგი <code>&lt;ref&gt;</code> სახელად „$1“, გარკვეული <code>&lt;references&gt;</code>-ში, არ გამოიყენება წინა ტექსტში.",
"cite_error_references_no_key": "ტეგს <code>&lt;ref&gt;</code>, გარკვეულს <code>&lt;references&gt;</code>-ში, სახელის ატრიბუტი არ გააჩნია.",
"cite_error_empty_references_define": "ტეგს <code>&lt;ref&gt;</code>, გარკვეულს <code>&lt;references&gt;</code>-ში, სახელით „$1“ არ გააჩნია შინაარსი.",
"cite-tracking-category-cite-error": "გვერდები, რომლებიც შეიცავენ სქოლიოში შეცდომას",
"cite_reference_link_key_with_num": "$1_$2",
"cite_references_link_one": "<li id=\"$1\"><span class=\"mw-cite-backlink\">[[#$2|↑]]</span> $3</li>",
"cite_references_link_many": "<li id=\"$1\"><span class=\"mw-cite-backlink\">↑ $2</span> $3</li>",
"cite_references_link_many_format": "<sup>[[#$1|$2]]</sup>",
"cite_references_link_many_sep": "&#32;",
"cite_references_link_many_and": "&#32;",
"cite_references_link_accessibility_label": "ზემოთ ასვლა"
"cite_references_link_accessibility_label": "ზემოთ ასვლა",
"cite_section_preview_references": "სქოლიოს სიის წინასწარი გადახედვა"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Gnangbade"
]
},
"cite_error": ɩcɔnɩyɛ yiɣduu : $1"
}

View File

@ -8,17 +8,19 @@
"아라",
"Hwangjy9",
"Revi",
"Bluemersen"
"Bluemersen",
"Ykhwong"
]
},
"apihelp-query+references-example-1": "<kbd>Albert Einstein</kbd>과 관련된 주석.",
"cite-desc": "인용에 쓰이는 <nowiki><ref[ name=id]></nowiki>와 <nowiki><references/></nowiki> 태그를 추가합니다",
"cite_error": "인용 오류: $1",
"cite_error_ref_numeric_key": "<code>&lt;ref&gt;</code> 태그가 잘못되었습니다;\n이름은 숫자가 될 수 없습니다. 설명적인 이름을 사용하세요",
"cite_error_ref_no_key": "<code>&lt;ref&gt;</code> 태그가 잘못되었습니다;\n내용이 없는 주석은 이름이 있어야 합니다",
"cite_error_ref_no_key": "열린 <code>&lt;ref&gt;</code> 태그가 잘못되었거나 이름이 잘못되었습니다.",
"cite_error_ref_too_many_keys": "<code>&lt;ref&gt;</code> 태그가 잘못되었습니다;\n잘못된 이름입니다, 너무 많은 등",
"cite_error_ref_no_input": "<code>&lt;ref&gt;</code> 태그가 잘못되었습니다;\n이름이 없는 ref 태그는 반드시 내용이 있어야 합니다",
"cite_error_references_duplicate_key": "잘못된 <code>&lt;ref&gt;</code> 태그; \"$1\"이 다른 콘텐츠로 여러 번 정의되었습니다",
"cite_error_references_invalid_parameters": "<code>&lt;references&gt;</code> 태그가 잘못되었습니다;\n변수를 넣으면 안됩니다.\n<code>&lt;references /&gt;</code>를 사용하세요",
"cite_error_references_invalid_parameters": "<code>&lt;references&gt;</code> 태그가 잘못되었습니다;\n변수를 넣으면 안 됩니다.\n<code>&lt;references /&gt;</code>를 사용하세요",
"cite_error_references_invalid_parameters_group": "<code>&lt;references&gt;</code> 태그가 잘못되었습니다;\n\"group\" 변수만 사용할 수 있습니다.\n<code>&lt;references /&gt;</code>나 <code>&lt;references group=\"...\" /&gt;</code>를 사용하세요",
"cite_error_references_no_backlink_label": "사용자 지정 백링크 라벨이 바닥이 났습니다.\n<nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>메시지에 더 정의하세요.",
"cite_error_no_link_label_group": "\"$1\" 그룹에 대해 사용자 지정 링크 레이블이 바닥이 났습니다.\n<nowiki>[[MediaWiki:$2]]</nowiki> 메시지에 더 정의하세요.",

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Varvana"
]
},
"cite_error": "Viittaušvirhe: $1"
}

View File

@ -5,6 +5,7 @@
"The Evil IP address"
]
},
"apihelp-query+references-description": "Jidd en Dahschtällong vun dä Qälle un Fohßnuhte als Dahte uß, di met dä aanjejovve Sigge verknop sin.",
"apihelp-query+references-example-1": "Bezösche em Zesammehang mem <kbd lang=\"de\" xml:lang=\"de\" dir=\"ltr\">Albert Einstein</kbd>.",
"cite-desc": "Erlaub Quelle un Referenze met <nowiki><ref[ name=\"id\"]></nowiki> un <nowiki><references /></nowiki> aanzejevve.",
"cite_error": "Fähler in <i lang=\"en\">cite</i> met Referenze: $1",
@ -32,5 +33,8 @@
"cite_references_link_prefix": "fohss_noht_nommer_",
"cite_references_link_many_and": "&#32;",
"cite_references_link_accessibility_label": "Jangk noh bovve",
"cite_references_link_many_accessibility_label": "Jangk noh bovve op:"
"cite_references_link_many_accessibility_label": "Jangk noh bovve op:",
"cite_section_preview_references": "En Vöraff-Aansesch vun de Quälle un Fohßnuhte",
"cite_warning": "Opjepaß: $1",
"cite_warning_sectionpreview_no_text": "<code>&lt;ref&gt;</code> dä Befähl mem Nahme <code>$1</code> künne mer nit vöraff belohre. Dä es ußerhallef vun heh däm Afschnedd udder övverhoup nit bestemmt wohde."
}

View File

@ -5,12 +5,14 @@
"Robby"
]
},
"apihelp-query+references-example-1": "Referenzen associéiert mam <kbd>Albert Einstein</kbd>.",
"cite-desc": "Setzt <nowiki><ref[ name=id]></nowiki> an <nowiki><references/></nowiki> Taggen derbäi, fir Zitatiounen.",
"cite_error": "Zitéierfeeler: $1",
"cite_error_ref_numeric_key": "Ongëltegen <code>&lt;ref&gt;</code> Tag;\nDen Numm ka keng einfach ganz Zuel sinn. Benotzt w.e.g. een Titel den eng Beschreiwung gëtt",
"cite_error_ref_no_key": "Ongëltegen <code>&lt;ref&gt;</code> Tag;\nReferenzen ouni Inhalt mussen een Numm hunn",
"cite_error_ref_no_key": "Den Ufaang <code>&lt;ref&gt;</code> Tag ass schlecht formatéiert oder huet e falschen Numm",
"cite_error_ref_too_many_keys": "Ongëltege <code>&lt;ref&gt;</code> Tag;\nongëlteg Nimm, z. Bsp. zevill",
"cite_error_ref_no_input": "Ongëltege <code>&lt;ref&gt;</code> Tag;\n''refs'' ouni Numm muss een Inhalt hun",
"cite_error_references_duplicate_key": "Net valabelen Tag <code>&lt;ref&gt;</code>. Den Numm \"$1\" gouf e puer Mol mat verschiddenem Inhalt definéiert",
"cite_error_references_invalid_parameters": "Ongëltegen <code>&lt;references&gt;</code> Tag;\net si keng Parameter erlaabt.\nBenotzt <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Ongëltege <code>&lt;references&gt;</code> Tag;\nnëmmen de Parameter \"group\" ass erlaabt.\nBenotzt <code>&lt;references /&gt;</code>, oder <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_text": "Ongëlteg <code>&lt;ref&gt;</code> Markéierung;\net gouf keen Text ugi fir d'Referenze mam Numm <code>$1</code>",
@ -22,7 +24,10 @@
"cite_error_references_no_key": "D'Markéierung <code>&lt;ref&gt;</code> déi an <code>&lt;references&gt;</code> definéiert ass huet keng Nummeegeschaft.",
"cite_error_empty_references_define": "D'Markéierung <code>&lt;ref&gt;</code> déi am <code>&lt;references&gt;</code> mat dem Numm « $1 » definéiert ass, ass eidel.",
"cite-tracking-category-cite-error": "Säite mat Referenzfeeler",
"cite-tracking-category-cite-error-desc": "Säiten an dëser Kategorie hu Feeler am Benotze vun de Referenz-Taggen.",
"cite_references_link_accessibility_label": "No uewe sprangen",
"cite_references_link_many_accessibility_label": "Eropsprangen op:",
"cite_section_preview_references": "Referenze kucken ouni ze späicheren"
"cite_section_preview_references": "Referenze kucken ouni ze späicheren",
"cite_warning": "Referenzwarnung: $1",
"cite_warning_sectionpreview_no_text": "Den Tag <code>&lt;ref&gt;</code> mam Numm <code>$1</code> kann hei net gewise ginn, well en entweder ausserhablb vun dësem Abschnitt ass oder guer net definéiert ass."
}

View File

@ -4,5 +4,32 @@
"Giromin Cangiaxo"
]
},
"cite_error": "Errô inte notte: $1"
"apihelp-query+references-description": "O restitoisce una rapresentaçion di dæti de referençe associæ co-e paggine indicæ.",
"apihelp-query+references-example-1": "Referençe associæ con <kbd>Albert Einstein</kbd>.",
"cite-desc": "O l'azonze i tag <nowiki><ref[ name=id]></nowiki> e <nowiki><references/></nowiki> pe gestî e çitaçioin",
"cite_error": "Errô inte notte: $1",
"cite_error_ref_numeric_key": "Errô inte l'uso do marcatô <code>&lt;ref&gt;</code>: o nomme o no poeu ese un nummero intrego. Adoeuvia un tittolo esteiso",
"cite_error_ref_no_key": "L'avertua de l'etichetta <code>&lt;ref&gt;</code> a no l'è corretta ò a g'ha un nomme errou.",
"cite_error_ref_too_many_keys": "Tag <code>&lt;ref&gt;</code> non vallido: nommi non vallidi (pres. troppi)",
"cite_error_ref_no_input": "Tag <code>&lt;ref&gt;</code> non vallido: i ref sença nomme no poeuan ese voeui",
"cite_error_references_duplicate_key": "Tag <code>&lt;ref&gt;</code> non vallido; o nomme \"$1\" o l'è stæto definio ciù votte con di contegnui despægi",
"cite_error_references_invalid_parameters": "Tag <code>&lt;references&gt;</code> non vallido: parametri non ammissi, adoeuvia <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Tag <code>&lt;references&gt;</code> non vallido;\nsolo o parametro \"group\" o l'è permisso.\nAdoeuvia <code>&lt;references /&gt;</code> ò <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Etichette de rimando personalizæ esaorie, aomentine o nummero into messaggio <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
"cite_error_no_link_label_group": "Etichette pe inganci personalizæ do groppo \"$1\" esaorie, aomentine o nummero into messaggio <nowiki>[[MediaWiki:$2]]</nowiki>",
"cite_error_references_no_text": "Marcatî <code>&lt;ref&gt;</code> non vallido; no l'è stæto indicou nisciun testo pe-o marcatô <code>$1</code>",
"cite_error_included_ref": "<code>&lt;/ref&gt;</code> finâ mancante pe-o marcatô <code>&lt;ref&gt;</code>",
"cite_error_group_refs_without_references": "Ghè di tag <code>&lt;ref&gt;</code> pe 'n groppo ciamou \"$1\" ma no l'è stæto trovou nisciun tag <code>&lt;references group=\"$1\"/&gt;</code> corrispondente, oppù manca un <code>&lt;/ref&gt;</code> finâ",
"cite_error_references_group_mismatch": "O tag <code>&lt;ref&gt;</code> in <code>&lt;references&gt;</code> o g'ha l'attributo groppo \"$1\" in conflito.",
"cite_error_references_missing_group": "O tag <code>&lt;ref&gt;</code> definio in <code>&lt;references&gt;</code> o g'ha un attributo gruppo \"$1\" ch'o no compâ into testo precedente.",
"cite_error_references_missing_key": "O tag <code>&lt;ref&gt;</code> con nomme \"$1\" definio in <code>&lt;references&gt;</code> o no l'è doeuviou into testo precedente.",
"cite_error_references_no_key": "O tag <code>&lt;ref&gt;</code> definio in <code>&lt;references&gt;</code> o no g'ha un attributo nomme.",
"cite_error_empty_references_define": "O tag <code>&lt;ref&gt;</code> definio in <code>&lt;references&gt;</code> con nomme \"$1\" o no g'ha arcun contegnuo.",
"cite-tracking-category-cite-error": "Paggine con erroî inte notte",
"cite-tracking-category-cite-error-desc": "E paggine in questa categoria g'han di erroî inte l'uso di tag pe-e notte.",
"cite_references_link_accessibility_label": "Sata",
"cite_references_link_many_accessibility_label": "Sata a:",
"cite_section_preview_references": "Anteprimma de notte",
"cite_warning": "Attençion inte notte: $1",
"cite_warning_sectionpreview_no_text": "O tag <code>&lt;ref&gt;</code> con nomme <code>$1</code> o no poeu ese vixualizou in anteprimma, perché o l'è definio a-o de foeua da seçion attoale ò o no l'è definio affæto."
}

View File

@ -9,5 +9,8 @@
},
"cite-desc": "Pievieno <nowiki><ref[ name=id]></nowiki> un <nowiki><references/></nowiki> tagus, atsaucēm",
"cite_error": "Kļūda atsaucē: $1",
"cite_error_ref_numeric_key": "Nederīga <code>&lt;ref&gt;</code> iezīme;\n\"name\" vērtība nevar būt vienkāršs skaitlis. Izmanto aprakstošāku nosaukumu",
"cite-tracking-category-cite-error": "Lapas ar atsauču kļūdām",
"cite_section_preview_references": "Atsauču priekšskats",
"cite_warning": "Atsauces brīdinājums: $1"
}

View File

@ -1,8 +1,9 @@
{
"@metadata": {
"authors": [
"Tulsi Bhagat"
"Tulsi Bhagat",
"बिप्लब आनन्द"
]
},
"cite_error": "उल्लेख गल्ती: $1"
"cite_error": "सन्दर्भ त्रुटि: $1"
}

View File

@ -5,9 +5,12 @@
"Danmichaelo",
"Laaknor",
"Chameleon222",
"Cocu"
"Cocu",
"Jon Harald Søby"
]
},
"apihelp-query+references-description": "Returnerer en datarepresentasjon av referanser assosiert med de gitte sidene.",
"apihelp-query+references-example-1": "Referanser forbundet med <kbd>Albert Einstein</kbd>.",
"cite-desc": "Legger til <nowiki><ref[ name=id]></nowiki> og <nowiki><references/></nowiki>-tagger for referanser",
"cite_error": "Siteringsfeil: $1",
"cite_error_ref_numeric_key": "Ugyldig <code>&lt;ref&gt;</code>-kode; navnet kan ikke være et enkelt heltall, bruk en beskrivende tittel",

View File

@ -12,10 +12,12 @@
"cite_error_ref_no_key": "Ugyldig <code>&lt;ref&gt;</code>-kode; referansar utan innhald må innehalde namn",
"cite_error_ref_too_many_keys": "Ugyldig <code>&lt;ref&gt;</code>-kode; ugyldige namn, t.d. for mange",
"cite_error_ref_no_input": "Ugyldig <code>&lt;ref&gt;</code>-kode; referansar uten namn må ha innhald",
"cite_error_references_duplicate_key": "Ugyldig <code>&lt;ref&gt;</code>-merke; namnet «$1» er definert flere gonger med ulikt innhald",
"cite_error_references_invalid_parameters": "Ugyldig <code>&lt;references&gt;</code>-kode; ingen parametrar er tillat, bruk <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Ugyldig <code>&lt;references&gt;</code>-tagg; berre parameteren «group» er tillatt. Bruk <code>&lt;references /&gt;</code> eller <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Gjekk tom for eigendefinerte tilbakelenketekstar.\nDefiner fleire i meldinga <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
"cite_error_references_no_text": "Ugyldig <code>&lt;ref&gt;</code>-merke; ingen tekst vart gjeven for referansen med namnet <code>$1</code>",
"cite_error_included_ref": "Avsluttande <code>&lt;/ref&gt;</code>-tagg manglar for <code>&lt;ref&gt;</code>",
"cite_error_group_refs_without_references": "<code>&lt;ref&gt;</code>-merke finst for gruppenamnet «$1», men inkje samsvarande <code>&lt;references group=\"$1\"/&gt;</code>-merke vart funne"
"cite_error_group_refs_without_references": "<code>&lt;ref&gt;</code>-merke finst for gruppenamnet «$1», men inkje samsvarande <code>&lt;references group=\"$1\"/&gt;</code>-merke vart funne",
"cite_section_preview_references": "Førehandsvising av kjelder"
}

View File

@ -15,7 +15,7 @@
"cite_error_references_no_backlink_label": "ନିଜ ପସନ୍ଦର ବ୍ୟାକଲିଙ୍କ ଚିହ୍ନ ସବୁ ସରିଗଲା ।\n<nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>ସୂଚନାରେ ଅଧିକ ଦେଖନ୍ତୁ ।",
"cite_error_no_link_label_group": "\"$1\" ଗୋଠ ଲାଗି ନିଜ ପସନ୍ଦର ବ୍ୟାକଲିଙ୍କ ଚିହ୍ନ ସବୁ ସରିଗଲା ।\n<nowiki>[[MediaWiki:$2]]</nowiki>ସୂଚନାରେ ଅଧିକ ଚିହ୍ନିତ କରନ୍ତୁ ।",
"cite_error_references_no_text": "ଅଚଳ <code>&lt;ref&gt;</code> ଚିହ୍ନ;\n<code>$1</code> ନାମରେ ଥିବା ଆଧାର ଭିତରେ କିଛି ଲେଖା ନାହିଁ ।",
"cite_error_included_ref": "<code>&lt;/ref&gt;</code> କୁ ବନ୍ଦ କରୁଅଛୁ; <code>&lt;ref&gt;</code> ନାହିଁ; ଚିହ୍ନ",
"cite_error_included_ref": "<code>&lt;ref&gt;</code> ଟ୍ୟାଗ ପାଇଁ ବନ୍ଦକରିବା <code>&lt;/ref&gt;</code> ନାହିଁ",
"cite_error_group_refs_without_references": "<code>&lt;ref&gt;</code> ଟ୍ୟାଗସବୁ କେବଳ \"$1\" ନାମକ ଦଳ ପାଇଁ ରହିଥିଲେ ହେଁ କୌଣସି ସମ୍ବନ୍ଧିତ <code>&lt;references group=\"$1\"/&gt;</code> ଟ୍ୟାଗ ମିଳିଲା ନାହିଁ କିମ୍ବା <code>&lt;/ref&gt;</code> ବନ୍ଦ କରିବା ଟ୍ୟାଗଟି ନାହିଁ ।",
"cite_error_references_group_mismatch": "<code>&lt;references&gt ରେ <code>&lt;ref&gt;</code> ଚିହ୍ନ;</code> ର ଅସୁବିଧାଜନକ ଗୋଠ ବିଶେଷତା \"$1\" ।",
"cite_error_references_missing_group": "<code>&lt;references&gt;</code>ରେ ଦିଆଯାଇଥିବା <code>&lt;ref&gt;</code> ଚିହ୍ନରେ \"$1\" ଗୋଠ ପାଇଁ ଚିହ୍ନ ଅଛି ଯାହାକି ଦରକାରୀ ଲେଖାରେ ଆସୁନାହିଁ ।",

View File

@ -10,6 +10,8 @@
"Chrumps"
]
},
"apihelp-query+references-description": "Zwraca reprezentację danych przypisów związanych z tą stroną.",
"apihelp-query+references-example-1": "Przypisy powiązane z <kbd>Albert Einstein</kbd>.",
"cite-desc": "Dodaje znaczniki <nowiki><ref[ name=id]></nowiki> i <nowiki><references/></nowiki> ułatwiające podawanie źródeł cytatów",
"cite_error": "Błąd rozszerzenia ''cite'': $1",
"cite_error_ref_numeric_key": "Nieprawidłowy znacznik <code>&lt;ref&gt;</code>. Nazwa nie może być liczbą, użyj nazwy opisowej.",
@ -33,5 +35,7 @@
"cite-tracking-category-cite-error-desc": "Strony w tej kategorii zawierają błędy w użyciu znaczników przypisów.",
"cite_references_link_accessibility_label": "Skocz do góry",
"cite_references_link_many_accessibility_label": "Skocz do:",
"cite_section_preview_references": "Podgląd przypisów"
"cite_section_preview_references": "Podgląd przypisów",
"cite_warning": "Ostrzeżenie Cite: $1",
"cite_warning_sectionpreview_no_text": "Znacznik <code>&lt;ref&gt;</code> o nazwie <code>$1</code> nie może być wyświetlony na tym podglądzie, ponieważ jest zdefiniowany poza edytowaną sekcją lub wcale."
}

View File

@ -8,31 +8,36 @@
"Opraco",
"Waldir",
"555",
"Vitorvicentevalente"
"Vitorvicentevalente",
"Fúlvio"
]
},
"apihelp-query+references-description": "Devolver uma representação de dados, das referências associadas com as páginas especificadas.",
"apihelp-query+references-example-1": "Referências associadas com <kbd>Albert Einstein</kbd>.",
"cite-desc": "Adiciona elementos <nowiki><ref[ name=id]></nowiki> e <nowiki><references/></nowiki> para uso em citações",
"cite_error": "Erro de citação: $1",
"cite_error_ref_numeric_key": "Código <code>&lt;ref&gt;</code> inválido; o nome não pode ser um número. Utilize um nome descritivo",
"cite_error_ref_no_key": "Código <code>&lt;ref&gt;</code> inválido; refs sem conteúdo devem ter um parâmetro de nome",
"cite_error_ref_too_many_keys": "Código <code>&lt;ref&gt;</code> inválido; nomes inválidos (por exemplo, nome muito extenso)",
"cite_error_ref_no_input": "Código <code>&lt;ref&gt;</code> inválido; refs sem parâmetro de nome devem possuir conteúdo a elas associado",
"cite_error_references_invalid_parameters": "Código <code>&lt;references&gt;</code> inválido; não são permitidos parâmetros. Utilize como <code>&lt;references /&gt;</code>",
"cite_error_ref_numeric_key": "Elemento <code>&lt;ref&gt;</code> inválido; o nome não pode ser um número. Use um nome descritivo",
"cite_error_ref_no_key": "Elemento de abertura <code>&lt;ref&gt;</code> está mal formado ou tem um nome inválido",
"cite_error_ref_too_many_keys": "Elemento <code>&lt;ref&gt;</code> inválido; nomes inválidos (por exemplo, são demasiados)",
"cite_error_ref_no_input": "Elemento <code>&lt;ref&gt;</code> inválido; refs sem parâmetro de nome devem ter conteúdo associado",
"cite_error_references_duplicate_key": "Código <code>&lt;ref&gt;</code> inválido; o nome \"$1\" é definido mais de uma vez com conteúdos diferentes",
"cite_error_references_invalid_parameters": "Código <code>&lt;references&gt;</code> inválido; não são permitidos parâmetros. Use <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "O elemento <code>&lt;references&gt;</code> é inválido;\nsó é permitido o parâmetro \"group\".\nUse <code>&lt;references /&gt;</code>, ou <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Esgotamento das legendas personalizadas para backlinks.\nDefina mais na mensagem <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
"cite_error_no_link_label_group": "Esgotamento das legendas personalizadas para links, no grupo \"$1\".\nDefina mais na mensagem <nowiki>[[MediaWiki:$2]]</nowiki>.",
"cite_error_references_no_text": "Tag <code>&lt;ref&gt;</code> inválida; não foi fornecido texto para as refs chamadas <code>$1</code>",
"cite_error_included_ref": "<code>&lt;/ref&gt;</code> de fecho em falta, para o elemento <code>&lt;ref&gt;</code>",
"cite_error_group_refs_without_references": "existem marcas <code>&lt;ref&gt;</code> para um grupo chamado \"$1\", mas nenhuma marca <code>&lt;references group=\"$1\"/&gt;</code> correspondente foi encontrada (ou uma marca de fechamento <code>&lt;/ref&gt;</code> está faltando)",
"cite_error_references_group_mismatch": "O elemento <code>&lt;ref&gt;</code> em <code>&lt;references&gt;</code> tem o atributo de grupo \"$1\", que está em conflito com o de <code>&lt;references&gt;</code>.",
"cite_error_references_missing_group": "O elemento <code>&lt;ref&gt;</code> definido em <code>&lt;references&gt;</code> tem o atributo de grupo \"$1\", que não aparece no texto anterior.",
"cite_error_references_missing_key": "A etiqueta <code>&lt;ref&gt;</code> com nome \"$1\" definida em <code>&lt;references&gt;</code> não é utilizada no texto acima.",
"cite_error_references_no_key": "O elemento <code>&lt;ref&gt;</code> definido em <code>&lt;references&gt;</code> não tem um atributo de nome.",
"cite_error_empty_references_define": "O elemento <code>&lt;ref&gt;</code> definido em <code>&lt;references&gt;</code> com o nome \"$1\" não tem conteúdo.",
"cite_error_references_no_text": "Código <code>&lt;ref&gt;</code> inválido; não foi fornecido texto para as refs de nome <code>$1</code>",
"cite_error_included_ref": "Elemento de fecho <code>&lt;/ref&gt;</code> em falta para o elemento <code>&lt;ref&gt;</code>",
"cite_error_group_refs_without_references": "Existem elementos <code>&lt;ref&gt;</code> para um grupo chamado \"$1\", mas não foi encontrado nenhum <code>&lt;references group=\"$1\"/&gt;</code> correspondente (ou falta um elemento de fecho <code>&lt;/ref&gt;</code>)",
"cite_error_references_group_mismatch": "Elemento <code>&lt;ref&gt;</code> em <code>&lt;references&gt;</code> tem o atributo de grupo \"$1\", que está em conflito com o de <code>&lt;references&gt;</code>.",
"cite_error_references_missing_group": "Elemento <code>&lt;ref&gt;</code> definido em <code>&lt;references&gt;</code> tem o atributo de grupo \"$1\", que não aparece no texto anterior.",
"cite_error_references_missing_key": "Elemento <code>&lt;ref&gt;</code> com nome \"$1\" definido em <code>&lt;references&gt;</code> não é utilizado no texto da página.",
"cite_error_references_no_key": "Elemento <code>&lt;ref&gt;</code> definido em <code>&lt;references&gt;</code> não tem um atributo de nome.",
"cite_error_empty_references_define": "Elemento <code>&lt;ref&gt;</code> definido em <code>&lt;references&gt;</code> com o nome \"$1\" não tem conteúdo.",
"cite-tracking-category-cite-error": "Páginas com erros em referências",
"cite-tracking-category-cite-error-desc": "As páginas nesta categoria contém erros no uso das marcações de referências.",
"cite-tracking-category-cite-error-desc": "As páginas nesta categoria contêm erros no uso dos elementos de referências.",
"cite_references_link_accessibility_label": "Ir para cima",
"cite_references_link_many_accessibility_label": "Ir para:",
"cite_section_preview_references": "Pré-visualização de referências",
"cite_warning": "Aviso: $1"
"cite_warning": "Aviso de citação: $1",
"cite_warning_sectionpreview_no_text": "Elemento <code>&lt;ref&gt;</code> com o nome <code>$1</code> não pode fazer parte da antevisão porque está definido fora da presente secção ou não foi definido."
}

View File

@ -1,13 +1,14 @@
{
"@metadata": {
"authors": [
"HalanTul"
"HalanTul",
"София"
]
},
"cite-desc": "Хос быһаарыы <nowiki><ref[ name=id]></nowiki> уонна <nowiki><references/></nowiki> тиэктэрин эбэр",
"cite_error": "Цитата сыыһата: $1",
"cite_error_ref_numeric_key": "Неправильный вызов: ожидался нечисловой ключ",
"cite_error_ref_no_key": "<code>&lt;ref&gt;</code> тиэк алҕаһа (Неправильный вызов): аата (күлүүһэ) ыйыллыбатах",
"cite_error_ref_no_key": "<code>&lt;ref&gt;</code> тиэк алҕаһа: аата (күлүүһэ) ыйыллыбатах",
"cite_error_ref_too_many_keys": "<code>&lt;ref&gt;</code> тиэк алҕаһа (Неправильный вызов): аата сыыһа ыйыллыбыт, эбэтэр наһаа элбэх аат суруллубут",
"cite_error_ref_no_input": "<code>&lt;ref&gt;</code> тиэк алҕастаах (Неверный вызов): иһинээҕитэ сыыһа",
"cite_error_references_invalid_parameters": "Сыыһа параметрдар бэриллибиттэр; <code>&lt;references /&gt;</code> тиэккэ отой суох буолуохтаахтар",

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Albinus"
]
},
"cite_error": "Kath bhul:$1"
}

View File

@ -11,6 +11,7 @@
"cite_error_ref_no_key": "Neplatné volanie; nebol špecifikovaný kľúč",
"cite_error_ref_too_many_keys": "Neplatné volanie; neplatné kľúče, napr. príliš veľa alebo nesprávne špecifikovaný kľúč",
"cite_error_ref_no_input": "Neplatné volanie; nebol špecifikovaný vstup",
"cite_error_references_duplicate_key": "Neplatná značka <code>&lt;ref&gt;</code>; názov „$1“ je použitý viackrát s rôznym obsahom",
"cite_error_references_invalid_parameters": "Neplatné parametre; neočakávli sa žiadne",
"cite_error_references_invalid_parameters_group": "Neplatná značka <code>&lt;references&gt;</code>;\nje povolený iba parameter „group“.\nPoužite <code>&lt;references /&gt;</code> alebo <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Minuli sa generované návestia spätných odkazov, definujte viac v správe <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -24,5 +25,6 @@
"cite_error_references_no_key": "Značka <code>&lt;ref&gt;</code> s definovaná v <code>&lt;references&gt;</code> nemá žiaden atribút názov.",
"cite_error_empty_references_define": "Značka <code>&lt;ref&gt;</code> s definovaná v <code>&lt;references&gt;</code> s názvom „$1“ nemá žiaden obsah.",
"cite-tracking-category-cite-error": "Stránky s chybami v referenciách",
"cite-tracking-category-cite-error-desc": "Stránky v tejto kategórii obsahujú chyby v použití značiek pre citačné referencie."
"cite-tracking-category-cite-error-desc": "Stránky v tejto kategórii obsahujú chyby v použití značiek pre citačné referencie.",
"cite_section_preview_references": "Náhľad referencií"
}

View File

@ -31,5 +31,6 @@
"cite_references_link_many_format": "<sup>[[#$1|$2]]</sup>",
"cite_references_link_many_format_backlink_labels": "а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш аа аб ав аг ад ађ ае аж аз аи ај ак ал аљ ам ан ањ ао ап ар ас ат аћ ау аф ах ац ач аџ аш ба бб бв бг бд бђ бе бж бз би бј бк бл бљ бм бн бњ бо бп бр бс бт бћ бу бф бх бц бч бџ бш ва вб вв вг вд вђ ве вж вз ви вј вк вл вљ вм вн вњ во вп вр вс вт вћ ву вф вх вц вч вџ вш га гб гв гг гд гђ ге гж гз ги гј гк гл гљ гм гн гњ го гп гр гс гт гћ гу гф гх гц гч гџ гш да дб дв дг дд дђ де дж дз ди дј дк дл дљ дм дн дњ до дп др дс дт дћ ду дф дх дц дч дџ дш ђа ђб ђв ђг ђд ]] ђе ђж ђз ђи ђј ђк ђл ђљ ђм ђн ђњ ђо ђп ђр ђс ђт ђћ ђу ђф ђх ђц ђч ђџ ђш еа еб ев ег ед еђ ее еж ез еи еј ек ел ељ ем ен ењ ео еп ер ес ет ећ еу еф ех ец еч еџ еш жа жб жв жг жд жђ же жж жз жи жј жк жл жљ жм жн жњ жо жп жр жс жт жћ жу жф жх жц жч жџ жш за зб зв зг зд зђ зе зж зз зи зј зк зл зљ зм зн зњ зо зп зр зс зт зћ зу зф зх зц зч зџ зш иа иб ив иг ид иђ ие иж из ии иј ик ил иљ им ин ињ ио ип ир ис ит ић иу иф их иц ич иџ иш ја јб јв јг јд јђ је јж јз ји јј јк јл јљ јм јн јњ јо јп јр јс јт јћ ју јф јх јц јч јџ јш ка кб кв кг кд кђ ке кж кз ки кј кк кл кљ км кн књ ко кп кр кс кт кћ ку кф кх кц кч кџ кш ла лб лв лг лд лђ ле лж лз ли лј лк лл лљ лм лн лњ ло лп лр лс лт лћ лу лф лх лц лч лџ лш ља љб љв љг љд љђ ље љж љз љи љј љк љл љљ љм љн љњ љо љп љр љс љт љћ љу љф љх љц љч љџ љш ма мб мв мг мд мђ ме мж мз ми мј мк мл мљ мм мн мњ мо мп мр мс мт мћ му мф мх мц мч мџ мш на нб нв нг нд нђ не нж нз ни нј нк нл нљ нм нн нњ но нп нр нс нт нћ ну нф нх нц нч нџ нш ња њб њв њг њд њђ ње њж њз њи њј њк њл њљ њм њн њњ њо њп њр њс њт њћ њу њф њх њц њч њџ њш оа об ов ог од ођ ое ож оз ои ој ок ол ољ ом он оњ оо оп ор ос от оћ оу оф ох оц оч оџ ош па пб пв пг пд пђ пе пж пз пи пј пк пл пљ пм пн пњ по пп пр пс пт пћ пу пф пх пц пч пџ пш ра рб рв рг рд рђ ре рж рз ри рј рк рл рљ рм рн рњ ро рп рр рс рт рћ ру рф рх рц рч рџ рш са сб св сг сд сђ се сж сз си сј ск сл сљ см сн сњ со сп ср сс ст сћ су сф сх сц сч сџ сш та тб тв тг тд тђ те тж тз ти тј тк тл тљ тм тн тњ то тп тр тс тт тћ ту тф тх тц тч тџ тш ћа ћб ћв ћг ћд ћђ ће ћж ћз ћи ћј ћк ћл ћљ ћм ћн ћњ ћо ћп ћр ћс ћт ћћ ћу ћф ћх ћц ћч ћџ ћш уа уб ув уг уд уђ уе уж уз уи уј ук ул уљ ум ун уњ уо уп ур ус ут ућ уу уф ух уц уч уџ уш фа фб фв фг фд фђ фе фж фз фи фј фк фл фљ фм фн фњ фо фп фр фс фт фћ фу фф фх фц фч фџ фш ха хб хв хг хд хђ хе хж хз хи хј хк хл хљ хм хн хњ хо хп хр хс хт хћ ху хф хх хц хч хџ хш ца цб цв цг цд цђ це цж цз ци цј цк цл цљ цм цн цњ цо цп цр цс цт цћ цу цф цх цц цч цџ цш ча чб чв чг чд чђ че чж чз чи чј чк чл чљ чм чн чњ чо чп чр чс чт чћ чу чф чх чц чч чџ чш џа џб џв џг џд џђ џе џж џз џи џј џк џл џљ џм џн џњ џо џп џр џс џт џћ џу џф џх џц џч џџ џш ша шб шв шг шд шђ ше шж шз ши шј шк шл шљ шм шн шњ шо шп шр шс шт шћ шу шф шх шц шч шџ шш",
"cite_references_link_many_sep": "&#32;",
"cite_references_link_many_and": "&#32;"
"cite_references_link_many_and": "&#32;",
"cite_section_preview_references": "Преглед референци"
}

View File

@ -11,5 +11,6 @@
"cite-tracking-category-cite-error": "صفحات مع حوالہ جاتی اغلاط",
"cite-tracking-category-cite-error-desc": "اس زمرہ میں موجود صفحات میں حوالہ جاتی ٹیگز کو غلط استعمال کیا گیا ہے۔",
"cite_references_link_accessibility_label": "اوپر جائیں",
"cite_references_link_many_accessibility_label": "اس تک اوپر جائیں:"
"cite_references_link_many_accessibility_label": "اس تک اوپر جائیں:",
"cite_section_preview_references": "حوالہ جات کی نما‏ئش"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Wikicology"
]
},
"cite_error": "Àṣìṣe"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Amara-Amaziɣ"
]
},
"cite_error": "ⵜⴰⵣⴳⵍⵜ ⵓⴱⴷⴰⵔ: $1"
}

View File

@ -7,7 +7,8 @@
"Philip",
"乌拉跨氪",
"Cwlin0416",
"Bowleerin"
"Bowleerin",
"Waihorace"
]
},
"cite-desc": "支援 <nowiki><ref[ name=id]></nowiki> 與 <nowiki><references/></nowiki> 標籤,可用來註明參考文獻",
@ -32,5 +33,6 @@
"cite-tracking-category-cite-error-desc": "在此分類內的頁面在參考來源的使用上有錯誤。",
"cite_references_link_accessibility_label": "移至",
"cite_references_link_many_accessibility_label": "移至:",
"cite_section_preview_references": "預覽參考文獻",
"cite_warning": "引用警告:$1"
}

View File

@ -0,0 +1,108 @@
<?php
/**
* Expose reference information for a page via prop=references API.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @see https://www.mediawiki.org/wiki/Extension:Cite#API
*/
class ApiQueryReferences extends ApiQueryBase {
public function __construct( $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'rf' );
}
public function getAllowedParams() {
return [
'continue' => [
ApiBase::PARAM_HELP_MSG => 'api-help-param-continue',
],
];
}
public function execute() {
$config = ConfigFactory::getDefaultInstance()->makeConfig( 'cite' );
if ( !$config->get( 'CiteStoreReferencesData' ) ) {
$this->dieUsage( 'Cite extension reference storage is not enabled', 'citestoragedisabled' );
}
$params = $this->extractRequestParams();
$titles = $this->getPageSet()->getGoodTitles();
ksort( $titles );
if ( !is_null( $params['continue'] ) ) {
$startId = (int)$params['continue'];
// check it is definitely an int
$this->dieContinueUsageIf( strval( $startId ) !== $params['continue'] );
} else {
$startId = false;
}
foreach ( $titles as $pageId => $title ) {
// Skip until you have the correct starting point
if ( $startId !== false && $startId !== $pageId ) {
continue;
} else {
$startId = false;
}
$storedRefs = Cite::getStoredReferences( $title );
$allReferences = [];
// some pages may not have references stored
if ( $storedRefs !== false ) {
// a page can have multiple <references> tags but they all have unique keys
foreach ( $storedRefs['refs'] as $index => $grouping ) {
foreach ( $grouping as $group => $members ) {
foreach ( $members as $name => $ref ) {
$ref['name'] = $name;
$key = $ref['key'];
if ( is_string( $name ) ) {
$id = Cite::getReferencesKey( $name . '-' . $key );
} else {
$id = Cite::getReferencesKey( $key );
}
$ref['group'] = $group;
$ref['reflist'] = $index;
$allReferences[$id] = $ref;
}
}
}
}
// set some metadata since its an assoc data structure
ApiResult::setArrayType( $allReferences, 'kvp', 'id' );
// Ship a data representation of the combined references.
$fit = $this->addPageSubItems( $pageId, $allReferences );
if ( !$fit ) {
$this->setContinueEnumParameter( 'continue', $pageId );
break;
}
}
}
public function getCacheMode( $params ) {
return 'public';
}
/**
* @see ApiBase::getExamplesMessages()
*/
protected function getExamplesMessages() {
return [
'action=query&prop=references&titles=Albert%20Einstein' =>
'apihelp-query+references-example-1',
];
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,34 @@
<?php
/**
* ResourceLoaderFileModule for adding the content language Cite CSS
*
* @file
* @ingroup Extensions
* @copyright 2011-2016 Cite VisualEditor Team and others; see AUTHORS.txt
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
*/
class CiteCSSFileModule extends ResourceLoaderFileModule {
public function __construct(
$options = [],
$localBasePath = null,
$remoteBasePath = null
) {
global $wgContLang;
parent::__construct( $options, $localBasePath, $remoteBasePath );
// Get the content language code, and all the fallbacks. The first that
// has a ext.cite.style.<lang code>.css file present will be used.
$langCodes = array_merge( [ $wgContLang->getCode() ],
$wgContLang->getFallbackLanguages() );
foreach ( $langCodes as $lang ) {
$langStyleFile = 'ext.cite.style.' . $lang . '.css';
$localPath = $this->getLocalPath( $langStyleFile );
if ( file_exists( $localPath ) ) {
$this->styles[] = $langStyleFile;
break;
}
}
}
}

View File

@ -0,0 +1,71 @@
<?php
/**
* Resource loader module providing extra data from the server to Cite.
*
* Temporary hack for T93800
*
* @file
* @ingroup Extensions
* @copyright 2011-2016 Cite VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see MIT-LICENSE.txt
*/
class CiteDataModule extends ResourceLoaderModule {
/* Protected Members */
protected $origin = self::ORIGIN_USER_SITEWIDE;
protected $targets = [ 'desktop', 'mobile' ];
/* Methods */
public function getScript( ResourceLoaderContext $context ) {
$citationDefinition = json_decode(
$context->msg( 'cite-tool-definition.json' )
->inContentLanguage()
->plain()
);
if ( $citationDefinition === null ) {
$citationDefinition = json_decode(
$context->msg( 'visualeditor-cite-tool-definition.json' )
->inContentLanguage()
->plain()
);
}
$citationTools = [];
if ( is_array( $citationDefinition ) ) {
foreach ( $citationDefinition as $tool ) {
if ( !isset( $tool->title ) ) {
$tool->title = $context->msg( 'visualeditor-cite-tool-name-' . $tool->name )
->text();
}
$citationTools[] = $tool;
}
}
return
've.init.platform.addMessages(' . FormatJson::encode(
[
'cite-tool-definition.json' => json_encode( $citationTools )
],
ResourceLoader::inDebugMode()
) . ');';
}
public function getDependencies( ResourceLoaderContext $context = null ) {
return [
'ext.visualEditor.base',
'ext.visualEditor.mediawiki',
];
}
public function getDefinitionSummary( ResourceLoaderContext $context ) {
$summary = parent::getDefinitionSummary( $context );
$summary[] = [
'script' => $this->getScript( $context ),
];
return $summary;
}
}

View File

@ -0,0 +1,258 @@
<?php
/**
* Cite extension hooks
*
* @file
* @ingroup Extensions
* @copyright 2011-2016 Cite VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see MIT-LICENSE.txt
*/
class CiteHooks {
/**
* Convert the content model of a message that is actually JSON to JSON. This
* only affects validation and UI when saving and editing, not loading the
* content.
*
* @param Title $title
* @param string $model
* @return bool
*/
public static function onContentHandlerDefaultModelFor( Title $title, &$model ) {
if (
$title->inNamespace( NS_MEDIAWIKI ) &&
(
$title->getText() == 'Visualeditor-cite-tool-definition.json' ||
$title->getText() == 'Cite-tool-definition.json'
)
) {
$model = CONTENT_MODEL_JSON;
}
return true;
}
/**
* Conditionally register the unit testing module for the ext.cite.visualEditor module
* only if that module is loaded
*
* @param array $testModules The array of registered test modules
* @param ResourceLoader $resourceLoader The reference to the resource loader
* @return true
*/
public static function onResourceLoaderTestModules(
array &$testModules,
ResourceLoader &$resourceLoader
) {
$resourceModules = $resourceLoader->getConfig()->get( 'ResourceModules' );
if (
isset( $resourceModules[ 'ext.visualEditor.mediawiki' ] ) ||
$resourceLoader->isModuleRegistered( 'ext.visualEditor.mediawiki' )
) {
$testModules['qunit']['ext.cite.visualEditor.test'] = [
'scripts' => [
'modules/ve-cite/tests/ve.dm.citeExample.js',
'modules/ve-cite/tests/ve.dm.Converter.test.js',
'modules/ve-cite/tests/ve.dm.InternalList.test.js',
'modules/ve-cite/tests/ve.dm.Transaction.test.js',
],
'dependencies' => [
'ext.cite.visualEditor',
'ext.visualEditor.test'
],
'localBasePath' => dirname( __DIR__ ),
'remoteExtPath' => 'Cite',
];
}
return true;
}
/**
* Conditionally register resource loader modules that depends on the
* VisualEditor MediaWiki extension.
*
* @param $resourceLoader
* @return true
*/
public static function onResourceLoaderRegisterModules( &$resourceLoader ) {
if ( ! class_exists( 'VisualEditorHooks' ) ) {
return true;
}
$dir = dirname( __DIR__ ) . DIRECTORY_SEPARATOR;
$resourceLoader->register( "ext.cite.visualEditor.core", [
'localBasePath' => $dir . 'modules',
'remoteExtPath' => 'Cite/modules',
"scripts" => [
"ve-cite/ve.dm.MWReferenceModel.js",
"ve-cite/ve.dm.MWReferencesListNode.js",
"ve-cite/ve.dm.MWReferenceNode.js",
"ve-cite/ve.ce.MWReferencesListNode.js",
"ve-cite/ve.ce.MWReferenceNode.js",
"ve-cite/ve.ui.MWReferencesListCommand.js"
],
"styles" => [
"ve-cite/ve.ce.MWReferencesListNode.css",
"ve-cite/ve.ce.MWReferenceNode.css"
],
"dependencies" => [
"ext.visualEditor.mwcore"
],
"messages" => [
"cite-ve-referenceslist-isempty",
"cite-ve-referenceslist-isempty-default",
"cite-ve-referenceslist-missingref"
],
"targets" => [
"desktop",
"mobile"
]
] );
$resourceLoader->register( "ext.cite.visualEditor.data",
[ "class" => "CiteDataModule" ] );
$resourceLoader->register( "ext.cite.visualEditor", [
'localBasePath' => $dir . 'modules',
'remoteExtPath' => 'Cite/modules',
"scripts" => [
"ve-cite/ve.ui.MWReferenceGroupInputWidget.js",
"ve-cite/ve.ui.MWReferenceSearchWidget.js",
"ve-cite/ve.ui.MWReferenceResultWidget.js",
"ve-cite/ve.ui.MWUseExistingReferenceCommand.js",
"ve-cite/ve.ui.MWCitationDialog.js",
"ve-cite/ve.ui.MWReferencesListDialog.js",
"ve-cite/ve.ui.MWReferenceDialog.js",
"ve-cite/ve.ui.MWReferenceDialogTool.js",
"ve-cite/ve.ui.MWCitationDialogTool.js",
"ve-cite/ve.ui.MWReferenceContextItem.js",
"ve-cite/ve.ui.MWReferencesListContextItem.js",
"ve-cite/ve.ui.MWCitationContextItem.js",
"ve-cite/ve.ui.MWCitationAction.js",
"ve-cite/ve.ui.MWReference.init.js"
],
"styles" => [
"ve-cite/ve.ui.MWReferenceContextItem.css",
"ve-cite/ve.ui.MWReferenceGroupInputWidget.css",
"ve-cite/ve.ui.MWReferenceIcons.css",
"ve-cite/ve.ui.MWReferenceResultWidget.css",
"ve-cite/ve.ui.MWReferenceSearchWidget.css"
],
"dependencies" => [
"ext.cite.visualEditor.core",
"ext.cite.visualEditor.data",
"ext.cite.style",
"ext.visualEditor.mwtransclusion",
"ext.visualEditor.mediawiki"
],
"messages" => [
"cite-ve-dialog-reference-editing-reused",
"cite-ve-dialog-reference-options-group-label",
"cite-ve-dialog-reference-options-group-placeholder",
"cite-ve-dialog-reference-options-name-label",
"cite-ve-dialog-reference-options-section",
"cite-ve-dialog-reference-title",
"cite-ve-dialog-reference-useexisting-full-label",
"cite-ve-dialog-reference-useexisting-label",
"cite-ve-dialog-reference-useexisting-tool",
"cite-ve-dialog-referenceslist-contextitem-description-general",
"cite-ve-dialog-referenceslist-contextitem-description-named",
"cite-ve-dialog-referenceslist-title",
"cite-ve-dialogbutton-citation-educationpopup-title",
"cite-ve-dialogbutton-citation-educationpopup-text",
"cite-ve-dialogbutton-reference-full-label",
"cite-ve-dialogbutton-reference-tooltip",
"cite-ve-dialogbutton-reference-title",
"cite-ve-dialogbutton-referenceslist-tooltip",
"cite-ve-reference-input-placeholder",
"cite-ve-toolbar-group-label",
"cite-ve-othergroup-item"
],
"targets" => [
"desktop",
"mobile"
]
] );
return true;
}
/**
* Callback for LinksUpdate hook
* Post-output processing of references property, for proper db storage
* Deferred to avoid performance overhead when outputting the page
*
* @param LinksUpdate $linksUpdate
*/
public static function onLinksUpdate( LinksUpdate &$linksUpdate ) {
global $wgCiteStoreReferencesData, $wgCiteCacheRawReferencesOnParse;
if ( !$wgCiteStoreReferencesData ) {
return;
}
$refData = $linksUpdate->getParserOutput()->getExtensionData( Cite::EXT_DATA_KEY );
if ( $refData === null ) {
return;
}
if ( $wgCiteCacheRawReferencesOnParse ) {
// caching
$cache = ObjectCache::getMainWANInstance();
$articleID = $linksUpdate->getTitle()->getArticleID();
$key = $cache->makeKey( Cite::EXT_DATA_KEY, $articleID );
$cache->set( $key, $refData, Cite::CACHE_DURATION_ONPARSE );
}
// JSON encode
$ppValue = FormatJson::encode( $refData, false, FormatJson::ALL_OK );
// GZIP encode references data at maximum compression
$ppValue = gzencode( $ppValue, 9 );
// split the string in smaller parts that can fit into a db blob
$ppValues = str_split( $ppValue, Cite::MAX_STORAGE_LENGTH );
foreach ( $ppValues as $num => $ppValue ) {
$key = 'references-' . intval( $num + 1 );
$linksUpdate->mProperties[$key] = $ppValue;
}
$linksUpdate->getParserOutput()->setExtensionData( Cite::EXT_DATA_KEY, null );
}
/**
* Callback for LinksUpdateComplete hook
* If $wgCiteCacheRawReferencesOnParse is set to false, purges the cache
* when references are modified
*
* @param LinksUpdate $linksUpdate
*/
public static function onLinksUpdateComplete( LinksUpdate &$linksUpdate ) {
global $wgCiteStoreReferencesData, $wgCiteCacheRawReferencesOnParse;
if ( !$wgCiteStoreReferencesData || $wgCiteCacheRawReferencesOnParse ) {
return;
}
// if we can, avoid clearing the cache when references were not changed
if ( method_exists( $linksUpdate, 'getAddedProperties' )
&& method_exists( $linksUpdate, 'getRemovedProperties' )
) {
$addedProps = $linksUpdate->getAddedProperties();
$removedProps = $linksUpdate->getRemovedProperties();
if ( !isset( $addedProps['references-1'] )
&& !isset( $removedProps['references-1'] )
) {
return;
}
}
$cache = ObjectCache::getMainWANInstance();
$articleID = $linksUpdate->getTitle()->getArticleID();
$key = $cache->makeKey( Cite::EXT_DATA_KEY, $articleID );
// delete with reduced hold off period (LinksUpdate uses a master connection)
$cache->delete( $key, WANObjectCache::MAX_COMMIT_DELAY );
}
/**
* Adds extra variables to the global config
*/
public static function onResourceLoaderGetConfigVars( array &$vars ) {
$config = ConfigFactory::getDefaultInstance()->makeConfig( 'cite' );
$vars['wgCiteVisualEditorOtherGroup'] = $config->get( 'CiteVisualEditorOtherGroup' );
return true;
}
}

View File

@ -3,14 +3,16 @@
* and https://en.wikipedia.org/w/index.php?oldid=572888139#Scrolling_past_the_bottom_of_the_page...
*/
.cite-accessibility-label {
position: absolute !important;
/* Workaround a Webkit/Blink bug about positioning within columns as many wikis format references with several columns */
top: -99999px;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
clip: rect( 1px 1px 1px 1px ); /* IE6, IE7 */
clip: rect( 1px, 1px, 1px, 1px );
/* stylelint-disable declaration-no-important */
position: absolute !important;
padding: 0 !important;
border: 0 !important;
height: 1px !important;
width: 1px !important;
/* stylelint-enable declaration-no-important */
overflow: hidden;
}

View File

@ -10,40 +10,42 @@ span.mw-ref {
}
/* With a group set */
span.mw-ref a[data-mw-group]::after {
content: "[" attr(data-mw-group) " " counter(mw-Ref, decimal) "]"}
span.mw-ref a[data-mw-group]:after {
content: '[' attr( data-mw-group ) ' ' counter( mw-Ref, decimal ) ']';
}
/* Groups with special appearance */
span.mw-ref a[data-mw-group="decimal"]::after {
content: "[" counter(mw-Ref, decimal) "]";
span.mw-ref a[data-mw-group='decimal']:after {
content: '[' counter( mw-Ref, decimal ) ']';
}
span.mw-ref a[data-mw-group="lower-alpha"]::after {
content: "[" counter(mw-Ref, lower-alpha) "]";
span.mw-ref a[data-mw-group='lower-alpha']:after {
content: '[' counter( mw-Ref, lower-alpha ) ']';
}
span.mw-ref a[data-mw-group="upper-alpha"]::after {
content: "[" counter(mw-Ref, upper-alpha) "]";
span.mw-ref a[data-mw-group='upper-alpha']:after {
content: '[' counter( mw-Ref, upper-alpha ) ']';
}
span.mw-ref a[data-mw-group="lower-greek"]::after {
content: "[" counter(mw-Ref, lower-greek) "]";
span.mw-ref a[data-mw-group='lower-greek']:after {
content: '[' counter( mw-Ref, lower-greek ) ']';
}
span.mw-ref a[data-mw-group="lower-roman"]::after {
content: "[" counter(mw-Ref, lower-roman) "]";
span.mw-ref a[data-mw-group='lower-roman']:after {
content: '[' counter( mw-Ref, lower-roman ) ']';
}
span.mw-ref a[data-mw-group="upper-roman"]::after {
content: "[" counter(mw-Ref, upper-roman) "]";
span.mw-ref a[data-mw-group='upper-roman']:after {
content: '[' counter( mw-Ref, upper-roman ) ']';
}
span.mw-ref a[data-mw-group="error-test"]::after {
content: "[" counter(mw-Ref, symbols(cyclic "first" "second" "last!")) "]";
span.mw-ref a[data-mw-group='error-test']:after {
content: '[' counter( mw-Ref, symbols( cyclic 'first' 'second' 'last!' ) ) ']';
}
/* Without a group */
span.mw-ref a::after {
content: "[" counter(mw-Ref, decimal) "]";
span.mw-ref a:after {
content: '[' counter( mw-Ref, decimal ) ']';
}
/* Hide the default rendering in browsers that support content
* generation by selecting for ::after pseudo-element.*/
x-thereisnoelementwiththisname::after, span.mw-reflink-text {
* generation by selecting for :after pseudo-element.*/
x-thereisnoelementwiththisname:after,
span.mw-reflink-text {
display: none;
}
@ -56,28 +58,29 @@ ol.mw-references li {
counter-increment: mw-ref-linkback;
}
[rel="mw:referencedBy"] {
[rel='mw:referencedBy'] {
counter-reset: mw-ref-linkback -1;
}
[rel="mw:referencedBy"]::before {
content: "↑ ";
[rel='mw:referencedBy']:before {
content: '↑ ';
}
span[rel="mw:referencedBy"] a::before {
span[rel='mw:referencedBy'] a:before {
counter-increment: mw-ref-linkback;
content: counters(mw-ref-linkback, ".", decimal);
content: counters( mw-ref-linkback, '.', decimal );
vertical-align: super;
line-height: 1;
font-size: smaller;
}
span[rel="mw:referencedBy"] a::after {
content: " ";
span[rel='mw:referencedBy'] a:after {
content: ' ';
}
/* Hide the default rendering in browsers that support content
* generation by selecting for ::after pseudo-element.*/
x-thereisnoelementwiththisname[rel="mw:referencedBy"]::before, span.mw-linkback-text {
* generation by selecting for :after pseudo-element.*/
x-thereisnoelementwiththisname[rel='mw:referencedBy']:before,
span.mw-linkback-text {
display: none;
}

View File

@ -1,15 +1,15 @@
/* Farsi Cite CSS */
/* <ref>s with a group */
span.mw-ref a[data-mw-group]::after {
content: "[" attr(data-mw-group) " " counter(mw-Ref, persian) "]";
span.mw-ref a[data-mw-group]:after {
content: '[' attr( data-mw-group ) ' ' counter( mw-Ref, persian ) ']';
}
/* <ref>s without a group */
span.mw-ref a::after {
content: "[" counter(mw-Ref, persian) "]";
span.mw-ref a:after {
content: '[' counter( mw-Ref, persian ) ']';
}
/* Linkbacks from <references> to <ref>s */
span[rel="mw:referencedBy"] a::before {
content: counters(mw-ref-linkback, "٫", persian);
span[rel='mw:referencedBy'] a:before {
content: counters( mw-ref-linkback, '٫', persian );
}

View File

@ -21,7 +21,7 @@ sup.reference {
ol.references li:target,
sup.reference:target {
background-color: #def; /* fallback */
background-color: rgba(0, 127, 255, 0.133);
background-color: rgba( 0, 127, 255, 0.133 );
}
/* Make cite errors "strong" */

View File

@ -0,0 +1,12 @@
{
"extends": "stylelint-config-wikimedia",
"rules": {
"no-browser-hacks": [ true, {
"browsers": [ ">5%", "Chrome >= 1", "Firefox >= 15", "Explorer >= 9", "Edge >= 1", "iOS >= 7", "Opera >= 12", "Safari >= 7", "ExplorerMobile >= 10", "Android >= 3", "not BlackBerry >= 1", "ChromeAndroid >= 1", "FirefoxAndroid >= 1", "OperaMobile >= 12", "not OperaMini >= 1" ]
} ],
"no-unsupported-browser-features": [ true, {
"browsers": [ ">5%", "Chrome >= 1", "Firefox >= 15", "Explorer >= 9", "Edge >= 12", "iOS >= 7", "Opera >= 12", "Safari >= 7", "ExplorerMobile >= 10", "Android >= 4", "not BlackBerry >= 1", "ChromeAndroid >= 1", "FirefoxAndroid >= 1", "OperaMobile >= 12", "not OperaMini >= 1" ]
} ],
}
}

View File

@ -48,5 +48,6 @@
"cite-ve-referenceslist-isempty": "ما من مراجع من المجموعة \"$1\" في هذه الصفحة لتضمينها في هذه القائمة.",
"cite-ve-referenceslist-isempty-default": "ما من مراجع على هذه الصفحة لتضمينها في هذه القائمة.",
"cite-ve-referenceslist-missingref": "هذا المرجع موجود في قالب أو نحوه ولا يمكن تعديله حاليا إلا من المصدر.",
"cite-ve-toolbar-group-label": "مرجع"
"cite-ve-toolbar-group-label": "مرجع",
"cite-ve-othergroup-item": "استشهاد $1"
}

View File

@ -7,10 +7,12 @@
"McDutchie"
]
},
"visualeditor-cite-tool-definition.json": "nulu",
"visualeditor-cite-tool-name-book": "Llibru",
"visualeditor-cite-tool-name-journal": "Revista",
"visualeditor-cite-tool-name-news": "Noticies",
"visualeditor-cite-tool-name-web": "Sitiu web",
"cite-tool-definition.json": "nulu",
"cite-ve-dialog-reference-editing-reused": "Esta referencia úsase $1 {{PLURAL:$1|vez|veces}} nesta páxina.",
"cite-ve-dialog-reference-options-group-label": "Usar esti grupu",
"cite-ve-dialog-reference-options-group-placeholder": "Referencies xenerales",
@ -23,15 +25,16 @@
"cite-ve-dialog-referenceslist-contextitem-description-general": "Llista de referencies xenerales",
"cite-ve-dialog-referenceslist-contextitem-description-named": "Llista de referencies del grupu «$1»",
"cite-ve-dialog-referenceslist-title": "Llista de referencies",
"cite-ve-dialogbutton-citation-educationpopup-title": "Cites",
"cite-ve-dialogbutton-citation-educationpopup-text": "Ameyora'l conteníu amestando fontes d'información. Puede citase de llibros, periódicos y páxines web.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Cites",
"cite-ve-dialogbutton-reference-full-label": "Formulariu básicu",
"cite-ve-dialogbutton-reference-tooltip": "Básica",
"cite-ve-dialogbutton-reference-title": "Referencia",
"cite-ve-dialogbutton-reference-tooltip": "Básica",
"cite-ve-dialogbutton-referenceslist-tooltip": "Llista de referencies",
"cite-ve-reference-input-placeholder": "Guetar nes cites actuales",
"cite-ve-referenceslist-isempty": "Nun hai referencies col grupu \"$1\" nesta páxina pa incluir nesta llista.",
"cite-ve-referenceslist-isempty-default": "Nun hai referencies nesta páxina pa incluir nesta llista.",
"cite-ve-referenceslist-missingref": "Esta referencia ta definida nuna plantía o n'otru bloque xeneráu, y de momentu namái pue editase'n mou fonte.",
"cite-ve-toolbar-group-label": "Citar"
}
"cite-ve-toolbar-group-label": "Citar",
"cite-ve-othergroup-item": "referencia $1"
}

View File

@ -12,12 +12,30 @@
"Vodnokon4e"
]
},
"visualeditor-cite-tool-definition.json": "null",
"visualeditor-cite-tool-name-book": "Книга",
"visualeditor-cite-tool-name-journal": "Списание",
"visualeditor-cite-tool-name-news": "Новини",
"visualeditor-cite-tool-name-web": "Уебсайт",
"cite-tool-definition.json": "null",
"cite-ve-dialog-reference-editing-reused": "Тази препратка се използва на страницата $1 {{PLURAL:$1|пъти}}.",
"cite-ve-dialog-reference-options-group-label": "Използвайте тази група",
"cite-ve-dialog-reference-options-group-placeholder": "Общи препратки",
"cite-ve-dialog-reference-options-name-label": "Повторно използване с това име",
"cite-ve-dialog-reference-options-section": "Настройки",
"cite-ve-dialog-reference-title": "Източник",
"cite-ve-dialog-reference-useexisting-full-label": "Повторно използване на цитиране, което вече съществува на страницата",
"cite-ve-dialog-reference-useexisting-label": "Използване на съществуващ източник",
"cite-ve-dialog-reference-useexisting-tool": "Повторно използване",
"cite-ve-dialog-referenceslist-contextitem-description-general": "Списък на общи препратки",
"cite-ve-dialog-referenceslist-contextitem-description-named": "Списък на препратки от група \"$1\"",
"cite-ve-dialog-referenceslist-title": "Списък с източници",
"cite-ve-dialogbutton-citation-educationpopup-text": "Подобрява съдържанието, добавяйки списък с източници на информация. Може да цитирате книги, вестници и уебсайтове.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Цитати",
"cite-ve-dialogbutton-reference-tooltip": "Източник",
"cite-ve-dialogbutton-reference-full-label": "Основна форма",
"cite-ve-dialogbutton-reference-title": "Източник",
"cite-ve-dialogbutton-referenceslist-tooltip": "Списък с източници"
}
"cite-ve-dialogbutton-reference-tooltip": "Източник",
"cite-ve-dialogbutton-referenceslist-tooltip": "Списък с източници",
"cite-ve-reference-input-placeholder": "Търсене в текущите цитирания",
"cite-ve-toolbar-group-label": "Цитиране"
}

View File

@ -14,10 +14,12 @@
"NahidSultan"
]
},
"visualeditor-cite-tool-definition.json": "কিছু না",
"visualeditor-cite-tool-name-book": "বই",
"visualeditor-cite-tool-name-journal": "সাময়িকী",
"visualeditor-cite-tool-name-news": "সংবাদ",
"visualeditor-cite-tool-name-web": "ওয়েবসাইট",
"cite-tool-definition.json": "কিছু না",
"cite-ve-dialog-reference-editing-reused": "এই তথ্যসূত্রটি এই পাতায় $1 {{PLURAL:$1|বার}} ব্যবহৃত হয়েছে।",
"cite-ve-dialog-reference-options-group-label": "এই দল ব্যবহার করো",
"cite-ve-dialog-reference-options-group-placeholder": "সাধারণ তথ্যসূত্র",
@ -40,5 +42,6 @@
"cite-ve-referenceslist-isempty": "এই পাতাতে \"$1\" দলের জন্য কোন তথ্যসূত্র নেই।",
"cite-ve-referenceslist-isempty-default": "এই তালিকায় যোগ করার জন্য এই পৃষ্ঠায় কোন তথ্যসূত্র নেই।",
"cite-ve-referenceslist-missingref": "এই তথ্যটি একটি টেমপ্লেট বা অন্যান্য উত্পন্ন ব্লক হিসেবে সংজ্ঞায়িত করা হয় এবং এখনকার জন্য এটি শুধুমাত্র উৎস মোডে সম্পাদনা করা যাবে।",
"cite-ve-toolbar-group-label": "উদ্ধৃতি"
"cite-ve-toolbar-group-label": "উদ্ধৃতি",
"cite-ve-othergroup-item": "$1টি তথ্যসূত্র"
}

View File

@ -23,15 +23,15 @@
"cite-ve-dialog-referenceslist-contextitem-description-general": "Spisak općih referenci",
"cite-ve-dialog-referenceslist-contextitem-description-named": "Spisak referenci grupe \"$1\"",
"cite-ve-dialog-referenceslist-title": "Spisak referenci",
"cite-ve-dialogbutton-citation-educationpopup-title": "Reference",
"cite-ve-dialogbutton-citation-educationpopup-text": "Poboljšava sadržaj članka dodavanjem izvora za informacije koje ste naveli. Možete referencirati knjige, novine i web-stranice.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Reference",
"cite-ve-dialogbutton-reference-full-label": "Osnovni oblik",
"cite-ve-dialogbutton-reference-tooltip": "Osnovna",
"cite-ve-dialogbutton-reference-title": "Referenca",
"cite-ve-dialogbutton-reference-tooltip": "Osnovna",
"cite-ve-dialogbutton-referenceslist-tooltip": "Spisak referenci",
"cite-ve-reference-input-placeholder": "Traži postojeće reference",
"cite-ve-referenceslist-isempty": "Nema referenci u grupi \"$1\" na ovoj stranici.",
"cite-ve-referenceslist-isempty-default": "Nema referenci na ovoj stranici koje bi mogle biti uključene u ovaj spisak.",
"cite-ve-referenceslist-missingref": "Ova referenca je definirana u šablonu ili drugom generiranom bloku i sada se može uređivati jedino u izvornom modu.",
"cite-ve-referenceslist-missingref": "Ova referenca definirana je u šablonu ili drugom generiranom dijelu i zasad se može uređivati jedino u uređivaču izvornog koda.",
"cite-ve-toolbar-group-label": "Referenca"
}
}

View File

@ -6,10 +6,12 @@
"Исмаил Садуев"
]
},
"visualeditor-cite-tool-definition.json": "нуль",
"visualeditor-cite-tool-name-book": "Жайна",
"visualeditor-cite-tool-name-journal": "Тептар",
"visualeditor-cite-tool-name-news": "Керланаш",
"visualeditor-cite-tool-name-web": "Веб-сайт",
"cite-tool-definition.json": "нуль",
"cite-ve-dialog-reference-options-group-label": "Лелае хӀара тоба",
"cite-ve-dialog-reference-options-group-placeholder": "Юкъара хььажоргаш",
"cite-ve-dialog-reference-options-name-label": "ХӀокху цӀарца юху лелае",
@ -18,10 +20,10 @@
"cite-ve-dialog-reference-useexisting-label": "Леладе долуш долу тIетовжар",
"cite-ve-dialog-reference-useexisting-tool": "Юха лелор",
"cite-ve-dialog-referenceslist-title": "Билгалдаккхаршан могӀам",
"cite-ve-dialogbutton-citation-educationpopup-title": "Цитаташ",
"cite-ve-dialogbutton-citation-educationpopup-text": "Дика йе хьайн контент хаамийн хьосташ тӀетоьхна. Хайн йиш ю цитаташ дало жайнаш тӀера, газеташ тӀера я веб-сайташ тӀера.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Цитаташ",
"cite-ve-dialogbutton-reference-tooltip": "Коьрта",
"cite-ve-dialogbutton-referenceslist-tooltip": "Билгалдаккхаршан могӀам",
"cite-ve-reference-input-placeholder": "Муьлхачунна тӀетовжа лаьа хьуна?",
"cite-ve-toolbar-group-label": "Белгалдахарш"
}
}

View File

@ -4,14 +4,20 @@
"Calak",
"Muhammed taha",
"Serwan",
"Pirehelokan"
"Pirehelokan",
"Sarchia"
]
},
"visualeditor-cite-tool-name-news": "هەواڵ",
"cite-ve-dialog-reference-options-group-label": "ئەم گرووپە بەکاربھێنە",
"cite-ve-dialog-reference-options-group-placeholder": "سەرچاوە گشتییەکان",
"cite-ve-dialog-reference-options-section": "ھەڵبژاردەکان",
"cite-ve-dialog-reference-title": "سەرچاوە",
"cite-ve-dialog-reference-useexisting-label": "بەکارھێنانی سەرچاوەیەکی ئامادە",
"cite-ve-dialog-reference-useexisting-tool": "بەکارھێنانەوە",
"cite-ve-dialog-referenceslist-contextitem-description-general": "پێڕستی سەرچاوە گشتییەکان",
"cite-ve-dialog-referenceslist-title": "پێرستی سەرچاوە",
"cite-ve-dialogbutton-reference-tooltip": "سەرەکی",
"cite-ve-dialogbutton-referenceslist-tooltip": "پێرستی سەرچاوەکان"
}
"cite-ve-dialogbutton-reference-tooltip": "بنەڕەتی",
"cite-ve-dialogbutton-referenceslist-tooltip": "پێرستی سەرچاوەکان",
"cite-ve-toolbar-group-label": "ئاماژە"
}

View File

@ -16,13 +16,16 @@
"Vojtěch Dostál",
"Aktron",
"Cvanca",
"Kusavica"
"Kusavica",
"Dvorapa"
]
},
"visualeditor-cite-tool-definition.json": "prázdný",
"visualeditor-cite-tool-name-book": "Kniha",
"visualeditor-cite-tool-name-journal": "Časopis",
"visualeditor-cite-tool-name-news": "Časopis / noviny",
"visualeditor-cite-tool-name-web": "Webová stránka",
"cite-tool-definition.json": "prázdný",
"cite-ve-dialog-reference-editing-reused": "Tato reference se na této stránce používá $1{{PLURAL:$1|krát}}.",
"cite-ve-dialog-reference-options-group-label": "Použít tuto skupinu",
"cite-ve-dialog-reference-options-group-placeholder": "Obecné reference",
@ -45,5 +48,6 @@
"cite-ve-referenceslist-isempty": "Na této stránce nejsou žádné reference se skupinou „$1“, které by se v tomto seznamu zobrazily.",
"cite-ve-referenceslist-isempty-default": "Na této stránce nejsou žádné reference, které by se v tomto seznamu zobrazily.",
"cite-ve-referenceslist-missingref": "Tato reference je definována v šabloně nebo jiné generované části textu a zatím ji lze editovat jen v režimu zdrojového textu.",
"cite-ve-toolbar-group-label": "Citace"
}
"cite-ve-toolbar-group-label": "Citace",
"cite-ve-othergroup-item": "$1 reference"
}

View File

@ -15,10 +15,12 @@
"Umherirrender"
]
},
"visualeditor-cite-tool-definition.json": "null",
"visualeditor-cite-tool-name-book": "Buch",
"visualeditor-cite-tool-name-journal": "Zeitschrift",
"visualeditor-cite-tool-name-news": "Nachrichten",
"visualeditor-cite-tool-name-web": "Website",
"cite-tool-definition.json": "null",
"cite-ve-dialog-reference-editing-reused": "Dieser Einzelnachweis wird auf dieser Seite {{PLURAL:$1|einmal|$1 Mal}} verwendet.",
"cite-ve-dialog-reference-options-group-label": "Diese Gruppe verwenden",
"cite-ve-dialog-reference-options-group-placeholder": "Allgemeine Einzelnachweise",
@ -41,5 +43,6 @@
"cite-ve-referenceslist-isempty": "Auf dieser Seite gibt es keine Einzelnachweise mit der Gruppe „$1“ zum Anzeigen in dieser Liste.",
"cite-ve-referenceslist-isempty-default": "Auf dieser Seite gibt es keine Einzelnachweise zum Anzeigen in dieser Liste.",
"cite-ve-referenceslist-missingref": "Dieser Einzelnachweis ist in einer Vorlage oder einem anderen erzeugten Block definiert und kann derzeit nur im Quelltextmodus bearbeitet werden.",
"cite-ve-toolbar-group-label": "Zitat"
}
"cite-ve-toolbar-group-label": "Zitat",
"cite-ve-othergroup-item": "$1-Einzelnachweis"
}

View File

@ -6,21 +6,32 @@
"Kghbln",
"Marmase",
"Mirzali",
"Se4598"
"Se4598",
"Kumkumuk"
]
},
"visualeditor-cite-tool-definition.json": "veng",
"visualeditor-cite-tool-name-book": "Kıtab",
"visualeditor-cite-tool-name-journal": "Pêseroke",
"visualeditor-cite-tool-name-news": "Qezeta",
"visualeditor-cite-tool-name-news": "Xeberi",
"visualeditor-cite-tool-name-web": "Websita",
"cite-tool-definition.json": "veng",
"cite-ve-dialog-reference-editing-reused": "Ena referans $1 {{PLURAL:$1|veror}} rna perer dı karıya ya.",
"cite-ve-dialog-reference-options-group-label": "Na gruber bıkarn",
"cite-ve-dialog-reference-options-group-placeholder": "Referansê bıngey",
"cite-ve-dialog-reference-options-name-label": "Ney nami fına bıkarne",
"cite-ve-dialog-reference-options-section": "Weçinegi",
"cite-ve-dialog-reference-title": "Referans",
"cite-ve-dialog-reference-useexisting-full-label": "Fınankarıyayış ena perer sero xora esten yew grotek o.",
"cite-ve-dialog-reference-useexisting-label": "Zu referansa mewcud bıkarne",
"cite-ve-dialog-reference-useexisting-tool": "Fına bıkarn",
"cite-ve-dialog-referenceslist-contextitem-description-general": "Listay umumi referansa",
"cite-ve-dialog-referenceslist-contextitem-description-named": "Qandé listay mıreceti gruba \"$1\"",
"cite-ve-dialog-referenceslist-title": "Listeya referansan",
"cite-ve-dialogbutton-citation-educationpopup-title": "Groteki",
"cite-ve-dialogbutton-reference-full-label": "Formo bıngehın",
"cite-ve-dialogbutton-reference-title": "Referans",
"cite-ve-dialogbutton-reference-tooltip": "Referans",
"cite-ve-dialogbutton-referenceslist-tooltip": "Listeya referansan",
"cite-ve-reference-input-placeholder": "Qanci referansi şıma qalıyé bıkarné?"
}
}

View File

@ -2,15 +2,16 @@
"@metadata": {
"authors": [
"रमेश सिंह बोहरा",
"जनक राज भट्ट"
"जनक राज भट्ट",
"राम प्रसाद जोशी"
]
},
"visualeditor-cite-tool-name-book": "पुस्तकहरू",
"visualeditor-cite-tool-name-journal": "पत्रिका",
"visualeditor-cite-tool-name-news": "रैबार",
"visualeditor-cite-tool-name-web": "वेबसाइट",
"cite-ve-dialog-reference-options-section": "विकल्पहर",
"cite-ve-dialog-reference-options-section": "विकल्पहर",
"cite-ve-dialog-reference-title": "सन्दर्भ सामग्रीहरू",
"cite-ve-dialog-reference-useexisting-tool": "पुनः प्रयोग",
"cite-ve-toolbar-group-label": "उर्ध्वभरण"
}
}

View File

@ -32,13 +32,15 @@
"cite-ve-dialog-referenceslist-contextitem-description-general": "Λίστα με γενικές αναφορές",
"cite-ve-dialog-referenceslist-contextitem-description-named": "Λίστα αναφορών για την ομάδα \"$1\"",
"cite-ve-dialog-referenceslist-title": "Κατάλογος παραπομπών",
"cite-ve-dialogbutton-citation-educationpopup-text": "Βελτιώνει το περιεχόμενό σας με την προσθήκη πηγών πληροφοριών. Μπορείτε να κάνετε παραπομπές σε βιβλία, εφημερίδες και ιστοσελίδες.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Παραπομπές",
"cite-ve-dialogbutton-reference-full-label": "Βασική μορφή",
"cite-ve-dialogbutton-reference-tooltip": "Βασικό",
"cite-ve-dialogbutton-reference-title": "Παραπομπή",
"cite-ve-dialogbutton-reference-tooltip": "Βασικό",
"cite-ve-dialogbutton-referenceslist-tooltip": "Κατάλογος παραπομπών",
"cite-ve-reference-input-placeholder": "Αναζήτηση εντός των τρεχόντων παραπομπών",
"cite-ve-referenceslist-isempty": "Δεν υπάρχουν παραπομπές με την ομάδα «$1» σε αυτήν τη σελίδα για να περιληφθούν σε αυτόν τον κατάλογο.",
"cite-ve-referenceslist-isempty-default": "Δεν υπάρχουν παραπομπές σε αυτήν τη σελίδα για να περιληφθούν σε αυτόν τον κατάλογο.",
"cite-ve-referenceslist-missingref": "Η παραπομπή αυτή έχει οριστεί μέσω προτύπου ή άλλου αυτόματα παραγόμενου μπλοκ και, προς το παρόν, δεν μπορείτε να την επεξεργαστείτε με τον VisualEditor. Χρησιμοποιήστε τον επεξεργαστή κώδικα.",
"cite-ve-toolbar-group-label": "Παραπομπή"
}
}

View File

@ -16,10 +16,12 @@
"Amir E. Aharoni"
]
},
"visualeditor-cite-tool-definition.json": "null",
"visualeditor-cite-tool-name-book": "Book",
"visualeditor-cite-tool-name-journal": "Journal",
"visualeditor-cite-tool-name-news": "News",
"visualeditor-cite-tool-name-web": "Website",
"cite-tool-definition.json": "null",
"cite-ve-dialog-reference-editing-reused": "This reference is used $1 {{PLURAL:$1|times}} on this page.",
"cite-ve-dialog-reference-options-group-label": "Use this group",
"cite-ve-dialog-reference-options-group-placeholder": "General references",
@ -42,5 +44,6 @@
"cite-ve-referenceslist-isempty": "There are no references with the group \"$1\" on this page to include in this list.",
"cite-ve-referenceslist-isempty-default": "There are no references on this page to include in this list.",
"cite-ve-referenceslist-missingref": "This reference is defined in a template or other generated block, and for now can only be edited in source mode.",
"cite-ve-toolbar-group-label": "Cite"
"cite-ve-toolbar-group-label": "Cite",
"cite-ve-othergroup-item": "$1 reference"
}

View File

@ -28,10 +28,12 @@
"Ncontinanza"
]
},
"visualeditor-cite-tool-definition.json": "nulo",
"visualeditor-cite-tool-name-book": "Libro",
"visualeditor-cite-tool-name-journal": "Diario",
"visualeditor-cite-tool-name-news": "Noticias",
"visualeditor-cite-tool-name-web": "Sitio web",
"cite-tool-definition.json": "nulo",
"cite-ve-dialog-reference-editing-reused": "Esta referencia se utiliza $1 {{PLURAL:$1|vez|veces}} en esta página.",
"cite-ve-dialog-reference-options-group-label": "Usar este grupo",
"cite-ve-dialog-reference-options-group-placeholder": "Referencias generales",
@ -54,5 +56,6 @@
"cite-ve-referenceslist-isempty": "No hay referencias con el grupo «$1» en esta página para incluir en la lista.",
"cite-ve-referenceslist-isempty-default": "No hay referencias en esta página para incluir en esta lista.",
"cite-ve-referenceslist-missingref": "Esta referencia está definida en una plantilla u otro tipo de bloque generado, y por ahora sólo puede editarse en el editor de fuente.",
"cite-ve-toolbar-group-label": "Citar"
"cite-ve-toolbar-group-label": "Citar",
"cite-ve-othergroup-item": "referencia $1"
}

View File

@ -25,15 +25,15 @@
"cite-ve-dialog-referenceslist-contextitem-description-general": "Üldviidete loend",
"cite-ve-dialog-referenceslist-contextitem-description-named": "Viiterühma \"$1\" liikmete loend",
"cite-ve-dialog-referenceslist-title": "Viidete loend",
"cite-ve-dialogbutton-citation-educationpopup-title": "Viited",
"cite-ve-dialogbutton-citation-educationpopup-text": "Täienda materjali allikate lisamisega. Saad viidata raamatutele, ajalehtedele ja võrgukohtadele.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Viited",
"cite-ve-dialogbutton-reference-full-label": "Lihtviite vorm",
"cite-ve-dialogbutton-reference-tooltip": "Lihtviide",
"cite-ve-dialogbutton-reference-title": "Viide",
"cite-ve-dialogbutton-reference-tooltip": "Lihtviide",
"cite-ve-dialogbutton-referenceslist-tooltip": "Viidete loend",
"cite-ve-reference-input-placeholder": "Otsi kasutusel olevate viidete hulgast",
"cite-ve-referenceslist-isempty": "Rühma \"$1\" viited, mida selles loendis näidata, puuduvad sellel leheküljel.",
"cite-ve-referenceslist-isempty-default": "Viited, mida selles loendis näidata, puuduvad sellel leheküljel.",
"cite-ve-referenceslist-missingref": "Selle viite kirjeldus on mallis või muul moel genereeritud plokis ning praegu saab seda redigeerida vaid lähteteksti režiimis.",
"cite-ve-toolbar-group-label": "Viide"
}
}

View File

@ -9,10 +9,12 @@
"Macofe"
]
},
"visualeditor-cite-tool-definition.json": "nulu",
"visualeditor-cite-tool-name-book": "Liburua",
"visualeditor-cite-tool-name-journal": "Aldizkaria",
"visualeditor-cite-tool-name-news": "Albisteak",
"visualeditor-cite-tool-name-web": "Webgunea",
"cite-tool-definition.json": "nulu",
"cite-ve-dialog-reference-editing-reused": "Erreferentzia hau $1{{PLURAL:$1|aldiz}} agertzen da orri honetan",
"cite-ve-dialog-reference-options-group-label": "Talde hau erabili",
"cite-ve-dialog-reference-options-group-placeholder": "Erreferentzia orokorrak",
@ -25,6 +27,8 @@
"cite-ve-dialog-referenceslist-contextitem-description-general": "Erreferentzia orokorren zerrenda",
"cite-ve-dialog-referenceslist-contextitem-description-named": "Erreferentzia zerrenda \"$1\" talderako",
"cite-ve-dialog-referenceslist-title": "Erreferentzia-zerrenda",
"cite-ve-dialogbutton-citation-educationpopup-text": "Hobe zure edukia informazioa iturriak gehituz. Liburuetatik, egunkarietatik eta webguneetatik aipatu ditzakezu.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Erreferentziak",
"cite-ve-dialogbutton-reference-full-label": "Oinarrizko forma",
"cite-ve-dialogbutton-reference-title": "Erreferentzia",
"cite-ve-dialogbutton-reference-tooltip": "Oinarrizkoa",
@ -33,5 +37,6 @@
"cite-ve-referenceslist-isempty": "Ez dago «$1» taldearekiko erreferentziarik orri honetan.",
"cite-ve-referenceslist-isempty-default": "Orri honetan ez dago zerrendan sartzeko erreferentziarik.",
"cite-ve-referenceslist-missingref": "Erreferentzia hau txantiloi batean edo sortutako beste bloke mota batean dago zehaztuta, eta oraingoz iturburu kodeko moduan baizik ezin da editatu.",
"cite-ve-toolbar-group-label": "Aipatu"
}
"cite-ve-toolbar-group-label": "Aipatu",
"cite-ve-othergroup-item": "$1 erreferentzia"
}

View File

@ -44,13 +44,16 @@
"Mattho69",
"Wladek92",
"Harmonia Amanda",
"Macofe"
"Macofe",
"Pols12"
]
},
"visualeditor-cite-tool-definition.json": "nul",
"visualeditor-cite-tool-name-book": "Livre",
"visualeditor-cite-tool-name-journal": "Journal",
"visualeditor-cite-tool-name-news": "Actualités",
"visualeditor-cite-tool-name-web": "Site web",
"cite-tool-definition.json": "nul",
"cite-ve-dialog-reference-editing-reused": "Cette référence est utilisée $1 {{PLURAL:$1|fois}} sur cette page.",
"cite-ve-dialog-reference-options-group-label": "Utiliser ce groupe",
"cite-ve-dialog-reference-options-group-placeholder": "Références générales",
@ -63,8 +66,8 @@
"cite-ve-dialog-referenceslist-contextitem-description-general": "Liste de références générales",
"cite-ve-dialog-referenceslist-contextitem-description-named": "Liste de références pour le groupe « $1»",
"cite-ve-dialog-referenceslist-title": "Liste des références",
"cite-ve-dialogbutton-citation-educationpopup-text": "Améliore votre contenu en ajoutant des sources dinformation. Vous pouvez faire des citations depuis des livres, des journaux et des sites web.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Citations",
"cite-ve-dialogbutton-citation-educationpopup-text": "Améliore votre contenu en ajoutant des sources dinformation. Vous pouvez ajouter comme références des livres, des journaux et des sites web.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Références",
"cite-ve-dialogbutton-reference-full-label": "Autre référence",
"cite-ve-dialogbutton-reference-title": "Références",
"cite-ve-dialogbutton-reference-tooltip": "Référence",
@ -73,5 +76,6 @@
"cite-ve-referenceslist-isempty": "Il ny a aucune référence avec le groupe « $1» sur cette page à inclure dans cette liste.",
"cite-ve-referenceslist-isempty-default": "Il ny a aucune référence sur cette page à inclure dans cette liste.",
"cite-ve-referenceslist-missingref": "Cette référence est définie dans un modèle ou un autre bloc généré et ne peut pour le moment être modifiée quavec léditeur de wikicode.",
"cite-ve-toolbar-group-label": "Citer"
}
"cite-ve-toolbar-group-label": "Source",
"cite-ve-othergroup-item": "référence $1"
}

View File

@ -17,5 +17,6 @@
"cite-ve-dialog-reference-useexisting-label": "Cleachd iomradh a tha ann",
"cite-ve-dialog-referenceslist-title": "Liosta nan iomraidhean",
"cite-ve-dialogbutton-reference-tooltip": "Bunasach",
"cite-ve-dialogbutton-referenceslist-tooltip": "Liosta nan iomraidhean"
}
"cite-ve-dialogbutton-referenceslist-tooltip": "Liosta nan iomraidhean",
"cite-ve-toolbar-group-label": "Iomradh"
}

View File

@ -14,10 +14,12 @@
"Macofe"
]
},
"visualeditor-cite-tool-definition.json": "nulo",
"visualeditor-cite-tool-name-book": "Libro",
"visualeditor-cite-tool-name-journal": "Publicación periódica",
"visualeditor-cite-tool-name-news": "Novas",
"visualeditor-cite-tool-name-web": "Páxina web",
"cite-tool-definition.json": "nulo",
"cite-ve-dialog-reference-editing-reused": "Esta referenza úsase $1 {{PLURAL:$1|vez|veces}} nesta páxina.",
"cite-ve-dialog-reference-options-group-label": "Utilizar este grupo",
"cite-ve-dialog-reference-options-group-placeholder": "Referencias xerais",
@ -40,5 +42,6 @@
"cite-ve-referenceslist-isempty": "Non hai referencias co grupo \"$1\" nesta páxina para incluílas nesta lista.",
"cite-ve-referenceslist-isempty-default": "Non hai referencias nesta páxina para incluílas nesta lista.",
"cite-ve-referenceslist-missingref": "Esta referencia está definida nun modelo ou noutro bloque xerado; polo de agora, só se pode editar no modo fonte.",
"cite-ve-toolbar-group-label": "Citar"
}
"cite-ve-toolbar-group-label": "Citar",
"cite-ve-othergroup-item": "referencia $1"
}

View File

@ -19,10 +19,12 @@
"דולב"
]
},
"visualeditor-cite-tool-definition.json": "ריק",
"visualeditor-cite-tool-name-book": "ספר",
"visualeditor-cite-tool-name-journal": "כתב־עת",
"visualeditor-cite-tool-name-news": "חדשות",
"visualeditor-cite-tool-name-web": "אתר אינטרנט",
"cite-tool-definition.json": "ריק",
"cite-ve-dialog-reference-editing-reused": "הערת השוליים משמשת {{PLURAL:$1|פעם אחת|פעמיים|$1 פעמים}} בדף הזה.",
"cite-ve-dialog-reference-options-group-label": "להשתמש בקבוצה הזאת",
"cite-ve-dialog-reference-options-group-placeholder": "הערות שוליים כלליות",
@ -45,5 +47,6 @@
"cite-ve-referenceslist-isempty": "לא קיימים מקורות עם קבוצה בשם \"$1\" בדף הזה שאפשר לכלול ברשימה הזאת.",
"cite-ve-referenceslist-isempty-default": "בדף הזה אין הערות שוליים שאפשר לכלול ברשימה הזאת.",
"cite-ve-referenceslist-missingref": "הערת השוליים הזאת מוגדרת בתבנית או מחוללת בדרך אחרת כלשהי, ואי־אפשר לערוך אותה עדיין באמצעות העורך החזותי.",
"cite-ve-toolbar-group-label": "ציטוט"
}
"cite-ve-toolbar-group-label": "ציטוט",
"cite-ve-othergroup-item": "הערה $1"
}

View File

@ -28,10 +28,12 @@
"Supernino"
]
},
"visualeditor-cite-tool-definition.json": "nullo",
"visualeditor-cite-tool-name-book": "Libro",
"visualeditor-cite-tool-name-journal": "Pubblicazione",
"visualeditor-cite-tool-name-news": "Notizie",
"visualeditor-cite-tool-name-web": "Sito web",
"cite-tool-definition.json": "nullo",
"cite-ve-dialog-reference-editing-reused": "Questo riferimento è usato $1 {{PLURAL:$1|volta|volte}} su questa pagina.",
"cite-ve-dialog-reference-options-group-label": "Usa questo gruppo",
"cite-ve-dialog-reference-options-group-placeholder": "Riferimenti generali",
@ -43,16 +45,17 @@
"cite-ve-dialog-reference-useexisting-tool": "Riusa",
"cite-ve-dialog-referenceslist-contextitem-description-general": "Elenco di note generali",
"cite-ve-dialog-referenceslist-contextitem-description-named": "Lista di note per il gruppo \"$1\"",
"cite-ve-dialog-referenceslist-title": "Elenco riferimenti",
"cite-ve-dialog-referenceslist-title": "Elenco note",
"cite-ve-dialogbutton-citation-educationpopup-text": "Migliora i contenuti con l'aggiunta delle fonti per le informazione. Puoi citare da libri, giornali e siti web.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Citazioni",
"cite-ve-dialogbutton-reference-full-label": "Modulo base",
"cite-ve-dialogbutton-reference-title": "Riferimento",
"cite-ve-dialogbutton-reference-tooltip": "Base",
"cite-ve-dialogbutton-referenceslist-tooltip": "Elenco riferimenti",
"cite-ve-dialogbutton-referenceslist-tooltip": "Elenco note",
"cite-ve-reference-input-placeholder": "Ricerca all'interno delle citazioni correnti",
"cite-ve-referenceslist-isempty": "Non ci sono riferimenti con il gruppo \"$1\" su questa pagina da includere in questo elenco.",
"cite-ve-referenceslist-isempty-default": "Non ci sono riferimenti su questa pagina da includere in questo elenco.",
"cite-ve-referenceslist-isempty": "In questa pagina non ci sono note da elencare con il gruppo \"$1\".",
"cite-ve-referenceslist-isempty-default": "In questa pagina non ci sono note da elencare.",
"cite-ve-referenceslist-missingref": "Questa nota è definita in un template o in un altro blocco generato e per ora può essere modificata solo in modalità sorgente.",
"cite-ve-toolbar-group-label": "Cita"
}
"cite-ve-toolbar-group-label": "Cita",
"cite-ve-othergroup-item": "$1 note"
}

View File

@ -18,10 +18,12 @@
"Vigorous action"
]
},
"visualeditor-cite-tool-definition.json": "null",
"visualeditor-cite-tool-name-book": "書籍",
"visualeditor-cite-tool-name-journal": "ジャーナル",
"visualeditor-cite-tool-name-news": "ニュース",
"visualeditor-cite-tool-name-web": "Web サイト",
"cite-tool-definition.json": "null",
"cite-ve-dialog-reference-editing-reused": "この参照はこのページ上で$1{{PLURAL:$1|回}}使用されています。",
"cite-ve-dialog-reference-options-group-label": "使用するグループ",
"cite-ve-dialog-reference-options-group-placeholder": "汎用の脚注",
@ -45,4 +47,4 @@
"cite-ve-referenceslist-isempty-default": "このページには、この一覧に含められる出典はありません。",
"cite-ve-referenceslist-missingref": "この出典はテンプレート内または別途生成されたブロック内で定義されているため、現時点ではソース モードのみで編集できます。",
"cite-ve-toolbar-group-label": "参照"
}
}

View File

@ -8,5 +8,35 @@
"Meursault2004",
"Macofe"
]
}
}
},
"visualeditor-cite-tool-definition.json": "null",
"visualeditor-cite-tool-name-book": "Buku",
"visualeditor-cite-tool-name-journal": "Jurnal",
"visualeditor-cite-tool-name-news": "Warta",
"visualeditor-cite-tool-name-web": "Sana jaringan",
"cite-tool-definition.json": "null",
"cite-ve-dialog-reference-editing-reused": "Rujukan iki dianggo {{PLURAL:$1|ping}} $1 ing kaca iki.",
"cite-ve-dialog-reference-options-group-label": "Anggo golongan iki",
"cite-ve-dialog-reference-options-group-placeholder": "Rujukan umum",
"cite-ve-dialog-reference-options-name-label": "Anggo manèh mawa jeneng iki",
"cite-ve-dialog-reference-options-section": "Wikalpa",
"cite-ve-dialog-reference-title": "Rujukan",
"cite-ve-dialog-reference-useexisting-full-label": "Anggo manèh sitiran sing wis ana ing kaca iki",
"cite-ve-dialog-reference-useexisting-label": "Anggo rujukan sing ana",
"cite-ve-dialog-reference-useexisting-tool": "Anggo manèh",
"cite-ve-dialog-referenceslist-contextitem-description-general": "Pratélaning rujukan umum",
"cite-ve-dialog-referenceslist-contextitem-description-named": "Pratélaning rujukan kanggo golongan \"$1\"",
"cite-ve-dialog-referenceslist-title": "Pratélaning rujukan",
"cite-ve-dialogbutton-citation-educationpopup-text": "Kembangaké isi sarana nambahi sumbering katerangan. Sampéyan bisa nyitir saka buku, ariwarta, lan sana jaringan.",
"cite-ve-dialogbutton-citation-educationpopup-title": "Sitiran",
"cite-ve-dialogbutton-reference-full-label": "Wujud baku",
"cite-ve-dialogbutton-reference-title": "Rujukan",
"cite-ve-dialogbutton-reference-tooltip": "Baku",
"cite-ve-dialogbutton-referenceslist-tooltip": "Pratélaning rujukan",
"cite-ve-reference-input-placeholder": "Golèk ing sitiran iki",
"cite-ve-referenceslist-isempty": "Ora ana rujukan golongan \"$1\" ing kaca iki kanggo dilebokaké ing pratélan iki.",
"cite-ve-referenceslist-isempty-default": "Ora ana rujukan ing kaca iki kanggo dilebokaké ing pratélan iki.",
"cite-ve-referenceslist-missingref": "Rujukan iki diwedharaké ing cithakan utawa babagan liya, lan kanggo saiki mung bisa dibesut mawa cara sumber.",
"cite-ve-toolbar-group-label": "Sitir",
"cite-ve-othergroup-item": "$1 rujukan"
}

Some files were not shown because too many files have changed in this diff Show More