These CSS classes are specific to the Minerva skin and we want to move
this file to MobileFrontend.
Now that this code is all in one place, I noticed that it seems to not
do much at all… Everything in this function looks like it could just
be done in the PHP code. If PHP does it all, then we could remove all
of it for a free performance improvement.
Bug: T198765
Change-Id: I6487c2fc520e14e0856b2e9a6f9dfa5066205817
The fancy mobile editor doesn't support undo, but we can just use the
fallback (no-JS) editor. The experience is not very friendly (e.g. due
to two-column diff), but it works.
Previously we showed an old-school alert() message and then loaded the
fancy editor as if it was a normal edit, ignoring the undo parameters.
The whole thing is rather hypothetical, since there are no links to undo
in the mobile interface. See T191706.
Bug: T191706
Change-Id: I5147ada9e85d9188f19ae898fdd411985d19182f
* Page edit action (#ca-edit)
I guess it became always visible when no-JS editing was implemented?
* User page creation CTA (.edit-link)
I'm making it always visible in Ie2fc6d43ebc03626517eec21bf4738dca05152d0
(which also makes it available for no-JS editing).
* Section edit links for nested sub-sections (.in-block > .edit-page)
No idea about these, but they are clearly always shown (even in
non-article namespaces).
Depends-On: Ie2fc6d43ebc03626517eec21bf4738dca05152d0
Change-Id: I226cb1fd1e716078a4a34ed8349d5304428964cf
When handling special cases that are logically distinct from
the function's main branch, it improves code quality (through
readability and maintainability) to place those first and with
an early return.
The has the benefit of the main return statement being easy to
find at the end of the function. (Not early and/or in a block).
It also means when working on the code, there is generally a
less complexity and fewer nesting levels, given that most code
is in the main branch. This makes is easier and quicker to verify
that code does what it should, as well as making it easy to
extend in the future. When considering to add code to end of a
function's main scope, it should relate to the function's main
branch by default, not a special case. For example, a getName()
method should not end with a top-level statement 'return false'
(unless it is a stub). Rather, one would expect it to end with
`return name`.
Change-Id: I1f3088f2409c82dd3bf757fc8fa27dc97ae2767b
Previously, the main edit icon in the page actions was handled indirectly
by changing the URL and then routing the edit via detecting the hash
fragment has changed. On the other hand section edit links were hijacked
via a click handler. The latter is better as it doesn't modify the DOM,
which allows the editor to override the JavaScript behaviour. It's also
preferable as it doesn't interfere with EventLogging - this subtle difference
was supressing edits to the Edit and PageIssues schema.
Bug: T202786
Change-Id: I4175bc6f0ddda28397d185502d1839716d051c56
When unable to edit, the edit icon at the top of the page serves
as the indicator that this is the case. In case of section edits
we hide them.
Bug: T197497
Change-Id: I23f196602ad64051426baf5090f0a6d6be941de8
This patch updates the various usages of $.Deferred for loading
overlays in routes to be ES6 Promise compatible
Bug: T188937
Change-Id: I3fc24bf3471a99e7671d1191bdd46cb741286ee1
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
When a wiki is in read-only mode, the edit icon on articles should
not open an editor. Instead, it should be in a "disabled" state and
inform the user that the wiki is in read-only mode
( i.e. show the "apierror-readonly" message).
Bug: T197497
Change-Id: Iee1414c20bea3ca936fb807820e58e5ed566d008
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
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
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
As I6c7e3443756fd72749964d1eda37e3d123b201b3 gives full-page editing on
action=edit, suppress the display of the original wikitext editor so there's
not a flash of a different editor before the overlay appears. Provide a
fallback so that in cases of no-JS the wikitext editor can still be reached.
Bug: T196915
Change-Id: I7dd3de984ead4d70e977e5607bb07606d341db54
Make a new route which uses `#/editor/all` to trigger loading the full page's
text in the editor, rather than defaulting to the first section. This isn't
exposed through the UI, but will be what's used when intercepting action=edit
links, which already loaded the full page's wikitext in the non- overlay
editor.
Bug: T196915
Change-Id: I6c7e3443756fd72749964d1eda37e3d123b201b3
Make ?veaction=edit/editsource and ?action=edit trigger the appropriate mobile
editing mode.
Bug: T185729
Change-Id: I2275b011d2b3c03462e3c1711d3135ce672596e8
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
When a user is allowed to make edits, show a normal edit button. When a
user cannot make edits, show the locked button.
This patch refactors edit button presentation logic into a new function,
updateEditPageButton(), which consistently updates the UI for both
enabled and disabled states. Additionally, in cases where the old code
only displayed the button via `$caEdit.removeClass( 'hidden' )`, the new
code now updates the state appropriately which is a functional change.
Finally, this patch sprinkles in some TODOs for future minor refactors
that were identified while creating this patch.
Bug: T190834
Change-Id: I083e91f0328cc057541ad42a27aae31b32b3d050
The block reason in the block message has escaped HTML. This
HTML should be rendered to the user.
Bug: T190901
Change-Id: Icda7c5d0c76aff7c22f3a6735d880a5ee49338ff
Template pages do not run the MobileFormatter
(see MFMobileFormatterNamespaceBlacklist).
As a result page.getLeadSectionElement() will
return null
When this happens do not change the edit icon to point
to section 1. Instead give them the non-JS editor.
After this patch, the feature remains as:
* Page with lead section get the JS edit overlay for section 0
* Page without lead section but with other sections gets the JS overlay
editor for section 1
* Pages that didn't run through MobileFormatter don't modify the edit
link and just link to the fallback editor (useful for Template pages
at this moment)
Bug: T172948
Change-Id: Icee96e12f62ec13a1cbd3169c687fa4b3af70754
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
Do not allow editing via JavaScript on non-wikitext content models
For these pages ?action=edit will be used
Bug: T173800
Change-Id: Ic62a0c1397ab8a6a59e5382c2999b63b3c60a19f
The main page in the Minerva skin is not editable so this code is
just cruft. T89559 no longer applies.
Change-Id: Ifcd30be0d4e328b056cc7fcfb714c9783b62c913
The config variable `MFNamespacesWithoutCollapsibleSections` controls
namespaces where section collapsing is disabled. In those namespaces
page is not divided into sections marked with `.mf-section-X` classes.
If that's the case the edit button edits the first section, which is
the whole page.
Bug: T157995
Change-Id: I3ec353575529c1fb11a33fc35c9886cf232e327f
The `getLeadSectionElement` method of `Page` may return a `null`. Do
not try to access the `text` method of the returned object if it's
`null`.
Bug: T157995
Change-Id: Ia752fa52d1b09a307dc4b803a6b7e1bdcfe7f867
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