* Detect years 0...99 correct.
* Short forms possible: JJJJ, JJJJ-MM, JJJJMM, JJJJMMTT
QUnit Test sorts now with parser 'isoDate' (because of 2009 former test sorts with parser 'text')
* Prefix and postfix allowed.
* Between date and time a 'T' or 'any white space' is allowed (Bug: T126886)
Bug: T126886
Change-Id: I664b4cc9d5fb472ea0bc0e36a3c209f04048e769
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
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
- mostly auto fixes
- some too long lines fixed
- ignore amp space in one case passing by reference
Change-Id: I6472f83bc3cbf4bd629d83050cc3319b19ec465c
For some varargs a variable name is added with suffix ,... as seen for
many other varargs
Some @param are swapped, because there are in the wrong order
Enable Sniff MediaWiki.Commenting.FunctionComment.ParamNameNoMatch
Change-Id: I60fec6025bce824d5c67563ab7b65ad6cd628ad8
Reenable MediaWiki.WhiteSpace.SpaceBeforeClassBrace.NoSpaceBeforeBrace,
because the mentioned bug is fixed
Bug: T172933
Change-Id: I1593bdba2295ebed401b921f2beabed69dba7638
Change 950cf6016c took care of the most,
but a few remain, either outside of includes/ and maintenance/
directories (which that change was limited to), or in code introduced
afterwards.
Change-Id: I9c363d0219ea7e71cde520faba39406949a36d27
ResourceLoaderModule objects gain a new method getPreloadLinks() which
returns an array with the meta data required to build a Link rel=preload
header according to the current draft for W3C Preload.
<https://w3c.github.io/preload/>
Another implementation of this is already in use in OutputPage for
preloading the logo image.
This array is formatted by the ResourceLoaderModule::getHeaders method,
which is implemented as "final" at this time, thus restricting use to
the Link rel=preload header.
Headers are exposed and process-cached, like all other content
(scripts, styles, etc.), through ResourceLoaderModule::getModuleContent,
and aggregated by ResoureLoader::makeModuleResponse.
I had hoped for the getPreloadLinks to be stateless (not vary on $context).
Whether something should be preloaded and what, should not vary on the
skin or language. However, while that conceptually holds true, the exact
url for any given resource may still vary. Even the main use case for this
feature (T164299, preloading base modules request) require $context to pass
down skin and lang to the load.php url.
Add full test coverage and example documentation.
Bug: T164299
Change-Id: I2bfe0796ceaa0c82579c501f5b10e931f2175681
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
This is part of the effort to remove the assumption that every page
can have a talk page. Before we can merge Icee208dc4 which makes
Title::getTalkPage() throw an exception of no corresponding talk
namespace is defined, all extensions that call getTalkPage() must
be changed to either check canHaveTalkPage() first, or to use
the conveniance function getTalkPageIfDefined() instead.
Bug: T165149
Bug: T172146
Change-Id: I6d2613d8f7105048022f8093186dc57f1f8173ab
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
When "live update" is off and new changes are detected,
show a link to load and prepend the changes to the list.
Also adding a line between old and new changes
when grouping by pages is off.
Bug: T163426
Change-Id: I6a111d23956bdc04caa4c71e9deede056779aafa
Follows-up 1d77070f19. On Travis CI, this test fails on HHVM:
> There was 1 failure:
> 1) DeprecatedGlobalTest::testWarning
> Failed asserting that exception of type "PHPUnit_Framework_Error" is thrown.
I've been unable to reproduce this locally, but within Travis CI
it happens on both Trusty containers and Trusty VMs, no matter the
version of HHVM. After some trial and error, I narrowed it down
to the error_reporting setting, which presumably has a different default
in the HHVM package Travis CI uses.
Change-Id: I588218103d6c72df5ad4fb6289df688b3740233e
- Add sticky preference for groups and the operation behind
it.
- Allow normalization from the UriProcessor
- Backwards-compatibility for saved queries
- Allow saved queries to load regardless of sticky params
and to be compared correctly without the sticky params.
- Add days/limit preferences and update those on change
- Update the preference even if we received a new value
from the URL.
Bug: T171514
Bug: T171368
Change-Id: I5232f3372f0e5c981332d152faf0ab47cc470b56
Only missing cases where 'USE INDEX' and 'IGNORE INDEX'.
The test doesn't do much since the underlying methods are no-ops
by default, but at least it ensures there are no PHP errors from
these branches.
We can later re-use some of these test cases in tests specific
to one backend.
Change-Id: Id004a2ae41efaa7a367f964013e25d98ecc591ff
Indexing these files takes about 5-10% of the run time when generating
code coverage reports for core. It has no coverage at the moment and
probably won't any time soon given it's just variable declarations.
At least for now, exclude it to significantly speed up generating of
coverage reports.
Change-Id: I0357e004e96d4f4b19036474c8353ddb778e31f3
This already worked as expected for any module that uses the new
enableModuleContentVersion model, but for the majority of file modules
this is not yet the case for performance reasons. As such, make
sure lessVars are included in our manual tracking.
Include it conditionally to avoid changing the array for other modules,
which would needlessly invalidate their cache.
Bug: T171809
Change-Id: Ib250068e0ecfc29a09ca33c23bef901ee0482bf2
If no writes started a transaction yet, the callback would run
but not commit (by design, joining the request round). Later
writes will then pile on top of it.
The point of this method is to avoid such cases, so this edge
case has been fixed.
Change-Id: I9b44b19261d679de4aff6e44a9cfeb4f684ce02e
Follows-up 6418c54c4, 5e602c6132. Missed these because they didn't
match my search pattern previously (I didn't account for the test
name being a variable instead of a string literal.)
Change-Id: Ieae82acc80719041712c8c18b8ddffe387ebe8cf
This change adds parser tests that test the current behavior of decoding
HTML entities in indicator names when generating the indicator IDs as
described in T104196.
The parser tests currently does not compare the generated HTML with
the ID.
With I88e8e2077e the tests get changed to the new behavior.
Change-Id: Id561c4a00ece09b4db381edfe0d5f98120cacf5e
ParserOutput::getText() depends on the current skin to format edit
section links, which some (e.g. MinervaNeue) have customized. This
causes parser tests to fail when they expect the default edit section
link format.
Default to always using the built-in fallback skin when parsing, but
allow it to be overridden with a "skin=..." option.
We also have to override $wgOut in addition to the main RequestContext
since that's what ParserOutput uses.
Bug: T170880
Change-Id: Ib7f0bd15dd0a9255e1e5140907e800478b658b92
The method hits the jobrunner backend to find out how many jobs are
enqueued in each of the JobQueue. It is publicly available via the
MediaWiki API request:
/w/api.php?action=query&meta=siteinfo&siprop=statistics
That is often used by bots when querying recent changes among other and
with fast bot cause useless queries toward the jobrunner backend.
Wrap SiteStats::jobs() with a WAN cache under key SiteStats:jobscount.
Drop SiteStats::$jobs private variable that was used for in process
cache. The WAN Cache does it for us via 'pcTTL'.
That is similar to SiteStats::numberingroup().
Set TTL to one minute, which should still give fresh enough results for
public uses.
Cover that behavior with a test.
When writing tests I noticed MediaWikiTestCase generates a few jobs due
to the creation of the UTPage page:
* HTMLCacheUpdateJob to refresh backlinks (eg: history)
* RecentChangesUpdateJob which happens randomly
Pass EDIT_SUPPRESS_RC to doEditContent to prevent the first and blindly
delete entries in the recentChangesUpdate jobqueue for the second.
Change-Id: I95a272d0691d779bfee9e7a671cbab66a113dfa1
This change adds parser tests that test the current behavior of decoding
HTML entities in headings and links for IDs and fragments of links as
described in T103714.
With I88e8e2077e the tests get changed to the new behavior.
Change-Id: Ia79af95e53114c1154dd52769f2ad1ab673fdd9e
* Add case for `$tables[0] == ' '`.
* Add case for `$tables == ''`.
* Add case for 'DISTINCT' option.
* Add case for 'FOR UPDATE' option.
* Add case for 'LOCK IN SHARE MODE' option.
* Add case for 'EXPLAIN' option.
Change-Id: I4a5f4754bc30d31ec35a085f39321fd358b6aa49
Many of the main methods here have, over the years, been split up
into several protected/private methods.
Change-Id: I1b8489b1c61c0294288442a0a0cd28c9fa77f82e