Commit graph

207 commits

Author SHA1 Message Date
jdlrobson 1166009c00 skins.minerva.tablet.styles can be merged
This module is unnecessary - it's loaded unconditionally on a page.
Instead bundle the related CSS inside skins.minerva.content.styles

Change-Id: Ieb37d63332ff5b0cf39835b64cc9f0dcaf62c34f
2019-01-15 12:30:30 -08:00
jenkins-bot b06a079a81 Merge "Move HTML construction to Minerva template and simplify" 2019-01-15 15:09:01 +00:00
jdlrobson 41b59d4a2b Move HTML construction to Minerva template and simplify
Right now the HTML construction is split between MinervaTemplate
and minerva.mustache

I'd like to move all of this to mustache to make it easier to see
how to make changes.

Additional changes:
* footer-site-heading-html was previously mapped to headinghtml
The template variable has been renamed to avoid confusion.

Change-Id: I1dfe15f6f74b51b152c206e2ea63ae460d704ab6
2019-01-14 15:27:55 -08:00
zoranzoki21 5404c85e86 Fix transcuded typo
Bug: T201491
Change-Id: I705b20bc1fd8bc014c614521dc54de69fc300b26
2019-01-13 13:10:48 +00:00
jdlrobson d8a8410a8d Hygiene: Simplify Nearby menu item registration
The Special:Nearby page is only available if wgMFNearby is
enabled so the first 2 checks are identical.

If the page is enabled, we should be able to assume the
sysop knows what they are doing and avoid all  these
unnecessary checks. It seems foolish to also check the
existence of Geodata or a NearbyEndpoint

Additional change:
* Don't use deprecated SpecialPageFactory. Use the service
instead.

Change-Id: I3a4b8fa55fc7f29c90f7173d1d973d5f4f759a6b
2019-01-04 09:13:19 -08:00
jdlrobson 97fd861a63 page issues is feature flagged
* New feature/skin option is added and value is read inside
the pageIssues setup code
* issues-group-a class is added to page on server side to remove
the flash of unstyled content
* issues-group-A class is dropped (it's not doing anything!)
* The minerva-issues flag will now accept any value to avoid confusion.
It is used to override the default setting of wgMinervaPageIssuesNewTreatment
A note has been added that this can be removed in future.

Bug: T206179
Change-Id: I3d98fd8f8e1adc818ea03589d2c8f68fe991e861
2018-11-20 12:41:41 -08:00
Bartosz Dziewoński b17d3f70da Remove 'skins.minerva.editor' module (moved to MobileFrontend)
Added in MobileFrontend in Iaaed72c32b9c4f4e15c320b79e29e9af3609069a.

(The module's name is included in cached page HTML, so to avoid
breaking them, 'skins.minerva.editor' must temporarily remain as an
alias for 'mobile.editor'. It is otherwise unused and can be removed
after caches expire on Wikimedia wikis.)

Depends-On: Iaaed72c32b9c4f4e15c320b79e29e9af3609069a
Bug: T198765
Change-Id: I52c4e0941dcf8f176e3ac32d8a1f72a0f8e1d6a6
2018-11-13 23:27:29 +01:00
arcayn c64a4cf811 Move canEdit checks to server from client
Bug: T206262
Change-Id: I08bfc56998f4fb42c8ce76cc2ad9fba83106d476
2018-11-09 21:26:49 +00:00
jenkins-bot 69eddce6be Merge "Disable mobile editor (skins.minerva.editor) on desktop" 2018-11-05 22:11:12 +00:00
jdlrobson 6a73c395f1 Don't ship wgMFDescription if you're not using it
There are no occurances in the codebase using this description
so do not include it.

Bug: T186062
Change-Id: Icd06329af2756d3fcd143deab528e6a7c7d56d30
2018-11-01 18:58:49 +00:00
Bartosz Dziewoński d57f8290c3 Disable mobile editor (skins.minerva.editor) on desktop
This module is no longer necessary to allow editing pages in the
Minerva skin. When it is not loaded, the normal desktop editor will
be used instead (that may be WikiEditor, VisualEditor, just the plain
textarea from MediaWiki core, or something else).

Bug: T198765
Bug: T208068
Change-Id: I1eb9d4b4bc937522e527dbdc0d6be82baf3b7413
2018-10-30 03:46:13 +01:00
jenkins-bot a79a0276bd Merge "Add "Discussion" button to Main page on Mobile View" 2018-10-23 20:18:50 +00:00
jenkins-bot 885092114b Merge "Watchstar is accessible to non-js users" 2018-10-23 20:09:40 +00:00
Alangi Derick a2fd0b3c1f Add "Discussion" button to Main page on Mobile View
* Enable discussion button on main page in mobile view so users
  can view discussion topics related to the main page on mobile.
* Update test to make sure only 'talk' and 'switch-language' actions are
  enabled on the main page and 'edit' and 'watch' are disabled on the main
  page.
* Minor typo fix for doc type. Use "array" instead of "Array" and CSS
  alignment fix issue with Discussion button when displayed together with
  Language selector button.
* [Suggested by: @Jdlrobson] Use a generic "a" CSS selector to style the ".talk"
  and ".language-selector" classes on the main page. This also avoids fixing the
  CSS for future buttons if added (future proofing the code), so if any other
  button is added in the future, the same css rule will be applied to it at once.
  Very wise idea from @Jdlrobson, thanks!

Bug: T206406
Change-Id: Iedce84595adc357f3a707f8b94d23b2ffea3476c
2018-10-23 19:59:22 +01:00
jdlrobson aa6a2dda4c Watchstar is accessible to non-js users
Bug: T196893
Change-Id: I5dbd164ba68e6c74e80f8bcf90819a526cda5a5e
2018-10-19 11:00:19 -07:00
Fomafix 133e806865 Force type Language for $lang of doEditSectionLink
Also make the parameter $tooltip mandatory to ensure that a mandatory
parameter does follow an optional parameter. ParserOutput always fill
all parameters of doEditSectionLink.

Bug: T207413
Depends-On: Ic49d76c7d9357f99b462471696f7e1eb86e70e3d
Change-Id: I49c1e3fb7bf72002c7f498d4afe14a06caf411f8
2018-10-18 22:13:29 +02:00
jenkins-bot 26e29baf8d Merge "Show watchlist to non-JS users of Minerva" 2018-10-15 09:16:01 +00:00
Piotr Miazga 51b6e8209b Add share icon as mobile web beta feature
Add a new beta feature - share icon. When user opts into beta
the share icon will be visible on supported devices (Android OS
and Chrome browser).

Bug: T181195
Change-Id: Ie4b9dd05eea9b63422bd174048d8b1251cb02bf4
2018-10-12 22:08:28 +02:00
jdlrobson cbad0bd363 Merge skin option modules into a single ResourceLoader module and move enabled logic to client
It's presumed that skin options will eventually become the default or be removed from the skin.
While they are not the default, it would be helpful to package them in one single module - as ResourceLoader
modules are costly bloating the dependency graph in the MediaWiki startup module.

In T167713 we talked about grouping our entry points by page rather than feature, which this seems consistent
with. A page with special options enabled is different from a page without.

Change-Id: Id948f913d4743532ba3442d2059a03c122419ff2
2018-10-12 10:18:21 -07:00
jdlrobson 3f674008a3 Show watchlist to non-JS users of Minerva
Bug: T196893
Change-Id: Ibd52079d3862854c9c88dae87501b0d42ae99716
2018-10-10 14:08:59 -07:00
Bartosz Dziewoński cada514ded Remove code related to no-anonymous-editing mode of MobileFrontend
All of this would only be used with the configuration setting
`$wgMFEditorOptions['anonymousEditing'] = false;`.

Removed features:
* Call-to-action popup in skins.minerva.editor (note that anonymous
  editors still get a CTA from MobileFrontend's EditorOverlay code)
* Pointer towards the edit button shown after registering via the CTA
  (entire skins.minerva.newusers module)

Bug: T205382
Change-Id: I66c7035f7a23581811dda87c911dea41d4a8e5da
2018-10-10 19:03:53 +00:00
Bartosz Dziewoński 6b0ce86410 Make Minerva section editing more like other skins
Goal: Make skins.minerva.editor not rely on Minerva-specific markup.

SkinMinerva.php:
* Add `class="mw-editsection"` to section edit links in SkinMinerva.
  This is the default behavior in SkinTemplate.
* Tweak the page "Edit" link generated in PHP to be the same as the
  link we were generating in JS: add class="edit-page" and change the
  message for the text.
* (Fix an unrelated code comment that was incorrect.)

skins.minerva.content.styles/hacks.less:
* Remove a hack that was hiding .mw-editsection, since we now use it.

skins.minerva.editor/init.js:
* Stop using the `data-section` attribute on links to decide which
  page section to open in the editor. Instead, use the `href`
  attribute and extract the `section` URL parameter from it.
* Stop using the `edit-page` class to find section edit links.
  Instead, use the `mw-editsection` class.
* Remove super weird code that removed the original "Edit" link from
  the page and generated an identical one to replace it, instead of
  just adding event handlers to the existing one.
* Centralize event handling for all types of edit links.

Bug: T198765
Change-Id: I79639c738ff1c3ec4b48ee2e462d23060151a21b
2018-10-04 14:07:27 -07:00
jdlrobson 87924e7e25 Add theme-color meta tag to Minerva
For non-web-apps we can still control the color of the address and
status bar. Currently this is defined in MobileFrontend)
but is configurable if we ever want to change it. If not defined
(e.g. no MobileFrontend/no config) it is not added.

Bug: T204691
Depends-On: I39c0905f86edc4f52235b905850c31257e7f792e
Change-Id: I3ab0f538fb6ae3332574fd212eea1a7ec6a397bd
2018-10-01 14:25:25 +00:00
Piotr Miazga 71cbed60fb Create $returntoquery variable properly
The $returntoquery variable is created only when request wasn't
posted, but the variable can be accessed on POSTed request.
To fix that issue we need to always define $returntoquery as
an empty array. This is done in order to prevent leak of
any sensitive data sent by POST request.

The sample error from fatalmonitor:
Undefined variable: returntoquery in
skins/MinervaNeue/includes/skins/SkinMinerva.php on line 701

Bug: T205449
Change-Id: I20e5955ddcb99c110a3dc03fb3b56c1904601453
2018-09-26 15:36:44 +02:00
jenkins-bot 5596488f9d Merge "Minerva A/B tests are not subject to HTML caching time" 2018-09-25 09:32:35 +00:00
jdlrobson 58c0b8131f Minerva A/B tests are not subject to HTML caching time
Config added inside SkinMinerva is subject to the rules of HTML
caching and can take several days [1]

Adding it via the onResourceLoaderGetConfigVars hook reduces the
cache time to minutes [2], giving us more control over the experiment's
enabled state.
[1] T124954
[2] https://www.mediawiki.org/wiki/ResourceLoader

Bug: T205355
Change-Id: I18cb40afe405e2f6a89a7ce5a924eb855aed5430
2018-09-24 22:49:34 +00:00
Bartosz Dziewoński 992630c705 Remove broken remains of &campaign=leftNavSignup handling
This code could never be used under normal circumstances since
a crucial bit of it was removed from MobileFrontend in 2015:
(I65e943b6dad8bfea994020f9f555bd095da1a171)

    // Allow us to distinguish sign ups from the left nav to logins.
    // This allows us to show them an edit tutorial when they return to the page.
    if ( $query['returntoquery'] === 'welcome=yes' ) {
    	$query['returntoquery'] = 'campaign=leftNavSignup';
    }

…and honestly, that's for good, because it fails horribly
when triggered by adding &campaign=leftNavSignup to the URL
manually: clicking "Start editing" in the callout navigates
you to an article called "Undefined/leftNavSignup".

Bug: T205325
Change-Id: I0e385488be5b2eaa7d489029b91e18b336c0d133
2018-09-24 19:30:03 +00:00
Bartosz Dziewoński 786ec45c30 SkinMinerva: Remove incorrect comment
'returnto' is, in fact, set a few lines above this comment,
since 2013 (I1553ee71f4f9ffec8462e3f9b85de9f39d921204).

Change-Id: I20ab084b3ddf59d338268f00a7f2306c9e2bd2b3
2018-09-21 19:57:15 +00:00
jenkins-bot ee5959a6fb Merge "Get rid of ICustomizableSkin" 2018-09-21 16:03:47 +00:00
Kunal Mehta 23d21c4ae7 Set explicit output formats to prevent over escaping of messages
Not calling an explicit output format defaults to ->escaped(), which often
leads to double escaping.

Spotted by the phan-taint-check-plugin.

Change-Id: Ie527768bea670808e63cfc8cbff64015ae29d4a3
2018-09-03 22:58:45 -07:00
Zoranzoki21 6d877928f5 Fix common typos in code
Bug: T201491
Change-Id: I1b31983069a45ff6c0493f370596351a407f6a87
2018-08-27 20:54:16 +00:00
Bartosz Dziewoński f114f81d42 Remove fancy block info popups (move to MobileFrontend)
We only used them for registered users, but MobileFrontend's
EditorOverlay code can use them for anonymous users as well.

Remove code for looking up block details in wgMinervaUserBlockInfo,
now we only care whether the user is blocked at all to display a
different icon. MobileFrontend looks up the same information via API
already.

Remove unused message 'mobile-frontend-editor-blocked-info-loggedin',
it was only used by non-fancy popups, which were removed in favor of
the new ones in f51cf7db7b.

Bug: T193754
Bug: T198765
Depends-On: I80564c3e6e2d0f4d7eae754f206780fb4054f254
Change-Id: I64be24845b4fee76d6b4a8e481a218f2160fced6
2018-07-26 23:44:28 +02:00
Bartosz Dziewoński a2dcc8124f Remove incorrect code comment
This was copy-pasted from the function above and it is not true here.

Change-Id: I0513d46789405ea2e6d1cdb619cc548ab8e9ef2b
2018-07-10 01:24:30 +02:00
jenkins-bot 041eaadcb5 Merge "Mobile page issues - visual styling changes" 2018-06-19 22:13:31 +00:00
jdlrobson a231525112 Mobile page issues - visual styling changes
Changes:
* Introduce Jan's beautifully documented $wgMinervaABSamplingRate
Set to 1 to A/B test 50% of the population
* Split out ambox template styles into a separate file referenced
by hacks.less
* Update cleanuptemplates setup script to consider two buckets

Test pages:
* Shqiponja_Partizane
* World_War_II_in_Albania
* Liberation_of_Tirana
* French_Consulate
* Abd_ar-Rahman_IV
* M109_howitzer
* Aimoin
* Transport_in_Brazil
* Transport_in_Cape_Verde

Bug: T191303
Change-Id: I8d11e655ccb847b7999e64dda57b225ad8b1c23a
2018-06-19 14:11:19 -07:00
Legoktm b56e82c8a8 Revert "Allow type Language for $lang of doEditSectionLink"
This reverts commit 648491015c.

Parent patch is being reverted since it didn't follow the
deprecation policy.

Change-Id: Id0e80bf23593d6fc7c986df7b42ff836cc24d867
2018-06-19 01:35:19 +02:00
Fomafix 72a4f7cf4c Add missing return in doEditSectionLink
Change-Id: If2bfae229c2d12090276a5f8dea00a45746349a6
2018-06-18 21:33:03 +02:00
jenkins-bot 927b1bddd2 Merge "Force type Language for $lang of doEditSectionLink" 2018-06-18 01:14:35 +00:00
Stephen Niedzielski 3485269be1 Update: add internal and revise external link icons
Bug: T190549
Change-Id: Iad7fdc2f2a730fa8874487c0d83355f21a0bf7ea
2018-06-15 12:31:42 -05:00
Fomafix 152f48b846 Force type Language for $lang of doEditSectionLink
wfGetLangObj() is not necessary anymore.

This change increases the requirement to MediaWiki 1.32 or higher.

Depends-On: Id49201957e716ef8a2ea930b3616ca4fe6e35633
Change-Id: I18adeebe476b321546ceda43eb12b6cf7e8081b3
2018-06-14 23:36:39 +00:00
jenkins-bot 92a6e01791 Merge "Provide gender parameter" 2018-06-06 08:22:36 +00:00
Piotr Miazga 52e8e93020 Provide gender parameter
Bug: T194868
Change-Id: I20fb6aee13c6bf7bc66bf3cae9560548a336e04d
2018-06-05 16:40:11 +02:00
Fomafix 648491015c Allow type Language for $lang of doEditSectionLink
wfGetLangObj() allows type Language already.

Change-Id: Ibe295e7020e995eea52e319feaf59c635f8bb4dc
2018-05-30 14:40:25 +00:00
jdlrobson f7e8df65b2 Merge profile icon with user-avatar icon
Both are the same but different variants - so use the variants
ResourceLoader module to keep this modules consistent in color
and form.

Change-Id: Ib75e1ff741fa46ad9698e89c4433b6edbad4d376
2018-05-08 23:35:44 +00:00
David Barratt f51cf7db7b
Use a Drawer for Block Notices
When a user is blocked, the toast message provides insufficent information to
the user. To provide more information, as well as a better design, the block
message will be moved into a drawer.

Bug: T165535
Change-Id: Ib025db3a8a4d1fd7bd05b69f9b5326943288372f
Depends-On: I926918d0bd7f2176f188a2154dc5e99f6a8a7ad1
2018-05-08 13:20:00 -04:00
jdlrobson 6267ac8ca0 Override 'core' styles for Minerva
Minerva purposely does not load mediawiki.legacy.shared
This should still be the same when setupSkinUserCss is
deprecated.

Change-Id: Ib2b19ba165a9d646a770702cdf1724509156b93e
2018-05-04 23:41:56 +00:00
jdlrobson e2d72f4ba1 Dequeue render blocking styles
The change in If9c8f0974e3a4b08e4a66d37f7f5adf67d73054e
will introduce styles that are incompatible with Minerva due
to the blanking of the content array. The styles content
array should also be blanked.

Bug: T42812
Change-Id: I3388c3c4f91cdbab11e89cdc95973b688d3f1ce7
2018-04-26 13:04:04 -07:00
jenkins-bot 9007208281 Merge "Hygiene: Document that insertWatchlistMenuItem doesnt work for anons" 2018-04-20 20:32:47 +00:00
Kunal Mehta f5b9a5d64c Let special pages redirect to the login page themselves
SkinMinerva::getPersonalUrl() is supposed to link to the login page if the
user isn't logged in, building a URL that will redirect them back to the
proper special page. Except the two special pages that use this function
will already automatically redirect to the login page if you're not logged
in.

Manually handling the redirect requries additional complexity, and
duplication of things like message keys.

Change-Id: Id5bfca1049f84e52476b179b8fdda50d030d7c1c
2018-04-20 01:11:40 +00:00
jdlrobson c4b28af2c3 Hygiene: Document that insertWatchlistMenuItem doesnt work for anons
Follow up to Ic729992db4db459044a239ec34d95e56b013841d
Change-Id: I1de8f8f527fb5f84d7f080eb5d81298bae3b48b3
2018-04-19 17:40:19 -07:00
Kunal Mehta 892adf0ea7 getUser() will always return a User object
Change-Id: Ic729992db4db459044a239ec34d95e56b013841d
2018-04-20 00:37:06 +00:00
Kunal Mehta 9fc58af509 Get rid of ICustomizableSkin
As far as I can tell this interface is entirely unused.

Change-Id: I9f2ff27ab0e7f9f1e842d5e073eed5d9428f3cda
2018-04-20 00:22:48 +00:00
Kunal Mehta 3917d74778 Use ExtensionRegistry to detect whether Echo is installed
Change-Id: I7816983c132c45653666b294fec2ee64fac94944
2018-04-19 23:59:45 +00:00
Kunal Mehta 4da5567bd9 Simplify SkinUserPageHelper constructor
Instead of requiring a full IContextSource object and only using the
Title, only ask for the Title in the first place.

Change-Id: I33034193140ca53919f29f847a03caf26250ce54
2018-04-15 16:38:50 -07:00
Kunal Mehta 04e61303c2 Add GPL file header to PHP classes
Change-Id: I2333507372c67ffb8e83777ca6f554aed690de9c
2018-04-15 16:23:10 -07:00
jdlrobson 2e453edd23 Only load notification icon (bell) CSS for logged in users
* The notification-count style is only needed if you are logged
in. Given a small percentage of our users are logged in, we
load a lot of render blocking css unnecessarily.
* The bell icon is not needed for anonymous users so pull that
out from skins.minerva.icons.images which is loaded for all users
into a module only used by logged in users (skins.minerva.icons.loggedin)
* Simplify the user-button rule - it is overly specific - probably for
historic reasons.

Additional changes:
* Simplify isAuthenticated helper

Change-Id: Ia72e7e45d276e8aac1ff5471bf6158705c7b5f99
2018-04-12 09:27:01 -07:00
Jdlrobson 4335114fca Revert "Fix: check if user is blocked to show edit button"
The merged patch hid the edit icon completely for blocked users.
It should not do this but should show. I've updated the task
description to explain this behaviour better.

This reverts commit cb6bde03dd.

Bug: T190834
Change-Id: I28b2a6bfb1d0501668752faaf4cbd2ea8bf3398a
2018-04-05 22:23:58 +00:00
Stephen Niedzielski cb6bde03dd Fix: check if user is blocked to show edit button
Before showing an edit button, check that the user isn't blocked from
editing everywhere. Note: User.isBlockedFrom() internally checks whether
that includes user talk pages or not.

Bug: T190834
Change-Id: I9126dfef04333e15baa67e1d080b09f35548d58d
2018-04-05 22:02:40 +00:00
Stephen Niedzielski e8b4559f5b Fix: always show table of contents
Do not conditionally render the table of contents. Note: the underlying
condition, MFTOC, appears to still be used by MobileFormatter so it was
unchanged.

Bug: T189699
Change-Id: I7088ccad75c2a8504bf435418d7dd62238b2135d
2018-03-28 13:36:17 -05:00
Zoranzoki21 441f5ac89d Remove unused $useHeadElement property from skins
Bug: T190575
Change-Id: I1ff60f683ba7186343408579d72303fc693b5a87
2018-03-27 17:18:53 +02:00
jdlrobson 196fb20836 Restore Minerva specific userpage styles for all user pages
In T182162 these were removed incorrectly. They should only have
been partially removed.

Bug: T187222
Change-Id: Ia3fb34250714fe4ccb10c32a7027fda167e06a16
2018-02-13 16:14:54 -08:00
jdlrobson 3047f3e0fa Merge remote-tracking branch 'gerrit/master' into specialpages
Change-Id: I1bc48ac546865f515df65e9d7f0c75e7f5c6d684
2018-02-01 11:35:11 -08:00
Timo Tijhof 08985b2229 Remove use of QuickTemplate::setRef
Follows-up 2c01147c13be, 429f557cc7f68a46.

The array is already copied by value once returned from getLanguages().
Setting it by reference within the QuickTemplate instance doens't
have any effect, but does logically break the concept of pushing
data in a single direction through the skin.

Remove use of setRef in preparation for restricting skins only
consuming data as given, without the ability to change data
in other parts of the system.

Bug: T140664
Change-Id: I0978dd5c123fda57f45534a8d2e51b7e65e55223
2018-01-27 13:11:37 +00:00
jdlrobson c5d09c0288 Prefix icons in Minerva
Changes:
* MinervaUI will now prefix any icons with `minerva`
* Update definitions in skin.json, retaining selectors for cached
HTML for icons that are rendered via PHP.
* In I9021c53c2c04bdd7ce395eed33d89986acbfea6d watch and watched
and arrow are moved to MobileFrontend so are removed from the RL module
skins.minerva.icons.images.scripts as they are not
used directly in this repo. user and anonymous are no longer used
so also removed.
* Presentation of userpage now belongs to MobileFrontend. Icons
are styles were moved there in depends on. They are retained in
skin.json to support cached HTML as user pages are subject to
cache. They can be removed in a week.
* In code review we noticed the anonymous icon was badly named. We
rename to login. No caching implications.
* Main menu icons are now prefixed with minerva rather than mf to
reflect where they come from.

Depends-On: I9021c53c2c04bdd7ce395eed33d89986acbfea6d
Bug: T182162
Change-Id: I93264024f4915fc910c792b1905b89cdc6b8b546
2018-01-19 15:30:03 -08:00
jdlrobson fe3ac29fe7 Merge branch 'master' into 'specialpages'
Change-Id: I167f03477fd79e5ea0c7fa5cdf5df71bb8da31c2
2018-01-19 11:00:55 -08:00
petarpetkovic 413fcc12f6 Fix seen notifications appearing as unseen on mobile
Important note: Make sure to distinguish unseen from unread

One way to reproduce minerva and non-minerva notification inconsistencies:
- Have all your alerts and notices seen. This is displayed with grayed out
number on vector skin or no number at all, if you have (marked as) read.
- Generate new alert or notice (one is enough) in your preferred way.
- You can check minerva and non-minerva at this step. Both should be in sync.
But don't perform any additional action.
- Open the notification popup in some non-minerva skin (I have tried with
vector and monobook), marking it as seen.
- Check the notification icon in minerva. At this point, you should see
notification displayed as unseen.

The reason bug appeared in the first place is that alert/notice timestamps
were mixed up when seen time is obtained. We get seen time from
EchoSeenTime class, where we get smaller of the two timestamps,
using PHP method `min()`. See I27109ee6a248. Then, we get last unread
notification timestamp (which can be either alert or notice), and compare
that to seen time. That leads to the situation when you have only one of
alerts or notices with unread items, smaller timestamp is used for seen,
and most recent for unread, at which point we compare timestamps for
two separate things.

Previous behavior of getting seen timestamps (using max instead of min) would
probably solve the problem, but some other inconsistencies might arrise.
This should prevent any weird and unpredictable behavior to happen.

Bug: T183076
Change-Id: I20bbd6c590086b1c3eccf82983aad59eb3144a7a
2018-01-18 14:18:56 +01:00
jdlrobson 09a1f98ab3 Merge remote-tracking branch 'origin/master' into HEAD
Change-Id: Ia1a520d983be096e29cfe725f619be0423f9d110
2018-01-08 16:37:44 -08:00
petarpetkovic c8195e37ef Fix notifications always appearing as unseen
After Ie92b223a48 removed $flags parameter from EchoSeenTime::getTime(),
we got 0 as $format passed to the method, which caused mismatch in
timestamp string formats when comparing to $notifLastUnreadTime timestamp,
which caused notifications to appear always as unseen (although that's
unpredictable, because of wrong format used).

Bug: T183076
Change-Id: Ia4ff0bc4c3b7ed80b5a22a9ca0052f1909469180
2018-01-03 18:21:40 +01:00
jdlrobson 6598c1e7c3 Merge branch 'master' into HEAD
Change-Id: I220fbc57ee20d2a6717b39dba809401de2207ce0
2018-01-02 13:21:27 -08:00
David Sn 90f324a5b7 Use preg_replace instead of str_replace for replacing extension
Bug: T166684
Change-Id: I233be410486276f30b08034180eb54cb08e04076
2017-12-07 16:05:48 +00:00
jdlrobson c986db6c0e Always render taglines unconditionally and update styles
Adjust tagline margin per Nirzar:
https://phabricator.wikimedia.org/T180095#3801719

Note, this will  enable the tagline everywhere.

Change-Id: I3bce2a3472ab2e53261965c953572f35cc740eed
Bug: T180095
2017-12-05 00:27:11 +00:00
David Sn 8a19c0cb33 Use png as fallback for svg on non-supported browsers
This will use the srcset attrribute which was introduced with HTML5,
in order to load the svg image on supported browsers.

Should fix the bug after merging change 394820.

Bug: T166684
Change-Id: I2337b750c80e79c816dc817dfe230e063eed0345
2017-12-04 22:13:23 +00:00
jdlrobson eaa4dae5af Disable download button in all namespaces except main
The MinervaDownloadIcon config option is replaced with a
more specific wgMinervaDownloadNamespaces config option.
If the list is empty then the download button will not be
shown.

Since the download icon is enabled everywhere in production now
this is good as it means Minerva reflects the production value.

Bug: T181152
Change-Id: Id78c1de9e8e9013530106bc0d45d3cf0297897b5
2017-11-29 20:29:12 +00:00
jdlrobson ed5e9dd1d5 Hygiene: Refactor Minerva history link generation
* Create several sub functions to manage complexity of the history link
* Clean up MinervaTemplate to use data directly and remove isMainPage
template variable which is no longer being used.

Change-Id: I124aec9637f3635a335c58e559e578b2a56eb4c5
2017-11-27 14:27:11 -08:00
jdlrobson b72c10e06f Show last modified bar without relative time for old revisions
If FlaggedRevisions is being used then older revisions will be
shown as if they are the current revision of the page. This causes
problems as it makes it hard to give a true indication of when
something was last modified - do you show the last time someone
made an edit or the last time someone approved an edit?

The same issue applies on revisions and we attempted to fix this
earlier in T153125 but in doing so caused this problem.

Bug: T180116
Change-Id: I6d47adf272c99791d4af9f97afa02799d495887e
2017-11-22 10:29:51 -08:00
jdlrobson 8eb65b264d If timestamp is null load revision time
Passing null to wfTimestamp will result in the current time.
Protect against that happening

Bug: T180103
Change-Id: I6ef9577bf52609bf387b0146f1d8a4a53be58cd7
2017-11-16 23:23:25 +00:00
jdlrobson e422eb9a81 Do not try to add edit links to the HTML in contexts without a Title
Title may be null when accessed via this->getTitle()
If this is the case we should assume the skin is being used by someone
who is not a reader and in these circumstances, not try to render any
page actions.

Bug: T179833
Change-Id: Ia47fd9b059101bf22b5d31be7df3a332b35d6b24
2017-11-09 21:23:48 +00:00
Kunal Mehta 74b3faf580 Move class_alias out of skin initialization
Use the standard way of doing it by adding an autoloader entry, and putting
the class_alias() call into the same file as the class.

Change-Id: I93e19ebcf3dd7d9815623de5e24861949fd0269a
2017-11-08 00:20:00 +00:00
jdlrobson dfabc67d95 Hygiene: Remove dead call to addModuleStyles
This is adding an empty array and not necessary

Change-Id: I232dd9b0fe7343a6531582ad66a62d3babe275e3
2017-11-01 11:20:17 -07:00
jdlrobson d3318a9f85 Remove MobileFrontend's font changing code from Minerva
Fontchanger code now runs on all skins under the `mobile` target.
All the code will now live in MobileFrontend meaning developers
can operate inside one code base.

Depends-On: I857cfe2d9be9fe49c04c860bc234384c787239b2
Change-Id: I2759455cb6d7ddf13798e94452cb74baf502bafe
2017-10-30 19:11:16 +00:00
jdlrobson 12b49a70ad Notification icon should not show NaN for persian Wikipedia
Bug: T172755
Change-Id: I2884c8daed3fe0e0d05c746ec6319956b7426957
2017-10-26 20:27:12 +00:00
jdlrobson 45a1b3b423 Add feature flagged DownloadIcon
Shortcut for print. Disabled by default and controlled by
wgMinervaDownloadIcon

Note that with lazy images enabled, images will not appear
in the printed article. This can be easily addressed inside
the onClick function in a later patchset with a few modifications
to the Skin class.

Currently the flag when enabled will show on all browsers. There
are some open questions on the ticket about how we want to limit
the feature. This shouldn't block review or merging.

Bug: T177215
Change-Id: I49f1736870c743990b3fb9916247e07a597b2f59
2017-10-23 18:12:20 +00:00
jdlrobson b93b7eda7c Render add discussion button in PHP not JS
The talk page JavaScript progressively enhances an
existing button in the page.

Remove the frontend logic and rely entirely on whether
the button is in the page or not.

Additional change:
* The browser tests incorrectly suggest a user needs
5 edits to be able to use the talk feature. This is not
true. They just need to be logged in. Update that logic.

Bug: T167728
Change-Id: Iacedea30bdd0775b3d785db5b143abafd7a18b39
2017-10-16 22:35:11 +00:00
Umherirrender 8e8c9d0654 Improve some parameter docs
Change-Id: I239d4aa0023978b27bc04a7ff7d55892f3bb7feb
2017-10-05 19:17:38 +02:00
jdlrobson 2e8ea6219f Update SVGs for page actions and restore locked edit icon behavior
The locked edit icon will now show on protected pages.

Additional changes:
* userpage and userNormal was not minified. This has been fixed.

Bug: T174105
Change-Id: I0ef9c4cf3ea6cd1c550023fdf99581b665b459b2
2017-09-29 13:20:39 +00:00
jdlrobson 0dd994edda Prepare to break the server side MobileFrontend dependency on Minerva
Changes:
* Minerva now maintains a MinervaUI - a simplified version of
MobileUI that provides iconClass and buttonClass helpers.
* Minerva now maintains its own ResourceLoaderParserMessageModule

Remaining issues:
* Main menu links to '#'
* Unknown dependency errors are thrown due to the missing
JS libraries e.g. mobile.watchstar
thus JS based UI components are unusable e.g. search autocomplete,
and edit button
* Language button navigates to a missing special page without
MobileFrontend (see T104660)

Bug: T169569
Change-Id: I89e2e15faabab73b0cba91afc2f2c5e785edef29
2017-09-27 21:21:59 +00:00
jdlrobson 606e72ab68 Revision::newFromTitle may return null
Bug: T176882
Change-Id: I9aea25c2db81a12f16414edcb279f3241dc380bc
2017-09-27 19:58:46 +00:00
jenkins-bot 0a3378adcf Merge "Hygiene: Refactor SkinMinerva so it doesn't use MobilePage" 2017-09-08 19:17:58 +00:00
jdlrobson 9909914b30 Hygiene: Refactor SkinMinerva so it doesn't use MobilePage
MobilePage is provided by MobileFrontend and replicates functionality
in core. Let's invest more in those core interfaces. It's a bit of a
maze, so I think there's probably a cleaner way of doing this...

Change-Id: Iea0a3121841c4774eb117168b1cfc8c2e1e24a0c
2017-09-08 14:50:25 -04:00
jdlrobson 69cb08262a Hide last modified bar on old revisions
Bug: T153125
Change-Id: I43f6f1993ebeacead12d7ec6da584c6d1e14da12
2017-09-07 14:17:30 +00:00
libraryupgrader f86c148866 build: Updating mediawiki/mediawiki-codesniffer to 0.12.0
The following sniffs are failing and were disabled:
* MediaWiki.Files.ClassMatchesFilename.NotMatch
* MediaWiki.Files.OneClassPerFile.MultipleFound

The following sniffs now pass and were enabled:
* MediaWiki.Commenting.FunctionComment.SpacingAfterParamType
* MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage

Change-Id: I0689ff20133a2a23d6389aa50487349c6ed3797b
2017-09-01 05:01:10 +00:00
jdlrobson c323c6858a Hygiene: Merge skins.minerva.print.styles with skins.minerva.base.styles
We no longer need to keep this as a separate entry point now we do not
feature flag our print styles

Please enter the commit message for your changes. Lines starting

Change-Id: I6bf12980aa929e84f239931beb0a505809231830
2017-08-31 19:09:03 +00:00
jenkins-bot c5139c3536 Merge "Avoid using deprecated Title::canTalk()" 2017-08-30 17:23:07 +00:00
Kunal Mehta ff3f980f70 Avoid using deprecated Title::canTalk()
Change-Id: I9f43710bed8557d192906b49fbc8a8f9e43d3448
2017-08-29 12:37:00 -07:00
jenkins-bot 7c1be417b0 Merge "Remove special page resource module handling" 2017-08-28 16:21:52 +00:00
jdlrobson ac7fcfc9e1 Disable wikitext editor on non-wikitext content models
Do not allow editing via JavaScript on non-wikitext content models
For these pages ?action=edit will be used

Bug: T173800
Change-Id: Ic62a0c1397ab8a6a59e5382c2999b63b3c60a19f
2017-08-22 17:02:58 +00:00
jdlrobson 61ba76efdb Remove special page resource module handling
This is handled by MobileFrontend now, just as it should do.
We rely on skinStyles where possible.

Depends-On: I665f6fe60939475249786fdc951149c38473fda6
Bug: T173597
Change-Id: I0fe9efcf98bbd8e188d91a29d4cfda897d47808d
2017-08-18 19:37:08 +00:00
jdlrobson d5e09c91e9 Check if SpecialMobileWatchlist exist
If MobileFrontend doesn't exist this will throw an error

Bug: T171241
Change-Id: Ie61cfa61b78a53598ac59aea15c8a4e6a261238d
2017-08-17 22:40:54 +00:00
jdlrobson 5146a90590 i18n: Add Minerva specific message key for last modified bar
This is currently defined in MobileFrontend which uses it for
Special:MobileWatchlist.

We shouldn't use two messages for 2 purposes so let's give it
its own dedicated message.

Change-Id: Id5df6aad20815b88b8bd2685514e7eb3237a5b3b
2017-08-16 14:56:00 -05:00
jdlrobson 65670fbce3 Do not assume MobileFrontend special pages exist
If they don't exist attempts to use them will throw errors.
This will only happen if MobileFrontend is not installed

Change-Id: Iee674011bbd59d79914a144d1738b912eceea6b1
2017-08-16 14:34:26 -05:00
jdlrobson e1ee63d4af MobileFrontend should be responsible for adding mobile.site module
Change-Id: I4508762629333c96dc6b11f6c0f63b675b367209
Depends-On: I094a57532a4e7dac47d06f25c56dbd4935ec707c
Bug: T171062
2017-08-11 11:44:49 -05:00
Eddie Greiner-Petter b0384c4314 Show title on the page named '0'
The string '0' evals to false in the if( $pageTitle ) condition, hence
the title was not shown for the page named '0'.

Bug: T163084
Change-Id: I27ab379bf67634c484c4cf5e12e391d69702f464
2017-07-30 19:50:34 +02:00
jenkins-bot 78daa06cc1 Merge "Hygiene: Drop MFAllowNonJavaScriptEditing and Special:MobileEditor" 2017-07-26 18:40:09 +00:00
jdlrobson 3ad9c4e3c6 Hygiene: Drop MFAllowNonJavaScriptEditing and Special:MobileEditor
Bug: T125174
Change-Id: Ifc0efcb87605e5cd678343d1ac91a2ce53b33664
2017-07-25 11:07:03 -07:00
Umherirrender 2aacf47c8d build: Updating mediawiki/mediawiki-codesniffer to 0.10.1
Change-Id: Icba559465885af1169a1912f501bed56eea23ad9
2017-07-24 18:53:04 +02:00
jdlrobson 747b712509 Minerva should use mediawiki.hlist
Override provided styles

Bug: T42062
Depends-On: I9305af5d30c8c24b44f4a0c6a466581c45fa3028
Change-Id: I7adda8ef99e5eee3df5bd7dc4da5081c1225f815
2017-07-19 13:52:09 -07:00
jdlrobson 2cc9516cde Minerva is its own skin
This is programmatic output from python3 scripts/migrate.py

This will result in a Minerva skin dependent on MobileFrontend.

Post merge we will rename message keys to have minerva- prefix

Bug: T166748
Change-Id: Iff1f7e63e796cc5d4a6d2ab0370e0c33248d2fce
2017-07-12 08:12:40 -07:00