Commit graph

72 commits

Author SHA1 Message Date
jdlrobson 7962ba87a5 Docs: Present classes rather than modules
Use classes rather than modules for the various Views inside
Minerva.

Change-Id: I849ae50e48c01012ba6713ec3bf5f1c836ef22bc
2018-08-20 16:43:41 -07:00
jdlrobson eea19f3e18 PageIssues should use new standard pageToken getter
Rather than inventing its own page token the PageIssues
schema will rely on the standard page token.

In future when I9bb18d47e36d2d99d812e5b47ea9516d3dff3a16 is
merged this will mean that PageIssues and ReadingDepth have
consistent page tokens.

Bug: T201124
Change-Id: I19fea41e04cd792423ea9d41a673563418b69726
2018-08-17 10:28:17 -07:00
jdlrobson 40eca4e3f3 Hygiene: IssuesOverlay moved from MobileFrontend to Minerva
The CleanupOverlay is moved to Minerva and renamed the
IssuesOverlay to be consistent with current terminology

The new IssuesOverlay is defined inside the module
skins.minerva.scripts to which it now belongs.

Additional changes:
* various file renames
* overlay-cleanup renames overlay-issues
* cleanuptemplates renamed issues.js
* Add a test stub file to avoid the need to load templates inside
the test environment

After this change, I75f47622d94e504688e04dfb2892540473817053
should be merged to avoid confusion.

Change-Id: I08945a324a6b878abe56efed1e988466085b3018
2018-08-16 14:06:12 -07:00
jdlrobson 6a5b2e284d Allow subsection issues
Depends-On: Iaa35317cdd96a1ad306ab38dc3ab2f18cc7bb31f
Bug: T197932
Change-Id: I84649dc80192729934f7bbb23a8e78296717bf36
2018-08-16 11:51:10 -07:00
jdlrobson 6718bc4351 Drop issues on editor
T196150 disabled the fallback editor when JavaScript is available.
As a result the code for page issues on the editor screen is redundant.
This simplifies our code.

The css rules relating to editor
issues are retained, given they simplify the editor screen for mobile
devices.

Bug: T196150
Change-Id: I76d586414cdd8de533bb891b87d1e0b7efc20a68
2018-08-16 11:43:28 -07:00
Stephen Niedzielski ac245a7d97 Hygiene: don't hardcode page issue header selector
When parsing page issues by header, use the MobileFrontend selector
symbol, Page.HEADING_SELECTOR, instead of hardcoding it. This selector
is configurable by the extension.

Bug: T191528
Change-Id: I7c9db38f9102bfef0a98784be32c7e4707d747e5
2018-08-15 19:40:49 +00:00
Stephen Niedzielski 22b2f0fd7c Hygiene: move page issues A/B test logging to file
Refactor the page issues A/B test logging implementation to a distinct
new file that only has the responsibility of tracking.

T191528 is referenced in this commit as I was having difficulty
answering the feedback and bugs reported in the current implementation
without working through and restructuring the flow as I understood it.
This refactor is merely a byproduct artifact of that effort to focus on
the parsing and presentation responsibilities.

Bug: T191528
Change-Id: If547a0a67fbc9a532f834fe374abf668309e73df
2018-08-14 20:49:06 +00:00
Stephen Niedzielski 061d155303 Hygiene: remove unused function AB.onABStart()
Callback usage was removed in I67fb6e448f6ecc97c89c1187e491ee05f7a312ef
so this function may be removed.

Bug: T191532
Change-Id: I88f0d6740c9e9615faba2e3c60772269c705f43e
2018-08-09 20:50:51 +00:00
Jan Drewniak f67c410859 Page Issues AB test event-logging instrumentation
Uses `mw.trackSubscribe` to create an intermediary data handler
named `wikimedia.PageIssuesAB` which extends event-logging data
before passing it to the eventLogging through `wikimedia.event.PageIssues`.

Event hooks are placed where appropriate and the `CleanupOverlay`
class is extended to capture events from within the page issues
modal.

Additional changes:
* Merge two identical on click event handlers for
.edit-page, .edit-link elements
* change pageIssueParser.maxSeverity to accept an array of severity levels
instead of an array of pageIssues objects

Depends-On: Ic84e4a3286220407863167e0f57cef1b13a72964
Bug: T191532
Change-Id: I67fb6e448f6ecc97c89c1187e491ee05f7a312ef
2018-08-09 20:30:12 +00:00
Stephen Niedzielski 765a46c464 Fix: add a few more POV templates to issue parser
Bug: T191528
Change-Id: I777921798fee447dc3c954a585e418371e2866e8
2018-08-09 09:01:45 -05:00
Stephen Niedzielski a6ba0f2c77 Fix: page issue icon type determination
The page issuer parser works with plain old Elements, not jQuery. Pass
in the expected type.

This addresses problems with the icon display for ambox templates relating
to balance (see https://phabricator.wikimedia.org/T191528#4465069)

Bug: T191528
Change-Id: Ie4a34087f9f1700342cc54a50cd3272fc9ea34ee
2018-08-08 17:09:03 -07:00
jdlrobson 100b7951a2 Restore page issues
Follow up to I96808541d48be7869fed3bc30babb80866e139ec
which incorrectly wired up the page issues feature.

Bug: T200867
Change-Id: I7c3198f95dae1f7c5e0991dca651dd64949b3615
2018-08-01 11:34:20 +08:00
jdlrobson 9644e5372b Add tests for page issues code
Bug: T191532
Change-Id: I5291b51ec32ab95ff1ec41e50b84fea4567f28cb
2018-07-31 11:42:09 +00:00
jdlrobson 0ca42ee64e Hygiene: Separate cleanups library from initialisation
In order to write tests, we'd like to separate code without side
effects from code that executes it as part of setup.

This shuffles dependencies and makes page and overlayManager
parameters to the init function (injected dependencies)

Change-Id: I96808541d48be7869fed3bc30babb80866e139ec
2018-07-31 11:42:04 +00:00
jdlrobson 3d7007f6a5 Hygiene: Remove anonymous function and indent
The readability of cleanuptemplates is hurt by having an anonymous
function embedded inside.

This patch wraps initPageIssues with the jquery ready call and removes
the function wrapper and decreases the indent of its contents.

Purely stylistic change.

Change-Id: I44b2371add32780f96160e0075787a9ea7222f39
2018-07-31 11:41:59 +00:00
Jan Drewniak e27cbf2a49 Reading depth hook should send additional sampling bucket parameter
The hook that enables the Reading depth test should send an
additional paramter that specifies which test bucket the hook
being is calling from.

Bug: T191532
Change-Id: Ifd9f43220c476ece8a0c0cee46b62b58a717c616
2018-07-31 11:40:29 +00:00
Jan Drewniak a10bb49c01 Truncate page-issues to 2 lines of text.
Truncates ambox template styles to only show 2 lines of text.
"Learn more" link is placed on the same line as message text
and a fade is applied so that it doesn't overlap with the message text.

On table & larger layouts, the "learn more" link is placed on its
own line below the page-issue text.

Bug: T197931
Change-Id: Id607dea537c212298c02a0e1639aef2a786eb424
2018-07-26 08:14:08 -05:00
jdlrobson a3efca1582 Remove unnecessary skins.minerva.base.styles
* truncated-text is only used in MainMenu, last modified bar,
 a few special pages
Making this a mixin and limiting it to mobile.startup skinStyles
and mobile.special.styles thus makes sense
* cloaked-element is only ever added by Skin.js in mobile.startup
* position-fixed is only ever added by Skin.js

Change-Id: Iaf7061e9dda87eb25c963f8a281175af08f358e5
2018-07-26 01:18:00 +00:00
jenkins-bot ef63ced9b4 Merge "Match section issues to section number" 2018-07-24 23:03:18 +00:00
jdlrobson fcaf244cc4 Hygiene: lazy loading animations do not need to be render blocking
The transition only happens when images are loaded via JavaScript
so limit the styles to a file loaded via JS NOT render blocking
CSS

Change-Id: I56661db13e7fbb400a05b13c369d8598df449297
2018-07-23 13:57:42 -05:00
jenkins-bot 4aba34a5ed Merge "Cleanup: Last modified active color should be loaded via JS" 2018-07-23 16:54:28 +00:00
jdlrobson 54af37c269 Match section issues to section number
The section number relates to the position of the corresponding heading
not the corresponding top level section.

This only changes the URL, not the functionality. sub section issues
will continue to be grouped along with other section issues.

Bug: T197932
Change-Id: I325a3b477f89c9cc24f13ca017f478a6b7e7b68e
2018-07-23 10:09:32 -05:00
Stephen Niedzielski d2f6c38fe7 Update: page issue icons
- Fix a bug where the all issues endpoint would incorrectly collect
  issues from all sections.

- Update the page issue iconography. This increases the size of the
  delivered code and images by 1743 B minified uncompressed according to
  mw.inspect() (from 16.4 KiB to 18.1 KiB).

- Add support for identifying page issue severity based on template CSS
  classes.

- For multiple issues templates, show the highest priority icon.

Bug: T191528
Change-Id: Ie0a4c83ec7cfb856ec581d058797109746e3cb99
2018-07-17 15:54:17 -05:00
jdlrobson 99bc9d8c55 Enforce lowercase jsdoc types
Follow up to I6cbac15940e4501aee7ede8f421b77ffd027170d

Change-Id: I22bcbf1f083451a0f68b692b9a0acc716d11c62c
2018-07-17 08:06:35 -05:00
jenkins-bot 6c981fa4f8 Merge "Section issues overlay has different heading" 2018-07-13 12:46:20 +00:00
jdlrobson dfc29032b5 Section issues overlay has different heading
Per https://phabricator.wikimedia.org/T197932#4417319
Note that given talk/category overlay does not use or
display section issues, to simplify things any section other
than 0 or all will use this heading.

Bug: T197932
Change-Id: I737fb07aaadcea7772d0b08f8b0652dcf2f4623d
2018-07-12 15:07:22 -07:00
Stephen Niedzielski 10024b641e Hygiene: fix DownloadIcon function typing
Change-Id: I421332acae4ace9d0bb7cfcd4b31d9f4581c3e34
2018-07-11 13:39:55 -05:00
jdlrobson 596e405807 Tie issues to sections
Parse all issues inside a page, and load them into the issues overlay.

In group A, given issues inside later sections are hidden, it will not be possible
to navigate to these new overlay screens. In group A, lead section issues will continue
to only show lead section issues.

Changes:
* The /issues route is replaced by the more specific /issues/all and
/issues/{section num}, issues are stored in an "allIssues" module object.
* Begin using constants for namespaces for better readability
* Drop width 100% - this breaks display on tablet devices of issues within
sections
* Improve createBanner documentation to explain different treatments
* Set the issues overlay header inside initPageIssues when setting up
the route.

Bug: T197932
Change-Id: I21470648a61d57cfa4befceec596cf0f6e2110ec
2018-07-11 09:47:46 -07:00
jenkins-bot d5ae991522 Merge "Hygiene: update JSDoc boxed and JQuery types" 2018-07-10 23:00:40 +00:00
jenkins-bot 61bc884204 Merge "Talk page 'issues' are not subject to A/B test" 2018-07-10 22:57:29 +00:00
jdlrobson 70e4e9e85a Cleanup: Last modified active color should be loaded via JS
.active class is added via JS by skins.minerva.scripts
skins.minerva.base.styles is loaded as render blocking
Thus this css rule can be moved safely to a non-render blocking place

Change-Id: Ie8bab826ebc0785e24bb85600de261372c429434
2018-07-10 22:45:24 +00:00
jdlrobson 20e3bbd28f Don't render blank issues
If an extracted issue has no text, do not render it

Bug: T199005
Change-Id: I18047492e891285ed3af113200d2909e178b8224
2018-07-09 21:33:13 +00:00
jdlrobson 34e1a80318 Talk page 'issues' are not subject to A/B test
Bug: T199005
Change-Id: Ib5f60fc5c2157d0b10e39209f5ce4ff56d745eee
2018-07-09 14:24:29 -07:00
Stephen Niedzielski 56dabf0af3 Links should not be clickable in mobile page issue element
Bug: T198115
Change-Id: I18c393d5676084e0be3ba12fa267765593368615
2018-07-04 13:43:11 -05:00
Stephen Niedzielski 874d9c9e3b Hygiene: update JSDoc boxed and JQuery types
From TypeScript's do's and don'ts:[0]

  Don’t ever use the types Number, String, Boolean, or Object. These
  types refer to non-primitive boxed objects that are almost never used
  appropriately in JavaScript code.

Although Minerva only uses JSDocs at this time which seemingly doesn't
care about casing[1], we should endeavor to use the proper return types.

This patch lowercases typing to indicate primitive / boxed type as
appropriate.[2] As a special case, function types are uppercased for
compatibility with TypeScript type checking.

Also, JQuery types are of type "JQuery". The global JQuery object's
identifier is "jQuery". This patch uppercases J's where appropriate.

Lastly, replace unsupported type "Integer" with "number" and a comment.

[0] https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html#general-types

[1] https://github.com/jsdoc3/jsdoc/issues/1046#issuecomment-126477791

[2] find resources tests -iname \*.js|
    xargs -rd\\n sed -ri '
      s%\{\s*(number|string|boolean|object|null|undefined)%{\L\1%gi;
      s%\{\s*function%{Function%g;
      s%\{\s*jquery%{JQuery%gi;
      s%\{\s*integer\s*\}%{number} An integer.%gi
    '

Change-Id: I6cbac15940e4501aee7ede8f421b77ffd027170d
2018-07-03 11:10:12 -05:00
jdlrobson f943abd854 Localise "learn more" and warning icon to issues
This is currently showing up on sisterbox templates e.g.
the one on Category:Beekeeping

Bug: T197728
Change-Id: Idaf4aeb4a9efb668e5c06e19ce1eddace121e741
2018-06-20 08:37:00 -07: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
Jan Drewniak 7617174d40 A/B test bucketing wrapper for page issues AB.
Provides a class that initiates AB-test bucketing and registers
as a MF module. Activates the reading depth test for users who are bucketed
in either buckets "A" or "B".

Does not add event-logging or visual style changes for page issues AB test.

Bug: T193584
Change-Id: If8504a35059c6d1b056cef063a595b1c2ffd351a
2018-06-13 15:43:08 -07:00
Baha ee9ec00234 Don't turn off listening to reference clicks
For event logging purposes we need to be able to listen to reference and
backlink clicks. Clicks on these elements were disabled before this patch.

Although clicking on backlinks was disabled, it wasn't working properly
as the user could click on those links and be taken to the reference.
Thus this piece of code has been removed.

Bug: T191086
Change-Id: Idbaa39523a35f3b649f521be05c83255aa2b1396
2018-05-31 20:10:31 +00:00
Timo Tijhof 64134bd8a6 Remove minerva.less from global import path
Use local imports instead given all relevant files are within the
same repository, and don't vary by configuraion.

Bug: T140807
Depends-On: If3edac9a35b346af0320c12f70c0d978a6346201
Change-Id: Ife3cc345a63aff452e93accbe0a593fbaa358732
2018-05-29 12:19:00 +00:00
jdlrobson 86238c64c2 Restore last modified active link color
In I7abdbac4d2d16b931e2b110fcebf0dfc82146753 I accidentally
removed the active link color (I meant to /move/ it from the
critical path since it requires JavaScript)

Change-Id: Ie86c3c9d03a0ed130a86c50bb548c9b47db6def6
2018-04-13 10:19:31 -07:00
Jan Drewniak da7f08ad09 Use OverlayManager for SearchOverlay
Enables the SearchOverlay to be shown/hidden by the
OverlayManager, instead of managing the routing itself.

A special route is added to hide the search overlay on pageload,
so that the overlay can always be closed with history.back()

Bug: T189212, T102946
Change-Id: I1eaad36fe4ceca2d6f3e3345d987e2b32634446d
2018-04-05 15:23:36 +02:00
jdlrobson ac1ffdb5f1 Restore search placeholder text
Bug: T190939
Change-Id: Ic42ed495b54f153c93ee32ac250dfe5d9233d1cb
2018-03-28 20:00:55 +00:00
jdlrobson cfd5fbbde8 Add icons for all the types of issues
More hackery!
This adds some tests and ensures that our own icons are mapped to the
existing template icons.

Bug: T187916
Change-Id: I49073f22995c6730369235d6039939915ba2079c
2018-03-15 15:02:05 -07:00
jdlrobson eaa2692da0 Use jsdoc for generating Minerva documentation
Given the level of documentation in this repo is extremely
low now seems a good as time as any.

The resulting documentation is a vast improvement on before
grouping functions to an owner and introducing module names.

We can iterate on the documentation over time.

Bug: T138401
Change-Id: I9e787d40931d3d72a7037ce07d3ab0db8e72d825
2018-03-15 15:01:41 -07:00
jdlrobson 888129478b Generalise search trigger mechanism
Allow content to trigger it.

Bug: T189316
Change-Id: Ie9a66b001b3ea4f79e465747b80b181df948cd34
2018-03-12 20:49:25 +00:00
jdlrobson 71bf8604ab Move error handling inside Minerva
ReferenceDrawer
Instead of doing this inside the ReferenceDrawer component
itself, we'll do this here.

To be backwards compatible we check the value is truthy.
When I5a7b23f60722eb5017a85c68f38844dd460f8b63 is merged
this can be removed.

For NotificationBadge we pass the onError option which
is now available and allows us to clean up the NotificationBadge

Change-Id: I47db11fa945a05f3b2a9a43c3cf053ca489a38fa
2018-03-08 20:03:22 +00:00
Stephen Niedzielski 41a43c5ce1 Hygiene: remove window.location use from overlays
Bug: T173539
Depends-On: I158dd7883be2846cf0d48bbd7e89fe2cd64a57d3
Change-Id: I87741667ca06cc701e5265aff13ba0492501de26
2018-03-07 17:13:59 -06:00
Stephen Niedzielski 27bc7e7212 Chore: move window.location use to client
Move window.location manipulation from ImageOverlay view to MinervaNeue.
Also, don't leave a hanging empty URL fragment when closing the overlay.

Bug: T173539
Related: I292c0578716ff56e0e069aa8006f840025d78a88
Change-Id: I56ba9217aa9cd4e0a925c623060022392e3021c7
2018-03-06 08:35:48 -06:00
jdlrobson 6ab5944b09 Pages that do not exist cannot have issues
Bug: T185359
Change-Id: I4d2adcd31d31761c178cbb8df8db696f654a795d
2018-02-08 22:09:49 +00:00