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
We want to be able to measure how backend performance changes
when we switch from RESTbase to calling Parsoid directly.
We expect to see a performance boost, in particular for
html/to/wikitext, since we avoid the network overhead.
Since we will make the switch by wiki, we need to be able to compare
the metric before vs. after for a single wiki. So, this adds the
wiki ID as a prefix to all existing metrics. Once fully rolled out,
we should get rid of the wiki prefix.
We will need to update the dashboard found at this url:
https://grafana.wikimedia.org/d/000000249/edit-stash?orgId=1
Change-Id: Iac9070b27f4b0d25b0e31c9fad38abc08c433a28
When using DirectParsoidClient, switching should be lossless.
Depends-On: I86c611fa0b717ef619e5ffe550b6c2be49a28c99
Change-Id: Ie30ccbc8c12ce48f481b9f727f28e60d21ee37b9
When receiving HTML from a VE session, process it with the same kind of
ParsoidClient that was originally used to generate the HTML. If we were
to use a different implementation, the ETag wouldn't match, so we would
fail to find the stashed data-parsoid map, and the edit would fail.
Bug: T320704
Change-Id: I3b73431fccacecb4ad88b82f8f5675b1042e03ce
AutoConfig was used to set VE to call internal REST API endpoints exposed by the parsoid extension.
With DirectParsoidClient available, this is no longer needed.
NOTE: this causes all wikis that do not have a RESTbase backend
configured to start using DirectParsoidClient. This is true in
particular for officewiki and labswiki.
Bug: T320704
Change-Id: Ia4c6184dd75a653c3202ea160b6605335f36f6eb
Part of my secret plan to delete ApiParsoidTrait.
* Inject RevisionLookup into ApiVisualEditor
* Use RevisionLookup::getRevisionById instead of ApiParsoidTrait::getValidRevision
* Use RevisionLookup::getRevisionByTitle instead of ApiParsoidTrait::getLatestRevision
* Use standard MediaWiki error messages
* Delete unused ApiParsoidTrait::getValidRevision
* Delete unused ApiParsoidTrait::getLatestRevision
Depends-On: I7244ee4916fb011fad5faa1d9f837e83f6ac2dc1
Change-Id: I8089c0c516d9dba52e931a0a80740c0361216dbd
Setting the config var then loading mediawiki.action.view.postEdit
will already trigger the notification code, so we can remove this
duplicated code now.
Bug: T240041
Change-Id: If0d1aa4e734dab7cca168e78216f229b9924bab7
All code that used to live in ParsoidHelper has been moved to
VisualEditorParsoidClientFactory and VRSParsoidClient.
ParsoidHelper is no longer needed.
Change-Id: I21c4a8cd86f8d085e75a601ed6d2509dedd75d42
New changes:
082621501 Localisation updates from https://translatewiki.net.
98fc36e64 Localisation updates from https://translatewiki.net.
7cbaefc97 build: Update language lists to add 'tk'
a9a3cec89 Localisation updates from https://translatewiki.net.
13dd7a6c2 Pass empty string to unused argument of pushState/replaceState
065f72ea3 Localisation updates from https://translatewiki.net.
71ca140b7 Add missing ARIA labels to fields in VE maps dialog
Local changes:
* Add new dimension fields labels
Bug: T307993
Change-Id: Iab27f24627e80d34a8f1c201380492c88d2ab758
* "visualeditor-dialog-transclusion-options" was added in 2013 via
I3bcf924. It was used as the label for multiple FieldsetLayouts in
ve.ui.MWTransclusionDialog.js. In 2013 a larger rewrite was done via
I51e74b3. The FieldsetLayouts with this message don't exist any more
since then.
* "visualeditor-dialogbutton-meta-tooltip" was added in 2013 via
Ibf63329. It was used as the button label in
ve.ui.MWMetaButtonTool.js. This file was deleted in 2013 via
I3bb61d5. That patch added a new message "visualeditor-meta-tool"
that says the same as the old message". The old message is unused
since then.
* "visualeditor-savedialog-label-create" is a new key for a message
that existed before. The old key was "visualeditor-create-page". It
was used in ve.init.mw.ViewPageTarget.js as a button label. This
usage was removed in 2012 via I5f59482. The renamed message was
never used.
* "visualeditor-savedialog-label-report" was added in 2012 via
I5f59482. It was used as a button label in
ve.init.mw.ViewPageTarget.js. The feature was removed in 2013 with
no replacement, see I8a5e0ab. Some of the messages that became
unused got removed in the same patch, but not all of them.
* "visualeditor-savedialog-warning-dirty" was added in 2013 via
I3daf631. It was used for a confirmation popup in
ve.init.mw.ViewPageTarget.js. I8c0db01 moved the code to
ve.ui.MWSaveDialog.js. In 2015 the confirmation popup was removed
with no replacement, see I9091534.
Change-Id: Iae7961612d5b5be9cdd294a67a9ce40ee8cb9b4d
The message "visualeditor-dialog-template-insert" was added in 2021
via I5da4003. It was used as a dialog title in
ve.ui.MWTemplateDialog.js. In 2021 we introduced three new messages
via Ib9b76ca. One of them still says the same as the old message, but
got a new key assigned. It appears like we forgot to remove the old
message.
Change-Id: Ie3854114197e3f36b48bb7efd8dd96a1f9651198
The need for something like this was anticipated in
I2bf43c7e83283f43e047229eb53c244918fcbb0c.
As of version 2.5.0 of Parsoid's output, if alternate text is missing
for an image but a caption is present and image isn't displaying the
caption (ie. it isn't a thumb or frame), then the text content of the
caption will be set as the alt attribute. Parsoid will then drop the
alt attribute when serializing if it matches the caption text, since
it's unnecessary.
However, if the caption is modified and the alt text isn't, the alt will
be serialized. This is likely to be unexpected to editor. They may
have missed that the both the caption and alt are populated in VE and
only edited one place.
Since all of the above is happening only for images where the caption
isn't visible, it doesn't appear to be a much used feature since, at
least for inline images, the experience of caption editing was already
less than optimal.
However, because of a quirk in how galleries are rendered in Parsoid,
this affects gallery caption editing, which is visible and presumably
used more often. See T268250 for a discussion on an improved gallery
structure. But for now, gallery images are effectively inline and set
the alternate text, thus subject to the above.
Here we add a checkbox so that the default is to ignore the alt if it's
the same as the caption. And only make use of it if it differed
originally or was explicitly unchecked to modify.
Bug: T311677
Change-Id: Idf297d8a98995971c5835b0cea56c3317a3626e2
visualeditor-dialog-media-thumbdimensions
Added in 2014 via I7b4d019, but never used, as far as I can tell.
visualeditor-dialog-media-searchselect
Unused since I65aed34 from 2015.
visualeditor-dialog-meta-settings-displaytitle-enable
The feature was removed in 2017 via I46db6b1.
This patch also marks some other messages as being used via comments.
Change-Id: Ia10b6a5c0ea83dd670e2cfdbaa768c41fc0cf392
Should be a noop. Also moving one rule further up to the set of
similar selectors.
Removing one rule that was disabled for some time now.
Optimizations follow.
Change-Id: I8da70a52c13afd8ac1c3ff43bae63a203c3bf86a
Gets rid of some unused behaviors that we've already disconnected.
Brings the remaining styling into VE files.
Bug: T312524
Change-Id: Ie94472019ba41124831621c45713861297219594
With related changes to the DOM in the new Vector skin, most skin
styles are no longer necessary for Vector 2022.
This patch also fixes an issue with the font-size of the toolbar
when $wgVectorTitleAboveTabs = true.
Bug: T310197
Depends-On: Idae6755c90eacaab1a9daa88c6e28850d427810c
Change-Id: I6776f08b24f83cf4daeef70bfdeb73dfeafc785a
Remove WikiFilePage instance check, isLocal exists also on WikiPage and
newFromTitle never returns null
Bug: T297688
Change-Id: I925771a84afe4402fdb0f201c0b562c7028c44b2
Includes adding a less file for minerva layout rules. To make best
use of the less shortcuts and avoid duplication, some selectors
have been slightly changed. Outcome should still be identical.
Change-Id: I92179ecf6045c938cace0e7e809b7ad4cf035727
This was added via I3b792ff. It's about the old sidebar which isn't
accessible any more.
Bug: T311069
Change-Id: I29919285255a84bd58aa06ee1b2816d25a8112a6
Web team plans to deprecate the SkinTemplateNavigation
and SkinTemplateNavigation::SpecialPage hook. The
Universal hook can cater for both cases.
Bug: T255319
Change-Id: Ifad4918cf5d3d6b3f4d7abeb48d27fc5a46764b3
Both messages are unused since I1e93c3a. As I understand the patch
what it did was replacing two plain text input fields with WYSIWYG
editors. These don't use placeholders.
Change-Id: Ia4ac7d7c9ae86dedd02040a81300a9722e94d1b7
All 4 messages are introduced via I15fbd1e in January 2014.
The "none" message is unused since Iddd78c9 from February 2014. It
was replaced with a checkbox with a different label.
The other 3 messages are unused since I7057997 from February 2015.
A more generic widget is used since then. It uses messages that are
named "visualeditor-align-widget-center" and so on.
Change-Id: I7ad4772cb4fdec7e478cee23dccd5ae600834caf
The outline item is only used by the new sidebar for the move and
remove flags it seems.
Bug: T310859
Change-Id: Ia74e5b0e3dbf81e745137b181ed34a4d48dac42c
Parameters do not have an "OutlineItem" anymore so the code for
that was completely removed.
Bug: T310859
Change-Id: Ie57f462b8fda4505b99ee5bc9d788908d18d9c64
I suggest this as the first, most minimal step. This allows us to
slowly remove all the code that uses this flag without breaking
anything on wikis where the feature flag is not enabled. In other
words: this patch turns all code that expects this flag to be false
into dead code. We can then slowly remove said dead code.
Bug: T289049
Change-Id: I523978f7ca72dfc1cc7b64741e2f4f20ed3adfb7
The message 'visualeditor-error-invalidresponse' doesn't exist,
it has been removed in 5f1c68945d.
MediaWiki API methods can return an error message for this case.
The message 'visualeditor-saveerror' is not used anywhere else.
Change-Id: I3f5617b94135fa602b714aafc0eb6b16f2cd77df
The API error messages already explain everything well enough,
we pass them directly into a very similar popup in #loadFail.
This message is older than the pretty API error responses,
and didn't work with them well.
Bug: T306763
Change-Id: Ie0d8dc24c967cce02579d6c0539a55ba14372f84
The testing phase for the implemented features is finished. So the
feedback link for the project can be removed.
Also added missing documentation for a message key used.
Bug: T307188
Change-Id: I2e2e4ff58d2bacda5ae841bcf6f418e786a3967e
Following the MediaWiki changes from T301203, we should use
the messages 'skin-view-edit' and 'skin-view-create' instead
of 'edit' and 'create'.
(Also remove redundant definitions in extension.json, we load
all messages listed in 'VisualEditorTabMessages'.)
Bug: T310529
Change-Id: If055fa2a4dc009be869425e6c2262c9b62056179
These messages are quite advanced, and they are strongly needed
only in a handful of languages. To make VE localization easier
for volunteer translators, they should be in a separate file,
clearly labeled and with a different priority.
I'll make a separate patch for corresponding translatewiki
configuration.
Change-Id: I64a70b9b4756efea7dfa7cf3cb4dbe9251b73211
Extensions using Phan need to be updated simultaneously with core due
to T308443.
Bug: T308718
Depends-On: Id08a220e1d6085e2b33f3f6c9d0e3935a4204659
Change-Id: I9a20c25b9cea26e1fbe0f0434a0800632e9e0fc7
Introduced in I1002b9706, but in that same commit we created a
custom message that didn't include the ':' after 'Subject:'.
Change-Id: I28fa059821f740820875c084758d4aa7d1d23b03
Will be removed when parameters are added. Needs different margins
depending on beeing shown in the single transclusion mode without
header or on multiple transclusions.
Bug: T300710
Change-Id: Ieb95d7276aa4d4b0fcbb74f87ab734e4a393dc21
New changes:
7f80d75ce Context: Move copy/delete buttons to MobileActionsContextItem
2be9610ec Move close button from contextItem to context
Bug: T304233
Change-Id: I49ce23f31afd003cf2dd6a525aeabde6332eb9a1
The Apex skin (not to be confused with the Apex OOUI theme)
is abandonware. Keeping files around that pretend to support it
is just maintenance debt.
Change-Id: I176e4e25307ab8ca4166a6e9b55e3bec4f058d05
This allows nonexistent translated pages to fall back to the
corresponding page in a suitable language.
Bug: T299544
Change-Id: I43f461e9f595c364ecdaf2faccbd580fc0df6799
New changes:
a50d13e3b Localisation updates from https://translatewiki.net.
a0c3637de Localisation updates from https://translatewiki.net.
17daebc83 ve.ce.Surface test: Add test for special image paste handling codepath
f4b688e1b Always use clipboard paste data if "important elements" have been dropped
f0e5c16c9 afterPaste: Add 'figure' to importantElement list
abd5894ef Show copy button when selecting focusable nodes on mobile
Local changes:
* Load new clipboard messages
Bug: T101113
Change-Id: I05f9dc850d3cac740916d26a0c2b0d390e47fbb1
Passing the useskin parameter ensures that output hooks are run
on the new page HTML. This already happens because we request
the 'subtitle' and 'categorieshtml' props which also trigger
skin mode (along with the 'headhtml' which we don't request).
However it is better for us to be explicit that we want the rendering
for a specific skin, rather than relying on these props to trigger
the correct mode.
Also pass through mobileformat param, which is added by a hook
in MobileFrontend.
Change-Id: I1cd2c5c5c13ae0b90cc32e441b453532343a434a
This option was added in 0.43.0. Now that the close button is handled,
the remaining functionality (store a flag in local storage, and fixing
link targets) doesn't really justify a separate class, especially as
it's currently only used once.
Change-Id: I0fd81cadccc077dbf957302f9f41409c5a1f4f20
Previous attempt in 005a8d24ef,
reverted in 3c1d167b33.
The deduplicateStyles() function lacked a check for fosterable
positions, which caused T299767. This is now fixed.
Also added tests.
Bug: T287675
Bug: T299251
Change-Id: I0d22be9b66d26d09373cee63dd6ce52c1659e62d
New changes:
1da4a683b DiffElement/VisualDiff: Use node's root to determine the document model
950d56d09 DiffElement: Add core test for internal list diff
658a420a1 DiffElement: Simplify internal list rendering using list item value attribute
7c6e1b91f Fix list diffs
Local changes:
* Add new test file
Bug: T198529
Change-Id: If4ca99fa4532b33f164e298b53cfa1e202035015
The only places where this dialog is used now will have the same
button labels and format. We want to use "normal" destructive here
so no additional "primary" styling.
It seems that the focus on the action will only be applied
automatically when it is primary. So extra code is needed.
Bug: T299647
Change-Id: Ib5250b79e85d27ea197b83c6380863d0749e5d89
Reuse the back button confirmation dialog for the close button. The
condition is slightly different: need confirmation if there are any
manually-entered values for any parameter AND the user has edited
the template in this session.
The "reset" action was synthetic, only used internally and not
connected to buttons or menus. Canonically, action='' is the close
action for OOUI.
Bug: T297792
Change-Id: I4ff644c7ab24ed9ba1a4c27d762563c5d6771cfc
Currently, the insert template dialog includes a back button in the
upper corner. Confirmation of abandoning unsaved changes was
accomplished in an overlay panel. This patch rewrites as a dialog
and updates the on-screen text.
Bug: T297792
Change-Id: Ifa2ff97c9284609ee2a784f455789c56a762ba50