This JS code duplicates the PHP implementation in VisualEditorHooks
in order to allow changes to the configuration of edit tabs
(e.g. wgVisualEditorUseSingleEditTab and wgVisualEditorTabPosition)
to take effect for logged-out users immediately, without waiting
for the HTML caches to clear.
It was worthwhile 10 years ago when VisualEditor was being rolled out
to new wikis or reconfigured daily, but it is not today when we hardly
ever change these settings.
It proved difficult to maintain as the skins change, it has several
known bugs (T292125, T306807, T346944), and probably several more
unknown ones, given that it hasn't been tested in about 10 years.
Let's remove it and save ourselves the headache. (Also also reduce the
amount of code we ship on all page views by almost a kilobyte.)
Bug: T292125
Bug: T306807
Bug: T346944
Change-Id: Ib82f5402872a2429445463a1e1ef92806d3326f9
This solves a conflict with RevisionSlider, in which navigating
between diffs caused inconsistent rendering depending on whether the
user first entered the page through a diff with or without a
text-slot change. After this change, the ResourceLoader modules are
always available.
Module initialization seems to be safe to run on non-text diff pages.
Bug: T344596
Change-Id: I936d45a132dee3a044a52e22c4751c0538a5bcdc
This creates a message called `editcheck-config.json` which will be
loaded and sent to the `modules/editcheck/config.json` packageFile.
Bug: T330112
Change-Id: Idc58ddf1045fcc0491701a739f3778c8cf4dd955
Compare to the list of module-styles loaded in
onTextSlotDiffRendererTablePrefix() hook.
This doesn't do anything now but may be needed for T344596.
Change-Id: I16b7170467fc03365ae35c48237fe0489aed8423
Abortable promises are definitely among my least favorite things.
It takes all of this bookkeeping to make .abort() work consistently
(so that it always aborts a request if one is in flight, and always
causes the final promise to be rejected even if we didn't start a
request yet or it has already finished). But, if you squint and ignore
every line with the word "abort", it's like a normal promise chain.
Depends-On: Iec8a15dadd595bed0f7e54f907fbb8e192b45cf3
Bug: T331397
Change-Id: I67309c79e6d211d69630fe89cbf5402f8fbd350c
- The code in the hook handler is more related to the hook and the
structure of the $links array as to the special page.
- Loading another class to process the hook is not necessary.
- Allows better migration to new hook handlers (special page classes and
hook handler should be separated).
- Replace SpecialCollabPad::getSubPage with
SpecialPageFactory::resolveAlias.
- The local url to Special:CollabPad is now in the content language
(only relevant for non-english wikis).
Change-Id: I82985a8ba129b4e336cee337af31452e804090b3
This method was only called, and the message was only shown, when
retrying after the first 'badtoken' error and refreshing the token
fails again.
If this happens, it usually indicates some terrible problem with
the wiki, and it is not something that can be fixed by logging in
again (or anything else the user can do).
Let the default API error message appear ("Invalid CSRF token.").
While not very helpful to the user, it should be more helpful to
the site administrator trying to unbreak their wiki.
Remove the "visualeditor-savedialog-identify-trylogin" message.
Keep "visualeditor-savedialog-error-badtoken", which is re-used
in another error message. I'll fix that separately.
Change-Id: Ib680218bce5ae38aa52d7d941218a6410ab7e09e
New changes:
88fe7eef7 Localisation updates from https://translatewiki.net.
54d9ce473 Localisation updates from https://translatewiki.net.
ddb809ba1 Implement PersistentContextItems
7fd68cde3 Add a "review mode" to the surface view
850d0655c Localisation updates from https://translatewiki.net.
d90ae3a9c Localisation updates from https://translatewiki.net.
Change-Id: I4439a413045125972d9756a5a6f149d7abf82f82
New changes:
4ac9b4290 Localisation updates from https://translatewiki.net.
5db1e6972 Localisation updates from https://translatewiki.net.
439b29f3e PreviewElement: Remove slugs and nails using JS instead of CSS
Bug: T341901
Change-Id: I5da36fe06bd6631f17172029261b1c18daa72bf4
New changes:
4ca24a453 Fix ContextItem documentation
9135b868c ve.ce.Surface: Implement hasNativeCursorSelection
953ffb066 Mobile demo: Use 16px font ssize for global overlays as well
44f347a6b Provide alternate keyboard shortcut for toolbar search for Firefox
245923176 CompletionWidget: Add isolateInput mode
Bug: T341603
Change-Id: Iafedee8fc08fde5dbe82f8e1cc35162d5954c5a7
This follows the event of VE no longer using RESTBase anything. All
actions related to stashing and Parsoid and now handled in MW core.
Bug: T339227
Change-Id: I50b20ed5abb721a6ac8987cac37a6f395a4816dc
The popup contains three buttons, one of which already exists
in core as a tool. By converting them all to tools we can reduce
some duplication, and better integrate with other features
that use the tool factory, such as HelpCompletionAction.
Bug: T339153
Change-Id: I81d217bc1ab9a1a6a9bf7c7ad588c2a3216b10db
Setting `$wgVisualEditorUnifiedPreference = true` makes the VE enable
preference appear consistently on the preferences page, while still
being backed internally by the old 'visualeditor-enable' and
'visualeditor-betatempdisable' preferences.
(It effectively overrides `$wgVisualEditorEnableBetaFeature`, which
needs to remain unchanged to use the values from the right preference.)
Bug: T335056
Change-Id: Iad710a769c7176c4673c475d540dff2b7782e159
Previously, this code relied on 'visualeditor-enable' being set to '1'
when VE was opt-out (so not using that preference). That default does
not make sense for a beta feature (which uses that preference), so WMF
config was overriding it to 0 when the beta feature mode was wanted.
Instead of making assumptions about the default values of preferences
that depend on whether beta feature mode is enabled, just check the
beta feature config.
I also added and updated comments documenting this preference.
Previously I never really understood what it was for, and I think
I figured it out now.
Bug: T340696
Change-Id: I45eef42939149ff5be63bf299c48ef70ee535e76
After the demise of RESTBase we are always able to switch from
wikitext to visual mode with changes, and we no longer need to
support these two poor experiences.
Bug: T339871
Bug: T339872
Change-Id: I2be4068447b21e16c87db0e56d6422ea64ba4708
Undo some changes from 95454e710f1b619f7c538bc1dc88f238409719ca,
as this functionality is now provided by the core code.
Depends-On: I1c9020b2efb2785279f5c09539a49208a310ccf7
Depends-On: Ifeffcf214719f0d5c1371dc7d51a410fb313c978
Bug: T338003
Change-Id: I90a618897699c844f9c558bbeb4d1563f8050fe3
There are no occurrences of the error message in our error logging
data, so it most likely can never happen.
https://superset.wikimedia.org/superset/sqllab/
```
select count(*)
from editattemptstep
where event.save_failure_message = 'visualeditor-docserver'
```
Change-Id: I8172564057418283468c657cbc6d42ce8ddb35f4
Note that it is still disabled by default in user options.
For WMF environments this value is set explicitly for all wikis, so
should result in no change.
Change-Id: I4629cd433107a3413933b4ea19c844dd869a2eb0
Use the new hook to add the diff-mode selector to the area directly before
the diff table.
Also toggles the new inline-diff legend, when the initial diff-type is 'inline'.
Depends-On: I2a3c67bcfa47313dee597e602a62073e4e298cd2
Bug: T324759
Change-Id: I1584a84b3caea9eb142afba976c6ff47650c3832
Also supporting changes to support the new HelpCompletionAction,
including adding a preference to disable it if required.
New changes:
985b553cc Localisation updates from https://translatewiki.net.
aa26e27dc Localisation updates from https://translatewiki.net.
4cdc753ab Update OOUI to v0.47.0
bfc96a7ee Completions: always abandon if the first input is a space
616a6458f Fuzzy command bar
92b6525a2 Tweak the fuzzy command bar's behavior
fd2f048e4 Fuzzy bar: change how command groups are generated
Change-Id: Ic77b8822baecf5ad1ab466d94df29bb945172b55
Use MediaWiki core helpers to provide intro messages (including edit
notices), initial page content, and CSS classes for the edit area.
The following intro messages were previously unimplemented,
and will be shown now:
* 'sharedupload-desc-create'
* 'sharedupload-desc-edit'
The following intro messages were previously unimplemented,
but they only apply to pages where VE should never be available,
and will be shown now when editing those pages with 2017WTE:
* 'code-editing-intro'
* 'talkpagetext'
The following intro messages were previously unimplemented,
and are now explicitly skipped:
* 'editpage-head-copy-warn'
The following intro messages were previously unimplemented,
but they only apply to pages where neither VE nor 2017WTE should
ever be available:
* 'userinvalidconfigtitle'
* 'usercssyoucanpreview'
* 'userjsonyoucanpreview'
* 'userjsyoucanpreview'
Depends-On: If0b05710cb52a977bf4e85947d72d68683a0a29e
Bug: T201613
Change-Id: If26e39e383b983f7ee834ed6dd73b80e0545b068
Follows-up Ia6cdb85d33d2b3e0e (c895c60907) from 2018. Was added to
support Chrome <= 64 within WMF CI at the time.
Change-Id: I870de7d148395926d60d8c360f8cae19ac7c4573
As temporary users will not have access to user preferences (T330815),
use cookies or localStorage to save them, like we already do for
logged-out users.
Also add some comments to point out where we intentionally distinguish
logged-out and temp users.
Bug: T332435
Change-Id: Ic83dd8bc8bc107f603a9b0340bd9e2bcaad8ff5a
Visual diffs are always enabled on history pages, there is no
long a need for this to be configurable.
Change-Id: I9cef558b2b9d32bc86c47f6a6095270220d036db
Use the new hook to add the diff-mode selector to the area directly before
the diff table.
Also toggles the new inline-diff legend, when the initial diff-type is 'inline'.
Depends-On: I6de30bf79eb5ac262285951792782b870d075e00
Bug: T324759
Change-Id: Ifc133856dd793693c3a2722a7b1319dfe74555a2
New changes:
c239ab1fb Localisation updates from https://translatewiki.net.
0052cc2a1 Localisation updates from https://translatewiki.net.
47be93405 Localisation updates from https://translatewiki.net.
da198ce3a [BREAKING CHANGE] Drop support for ES5
5521054ce SupportCheck: Change ES5 test to ES6
4a38732ed [DEPRECATING CHANGE]: ve.init.Platform: Drop isInternetExplorer/isEdge
85a6560b0 ve.ce.Surface: Remove fallback for selectionchange event
0f6b9d65a ve.ce.Surface: Remove IE11 hack for iframe focus
2e2a51eb3 [DEPRECATING CHANGE] Drop ve.normalizeNode
c1e09cbb8 [DEPRECATING CHANGE] Drop IE11 DOM parsing hacks
28bd579f9 ve.resolveAttributes: Drop IE11 try/catch
e1db3af5b [DEPRECATING CHANGE] Drop ve.supportsIntl
3d317501e [DEPRECATING CHANGE] Drop ve.supportsSplice
58561f036 Localisation updates from https://translatewiki.net.
Change-Id: I7e13fb5826da2c1ded53520f40ff0470f34361ad
* Use the new mw.track() handlers from WikimediaEvents
* Ensure that 'integration' and 'mode' are set on init
events, since they're not guessed in the handler any more
* Remove the setting of 'editingStatsId' tracking parameter,
now happens in WikimediaEvents by setting an API AJAX option
* Replace ve.track with mw.track in VE-MW, so that we don't have
to copy the events manually here and in other extensions
This must be merged together with WikimediaEvents change
Iace4d53a972396ca5b8713000570cc47c9986034 (but we can't use
Depends-On, because CI requires code here to be removed first).
Bug: T332438
Change-Id: I0ef0a96aafdf89a4ebe32131a85b18c25744bb2c
Peel off some layers, remove some unused computation,
remove code from ve.init.mw.trackSubscriber.js (which
is to be removed in T332438).
Change-Id: I4073b9a2a4b2af06f30e603a9d2a1968203f3b6d
VisualEditor already checks inside onBeforePageDisplay hook for
whether it is in the mobile site. The rest of the checks rely
on OO.ui.isMobile which operates using wgMFMode which is a configuration
variable added explictly by MobileFrontend so not affected by this change.
I verified that mw.loader.getState('ext.visualEditor.desktopArticleTarget.noscript')
returns 'ready' on desktop, but 'registered' on mobile site
Bug: T328497
Bug: T236944
Change-Id: Iea1135c22c750c47f2e34c7ae1fd2e828bd92cc7
These haven't been used for a while, and we usually enable experimental
features via BetaFeatures these days.
Change-Id: Iec3a7da3cc962d8ac9416b508780fcdc3ca58d3e
VRS should no longer be needed to communicate with RESTbase.
The VisualEditorDefaultParsoidClient setting is retained for backwards
compatibility.
Change-Id: I1e7cdaa61d3d5b075b5551844d8b0293092c99ed
The only icon we use from 'oojs-ui.styles.icons-wikimedia'
is the CC licenses logo.
Recently in I6217692e98088814c7a33bbc7ef8174622e03f25 more
Wikimedia project logos were added to that pack, and some
of them are positively huge. They may be improved in T328492,
but we're not using them anyway, so it makes sense to me
to use a custom icon pack here.
This reduces the download size for opening the editor for
the first time (uncached) by around 500 KB.
Change-Id: Ibe8a9ce9e4f1ded28fc9fd7e4ee41d5823123ceb
Remove dependencies (except a single one that we actually need)
and some config that allowed it to be used in doc comments.
Bug: T325249
Change-Id: I0db6e4ab1c025ac3868d2dc886c13a09d91f8086
New changes:
4355d697a Replace ListStorage with ConflictableStorage
978061f86 Update SafeStorage and ConflictableStorage with expiry functionality
79019ed88 ve.dm.Surface: Support storage expiry
Local changes:
* Pull through conflictable storage
Bug: T218663
Change-Id: I36e49c01e9f2ddb7d362d539b72a4beca925bcb7
When tests run, the target filter isn't applied, which is why tests
can excercise both mobile-only and desktop-only code from the same
module. The 'targets' property was added here only to satisfy an
overly strict lint check (PHPUnit ResourcesTest), which is fixed
in MediaWiki as of Ia062ff2d8.
Depends-On: Ia062ff2d8b8732b0d3498c1a614bbf6a3e3a7ddb
Change-Id: Ia00f3b987de89b8b5789d1ced125ed8a57b079df
Adding the polyfill as dependency to everything using mediawiki.Uri,
so that we can change the code in separate commits without thinking
about this.
Bug: T325249
Change-Id: I8a7d2e6c7f98ed6187a85a88f2b4a0a4a5ecfc56
Use distinct messages for section heading, button label and input
aria-label, to allow a potentially better localization.
Bug: T304121
Change-Id: I3e3b06a035e2f11f5f32face789b934e22916e49
Setting to desktop as it has dependency
ext.visualEditor.desktopArticleTarget.init
which is a desktop only module
Bug: T127268
Change-Id: I5083cb6ccf9ab918a90c41afc6644fc839b8950e
I'd like to change the default targets value for ResourceLoader.
Doing that flags that VisualEditor has a few modules that should
be explicitly defined rather than relying on the default value
here.
Bug: T127268
Change-Id: I5bc4a24bc00dc338b113332a911c67241d139dfb
New changes:
e8c13e337 Localisation updates from https://translatewiki.net.
e59d14a98 Localisation updates from https://translatewiki.net.
347e09eac Localisation updates from https://translatewiki.net.
8592cdc07 Make use of native .map() in ve.ui.LanguageSearchWidget
6412add28 Localisation updates from https://translatewiki.net.
921892af2 Localisation updates from https://translatewiki.net.
a8aa6b475 Localisation updates from https://translatewiki.net.
69e6e5473 Localisation updates from https://translatewiki.net.
8ce65a801 Add test for use of ve.sanitize (DOMPurify) in external paste handler
e11290da1 Add unit tests for ve.sanitize
d248b851a Upgrade DOMPurify to 2.4.1
57eeb8b87 Sanitize href attribute in LinkContextItem and LinkAnnotation
099b95023 Localisation updates from https://translatewiki.net.
Local changes:
* Add ve.sanitize.test.js to test module
Bug: T322704
Change-Id: Ibb34f3cff9e9d891d6d9fd37151a704a67535ab0