`content` should be mapped to `content-thumbnails` when using list mode
rather than throwing a fatal.
Bug: T271441
Change-Id: Idb30a94803f1432e2c1f57d55eb8c8aef1368dfb
The value of content-media now depends on configuration.
These modules can be merged, as the expectation is both should
apply when the UseNewMediaStructure configuration flag is enabled.
For backwards compatibility map any content-thumbnail requests to
content-media
Bug: T278560
Change-Id: I10ba53b1ee217eae9e05182e989d56f5dc107722
This was added in 381499a675 in response to the issue that when a skin
adopts a feature that was new in MW 1.36, it caused an exception when
that version of the skin is then installed on MW 1.35. That's expected,
and generally helpful because the default support policy requires
like-for-like (MW 1.35 with REL1_35, this applies to all skins and
extensions, except for a few like Translate and SemanticMediaWiki).
However, while supporting LTS within master is unusual, there are
indeed the Translate/SemanticMediaWiki projects, and this problem has
already been solved years ago there by using a conditional with
$wgVersion. The proposed approach on T271441 actually also involves
such a conditional, but late at runtime instead of in the module
definition. Anyway, the way it was fixed in Timeless already solves
the problem by not passing down the invalid feature in the first
place, thus making the 381499a675 patch obsolete. I'm not aware of
any skin in Gerrit having such a compat policy, but if they exist,
they can fix it the same way, by defining the module in code with
a condition, just as Translate/SemanticMediaWiki do.
Bug: T271441
Change-Id: If97b3d04ac1e3355ee4f229db11e524d24ebd27a
* Remove odd use of ResourceLoaderFileModule::extractBasePaths()
SkinModule.php which was basically just returning $IP.
* Use getConfig()->get('ResourceBasePath') so that the test does
not need to override global configuration variables.
Follows-up 6845912bcf and f1457312dc.
Bug: T277728
Change-Id: I64262b48bb5dc71c53b4114eddb2f080a6a076f5
* Remove confusing dead code for T271441, as a continue statement at
the end of a loop body does not do anything. I'll reinstate the
exception once we've looked at whatever skin caused the issue and
have fixed those repos to not pass invalid options.
* Simplify list creation by avoiding the loops and duplicate logic.
Assign the list directly when possible, and otherwise store the
filtered keys.
* Remove unexpected access to `$this->getConfig()` in the constructor.
Follows-up a6c769e976, which worked by accident due to it defaulting
to global state. The injection from ResourceLoader::getModule happens
after the constructor. I am working on a patch to enforce this, and
thus this change needs to land first.
I've moved the logic to getStyleFiles() and boldly changed it to be
a simple skip rather than based on whether it was specified. If this
is a problem we can find a more complex way, but I wanted to try this
first. It seems there is no reason to load these, specified or not,
when the parser feature is not enabled. (Ref T266148)
The unit test was working around this violation in a similar way,
which is now redundant and removed in this patch.
* Document that compatibility method only works on map-form.
* Make applyFeaturesCompatibility() an internal and protected
method. I don't think we'd support extensions calling this
directly.
* Limit applyFeaturesCompatibility() to just dealing with
the features array instead of also handling other options
and applying of the default value.
Bug: T277728
Change-Id: I24a2b783570c888cedee66885647b3ed765e0132
1) Rename content-parser-output to `content-body`
Widen the scope of this module to apply to anything that can be rendered
as the article body. Improve the documentation on what is allowed here.
For early-adopter skins already using content-parser-output,
map the feature to the new name and add tests.
2) Reclaim the `mw-body-content` class for result of
SkinTemplate::wrapHTML
The `mw-body-content` has been used in skins to wrap various elements.
Going forward we will use it to wrap any HTML content generated by
OutputPage.
See dependent patches, which we're not directly depending on to avoid
a CI gremlin:
- I90d85c21f4a62e6697f24e3ce388445a0a53c2b0 (MonoBook)
- I11242e243c9a529b72972089af9ac2a8c906331a (Modern)
- I87942c60e62f6f14acdfeaa1836ace4eac9252ac (CologneBlue)
- I4c1b15d90bacbc9b13782a1d8f52e838ce8ecd83 (Vector)
Bug: T279388
Change-Id: I3a91b294fcb3724cd46743e497dff723de0490a6
After talking to Volker, the `elements` feature should not contain any
CSS classes. It should apply only on the tag level. I've updated documentation
to explain what's permitted here.
The link styling rules added in b24bff67ed are instead added to a new
feature `content-links`. The existing `content-links` is renamed to
`content-links-external` and for backwards compatibility anyone enabling
`content-links` without `content-links-external` will get the new styles.
The existing legacy feature for backwards compatibility loads the `content-links`
feature which addresses the problem in Timeless with plainlinks styling being lost.
Bug: T279693
Bug: T255717
Bug: T278576
Change-Id: I6e55ed2880782533ea61df98cf16dbf36483d895
Only the `toc` feature requires access to messages. When that feature
is not enabled, do not load unnecessary messages.
Note, this will not fix the installer right away,
but will be needed to fix the
installer in addition to the change in
I0e3ba3c2cfa64bba49e3944d93e0c802b553bac8.
Bug: T270027
Change-Id: I3905bc2c3244ae2308c641bbabb097f62c666041
The `content` feature is too ambigious in meaning.
Moving all the styles relating to the table of contents reduces
the content feature to a group of image styles.
CSS rules for Tidy are legacy, added to the new
content.parser-output.less feature which defaults to on for all skins.
Bug: T269877
Change-Id: Ica54358576ee59c4cb75ef941421e8c0329336d9
The documentation names the feature as `category-interface` when
actually it is called `interface-category`.
Bug: T278373
Change-Id: I87ea9008c20ff846250a008b4f187439923b0f6c
Changing module file to LESS in order to use mediawiki.mixins to get
rid of obsolete `-webkit-box-sizing` property.
Bug: T277803
Change-Id: Ic292549e3cad616cb01e7a5eb8f8e039bc11d121
The content-tables feature contains the styles for .wikitable, a
commonly used style of tables. The print styles for this table have
been included under the print media, split from commonPrint.css.
These styles are imported into commonPrint.css, which has changed
to use Less for this.
The .mw_metadata styles in commonPrint.css have been moved to the
resource loader module that already contains the other .mw_metadata
styles.
Bug: T278401
Change-Id: I37db62f466d8fdf8c9dc8adfdf497a0b7af9b6b2
This is a reasonable default for all skins and is small enough
to not be a concern for existing skins.
Also: expand documentation so this is understood better.
Bug: T277218
Change-Id: Ia58037e2c32d76d5c7125772a3243b76ede45f3f
- JavaScriptMinifier: The public interface for this internal class is
ResourceLoader::filter which, except for one caller (minify.php)
is indeed consistently used already, no other callers need replacing.
- CSSMin: Idem for minification, however, this class has some other
method as well, which have a number of internal users, but none
outside core. These have all been replaced in this commit.
- Remove pear/net_url2 as own dependency as this was only used by CSSMin
and recently added there. This is now a dependency of wikimedia/minify
instead. This was not part of the public API and no longer mentioned
here in composer.json or RELEASE-NOTES. (It remains pinned in
mediawiki-vendor, however.)
Bug: T273247
Depends-On: Iadff8c2112d5e53bd994ab4882006e8c644a2379
Depends-On: Id3c6dcc0b952a9efe34b3a9ed88b716101a51f87
Depends-On: I589be910f57289fd908b22db87241b0e52da60d4
Change-Id: I8d71fc64aeecdb31db218b02e361ae9bb0d19b48
This is micro-optimization of closure code to avoid binding the closure
to $this where it is not needed.
Created by I25a17fb22b6b669e817317a0f45051ae9c608208
Change-Id: I0ffc6200f6c6693d78a3151cb8cea7dce7c21653
In the case of Monobook, Monobook styles were overriding a
normalize rule and failing to work.
Bug: T269618
Change-Id: Ifa346f60e3a50d874e68043dc4dece3fd8b41aa3
Uncovered while working on a side project. If the option has been
set, it should be merged with the ResourceLoaderSkinModule property.
It should not replace it.
Change-Id: I413c862afe7e5266ab9f2635211fac635bcd786d
If a new feature is added, it should be safe for skins to use it
without breaking their backwards compatibility.
For example if the normalize feature in 1.36 is being used a skin
should be able to use it, and then using version_compare add additional
styles for older versions of mediawiki
Bug: T271441
Change-Id: I074415970455ef701b48d11ff97c01af24197eeb
Previously, the order of styles outputted by this module was
arbitrary, based on the order of the feature files passed in.
This was not how it was intended to work - the ResourceLoaderSkinModule
should be aware of the correct ordering.
In the case of normalize for example - it should always be the first
file output.
The implementation is adapted to check for valid features once in
the constructor and to also consider a DEFAULT_FEATURES value has been
set.
We use the FEATURE_FILES constant to determine
the order of CSS output.
This is all documented in the class.
Bug: T269618
Change-Id: Iecbf11b5f09882e55d694651210d6d132d3cd412
Since the legacy parser will also be emitting the new media structure
that requires these styles. For now, the feature is only shipped by
default when $wgUseNewMediaStructure is enabled.
Bug: T51097
Bug: T266148
Change-Id: Id20d716ce145e0bae37621fd6e218a793b5332ae
Going forward all skins will have a single ResourceLoader module
defining their styles.
This deprecates the module moving its functionality into ResourceLoaderSkinModule.
Skins can continue to get those styles by enabling the new feature in their
main module.
Bug: T267577
Change-Id: I27c9f2c6ed9e4014afb231f690190c67b03b5d02
Use early returns to reduce levels of indentation.
Simplify returning arrays in getLogoPreloadlinks.
Should be a no-op.
Change-Id: I8d6cbfe61de14ded56c09943c6cf4d7b96ea092c
While working on the Example skin we noticed that the edit section
links and hiding of the print footer are important styles.
Rather than making the Example skin inherit the legacy feature, these
essential rules are added to the existing interface styles.
For backwards compatibility, legacy continues to ship the interface
edit links.
For skins loading both interface and legacy, the styles will be loaded
twice but we will lean on gzip to avoid an increase in CSS bytes
Bug: T89981
Change-Id: I7d35b44fc8c135320dfd1d99b16ba47ebaac876b
The table of content styles will now be loaded on all pages rather than
just pages which have it. This will lead to less stylesheet fragmentation
across page views.
Skins in WMF production were updated long ago to automatically opt
into new features so will automatically gain this module:
I98b7e49b8a3bcba31284385d2f45e0164df2fbb4
I50afd035360ff2eccd5a934a02a218d093f9583d
I5b3920ae6e98111582b93e60a2b9950c478bff7d
If9283742a83ecfbe8c4246e3624022a56be8f161
If9ae25c41b91a8b47c154f0fd98984eac526654f
Skins that are using ResourceLoaderSkinModule with opt-in approach or
the existing mediawiki.skinning.interface, will automatically get these
new styles. Skins that are use neither of these mechanisms will need to
be modified if they wish to retain the collapsing functionality of the
table of contents. As of now, I am not aware of any such skins.
Note in a follow-up, the mediawiki.toc.styles module will be marked as
deprecated in 1.35. This is done separately to allow WMF caches
some time to roll over to the new code first.
Bug: T252774
Change-Id: Ie28b7e732664eb332be795d7e33cd9a227c21370
This includes fixing some mistakes, as well as removing
redundant text that doesn't add new information, either because
it literally repeats what the code already says, or is actually
duplicated.
Change-Id: I3a8dd8ce57192deda8916cc444c87d7ab1a36515
Follow up to I755e5e6784481b419e35, which used array_unshift
to prepend the 'feature' stylesheets. This works as expected when
there is only one 'feature' enabled.
When there are multiple, use of unshift will effectivel reverse
the order as it unshifts then one at a time.
To mitigate this, collect them normally in the correct order,
and then prepend them all at once with array_merge.
Bug: T262507
Change-Id: Ibe2c9f8d024f6be06588a59df10a37681b60d6bc
The previous method of using an array was restrictive in that core
could not add new features automatically to skins.
This change allows an opt-out policy as well as the existing
opt-in policy. Wikimedia deployed skins will soon be adapted to take
the opt-in policy.
Bug: T252774
Change-Id: I517f9f80760348da589852cda53cbd0c14231f86
For stylesheets provided by features such as normalize or elements,
skins will want to override some styles. Given that ResourceLoader
concatenates all styles, having feature styles override skin provided
styles is counter productive.
Bug: T261080
Change-Id: I755e5e6784481b419e35b338fe3a8129e94b9f61
During development, the default value accidentally got lost in
several ways. To avoid that from going unnoticed in the future,
an error is introduced if the Logo input field is empty.
Bug: T247790
Bug: T232140
Bug: T50084
Change-Id: I5a198474473ae1d5595a6fcd64a08205d03be5c0
Replace the link to javascript:print() and add a warning message
on the printableversion when used.
The link is hidden if JS is not enabled and a skin includes the
'interface' ResourceLoaderSkinModule feature.
As part of this change we also need to notify users that
printableversion is no longer supported. To do this we need
to put a warningbox at the top of the page.
While this should be straightforward, as warning b ox styles
are loaded by all skins via the legacy module, it does require a minor
change to make those CSS rules apply inside print media as they are
currently scoped to screen. We rectify this, by splitting the rules
out from mediawiki.legacy.skinning and applying them to all media
queries. This means warning boxes will appear styled in print media
however these are seldom used in article namespaces - and when they are
they are visible - it would be better they look like warning boxes!
Bug: T167956
Change-Id: If1a3cfc6d82e9e389be7bf17fe288e212aa64139
Adding 'normalize' module for stylesheet file exclusively carrying
normalizing rules for HTML elements and attributes targeted at
cross-browser bugs and inconsistencies.
'normalize.less' is heavily inspired by https://github.com/necolas/normalize.css v7.0.0
fine-tailored to only include MediaWiki specific rules and reflecting
browsers from our Basic (Grade C) support matrix.
Starting with sensible defaults:
- `body` already in use in Vector and MinveraNeue skin
- `main` already in use in MinervaNeue; fixing Vector IE 10-11 bug
- `hr` from normalize as `hr`s are in use in various skins and benefit from
cross-browser normalization
- `abbr[ title ]` from 'elements.less'
- `pre` etc. from 'elements.less'
- `sub, sup` from 'legacy.less' and in use by MinervaNeue
- `img` from 'elements.less'
- `::-moz-focus-inner` already in use mediawiki.ui and ULS
- `legend` already in use in MobileFrontend and numerous skins based on normalize.
Bug: T256092
Bug: T256520
Change-Id: I4601cc938f7a10dce4f643e22356f8c5a39e4ac9
* Add a void return hint to methods that are not meant to return
anything. This helps catch accidental return statements in the
future, lets Phan better understand how methods are meant to be
used, and might also allow PHP to better optimise the compiled
code form (speculation).
I did not, however, add it to publicly extended methods as that
might mess with strict mode.
* Remove the internal getResourceLoader() method from MessageBlobStore.
This has been redundant since 3edaa0b37c.
The method was protected, and not considered stable to subclass
for extensions. Hence not a breaking change.
* Add Throwable typehint to formatException() and friends.
This is the narrowest one I could add given that the methods
called from here already enforce the same typehint.
Update the doc to match for now. There isn't a reason right now
to limit this only to Exception, and given this is the method
and not the catch statement itself, does not change behaviour.
* Remove unused ResourceLoader->getHookContainer().
Added within 1.35 cycle, safe to remove.
* Remove unexpected `@since` for `@internal` getHookRunner().
* Remove redundant `@internal` from ResourceLoaderMwUrlModule
methods, which itself is already `@internal`.
Change-Id: I68d33ff6feca7ef95282a7ff03eb9332adfde31c
This reverts commit 9e2746808e.
Reason for revert: After consideration of the new task T256520
shipping a normalize CSS feature seems like a much better approach
to solving this problem, particularly since `template` and `dialog`
are unused in our code.
Change-Id: Ic2bd1faded20c21f847383e2fc99912cca65c914
Use the existing `legacy` feature. It's assumed that this module was always
used with `mediawiki.legacy.shared` and minimizes disruptions given the
migration steps are identical to the approach taken in `mediawiki.legacy.shared`
The existing release notes are updated to reflect this.
Bug: T242177
Change-Id: I785321d86a5f26808eb83847a3dbbbe62c62698c
Skins that are using ResourceLoaderSkinModule will need to update their
features to include `legacy`
Note that Ic7af947cfd5a5df4218f006232ede4ee7ed36c62 for Vector
and I6471bc169f3c2a1f51e17b8ee26ac245b0374c18 for Monobook should
be merged in the same release as this patch to ensure these styles
do not disappear from those skins. Minerva or Timeless will not be impacted.
Changes for other skins including Modern and CologneBlue to follow
where needed.
Bug: T242177
Change-Id: Icb910a563273bde92a09b1bb92857d5b6e348baa
getAvailableLogos() can now also return multiple items if a 'wordmark'
logo is defined, but this method only cares about the DPI variants
('1x'/'1.5x'/'2x') and should return a string if there's only '1x'.
Bug: T244405
Change-Id: I69ddb1f9f97d06253b661caf112b48343cd2453f