and check for this in WikiPage::doEditUpdates before
inserting a new CategoryMembershipChangeJob.
Some content models like the Wikibase ones do not
have categories and it's wasteful to add these jobs
for all Wikibase edits.
Bug: T126977
Change-Id: I2c54a4ba1546445dc41101e15cb83a2c6cc2b1c9
This method actually marks the test it is called
from as skipped if Diff3 is not confugured.
The new name "markTestSkippedIfNoDiff3" better
reflects that.
Change-Id: I1dffeba0aceb312b3a82216f0b55227e24bc2e34
Some tests fails on wikis with $wgLanguageCode not = 'en', fix this by
setting the correct language context.
Change-Id: Ia72017df59d8beb5c508832584b2431ffab0f77f
* Split tidy implementations into a class hierarchy
* Bring all tidy configuration into a single associative array and
deprecate the old configuration.
* Remove $wgAlwaysUseTidy
This is preparatory to replacement of Tidy (T89331). I used the name
"Raggett" for things relating to Dave Raggett's Tidy, since if we use
"tidy" to mean the new abstract system as well as Raggett's tidy, it
gets confusing.
Change-Id: I77af1a16cbbb47fc226d05fb9aad56c58e8910b5
Just like ad9f14d662 which was for JavaScript. The redirect will be
of the form "/* #REDIRECT */@import url(...);".
Bug: T73201
Bug: T35973
Change-Id: I10bae44af4b4923f8797172702974cd45dc25ab4
When a JavaScript page is moved, a "redirect" in the form of
mw.loader.load(...) will be left behind, so any other
JavaScript loading the page that way will still work, albeit
with an extra HTTP request.
This also implements Content::getRedirectTarget(), so redirects
are marked properly in the database, and users viewing them
are redirected properly. A magic "/* #REDIRECT */" comment
must be in front of the mw.loader.load call. This is done so
that pages which currently are just one mw.loader.load call
aren't turned into redirects.
Bug: 71200
Bug: 33973
Change-Id: I10fdff087a901da56fad64531f0e382f90ebcf37
This adds supportsDirectApiEditing and
supportsDirectEditing methods to ContentHandler. Both
return false by default for the ContentHandler base
class, and true for TextContentHandler and it's
derivatives. (everything in core)
Extension content types that directly extend
AbstractContent / ContentHandler, often / generally don't
support direct editing. EntityContent in Wikibase
and Flow boards are the two such content types currently
in gerrit-hosted extensions.
The use and direct settings of the allowNonTextContent
member variable is replaced by enableApiEditOverride and
a setter for that. The only place allowNonTextContent is
used in all of Wikimedia-hosted git repos is core itself
(EditPage and ApiEditPage), so should be safe to make
this change.
With this change, Wikibase can remove its ApiCheckCanExecute
hook handler that disallows editing there, and MobileFrontend
could check if direct editing is allowed before enabling it's
editing features, instead of Wikibase having to add
MobileFrontend hook handlers to disable the features.
Bug: T96382
Change-Id: I276cd6ecedf38108f1f2be16b38e699e8c5d2d0c
* Remove is_object restriction from isValid.
* Implement rootValueTable to support rendering of other
root structures.
Also:
* Minor method documentation tweaks.
* Document why quotes are not escaped for strings in value cells.
Bug: T86270
Change-Id: Ic1d10393912fcefa22d675fd4aa2baf437d2a05a
Follows-up d2a82fcb60. These issues weren't previously exposed
as nothing uses JsonContent by default in core, and the extensions
using it (e.g. EventLogging) lock it down very early. As are
most of these methods were never really put to use (they were
called after the extension does its superset of checking, or
too early and WikiPage ignores it).
Bug fixes
* Empty JSON object was converted to an array by PST conversion.
The beautifyJSON method is intended for prettify purposes but
actually modified the content stored in the database and made
it no longer roundtrip ({} != []).
We can't change getJsonData to return an object since it's
a public method and people use it as an array. So we can't cast
it to a PHP object as that would break back-compat.
Turns out the class doesn't even support non-objects anyway (a
primitive in JSON can trivially cause a fatal as it wasn't
consistently considered invalid, though it didn't actually fatal
due to some lucky spaghetti code in WikiPage).
* Fix beautifyJSON by checking for empty objects to prevent
implicit {} to [] conversion.
* Add isValid() check to fillParserOutput() as it's called early
on. Otherwise it throws a warning that 'foreach' (in objectTable)
iterates over null. In practice it doesn't matter since the
entire parser output is rejected when WikiPage eventually
checks isValid (through Content::prepareSave).
* Consider all non- (PHP) array values invalid instead of just
non-null values.
Enhancements
* Display message "Empty object" instead of a completely blank page
for an empty object.
* Display message "Empty object" or "Empty array" instead of an
empty table cell.
* Render arrays as a list of values (without indices).
* Remove italics from table cells for values. The monospace font
should be enough. It also offsets it from the "Empty"
placeholders (which are italicised).
Refactoring and clean up
* Use FormatJson::parse so that we can use Status to distinguish
between null parse result and thus reliably cache it.
Ideally we wouldn't need to cache it, but right now this code
is pulled apart and called in so many strange ways that we end
up calling this several times.
* Improve fairly meaningless test (testBeautifyJson) that was
calling FormatJson in its data provider, exactly what the method
being tested did. It also provided the test with data that could
never end up in normal usage (a PHP-style associated array with
implied numerical indices).
* Document that this class rejects non-array values.
* Document the problem with WikiPage assumming PST can run on any
content. WikiPage fundamentally still assumes wikitext, in that
there's no concept of invalid content.
* Fix incorrect documentation for getJsonData's return value
(It may return null.)
* Fix incorrect documentation for beautifyJSON's return value.
(It never returned boolean.)
Bug: T76553
Change-Id: Ifed379ba4674a8289b554a95953951886bf2cbfd
Follows-up b36d883.
By far most data providers are static (and PHPUnit expects them
to be static and calls them that way).
Most of these classes already had their data providers static
but additional commits sloppily introduced non-static ones.
* ResourceLoaderWikiModuleTest, 8968d8787f.
* TitleTest, 545f1d3a73.
Odd unused method 'dataTestIsValidMoveOperation' was introduced
in 550b878e63.
* GlobalVarConfigTest, a3e18c3670.
Change-Id: I5da99f7cd3da68c550ae507ffe1f725d31e7666f
Since Id44d566a, the text passed to the parser when parsing a
&redirect=no page no longer contains the #REDIRECT directive. For the
benefit of extensions that want to know the redirect target from various
parser hooks, record the target on the ParserOptions object associated
with the parse.
Bug: 62856
Change-Id: Icd1da9911a43eabacbd9e9a369a8326f67f270ff
* All content handlers that deal with code/data tend to have
English as their page language & pageview language, so moved common
code to the abstract CodeContentHandler class.
* Renamed JSONContent & JSONContentHandler into JsonContent*
Change-Id: I46819a0572ef5becc211d0d82471ff7102edaa3c
MediaWiki default is "@return type Description", so set a type after
return and start the description with a capital letter. Also use the
more common spelling of boolean.
See http://phpdoc.org/docs/latest/references/phpdoc/tags/return.html for
more about @return
Change-Id: I4e5198822fe92836f9cef9918a9fc1a1a1e0a043
- Added newline at end of files
- Added/Removed spaces around comma, parentheses and negation
- Added space after function word
Change-Id: I2dd338153aeb5f07702ba015945e95c7d0ae673b
- Swap "$variable type" to "type $variable"
- Fixed spacing inside docs
- Makes beginning of @param/@var/@throws in capital
- Changed some types to match the more common spelling
Change-Id: Ia041964250d8b7c0349d79dc9b131c5b8696e795
As was discussed at the architecture summit, a basic JSON content
class which handles validation and basic display. Not intended to
be used directly, but for extensions to subclass.
Co-Authored-By: addshore <addshorewiki@gmail.com>
Change-Id: Ifcde9bcd0efcf15a3ab692dd2a0a3038559e0254
Fixes for change to enable the creation of blank pages. Added test
for this case.
Follow up: I3457c36a909d1dbfaeed04a1f0568c69e0ef3386
Bug: 57238
Change-Id: Id52be6cbe22c6098d1c0824d7a7848579aa05a84
This hooks allows extensions to override the normal model-specific
rendering of page content. A typical use would be to provide syntax
highlighting for pages that contain scripts. In that sense,
ContentGetParserOutput is a generalization of the old ShowRawCssJs
hook.
This, together with I76412f9d, is a (hopefully) fixed version of the
reverted Ibfb2cbefea44.
Change-Id: I979e2438689648ba4c959d8083197ef14ce524e8
Swapped some "$var type" to "type $var" or added missing types
before the $var. Changed some other types to match the more common
spelling. Makes beginning of some text in captial.
Also added some missing @param.
Change-Id: Ic8aaf0a93796b97d0fa4617c1f86ff59f4b36131
These are protected in the parent MediaWikiTestCase and
PHPUnit_Framework_TestCase. No good reason to make them public.
Change-Id: I45ecc0e4209f0c3b27e63a550112e4e0ddf6e530
Clear the MagicWord object cache, otherwise the magic word names can be cached
in the wrong language, thus making the test fail.
Change-Id: Ia6da94ca2c4f9ca892c81b4aa7cf96108b42ccd5
This change removed getHtml(), but not the call to it from fillParserOutput.
It has a few other issues that I'll flag in-line after deploying the revert.
This reverts commit fda090a7e7
Bug: 49398
Change-Id: Idcef8d4cedc7c03f72bc1743e0f89cc5ed4ad7a7