Commit graph

2928 commits

Author SHA1 Message Date
Matthias Mullie
d6bc1b2589 Remove test code that depends on extension
And allow extensions to add their own media handlers.

I'm not too happy with the introduction of another global,
but didn't like the alternatives either:
* Add some hook to MockMediaHandlerFactory that would allow
  extensions to add their own stuff in.
* Use another hook (like ParserTestTables or ParserTestGlobals)
  and then override the service with a new instance - seemed
  too hacky
The good thing about this is that it lets us kill off a class.
I'm other to other suggestions in case I missed something.

Bug: T169258
Depends-On: I5875621c58597426ad5242bf3d07714555c439b5
Change-Id: I1c2e903fb235395a8de8e0f7bf65ce07739d2930
2017-08-13 12:04:37 -04:00
Geoffrey Mon
700e49dddd Unwatch link for pages in Special:Watchlist
When the 'watchlistunwatchlinks' preference option is enabled, this
adds a '×' link to each entry of the watchlist that unwatches the page
of that entry. When clicked, it changes into a '+' which can be used to
re-watch the page (effectively undoing the earlier unwatch).
When a page is unwatched, its entries and the entries of its associated
talk page (or vice versa) become translucent and are struck through.

Without JS, '×'/'+' link to action=(un)watch for the relevant page.

In addition, ChangesList classes have been modified to allow a prefixer
that adds a prefix to each line (used in this case to put the unwatch
link) and to add HTML data attributes to reliably determine the target
page of each entry. Unit tests have been updated accordingly.

Bug: T2424
Change-Id: I450b2901413d7e75c11de2a446829fdbb22d31e1
2017-08-12 19:36:29 -04:00
WMDE-Fisch
6df9ed1ad6 update mediawiki-codesniffer to 0.11.0 and fix issues
- mostly auto fixes
- some too long lines fixed
- ignore amp space in one case  passing by reference

Change-Id: I6472f83bc3cbf4bd629d83050cc3319b19ec465c
2017-08-11 22:27:51 +02:00
Timo Tijhof
b951485c24 DefaultSettings: Update wgLocalVirtualHosts documentation
Change-Id: I4fb4724b78a1270df951e59c58c7482f0fb5ff34
2017-08-04 23:16:25 +00:00
addshore
d87a04d8eb Add @since tag to $wgShortPagesNamespaceBlacklist
Followup for: I10b4849a5d7f3f8af75ccc6cfba230d03725c898

Change-Id: Ib970bfa266424204251d1b747c79a31c03b39308
2017-08-04 15:42:40 +01:00
Max Semenik
fd6e9ef2d4 Human-readable section ID support
It adds the ability to replace the current section ID escaping
schema (.C0.DE) with a HTML5-compliant escaping schema that is
displayed as Unicode in many modern browsers.

See the linked bug for discussion of various options that were
considered before the implementation. A few remarks:
* Because Sanitizer::escapeId() is used in a bunch of places without
  escaping, I'm deprecating it without altering its behavior.
* The bug described in comments for Parser::guessLegacySectionNameFromWikiText()
  is still there in some Edge versions that display mojibake.

Bug: T152540
Change-Id: Id304010a0342efbb7ef2d56c5b8b244f2e4fb2c5
2017-08-01 20:32:20 -07:00
jenkins-bot
8804850f44 Merge "Allow blacklisting certain namespaces in Special:ShortPages" 2017-08-01 14:20:30 +00:00
jdlrobson
115fe784b5 Allow blacklisting certain namespaces in Special:ShortPages
This new config variable ($wgShortPagesNamespaceBlacklist)
allows wikis to specify namespaces which should be excluded from
Special:ShortPages.

This will be used by Commons, for which NS_FILE is a content namespace
(accessible via Special:Random and Special:Nearby) but is not useful
to list on Special:ShortPages.

If the blacklist cancels out all namespace in wgContentNamespaces then
all namespaces will show up on the page.

Bug: T170687
Change-Id: I10b4849a5d7f3f8af75ccc6cfba230d03725c898
2017-08-01 00:21:12 +02:00
Roan Kattouw
d198d00e11 RCFilters: Remove $wgStructuredChangeFiltersEnableSaving feature flag
It's set to true now, and the feature is mature enough that we
don't need it to be feature-flagged anymore.

Change-Id: I9202b7ee2f9ff80106d1fb4d3e6cddec04c8b4ac
2017-07-31 08:58:28 -04:00
jenkins-bot
f3a51244a3 Merge "resourceloader: Soft-deprecate use of global LESS variables" 2017-07-28 17:09:49 +00:00
Timo Tijhof
8f52cb862c resourceloader: Soft-deprecate use of global LESS variables
Add deprecation notice to $wgResourceLoaderLESSVars and
hook 'ResourceLoaderGetLessVars'. Warnings to be added in 1.31.

Users should migrate to exposing variables via the individual module's
getLessVars() method.
- Ensures better cache invalidation.
- Separates concerns for getting information and exposing information
  as less variables. And allows an extension to, for example, use
  a different variable name for something if needed.

The 'deviceWidthTablet' variable will need to be migrated to
either a regular configuration variable that individual modules
can expose in their getLessVars() method - or, alternatively, we
can deprecate it altogether in favour of exposing it through
a less import file instead (see T112747). That would mean, however,
that the value can only be changed in core, not by site config.

Bug: T140804
Change-Id: I61cff1d9652d88dc53c43075dd5053b7707809e6
2017-07-28 16:44:27 +00:00
Timo Tijhof
7f000f8681 Re-introduce use of mime_content_type()
Follows-up eac059c722. See also https://stackoverflow.com/a/39676272/319266.

This function was never deprecated. For a short time, the www.php.net
manual page for `mime_content_type` wrongly documented it as having been
deprecated in PHP 5.3, but this wasn't true, and it has been present in
every PHP version since PHP 4.3, including PHP 7 and HHVM 2.3+.

Between PHP 4.3.0-4.3.2 and PHP 5.0-5.3, the function would be absent
if the Mimemagic extension was not enabled at compile-time. However, while
mime_content_type was first introduced by the Mimemagic PHP ext, it is
backend by the Finfo extension since PHP 5.3.0.

Confirmed via https://3v4l.org/IQC1Q.

* CSSMin: Revert conditional use of finfo back to unconditional use
  of mime_content_type.

* MimeAnalyzer: Replace conditional use of finfo with unconditional use
  use of mime_content_type. Also remove the now-redundant 'else' branch.
  The 'else' branch existed because this code was written at a time where
  MediaWiki still supported PHP 4, of which some minor versions could
  sometimes be compiled without this function.

Change-Id: Iee4a0b6f616a469bb779c40e386045f9c3200446
2017-07-27 02:18:43 +00:00
jenkins-bot
43a548a5c3 Merge "Introduce config var for moved-paragraph-detection threshold" 2017-07-18 14:20:00 +00:00
Tobias Gritschacher
76e64c3afe Introduce config var for moved-paragraph-detection threshold
This introduces a configuration variable for the bailout threshold for
the moved-paragraph-detection in wikidiff2.
This allows to rollout a new version of wikidiff2 that supports
detecting changes in moved paragraphs without changing behaviour of all
wikis in production as the default value of the setting (0) will leave the
new feature disabled.
Compatibility with older versions of wikidiff2 is retained by checking for
the version number of wikidiff2 and calling the method without the 4th
parameter if the version is < 0.3.0.

Bug: T166571
Change-Id: Ic01054354a4fbba410e58c9873edcbde797f883d
2017-07-18 11:07:04 +02:00
Kunal Mehta
867c79be20 Advise extensions not to modify $wgWhitelistRead
Instead they should use the TitleReadWhitelist hook. I've seen this
pattern in multiple extensions now, each causing different problems, so
it should be explicitly documented.

Change-Id: I670b0acde660bdc27a6c7e91c4b1b3baeea8b2e5
2017-07-11 18:30:33 -07:00
Kunal Mehta
9081dd1217 Autodiscover parser tests for extensions, deprecate $wgParserTestFiles
This implements autodiscovery of extension parser tests that are located
in the tests/parser/ directory. Any *.txt file in that directory tree
will be treated as a parser test.

Core parser tests are now defined in ParserTestRunner::$coreTestFiles,
and $wgParserTestFiles is marked as deprecated.

Bug: T143976
Change-Id: Ia24fd8ef52e6732c698153b17bb679a5f511a2a7
2017-07-08 00:47:02 +00:00
Roan Kattouw
ebc36b75b8 RCFilters: Basic implementation of live updates
Adds a live updates button that refreshes the changes list every 3 seconds.
For now this is pretty dumb in that it re-requests the entire list every time;
the next step would be to make it only load new changes using the &from=
query parameter.

Bug: T167743
Change-Id: Ic2ddea840e5c46f42b32ae4fff91138cacc28ec0
2017-07-07 17:00:53 -07:00
Aaron Schulz
6eec093600 Record PostSend master queries via TransactionProfiler
Bug: T166199
Change-Id: Ib2f858f09aae65af6aa8324edb72d8a16094f2b3
2017-06-28 17:48:49 +00:00
Matthias Mullie
8ea782202d Set $wgGalleryOptions in Setup.php
Defaults will be added to the config array at a later point,
without overriding any that have already been set.
This'll make it less prone to errors in case $wgGalleryOptions
is incomplete.

Bug: T168479
Change-Id: I5f127e5ac8c8a1583301dd7aed2ae8e434987950
2017-06-23 13:33:23 +02:00
jenkins-bot
3cb14f56bd Merge "Show dimensions in TraditionalImageGallery" 2017-06-15 17:16:13 +00:00
jenkins-bot
57428a7c8c Merge "New language variant 'en-x-piglatin' for easier variant testing" 2017-06-14 23:57:13 +00:00
Moriel Schottlender
51ce88abb9 RCFilters: Add 'views' concept and a namespace view to RCFilters
Enhanced RCFilters: Add the ability to filter by namespaces to RCFilters.
	🎉	🎁	🎊

- Add the ability to separate groups of filters by 'views'
- Add the first views as 'default' (for predefined filters)
  and 'namespace' as the list of namespaces.
- Add 'nsinvert' to namespace group
- Allow highlighting namespaces
- Allow searching on either view, depending on prefix
- Add a way to switch views by typing prefix, clicking the
  'Namespaces' button or clicking a tag (either namespace
  or filter tag, changes the view accordingly, and adds
  or removes the prefix from the input to stay consistent)
- Add an optional wrapper text for tags, so we can represent
  them with their respective prefixes and (if needed) with
  a special message for inverted state.
- Add unit tests and make pass
- Bonus: Fix issue with URL not updating (and not being updated)
  the inverted and highlight enabled states.

Bug: T159942
Bug: T163521
Bug: T164130
Change-Id: I7e83f0800cbeb289dfd3461c1c5a197c053147ca
2017-06-14 12:57:13 -07:00
Liangent
d8375bee24 New language variant 'en-x-piglatin' for easier variant testing
Guarded by the $wgUsePigLatinVariant variable, off by default.

Pig Latin is a language game where words in English are altered
according to the following rules:

* Words starting with a vowel have a '-way' suffix appended.
* Words starting with a consonant have the initial consonants (or 'qu'
  group) moved to the end and an '-ay' suffix appended.

https://en.wikipedia.org/wiki/Pig_Latin

* Added 'en-x-piglatin' as a language name.
* Added 'en' to LanguageConverter::$languagesWithVariants.
* Added LanguageEn class and its corresponding EnConverter which
  provides one-way translation from English to Pig Latin.
* Some minor internal changes in code that assumed that English
  doesn't have a language class or converter.

Bug: T45547
Depends-On: I1d9691c784032669979f8109c9a5f65cbf4122c9
Change-Id: I7fa2d85d6364958c5138366e8b4504a2697a8731
2017-06-12 16:59:57 -04:00
jenkins-bot
38a2a5661e Merge "Add $wgMaxJobDBWriteDuration setting for avoiding replication lag" 2017-06-12 18:15:57 +00:00
Roan Kattouw
f27f6cf79c Enable $wgStructuredChangeFiltersEnableSaving by default
We'll probably get rid of the feature flag altogether in a few weeks,
for now let's just turn it on by default.

Bug: T164128
Change-Id: Ifa12c33a619e1fb3d9fff05ef1b98a9b537c5dea
2017-06-02 11:33:54 -07:00
Brad Jorsch
fb6f4d35e7 Apply $wgShellLocale in Setup.php
While most of MediaWiki ignores the shell's/C library's locale setting,
there are some things other than shell execs that use it (e.g. the
luasandbox PHP extension).

To provide a consistent environment, set the locale in Setup.php instead
of letting it be changed mid-request depending on whether something else
happened to have called certain functions.

Bug: T107128
Change-Id: I02943803d26d5b1b3ac00ef9216f69cdfa149585
2017-06-01 15:11:01 +10:00
Timo Tijhof
eaf2957ba7 Revert "Creating new WMF 1.30.0-wmf.2 branch"
Also revert the automatic "Update git submodules" commits since then.

This reverts commit 264fc98588.

Change-Id: Ica6ad77c46cc8a7f6b5576da2580ea9e07ac8637
2017-05-25 22:57:06 +02:00
Aaron Schulz
ac202927d4 Add $wgMaxJobDBWriteDuration setting for avoiding replication lag
This is similar to $wgMaxUserDBWriteDuration except for jobs.

Also use the Config class in JobRunner instead of globals.

Bug: T95501
Change-Id: I4949bb99c26451429c7acf82ecc4444bf9fb835f
2017-05-25 19:43:27 +00:00
Tyler Cipriani
264fc98588 Creating new WMF 1.30.0-wmf.2 branch 2017-05-23 17:26:26 +00:00
Gergő Tisza
fcd495ffef Remove $wgExceptionHooks
Skip deprecation period because it is very unlikely that anyone used this:
it does not appear anywhere on gerrit/git, no nontrivial google hits,
the documentation has been flat out wrong for 9 years and no one
noticed it, and the whole feature is fairly useless as you need to declare
it separately for every single exception class you expect.

Change-Id: I85844a238d3135d05eeba10331149624b04bafe2
2017-05-22 00:57:44 +02:00
Matthew Flaschen
5b9f2c8d00 Gate option to save RC filters to default false
Change-Id: I1c9e382c265a097b5eea07b529ec542a60562307
2017-05-11 17:14:14 -04:00
jenkins-bot
58e1e472ba Merge "Allow callback functions for creating jobs" 2017-05-09 18:38:57 +00:00
Lucas Werkmeister
a57252a1f5 Allow callback functions for creating jobs
$wgJobClasses can now specify a factory function for creating a job,
instead of a class to be instantiated directly. This makes it possible
to inject services in a job constructor, and register a factory function
that calls the constructor with default services.

This follows Ieb85493a7765 and Ia2107dc5af78, which introduced factory
functions for API modules and special pages.

Change-Id: I0461e59da2a8fa6681e3b1fcdfc38bfed7f3ac32
2017-05-09 19:26:13 +02:00
This, that and the other
f8008a7cb8 Remove $wgDisableUserGroupExpiry feature flag
This feature flag was added to comply with WMF's schema change policy.
It is no longer needed now that the feature is enabled on WMF sites.
External MW installations will run update.php or manually do DB updates
as required before upgrading MW.

Bug: T162517
Change-Id: I5b532d79fd1e8b178490cf2617499ae62967de2c
2017-05-06 20:50:42 +10:00
Brad Jorsch
3b84e7f31c Change default $wgShellLocale to C.UTF-8, and use it to set LC_ALL
It's less likely to cause surprises than language-specific defaults.

Bug: T107128
Change-Id: Ife7673255798f3a3d72028a26607c56b9b7fb224
2017-05-04 05:53:47 +00:00
Florian Schmidt
c9649314f7 Use IPSet for checking of wgProxyList
Instead of using array_* functions, use the IPSet for checking, if a
specific IP address matches a set of addresses.

This also deprecates a backward-compatibility functionality, that
the wgProxyList array could also be an associative array, where the blocked
IP address is set as a key of the array insted of a value. All IP address
keys will be mved to values on-the-fly, however a deprecation warning will
be emitted. A notice in the Release notes was added, too.

Bug: T161580
Change-Id: I69d9534942c415ab044177969ecd54160079b593
2017-05-01 22:15:03 +00:00
James D. Forrester
879344ea4a Prepare for 1.30 branch
Change-Id: If9842b19ec995d03f93f96bfad4d61ca96c37f3c
2017-04-26 11:48:55 -07:00
Timo Tijhof
bf69459d50 Upgrade to jQuery v3
Source code:
 https://code.jquery.com/jquery-3.2.1.js
 https://code.jquery.com/jquery-migrate-3.0.0.js

Documentation:
 https://blog.jquery.com/2016/06/09/jquery-3-0-final-released/
 https://jquery.com/upgrade-guide/3.0/

This is not a breaking change because jQuery Migrate covers
all breaking changes.

However some extensions (especially unit tests) may've relied
on undocumented behaviour. For that reason, and due to unresolved
upsteam issues this is still behind a feature flag for now.

It is true by default to ensure this has wide exposure to discover
issues as quickly as possible. If this is not resolved before
the end of the 1.29 release cycle it should be turned off again.

Bug: T124742
Change-Id: I3c3dedaa9a9d449eaa2b7e5d24b4540e7fa421c0
2017-04-12 21:07:37 -07:00
Florian
97d7de0b84 Convert EditPage buttons, checkboxes and summary input to OOUI
Several methods now have a new implementation using OOjs UI widgets
(ButtonInputWidget/ButtonWidget, CheckboxInputWidget, TextInputWidget).
The existing (public) methods are unchanged. The OOjs UI version is
used by default.

Because this change can cause problems for extensions and on-wiki
scripts depending on the exact HTML, the old version is still available
and can be used by setting $wgOOUIEditPage = false; in LocalSettings.php.
This will be removed later and OOjs UI will become the only option.
To make testing easier, users can also force either mode by adding
&ooui=true or &ooui=false to the action=edit URL.

* EditPage::getSummaryInput() and EditPage::getSummaryInputOOUI()
* EditPage::getCheckboxes() and EditPage::getCheckboxesOOUI()
* EditPage::getCancelLink()
* EditPage::getEditButtons()

Bug: T111088
Co-Authored-By: Amir Sarabadani <ladsgroup@gmail.com>
Co-Authored-By: Florian Schmidt <florian.schmidt.welzow@t-online.de>
Change-Id: I25aa78ac59082789938ecfb5878eb16614392995
2017-04-12 01:35:24 +00:00
Kunal Mehta
de9f9bda7d API: Optionally include in job queue size in maxlag
maxlag is the default mechanism most bots and libraries use in
determining when to back off due to wiki overload. However these days,
there are other things that should be considered when asking bots to
back off, one of those is job queue size.

For compatibility and simplicity of use, the number of jobs is converted
into something resembling seconds using a configurable factor. We also
output the total number of jobs in the API error output so more
sophisticated clients can do a more advanced back off.

Bug: T160003
Change-Id: Iedae2344a3d93202efbdd1bf807cef6165b6257a
2017-04-10 19:24:24 -07:00
addshore
9811374b5a Bugzilla -> Phab task number in $wgUrlProtocols phpdoc
Change-Id: I1478ece1691d0b86aeae272dd041425eac4ed960
2017-03-22 10:02:55 +00:00
TTO
6a7a973b73 Avoid breaking wikis that were modifying $wgDummyLanguageCodes
Follow-up to If73c74ee87d8235381449cab7dcd9f46b0f23590.

Change-Id: I51b7ecf51860bfddea87fcf7cad17295088e1dd9
2017-03-09 01:15:58 +00:00
jenkins-bot
980c688c2b Merge "Add RemexHtml to the list of available Tidy drivers" 2017-03-08 23:33:17 +00:00
Tim Starling
50fe941457 Add RemexHtml to the list of available Tidy drivers
Change-Id: I5a87a6ed24ca3ef7c5fdb21e74f9eb410bf74b4c
2017-03-09 10:19:23 +11:00
jenkins-bot
bdfa96eb72 Merge "Break up $wgDummyLanguageCodes" 2017-03-08 20:46:47 +00:00
This, that and the other
48ab87d0a3 Break up $wgDummyLanguageCodes
$wgDummyLanguageCodes is a set and mapping of different language codes:

* Renamed language codes: ['als' => 'gsw', 'bat-smg' => 'sgs',
                           'be-xold' => 'be-tarask', 'fiu-vro' => 'vro',
                           'roa-rup' => 'rup', 'zh-classical' => 'lzh',
                           'zh-min-nan' => 'nan', 'zh-yue' => 'yue'].
  The old language codes are deprecated because they are invalid but
  should be supported for compatibility reasons for a while.
* Language codes of macro languages, which get mapped to the main
  language: ['bh' => 'bho', 'no' => 'nb'].
* Language variants which get mapped to main language:
  ['simple' => 'en'].
* Internal language codes of the private-use-area which get mapped to
  itself: ['qqq' => 'qqq', 'qqx' => 'qqx']

This is a very strange conglomeration which should get differentiated,
and were split up in the following ways:

* Renamed language codes are available from
  LanguageCode::getDeprecatedCodeMapping().
* Language codes of macro languages and the variants that are mapped to
  the main language are available as $wgExtraLanguageCodes and are set
  in DefaultSettings.php.
* Internal language codes are set in $wgDummyLanguageCodes in Setup.php.

Change-Id: If73c74ee87d8235381449cab7dcd9f46b0f23590
2017-03-08 12:11:30 -08:00
Matthias Mullie
ebb1680359 Show dimensions in TraditionalImageGallery
Bug: T121869
Change-Id: Ie2cb3f1594302f1726ae3d9d2d668c81b7e6b0f1
2017-03-07 13:09:00 +01:00
Brian Wolff
4c122c850d Add another entry to Content-security-policy logging blacklist
Add https://ad.lkqd.net/vpaid/vpaid.js which spams the log quite
a bit. The CSP blacklist includes urls which we know are caused
by adware, and thus aren't interesting (to us).

Change-Id: I11e5a3bbd9090b7d3053ca4c855b220b14511bb5
2017-03-05 19:43:13 +00:00
Stephane Bisson
541f2ddaf2 Unhide rcenhancedfilters preference
This allows it to be used for the beta feature.

It shouldn't change anything for users since
this preference was never configured to be
shown on Special:Preferences anyway.

Bug: T159007
Change-Id: Ie45c09b59bd0a366531490d3062f9f1a60ea2964
2017-03-03 12:31:48 -05:00
jenkins-bot
aa3319c4c0 Merge "Miscellaneous indentation tweaks" 2017-02-28 18:38:36 +00:00