Commit graph

543 commits

Author SHA1 Message Date
jenkins-bot 874f38e318 Merge "Remove client side error counting" 2020-10-26 11:04:02 +00:00
jdlrobson ed0222b0d0 Remove client side error counting
Bug: T266359
Change-Id: I5350c801e7ecb7b8b28e54410cc57fd3b548b2ef
2020-10-23 11:09:22 -07:00
jdlrobson c3b93e14b0 Simplify footer and logo generation
The data already provided by SkinMustache makes the existing
Minerva code redundant.

* html-after-content functionality equivalent to dataAfterContent value
* Rename license and last modified to have html-minerva prefixes and promote
to top level data object. This allows us to distingusih Minerva values from core
values.

Note: previously the logo used srcset to ship a 1x logo but these
were dropped during the desktop improvements work.

Bug: T256083
Change-Id: I7b2cd5181eae67b345f6686e3389a76a12e3b1a1
2020-10-16 23:41:34 +00:00
jdlrobson fabc333373 Drop unused template variable and property
* prebodyhtml is never defined
* isSpecialMobileMenuPage is never used and the Special:MobileMenu
page no longer exists

Change-Id: I6481ef08f9d88e9be3cb5568bfa6693b1b3f1b8f
2020-10-08 21:03:53 +00:00
jdlrobson 78839e00e8 Minerva should use the SkinMustache class
This begins the migration of Minerva to SkinMustache with the smallest
possible change.

In future, we'll be able to eventually wean ourselves off of the
MinervaTemplate class and considerably reduce the code in Minerva

Bug: T256083
Change-Id: Id0f617cfdb698754addc79b26491b9d846513c87
2020-10-02 13:35:08 -07:00
Volker E 1ae1c424e0 Add role=contentinfo to footer element
Mitigating an VoiceOver bug first identified in course of T66477 and
clarified in  T66477#6347019.

Change-Id: Ie6beb6ba0848bd08a3604974dfc8dada0fd445b7
2020-09-18 08:41:49 -07:00
MusikAnimal 4a3e1fa9e8 Show half star for temporarily watched pages
This does not complete watchlist expiry support in MinervaNeue. It only
instructs the skin to show a half star instead of a full star on page
load if the page is being temporarily watched.

Bug: T251690
Change-Id: Ib5c479dcfe49041152ba662c56cc630c32eb220e
2020-08-27 11:57:13 -04:00
Jdlrobson 74838b2fa2 Revert "ServiceWiring: Avoid usage of deprecated Title::getSubjectPage()"
This reverts commit ae8e3ad58b.

Reason for revert: This led to T260155 as the internal class uses
isSubPage which is not available on LinkTarget

Bug: T260155
Change-Id: I783f41e70cf1cf3b91737bce9cbf9ac729a778df
2020-08-11 15:50:44 +00:00
Derick A ae8e3ad58b ServiceWiring: Avoid usage of deprecated Title::getSubjectPage()
SkinUserPageHelper::__construct() should be able to consume a LinkTarget
too as NamespaceInfo::getSubjectPage() method returns a LinkTarget and
the Title::getSubjectPage() is deprecated.

Change-Id: I08bfc9bb21772b450798b6354bee2ab09d5dba4d
2020-08-08 14:07:48 +01:00
jenkins-bot 9d4a717615 Merge "Specify the responsive option rather than manually specifying viewport" 2020-08-04 20:46:54 +00:00
Jack Phoenix 2060ead391 Don't add the "minerva--history-page-action-enabled" class to <body> for non-Minerva skins like MonoBook etc.
Hooks are global, hence any and all skin-specific OutputPageBodyAttributes hooks need to check first that the correct skin (or skins) is used, otherwise the class or classes get applied for *all* skins when only one skin is supposed to be targeted.

Also fixed a tiny code style issue in the same hook subscriber while at it.

Change-Id: I626b0e050c614687b31f1ffbaea92e371dee4574
2020-08-03 20:30:28 +00:00
mainframe98 5857a9f909 Specify the responsive option rather than manually specifying viewport
I6e69b482cdbc adds a viewport with the same value as defined by Minerva.

Bug: T258290
Depends-On: I6e69b482cdbc49c09adc6f7cee54f5e17b7c92c4
Change-Id: Ie8ed80f734b20a16bc1c70a94d40290909180c3b
2020-08-03 21:14:29 +02:00
Peter Ovchyn 271fb28d99 Load mediawiki.page.ready on Minerva
Disable sortable and collapsible during mediawiki.page.ready initialisation

Add onSkinPageReadyConfig hook that overrides sortable and collapsible values.

Adds 1.74kb of JS to all page loads.

Bug: T257265
Bug: T250851
Depends-On: I0dc38e74052027f26a70d58b5f520e5830e0d55d
Change-Id: I81ff55d080c8c4a40f425ca7d0fc4fda322055dd
2020-07-29 20:57:52 +00:00
Ammar Abdulhamid 1a45b1409c Remove usage of deprecated Skin::getRevisionId()
OutputPage has similar method and they are being used
interchangeably here. Let's stick with one.

Bug: T257992
Change-Id: Ia5a0fbf114f6a1fec6fb85e01a408edae8a5badb
2020-07-29 16:09:47 +01:00
Derick A 568367a8c0 MinervaHooks: Remove unreachable code related to Special:MobileMenu
This is a follow-up work on: I30b1af8b88dd146d62f0de7a6352c4117a7cdd90.

Bug: T252005
Change-Id: Iefb56ad9b9c68196d06b96209a73e94aa69a1e2e
2020-07-24 15:43:21 +00:00
DannyS712 4e1284996f Deprecate the MinervaPreRender hook, unused
Bug: T256079
Change-Id: Ic4b4ee679d7b78a6fa48fca353f51c1de1ee8a48
2020-07-11 00:35:01 +00:00
jdlrobson 2e450e104e Donate link should be in a separate group in main menu
Bug: T219793
Change-Id: I7501c87eaa799e4c8a9052f5e3f650a89f376d1b
2020-06-29 14:38:34 -07:00
Ammar Abdulhamid f9b5ca1f26 Minerva: Remove usage of two deprecated methods
* BaseTemplate::getToolbox()
* BaseTemplate::getPersonalTools()

Bug: T256272
Change-Id: I7de2be43e1fbe94c10cbe8bba49adc07692f9219
2020-06-26 12:43:27 +01:00
Vas Jaremchuk f4e3c8f9d9 Mobile web donate link
Add the Donate link with a heart icon in Mobile menu.

Bug: T219793
Change-Id: I65d1d7408e2df7b3ae307736ac6d498b1d7f7197
2020-06-25 11:00:44 -07:00
jenkins-bot 5e6e294083 Merge "Allow projects to disable Mobile welcome message" 2020-06-23 16:11:20 +00:00
Ammar Abdulhamid dbc3bdee1d Allow projects to disable Mobile welcome message
Bug: T255682
Change-Id: I62f2c798656005796d846067f67ad26812202e20
2020-06-23 10:44:13 +01:00
Ammar Abdulhamid 2bb3633530 Minerva: Use OutputPageBodyAttributes hook to add body attributes
This means dropping usage of Skin::addToBodyAttributes method from
parent Skin class to pave way for its deprecation/removal.

Bug: T255698
Change-Id: Idab13c37002ac5663f292e4f4b4ff51eb7573fda
2020-06-21 09:21:07 +01:00
jenkins-bot ea4ad9d5f6 Merge "Revert "Drop MinervaEnableSiteNotice"" 2020-06-04 22:59:24 +00:00
Jdlrobson 4f021c79f0 Revert "Drop MinervaEnableSiteNotice"
This reverts commit 33e5c1eb79.

I talked to Gergo (tgr) about this and he's convinced me
that probably I want to be more conservative 
and incremently roll the sitenotices
out first. With that in mind I'm going to revert this change
and do a config flag instead.

Bug: T254391
Change-Id: If0f214d23a012fb4ae3e1dff1728f746a22f142a
2020-06-04 22:39:36 +00:00
jenkins-bot b51d095001 Merge "Drop MinervaEnableSiteNotice" 2020-06-04 19:38:15 +00:00
jdlrobson 33e5c1eb79 Drop MinervaEnableSiteNotice
This will make site notices display across the site as intended. The config
flag doesn't seem warranted - site notices should display across all skins
as they may contain important information.

This is preventing wikidata page banners from displaying in Minerva.
If this is controversial I can do a config-only change for Wikivoyages

Bug: T254391
Change-Id: I34c5e762b967ea94e33025e87f3446e8e029bc91
2020-06-04 08:38:03 -07:00
Umherirrender 4f269d67b8 Explicitly format Message oject instead of string cast
The implicit in Mesage::__toString, as called when the object
is accepted by a method that needs a string, is to format
with parse(). Call that explicitly instead, or use escaped()
in places where it seems like elaborate wikitext isn't expected.

Change-Id: I9f1de3a0047d1f26d30c8607a0a79543d166176f
2020-06-01 20:52:33 +00:00
Umherirrender 1b5d9ea755 build: Updating composer dependencies
* php-parallel-lint/php-console-highlighter: 0.4.0 → 0.5.0
* php-parallel-lint/php-parallel-lint: 1.0.0 → 1.2.0
* mediawiki/mediawiki-phan-config: 0.9.0 → 0.10.2
* mediawiki/mediawiki-codesniffer: 29.0.0 → 31.0.0
* mediawiki/minus-x: 1.0.0 → 1.1.0

Additional changes:
* Replaced "jakub-onderka" packages with "php-parallel-lint".
* remove taint-check, now bundled with phan-config

Change-Id: I202a48e1b0aab38181a402d6f2661d782ecd79e2
2020-06-01 19:43:05 +00:00
Volker E bb6827122c Naming convention using 'skin' as entrance point
Similar to Ief1c469724d4ffe238d307407c3ddb46f2e1abfa

Change-Id: Ibca2473b14ef258f92e71524489298e2f53ed873
2020-05-29 14:32:12 -07:00
Reedy 0267700d05 Fix function case mismatch
Change-Id: I0a3868e5fdc511b523c3839866d1c0b173670cea
2020-05-29 15:16:45 +00:00
jdlrobson 9118f25a5e Minerva should source mobile license without indirection
Rather than rely on something being set on MinervaTemplate go
straight to the source of the license message

This change will allow us to deprecate usage of
SkinTemplateOutputPageBeforeExec inside MobileFrontend

Bug: T60137
Depends-On: Id83ef2f2cba1dce940f89125b5cd26a29421ee48
Change-Id: I5317cd707418350847085d406c3749f19106d6ba
2020-05-27 22:09:58 +00:00
Reedy 2d7150125c Fix PSR12.Properties.ConstantVisibility.NotFound
Bug: T253169
Change-Id: I35b646522df6f0ec14ca8fee718937cc8cf44ce9
2020-05-19 22:59:27 +00:00
Bartosz Dziewoński a1e75213da Fix posting talk page replies on pages with subsections
The MobileFrontend section numbers that were used here only count
top-level sections, but this value was passed to code in
MobileFrontend's TalkSectionOverlay#onSaveClick, which uses an API
expecting the standard MediaWiki section numbers.

Extract the section number from the section edit link, like we do
in mobile.init/editor.js in MobileFrontend.

Also, disable the special talk page view unless we're viewing the
latest revision of the page. That could also lead to posting in the
wrong section, as sections are often added and removed, which changes
the numbers.

Bug: T252828
Change-Id: I553a508658804dd8672f2268b7118f77458a9dba
2020-05-14 22:57:00 +02:00
Volker E c9461c9dd8 Replace skins.minerva.mainMenu.advanced.icons with OOUI icons
Additional changes:
* Address a fixme relating to the overflow icon and move some AMC styles
out of the critical path for non-AMC pages

Note about ellipsis:
The class mf-mw-ui-icon-rotate-clockwise cannot be used as it's part of
MobileFrontend and loaded via JS. Minerva must work without MobileFrontend
and this rotation is needed without JS.

Bug: T244444
Change-Id: Ifd02c50305cf036dd6df640d778678668507e5eb
2020-05-01 12:18:35 -07:00
Reedy 01f824f684 Fix namespace of SkinUserPageHelper
Allows autoloading of file

Change-Id: Ife276b5802e3cdcfd5789a7a91684317c81d5bb3
2020-05-01 02:29:54 +01:00
jenkins-bot 0aa5b43469 Merge "Rename $glyphPrefix to $iconPrefix to better reflect variable value" 2020-04-30 17:08:31 +00:00
jenkins-bot 272e0baa54 Merge "Remove "last-modified-bar__text" as a JS selector" 2020-04-30 15:28:12 +00:00
Jan Drewniak 5144e73313 Remove "last-modified-bar__text" as a JS selector
When enchancing the watchlist items with the "time ago"
feature, the "last-modified-bar__text" class is added
to the element, which could have unexpected consequences.

That class is removed from the watchlist and instead
of using it as a JS selector, the `modified-enhancement`
class is used for both the watchlist and last-modified
bar.

Change-Id: I4a157adf51b9ed45bcba977f4f6622c7991471ba
2020-04-30 16:17:23 +02:00
Volker E b35fdfe9eb Rename $glyphPrefix to $iconPrefix to better reflect variable value
Aligning with other `$icon*` variables throughout MinervaNeue.

Change-Id: I18cbd06bdd44d127093655577ba4daeb69dbe8ec
2020-04-29 15:14:59 -07:00
Volker E 96132669fd [docs] Remove whitespace in 'WikimediaUI'
Change-Id: I24169651cb60c68ea1bc0d5c70ee6f44841382ab
2020-04-29 14:50:51 -07:00
jdlrobson fa6255dfd0 Use standard getJsConfigVars method
Depends-On:  I1e2927a5ced077c8764ff7872ca033f487ae7cc7
Change-Id: Ia5aae659d9882bef7a273c709789437719303a35
2020-04-28 19:06:51 +00:00
AronDemian f271350c91 Add .mw-footer CSS class to footer
Bug: T248137
Change-Id: I8a5af18e4aca663a7a9e9261fb360f7cd45f7283
2020-04-24 02:25:40 +00:00
Reedy 101a1430da Remove MediaWiki\Minerva\MenuBuilder
Move one more class to AutoloadNamespaces

Change-Id: Ib434c512bb4d85047ad7cd5f756c69802462bb48
2020-04-18 20:03:13 +01:00
Reedy d12308e38d Move some more classes to AutoloadNamespaces
Bug: T187154
Change-Id: Ia78f963a08cec1490aaff462b9787f7a826bf62c
2020-04-18 16:09:42 +00:00
jdlrobson e223d00e8f Update the icon glyph
In Ia3bafc74a85293c2414c0ef4ccf3bb20c75135d1 this icon was renamed
but this reference was not updated.
The module will soon be removed in I181d41f60481efa904d5e951cf08480bbae82015

This will not fixed cached HTML. The damage is already done, so we'll
have to live with this bug on old cached HTML for up to 7 days.

Bug: T249864
Change-Id: I20b838ed5ab478ae60b2cbf6abf5df448d8f4e59
2020-04-10 10:40:05 -07:00
jdlrobson 276ae636fe Use standardized icon classes and fix some missing icons
The icon pack wikimedia.ui was strangely using a non-standard
icon class using empty strings as a way to disable the default behaviour
of setIcon. Instead of fighting APIs - use the methods available.

The icon pack is also renamed to reflect what it's actually used for -
providing icons for overflow menus and it is no longer loaded as a dependency
by skins.minerva.scripts

Fixes issues with:
* History icon with AMC disabled and user is logged in
* Table of contents icon
* Language icon when it appears in overflow menu on user pages
when logged in where AMC is disabled
* listBullet appears in 2 modules as it is used in 2 places - the AMC
overflow menu (log icon on user overflow menu) and for table of contents
(JS only)

Bug: T232383
Change-Id: I05220ffa56195be6a594e3a8a57ae16858088444
2020-04-02 01:37:33 +00:00
Volker E 98d3225fc8 Rename several icons to WikimediaUI naming
Renaming to WikimediaUI standard naming and adding to module
skins.minerva.icons.wikimedia which is loaded via addModuleStyles
 'edit' → 'editLock'
 'edit-enabled' → 'edit'
 'toc' → 'listBullet' (already included in wikimedia.ui module)
 'mainmenu' → 'menu'
 'language-switcher' → 'language'
 'clock' → 'history'

Icon `page-actions-overflow` which is only needed on AMC is moved out of the stable icon
pack and added to skins.minerva.mainMenu.advanced.icons temporarily which is loaded on AMC pages only:
 'page-actions-overflow'

Additional changes:
* Renaming 'clockIconClass' to 'historyIconClass' to stay on name.
* Module `skins.minerva.icons.images` is deprecated and shipped for old
HTML markup. It will be removed in 2 weeks.

Bug: T232383
Change-Id: Ia3bafc74a85293c2414c0ef4ccf3bb20c75135d1
2020-03-31 11:48:57 -07:00
jdlrobson 1f94dbb094 Simplify hamburger button logic
It was a bit of a maze trying to work out how we generate our
hamburger button. Much of this abstraction seems unnecessary when
we can rely on template partials and data instead.

Change-Id: I791640fea29f87334dcc36baf92ea9e300d8a07c
2020-03-30 20:19:00 +00:00
Volker E 0f5f376b64 Remove unused 'talk' icon
Bug: T244444
Change-Id: I42f60785c4693da7542a61e0ad415850175cb0f5
2020-03-27 18:06:37 -07:00
Bartosz Dziewoński bc41bf5326 SkinMinerva: Fix link target for transcluded pages in doEditSectionLink()
Bug: T198011
Change-Id: I62caa73d9b337be8f987f077eced0b2e6ca4fa5f
2020-03-20 23:01:28 +01:00
Derick A 2afd3b5de2 menu: Remove local var $url whose usage was removed in the past
Poked around the revision history a bit and found that the usage
of this variable as removed in f5bef2e but its definition was not.

Added return type hint for the `prepareToggle()` method too.

Change-Id: I9950f4c81bb914bf2c2d3c13c60d3f0a040a0ae1
2020-03-20 07:02:38 +00:00
jenkins-bot 96c971ca77 Merge "Remove usage of deprecated Revision::newFromTitle" 2020-03-11 16:04:51 +00:00
James D. Forrester 0892d190b6 Drop support for $wgMinervaCustomLogos being set
Bug: T232140
Change-Id: I56dc8ac8d394ad7561ea09e67da6c51db2bc90f9
2020-03-10 20:40:32 +00:00
Petr Pchelko d9db54120d Remove usage of deprecated Revision::newFromTitle
Bug: T246284
Change-Id: Icd1d7ae5324ab83d0ec2f5ffd6e1f846fab3ca60
2020-03-03 18:53:53 -08:00
Petr Pchelko 583ac2305d Remove usage of deprecated Revision::getTimestampFromId
Bug: T246284
Change-Id: I852af2f19cbd1df0f9137e0f75ed7a272a54a169
2020-03-03 18:19:44 -08:00
James D. Forrester e56349f7a7 Hard-deprecate $wgMinervaCustomLogos being set
Bug: T232140
Depends-On: I2463fecfafbb4c08d80f624adf4cd47a6fb4e660
Change-Id: Ibb70f97c889edf8ffc21737e87949b0294044f9c
2020-02-27 22:04:09 +00:00
James D. Forrester 278c18057e Follow-up 51a34809: Don't hard-deprecate something still set in config, you'll break prod
Bug: T232140
Change-Id: Icd5b045c3ebc3234fa0e3bcaffb2172209fa0408
2020-02-20 15:20:29 -08:00
jenkins-bot e838fcec22 Merge "Deprecate wgMinervaCustomLogos in favor of $wgLogos" 2020-02-20 00:29:22 +00:00
jdlrobson 51a348097d Deprecate wgMinervaCustomLogos in favor of $wgLogos
Testing:
```
// Start with no Minerva config and no wgLogos defined in LocalSettings.php

// Set $wgMinervaCustomLogos
// Should trigger deprecation warning.
$wgMinervaCustomLogos = [
	'copyright' => 'https://en.m.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-fr.svg',
	'copyright-height' => 40,
	'copyright-width' => 120,
];

// Set wgLogos without wordmark
// Should trigger deprecation warning as $wgMinervaCustomLogos is still
// defined.
$wgLogos = [
	'1x' => 'https://en.wikipedia.beta.wmflabs.org/static/images/project-logos/enwiki.png'
];


// Set wgLogos['wordmark']
// No deprecation warning. $wgMinervaCustomLogos will now be ignored
// in favor of the new wordmark key.
$wgLogos = [
	'1x' => 'https://en.wikipedia.beta.wmflabs.org/static/images/project-logos/enwiki.png',
	'wordmark' => [
		'src' => 'https://en.m.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-fr.svg',
		'height' => 40,
		'width' => 120,
	],
];

// You can now safely drop $wgMinervaCustomLogos.

```
Depends-On: I66a971631c623cc94b58eb0e5e5bad804789bf1c
Bug: T232140
Change-Id: I013bd0904fe8c55efa49d14e84cf06ec1412896f
2020-02-19 23:59:28 +00:00
jenkins-bot dc688ad85f Merge "Check title value before proceeding to check if user page" 2020-02-18 21:31:25 +00:00
jdlrobson 7f47dff5e5 Use icons in skins.minerva.mainMenu.icons from OOUI
For all mainMenu icons pull from OOUI icon packs.

We make the necessary changes to Definitions.php, ToolbarBuilder
and LogoutMenuEntry to ensure to update icon glyph names.

There are caching implications for icons that show to anonymous users -
these have been fixed for grade A browsers running JS by appending the
new class to impacted elements.

Grade C browsers being served cached HTML will not benefit from this
emporary fix as available solutions are costly.
As a result these users will not see icons until the cache
expires (maximum of 4 weeks but likely 1 week) or is flushed via
action=purge.

This is acceptable given the amount of impacted users and the fact that
icons are not essential for using the main menu.

Note: The communityportal.svg icon while in the resources folder was
not referenced anywhere in the codebase so its removal is safe.
Please note the same icon in skins.minerva.mainMenu.advanced.icons which
is used for the community portal menu item.

Bug: T244444
Change-Id: I0f929f2f3b11362e02f0d02f57b90b34b5c93d24
2020-02-17 20:36:28 +00:00
jdlrobson d48ce1e729 Check title value before proceeding to check if user page
Bug: T245162
Change-Id: I7b826fb0e07a58947f381893604f308903c30304
2020-02-17 20:25:59 +00:00
jdlrobson a3179d8fff Use user sandbox icon from OOUI
It's called 'markup'. Since this icon only ever shows to logged in
users there are no caching implications.

Bug: T244444
Change-Id: I75f5365ccb5a41f1c0628532e81b5ec63804a2a8
2020-02-07 03:39:08 +00:00
Phuedx 6e4c6c99bc Revert "Reduce 'userContributions' icon code"
This reverts commit 7b4b65a30f, which
caused a regression in the user menu part of Advanced Mobile
Contributions mode.

Bug: T244436
Change-Id: Ifce627dac35b2cd05e1c5ebe658534b6b8d0de88
2020-02-06 11:05:26 -08:00
jenkins-bot 7131fa054c Merge "Fix double escaping of menu item messages" 2020-02-05 06:53:58 +00:00
jenkins-bot b216b8187f Merge "Dev: Address some FIXMEs" 2020-02-05 00:24:25 +00:00
Ammar Abdulhamid 3c77f935cd Fix double escaping of menu item messages
Bug: T244119
Change-Id: If87944c385af42323a404f95f9759fdfc9e039e4
2020-02-04 06:16:46 +01:00
jenkins-bot 070539c012 Merge "Reduce 'userContributions' icon code" 2020-02-04 03:03:11 +00:00
Volker E 7b4b65a30f Reduce 'userContributions' icon code
Also rename it to unified DSG/OOUI name and add standard XML declaration.

Change-Id: I6c908acd70c0dca5bcb1754d1b25d3da2389feb8
2020-02-04 09:54:22 +08:00
Nicholas Ray d87eed1c6b 🚿 Hygiene: Remove unused $menuData variable from getSkinConfigVariables method
As far as I can tell, this is unused and the invoked method doesn't
cause any side effects. Therefore, I think it can be safely removed.

Change-Id: I8b507b4bf38a8a0e70684165d8a48c2d284cdd11
2020-02-03 15:15:36 -07:00
jdlrobson 1e64fc8f3d Dev: Address some FIXMEs
* Drop non-existent pointer-overlay selector
* Drop redundant icon class for arrow
* Drop unnecessary !important
* Drop transparent-shield class
* Reword an existing FIXME about a contensious decision and
add a new FIXME for moving some code to a more appropriate place.
* Move an image into a ResourceLoaderImage module (test with
`mw.notify('error', { type: 'error'} )`)

Change-Id: I6e38f07772afae6f13c4851ca17a67d52ca7d331
2020-02-03 08:43:18 +00:00
Bartosz Dziewoński 700b1c43e9 Allow passing context to MinervaPagePermissions
Previously it always used the global context RequestContext::getMain(),
which is basically equivalent to using $wgTitle or $wgUser, and will
not produce the correct results when used in other situations than
regular web requests (e.g. API requests or jobs).

MinervaPagePermissions is required to parse pages (due to the custom
section edit links in SkinMinerva::doEditSectionLink), which is often
done in API requests or jobs.

Pass the appropriate context in SkinMinerva::getPermissions(). This
fixes T234868. Note that MinervaPagePermissions is also used elsewhere
and I am not fixing those cases.

Depends-On: Iaa83e5f801c7776bf8218d8ce7484e2485b227d4
Bug: T234868
Change-Id: I2d6fd525f20a0b6beeeaa731f6b8caa471b8529d
2020-01-29 10:33:36 -08:00
jenkins-bot 974a5fb1b0 Merge "Escape HTML in toolbar menu" 2020-01-29 05:29:11 +00:00
Ammar Abdulhamid e2c9c6cd59 Escape HTML in toolbar menu
Bug: T243502
Change-Id: Ic175e9430a3655da0ae1e4a82d423873da7eb721
2020-01-28 15:15:09 +01:00
Umherirrender 5b0a4f30b2 build: Updating mediawiki/mediawiki-codesniffer to 29.0.0
Change-Id: I529c6a67eeb5eb012031b69ef63f4338f3685178
2020-01-26 20:26:31 +01:00
jdlrobson db29aa53bd Make MobileFrontend dependency a soft one
This extends the work in Ie29a1eb7746d56f7d8c99b74e5e3c213c30fdcf2

Bug: T171000
Change-Id: Ib125e1bdaace1893804892909c27a9f328445835
2020-01-17 14:02:23 -08:00
Stephen Niedzielski 83432ba8b5 Fix: user navigation label when AMC is disabled
At some point I introduced a bad label aria ID,
minerva-user-menu-toggle, for the user navigation. This was the
incorrect text and ID to use. Further, the ID is not present in non-AMC
mode (which is what search engines use). This patches adds a new string,
minerva-user-navigation, and replaces the aria-labelledby attribute with
a direct aria-label.

Bug: T242281
Change-Id: Ic247eb77609862b62025dc5e6af550c079df26d9
2020-01-10 15:23:04 -07:00
jdlrobson da5798ef22 Settings link is hidden to non-JS users when beta and AMC unavailable
Bug: T198265
Change-Id: I6340da6dbbd031d8c91ae99801065bafe9245920
2020-01-08 22:57:04 +00:00
Umherirrender 960cd11fa8 build: Updating composer dependencies
composer:
* mediawiki/minus-x: 0.3.1 → 0.3.2
* jakub-onderka/php-console-highlighter: 0.3.2 -> 0.4.0
* mediawiki/mediawiki-phan-config: 0.8.0 -> 0.9.0

Change-Id: I6519f1e27777c13c432c25f46e35ab8b61bdcbab
2020-01-04 13:24:24 +01:00
Umherirrender 4b18fee06f Allow null on MinervaUI::iconClass
Change-Id: Ie9404dd35421144bce3e14fe6c55415530314792
2019-12-30 17:26:31 +01:00
Jan Drewniak f5bef2ea5c Main menu button works without JS
Converts the main menu button to work without JS using the CSS-only
"checkbox" hack, using the ToggleList module from the dropdown menus.

Bug: T225213
Change-Id: I0eff0439f7284ec74f6304324fab409e8a1b6245
2019-12-19 19:55:39 +00:00
jdlrobson f479c706fe Minerva doesn't add MFManifestThemeColor
This config is provided by MobileFrontend.
It should not be added in Minerva.

We need to remove this to avoid adding the theme twice.

Depends-On: Id21038e3df60f279af40681307e14ef82ce60294
Change-Id: I7f9a69eca396ef1a17898dc128f38feefa68a21a
2019-12-18 13:12:14 -08:00
Jan Drewniak e75c5caa7e Add missing class to contributions icon in page-actions menu
Bug: T240644
Change-Id: Ie3a301b998b54ccebebcf984aa46bfcce5036d11
2019-12-16 19:35:52 +01:00
jenkins-bot 9e370d9a84 Merge "Use User::getBoolOption" 2019-12-15 10:06:50 +00:00
Nicholas Ray ec93d34370 Resemble AMC mode for all users on user pages & user talk pages
This commit:

* Removes the blue secondary action links found on User pages

* Modifies ToolbarBuilder to add the contributions
icon into the toolbar when on a user page/user talk page.

* Turns on HISTORY_IN_PAGE_ACTIONS, TOOLBAR_SUBMENU,
TALK_AT_TOP skin options for all users on user pages / user talk pages.

* Languages icon is moved to overflow menu

* Remove $userPageHelper param from UserNamespaceOverflowBuilder as
it isn't using it and it is confusing to pass it in

Bug: T232653
Bug: T235681
Depends-On: I2138472e68d8cab1c50cbb42807bd5b79e7e2749
Change-Id: I940e5cf7638ff38686eeca3d41554b8a22d35615
2019-12-13 14:10:43 -08:00
Umherirrender 88df9f354a Use User::getBoolOption
The return value of User::getOption is passed to WebRequest::getBool,
that needs a real bool as default value, so using getBoolOption here

Change-Id: Ifc65f3e88c464afb0e620f3721422dad26bc1e47
2019-12-13 22:42:01 +01:00
Nicholas Ray 5eb26b67cd Remove haspageactions from MinervaTemplate templateData
minerva.mustache does not use this

Bug: T232653
Change-Id: I4cf4f3ba3889bc19d2490ab5f727c00b518fa995
2019-12-13 21:08:21 +00:00
Ammar Abdulhamid 898b048d1c Discontinue back-to-top feature
Bug: T237290
Change-Id: I06a6823bd3d1985a1d76384bb65c9d2ddf334a21
2019-12-11 05:12:43 +00:00
Piotr Miazga cb1cd438db Remove double setIcon() call for the History element on Toolbar
Fix History element classes by not using ::create named
constructor. The constructor was provided for easier object creation
when both icon and click tracking is the same as element name.
The History icon is not that case, as both tracking code and
icon are definited differently than the name, therefore we need
to initailize class, and set required attributes manually.

Change-Id: I7b74e8a7e976d6c1e47f15438f75a7de2f73f154
2019-12-10 13:12:03 +00:00
Piotr Miazga 7e2403c5ad Remove double setIcon() call for Contributions element on Toolbar
Fix Contributions element classes by not using ::create named
constructor. The constructor was provided for easier object creation
when both icon and click tracking is the same as element name.
The Contributions icon is not that case, as both tracking code and
icon are definited differently than the name, therefore we need
to initailize class, and set required attributes manually.

Change-Id: Ia91bbdcfd737a443a05fd4f61853fe8bd200e56c
2019-12-09 19:51:47 +00:00
jdlrobson 97c157b8e8 Replace .content class with .post-content on last modified bar
We use `.post-content` which has less side effects.

Change-Id: I40ce9b2c7410c4c361554b5b32d9c1178a59e234
2019-12-05 21:01:23 +00:00
Piotr Miazga 99f3c97c3c Logout users via API Ajax call to prevent extra step on Special:Logout
Currently the Special:Logout page will ask "do you want to logout"
even if we pass the logout token. To avoid that first let's log out
user via API Ajax call.

Bug: T232734
Change-Id: Ia4cc4253b99254d7a893a55d9e05918c5d8c87e5
2019-11-26 14:45:21 -08:00
Piotr Miazga 244fcdd332 Hygiene: Remove PageActionMenuEntry
There is no need to keep the PageActionMenuEntry as the code
is almost the same as SingleMenuEntry. Both classes were written
around the same time and there was no clue if those can be
merged together. Now it looks like it can be easily achieved.
So DRY.

Bug: T232734
Change-Id: I7ecf7440a241a18aac749b84dc86ff0f07910539
2019-11-26 22:26:24 +00:00
Nicholas Ray 9a2f66fe1f Make talk page explained message only appear on wikitext content model
talk pages

As T238474 shows
(https://commons.m.wikimedia.beta.wmflabs.org/wiki/Talk:Test), an
additional check is needed to see if the content model is wikitext.

As an aside: The SkinOptions::SIMPLIFIED_TALK option is badly named as
it is not the source of truth for whether the simplified talk page is
enabled. It merely tells minerva that the MobileFormatter ran. I plan to
address this in a follow up.

Bug: T238474
Change-Id: Id4b558033165069d03a8c650d0f7a6cf8647fb27
2019-11-25 15:41:01 -07:00
Nicholas Ray 071aa7a0c9 Enable Simplified Talk Page only on Pages With Expandable Sections
This patch should knock out two bugs we were seeing with the simplified
talk page:

1) Removes the "Add discussion" button and "There are no discussions"
message from appearing on Flow enabled talk pages.

2) Removes the "Read as wiki page" and "Active Discussions"/"There
are no discussions" message we were seeing on Minerva desktop talk
pages.

To address when the "There are no dicussions"/"Active Discussions"
message and "Read as wikipage" button are displayed, Minerva now listens
to MobileFrontend's `MobileFrontendBeforeDOM` hook and turns on the
simplified talk page (via a skin option) when this hook runs.

To address when the "Add discussion" button is added, a check was added
to SkinMinerva which only adds it to a talk page if the content model is
wikipage. Unfortunately, we can't just check the skin option because we
also want to display the button on desktop minerva.

Other changes:

* Moves around the logic in `getTalkPagePostHeadingHTML` for improved
readability

Bug: T237589
Bug: T237597
Change-Id: I83fd5cab174d90b24a5335f2b30c912c3b68040a
2019-11-20 21:41:43 +00:00
Piotr Miazga 4c224d2657 Hygiene: Drop optional parameters from SingleMenuEntry constructor
The SingleMenuEntry constructor has too many optional parameters
which makes it confusing and dificult to use.
Instead system should provide a named constructor `create` that
creates new menu entry instance with Icon and click tracking enabled.
If developer wants to override event tracking/change icon it is
possible via calling `trackClicks` and `setIcon` method calls.

This is a first refactoring step to simplify the SingleMenuEntry,
the next follow-up will remove unnecessary PageActionsDirector.

Bug: T232734
Change-Id: I7a631a635a5c5932845639123c285d1d18df1b5d
2019-11-07 19:04:21 +01:00
Nicholas Ray 2d579183c9 Render talk page as a tab instead of an overlay
Following up on Jon's POC, this will get rid of the talk board component in
favor of linking to the server rendered talk page.

Additional Changes:

* Cleaned up talk selenium tests. Removed talk_steps.rb which doesn't appear
to be used anymore.

* Changed talk add button classes to a single class

* Moved "Add discussion" button to postheadinghtml per design mock

* Added  "...talk-explained", "...talk-explained-empty" messages to
postheadinghtml per design mock

* Due to undesirable jumps in window scroll caused by the section anchor
& Toggler.js code when opening the TalkSectionOverlay (read fixme in
code), a Promise is always returned from OverlayManager route to reset
the scroll position to the top when the section overlay is opened.

* Moved
"mobile-frontend-talk-fullpage",
"mobile-frontend-talk-reply-success",
"mobile-frontend-talk-topic-feedback",
"mobile-frontend-talk-explained"
"mobile-frontend-talk-explained-empty"
messages to minerva as minerva is
the one who initiates those messages now.

* Limited $talk selector to only `.talk` elements since amc talk tab
does not need to be targeted

* After saving a reply from TalkSectionOverlay, the DOM that is not
part of the overlay becomes out of sync since a new reply was created.
To get around this, an `onSaveComplete` callback was passed (similar to
the TalkSectionAddOverlay) to execute a full page refresh. Although this
is clunky, it is the easiest way to resync.

Bug: T230695
Depends-On: I80201394fd7015db6700446142b0b4b20829f12e
Change-Id: I243f1193bce0da9fa710fc3b5379f90b2d079680
2019-11-05 09:51:43 -07:00
jdlrobson 7f68c3d3ad MainMenu is a controller not a View and server rendered (take 2)
There should be no caching implications for this change, as the main menu
has been server side rendered on all wikis since 10th October.

As Stephen pointed out somewhere, this is a bit of a micro-optimisation
Let's simplify this code by always rendering it in the HTML. MainMenu.js
as a result becomes a controller that just decides when to show it.

The geolocation check for Nearby is removed given the fact that all
grade A browsers for mediawiki have Geolocation support.

ev.preventDefault in onSkinClick is dropped since the link to the '#'
(the default behaviour) is wanted

Additional changes
* Browser support suggests "animations" class is redundant now
* `open` event no longer filed - not being used anywhere
* Transparent shield is now managed by the MainMenu controller not
the skin (which was confusing)
* Test geolocation using a simple feature tests
rather than abstracting it away inside Browser
* The main menu button is always hidden under either a translucent shield
and/or the main menu itself when it has been opened
so so it's not possible to ever click it while the menu is open
 - the click handler is thus simplified
removing a check for the class of the button

Bug: T234650
Change-Id: If101eebbdbda1519af922745917237648722820e
2019-10-29 16:37:04 -07:00
Piotr Miazga f9c055e7f5 Remove Share feature
The feature got into Beta in over a year ago and never made into
the beta mode. For most of the time it was disabled for all users.
There is no need to keep this code as it is dead code now.

Change-Id: I9037f58b97373195e9d1b9f57789a6c531f42831
2019-10-28 12:54:14 -07:00
Jan Drewniak 77a1424e4e Show labels in page-actions menu on desktop widths
Adds labels to page-actions menu via a new
`.mw-ui-icon-with-label-desktop` class that shows labels at the
desktop break-point.

Bug: T226562
Change-Id: If57ab44660e0dc2a58c04fbf22dee6c27dd1f45f
2019-10-28 12:53:38 -07:00