Commit graph

13593 commits

Author SHA1 Message Date
Thiemo Kreuz d3d3e1cf75 Move "index from redirect" logic up in template search widget
This separates the two steps:
1. See if items in the list of `origPages` miss their `.index`
   property, and add it if possible.
2. Later code doesn't need to care about redirects any more.

Note that `origPages` is not used for anything else. And even if,
it's not wrong to have the index for each search result on both the
redirect and the redirect target.

Change-Id: I12135f0430c944b4e33c49ece7779d7c3bb6c211
2022-04-20 14:50:36 +02:00
Thiemo Kreuz e24c8ecd2d Fix misleading variable name in TemplateTitleInputWidget
This is not a pageid, but a simple numeric index in an array. Luckily
it doesn't make a practical difference for this particluar way of
iterating something.

Change-Id: I7ec9ace00d4fba7adde17670058a0365b30f5617
2022-04-19 14:40:00 +00:00
Thiemo Kreuz af2779fc06 Fix API response default in TemplateTitleInputWidget
The result is guaranteed to be in formatversion=2, where the list of
pages is an array, not an object.

Change-Id: Ic73a68c3e249a70108a6a19a89f4ff6c475794ed
2022-04-19 13:35:27 +02:00
jenkins-bot d1e777afcd Merge "Simplify ve-mw/init/styles LESS files" 2022-04-08 22:37:10 +00:00
jenkins-bot 616fa37de4 Merge "Fill template search results with prefix matches when Cirrus fails" 2022-04-08 11:57:23 +00:00
jenkins-bot 82051a35d3 Merge "DesktopArticleTarget.init: Wait for deactivating to finish before activating" 2022-04-08 08:49:55 +00:00
Bartosz Dziewoński c8b0f17ce6 Store copyright message in auto-save data
Bug: T305225
Change-Id: Ie70587393715a461509dac6192d033a05c894f96
2022-04-07 23:03:37 +00:00
Bartosz Dziewoński 37bb0075db Add tests for the expected properties in API result and auto-save
The goal is to have some tests fail if a new property is added to the
API result, but it's not stored in auto-save data.

Bug: T305225
Change-Id: I9ac328c71c616a8f33e1cfb39431cd9a665adafc
2022-04-08 01:02:53 +02:00
Bartosz Dziewoński bda0f44666 DesktopArticleTarget.init: Wait for deactivating to finish before activating
Bug: T305449
Change-Id: Ic2170450c851a10d01ef88c0b1de11d1d573acea
2022-04-07 23:26:58 +02:00
jenkins-bot be8625576a Merge "Remove "delete" button from link node desktop context" 2022-04-01 15:44:23 +00:00
jenkins-bot d03f54bc56 Merge "Use new config option signature when building sequences" 2022-04-01 15:44:20 +00:00
jenkins-bot 9ae30574e1 Merge "Follow-up I0eaeb987: Sync temp wikitext editor before activating target" 2022-04-01 15:44:12 +00:00
jenkins-bot 5fef22001d Merge "Full fallback to prefixsearch when Cirrus returns nothing" 2022-04-01 13:24:51 +00:00
jenkins-bot 2daec32db2 Merge "Use boolean RegExp.test() instead of .match() where possible" 2022-03-31 21:20:44 +00:00
Ed Sanders 5fa2373f15 Follow-up I0eaeb987: Sync temp wikitext editor before activating target
The refactor in I0eaeb987 broke this feature by moving
the call that modifies the response object to after it
is passed to the target.

Change-Id: Id98c1ccabde478540af34ed3356f319ae336590a
2022-03-31 22:01:19 +01:00
Bartosz Dziewoński 130f3e80fc Update VE core submodule to master (38b8213b5)
New changes:
91a762803 ve.dm.ModelRegistry: Disallow unknown types on tag and tag+func matches
8575e8ad8 PreviewElement: Document event
d24f96874 Allow unknown types for ve.dm.AlienMetaItem
106354b38 Follow-up I534ce003d: Fix height restriction calculation of desktop context

Local changes:
* Allow unknown types for ve.dm.MWExternalLinkAnnotation, it is meant
  to match all <a> tags and handles unknown types in toDataElement()

Depends-On: I785be75f389136769084a8e14832a09e3a519fc1
Bug: T303298
Bug: T304847
Change-Id: I75d1e82a43f5f96a9093cd334c524527918efaa5
2022-03-31 13:01:51 +02:00
Ed Sanders 6068cec0e8 Remove "delete" button from link node desktop context
This was added to make the context a bit more consistent
with the regular link inspector, however with I2fec865570
we making these delete buttons strictly mobile only.

Change-Id: I52936919e332aee851ccd11a862367c97eb41b39
2022-03-30 17:43:02 +01:00
Thiemo Kreuz 912bc34f62 Fill template search results with prefix matches when Cirrus fails
This code is optimized for the 2 most relevant use cases:

1. When Cirrus finds 10 results, we still want to search for the top 1
prefix match. This is critical for templates like !!. This will appear
at the top. unshiftPages() makes sure the limit of 10 is enforced.

2. When Cirrus fails to find anything, we search for 10 prefix matches
and use these instead.

The code can also handle everything in between. For example, when
Cirrus finds 5 results, we search for 5 more prefix matches and add
them when Cirrus missed them. The total number in the end might be 5 to
10 depending on the number of duplicates. This is intentional. Why?
Let's say we always search for 10 prefix matches and add them to the
top when Cirrus missed them. This might remove _all_ Cirrus results.
This shouldn't happen. This extra code is only to fill in glaring gaps,
not to replace Cirrus. 5 results are fine.

Bug: T303524
Change-Id: Ib0471795124c0c7001b6901edaf8e7b380e426b1
2022-03-29 13:18:12 +02:00
Thiemo Kreuz 6bbf7d1907 Full fallback to prefixsearch when Cirrus returns nothing
There is already some kind of "fallback" to prefixsearch. We always
check if the top-1 prefixsearch result is part of the result set.
Because of this the current worst-case scenario is that only this
1 result is shown.

This patch implements a full fallback to prefixsearch. But only when
there are 0 CirrusSearch results. Further tuning might be done in
later patches.

Bug: T304925
Change-Id: I1927eedad60c9b9ac2021481a85376c08ccf6fdb
2022-03-29 13:17:05 +02:00
jenkins-bot 2913158b35 Merge "Remove delete button from template context" 2022-03-26 17:22:40 +00:00
Thiemo Kreuz c8af207681 Use boolean RegExp.test() instead of .match() where possible
.test() is the dedicated syntax for a boolean "does match? yes/no?"
check. .match() returns an array of matches, or null. This is just not
needed in these situations.

Change-Id: Ibb996ab843d1a6c7d7af98d6a112990665d543b2
2022-03-24 11:04:43 +01:00
Ed Sanders be2a1ccf62 Respect useeditwarning user option when tearing down target
Also invert logic and rename variables to make tests in tryTeardown
and switchToWikitextSection identical.

Bug: T294463
Change-Id: Icb86a676c3f315e4a3d229f46eb383dcd7959973
2022-03-23 14:55:13 +00:00
Thiemo Kreuz a6f784c095 Fix hiding unused template parameters sometimes not working
We ended mixing two concepts in a single method:

* We need a method that allows us to create the parameter list widget
when it's needed, even if it's empty. This is relevant when a template
is entirely empty, and the first parameter is added. This wasn't
working. Instead the parameter list was created with all parameters.

* On initialization we either want all parameters to be shown, or only
used ones. But this code is only needed once, on initialization. I
ended inlining this code in this patch.

Bug: T300640
Bug: T304046
Change-Id: I6620a870e4420dcb8fecf522b3274458eeec891d
2022-03-22 15:41:55 +01:00
jenkins-bot 47ac0d243b Merge "Set desktop context / inspector padding to -10px in vector-2022" 2022-03-22 01:14:31 +00:00
jenkins-bot ce9809d113 Merge "Fix resize of MWAceEditorWidget when setting up" 2022-03-22 01:03:48 +00:00
Arlo Breault dfa1c315bb Preserve classes on broken media elements
A class, mw-broken-media, was added in
I92359048b42d32fe8a0f2cb79cd348cf5f2c56cc

Bug: T304010
Bug: T270150
Change-Id: I542d7d879868c9030ce00b2686cdfd0077e49491
2022-03-21 17:42:39 -04:00
jenkins-bot 43a06844f9 Merge "Fix review button shown when review panel is already active" 2022-03-21 17:12:37 +00:00
Thiemo Kreuz 6eaf0ef55b Fix review button shown when review panel is already active
These two lines forcefully enabled the review/preview buttons, even
when the review/preview panel is already active.

Bug: T300448
Change-Id: I6dbe6ee88728a65233a455b768f17bff668fe3a8
2022-03-21 11:37:58 +01:00
Adam Wight b079440068 Fix template dialog parameter padding on mobile
In the mobile view, parameters don't have left padding so some styles
should only be applied to the desktop stylesheet.

Bug: T304167
Change-Id: I1846512c21aae36f212fe142b7d96ac91e46854b
2022-03-21 09:53:22 +01:00
Ed Sanders 58f6f0195a Remove delete button from template context
Currently in VE desktop, items which can be deleted with
delete/backspace do not have this button. If that situation is
considered a problem it sould be solved consitently for all
focusable nodes as part of a wider fix.

Adding a delete button to template contexts makes them inconsistent
with other focusable nodes.

Bug: T274263
Change-Id: I2f7508a605852274ba8f40b2afd1dfd56600aa36
2022-03-20 18:09:31 +00:00
Ed Sanders 8c36a630db Set desktop context / inspector padding to -10px in vector-2022
Bug: T258501
Depends-On: Ifaaa0dad4ecda3ff25d5fac54ccd2c95087d6f50
Change-Id: Id1f0a6d74740cf979de2b4a7f2a9f2e197615a13
2022-03-19 13:47:39 +00:00
Ed Sanders f6ea2e3457 Fix resize of MWAceEditorWidget when setting up
Bug: T303964
Change-Id: Ic8efbd7df74213fddaec987aff60e733f9550db2
2022-03-18 22:30:54 +00:00
Adam Wight bf7f022686 Fix right padding on inline descriptions without the new sidebar
This fixes a styling issue with inline descriptions, for the scenario
when the inline description feature is enabled but the new sidebar is
disabled.

Bug: T304167
Change-Id: Ida4da4605da5143de2a27725d87d5876aea7065c
2022-03-18 17:16:48 +01:00
Ed Sanders 60c2239e06 eslint: Lint root files with server rules
Change-Id: I872ab9dd7844eb8885dc30b40a2429875f7591c7
2022-03-17 23:39:53 +00:00
jenkins-bot 401da7ee13 Merge "Remove MWDismissibleMessageWidget and use MessageWidget's showClose option instead" 2022-03-17 11:43:33 +00:00
jenkins-bot 32d9150762 Merge "Rename ve-mw/init/styles to LESS" 2022-03-15 23:16:32 +00:00
Ed Sanders 38dfa608f8 Simplify ve-mw/init/styles LESS files
Change-Id: I49e05c9680e1fe7db8e01df627a6d5fa2836aac8
2022-03-15 23:10:34 +00:00
Ed Sanders 627bbc4aaf Rename ve-mw/init/styles to LESS
Change-Id: I50969b8798637368942b2d9315e7290f2c579f77
2022-03-15 22:16:59 +00:00
jenkins-bot cada5a3ab8 Merge "Extract template scrollToTop method" 2022-03-15 12:17:50 +00:00
Ed Sanders 1fdda82b58 Remove Apex skin files
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
2022-03-12 14:23:23 +00:00
Ed Sanders 5b92c66e97 Use new config option signature when building sequences
Change-Id: Id93327e9afdad8d761a079b17b47e7bbe32bd5e2
Depends-On: I1011602514f0f21c5764b14563d8213ecc19f49a
2022-03-11 17:12:54 +00:00
WMDE-Fisch 96dc96da8d Extract template scrollToTop method
Also putting the findFirstSelected to where it belongs.

Bug: T302965
Change-Id: Ibc56abfdf84a0b5eade5b6a44903d769f424206d
2022-03-11 12:30:51 +01:00
WMDE-Fisch 824648b32a Streamline hide unused handling
Extracted the state change so we do not need the `internal` var.

Change-Id: I0ce1afab35abf3e0e656ad1a3601513d55406537
2022-03-11 12:02:32 +01:00
jenkins-bot 4a8ca84ecc Merge "Scroll template outline into view when hiding unused" 2022-03-11 10:22:37 +00:00
jenkins-bot 174c7a39f6 Merge "tests: Use ve.test.utils.newMwEnvironment()" 2022-03-10 22:51:26 +00:00
jenkins-bot ecbfa2c19e Merge "Follow-up I560d8080: Fix getTargetDataFromHref to work with different wiki configs" 2022-03-10 22:50:22 +00:00
Arlo Breault 79120fc16c Preserve classes on media wrapper links
Parsoid added a class and, without it, we get selser complaining
about wrappers being modified, similar to T214649.

The "image" class is removed since Parsoid never added it (although it
now has "mw-file-description" for a similar purpose) and the legacy
parser doesn't apply it indiscriminately.

It doesn't seem like VE supports editing the |link= media option; it
just tries to roundtrip what's there and drops it on edit.  The patch
here works with that limitation.

Galleries are found to drop href's, breaking selser, and should be fixed
in a follow up.

Bug: T292657
Bug: T303469
Change-Id: I92359048b42d32fe8a0f2cb79cd348cf5f2c56cc
2022-03-10 10:41:14 -05:00
Ed Sanders bc0e96f78a tests: Use ve.test.utils.newMwEnvironment()
This calls "parent" methods automatically, and allow us to
pass a config parameter for MW config.

Change-Id: I571d4599d7fca55727070bcac6083d1232b1f61c
2022-03-10 01:44:11 +00:00
Ed Sanders 77719b873c Follow-up I560d8080: Fix getTargetDataFromHref to work with different wiki configs
Change-Id: I8324a72418080beb3944314decc6792850392812
2022-03-10 01:10:45 +00:00
WMDE-Fisch 037e7ad0b2 Scroll template outline into view when hiding unused
Due to the stickyness we need to scroll the header and the first
visible item from the parameter list to have the best result in all
cases.

We also only want to scroll when the user triggered hiding the
fields. Not when the template outline view is initialized.

Bug: T302965
Change-Id: I84d293888a7dbf13ec655c293c0fc3a79edca698
2022-03-09 19:45:07 +01:00
jenkins-bot b26d62072e Merge "Fix missing padding on inline descriptions" 2022-03-09 13:13:24 +00:00
WMDE-Fisch e5277dd838 Fix missing padding on inline descriptions
Bug: T303386
Change-Id: Id0567102d9c8d7f0f3740085027713a2574141ef
2022-03-09 13:08:52 +01:00
Bartosz Dziewoński 94633fd165 Use $.parseHTML() in tests where appropriate
It removes some indirection.

* Find:          \$\( '<.+?' \)\.toArray\(\)
* Replace with:  $.parseHTML( \1 )

(also replaced a few by hand that weren't caught by that regexp)

Change-Id: I2639cc4a26bc960046a189504dd8058344e14d60
2022-03-09 01:07:57 +01:00
Ed Sanders 24973a2928 Update VE core submodule to master (15c1efdc2)
New changes:
cf7b2a9c4 Restore margin between wrapper paragraphs and document edge
629109b6b ve.ce.Surface tests: Sometimes assert originalDomElements in paste tests
3a5bd323c Use wrapper paragraphs in fixUpInsertion

Local changes:
* Update tests to ignore some internal properties

Bug: T299815
Bug: T299817
Change-Id: Ie52348f62320eb135c2f950ac78a77d9c665fef2
2022-03-09 01:05:15 +01:00
David Lynch d09c241549 MWEntityNode: Remove now-unnecessary allowedRdfaTypes
This was added back in 2020 so mw:DisplaySpace would work while the
RESTBase cache still contained old data. It's been two years, it should
be good now.

Follow-up to ed3579245e

Change-Id: I65665231b78198633682d52c48068c89807df55e
2022-03-08 11:27:29 -06:00
Ed Sanders fae8aece16 mw.libs.ve.getTargetDataFromHref: Don't check for internal links twice
Once we determined a link is internal from the first regex, we don't to
check if it matches the wgScript path as well. This would cause
"/index.php/Article" style paths to be detected as external as they failed
this second check.

Change-Id: I560d8080c513c523c68f2750be332e9fd91de192
2022-03-04 13:44:14 +00:00
Ed Sanders 3b2dc7bbfb DesktopArticleTarget tests: Mock config using QUnit.newMwEnvironment
Also mock some additional config to prevent the page from trying
to reload on teardown.

Change-Id: Ib20c1f5277c5d5a99f5117c82b7cbdeab75d3279
2022-03-04 13:36:22 +00:00
jenkins-bot 96c32dcfb7 Merge "Allow auto-save recovery notifications to be suppressed" 2022-03-03 23:25:41 +00:00
Ed Sanders 4f578c269c Allow auto-save recovery notifications to be suppressed
Bug: T302327
Change-Id: If94e603458a385ba6eb15c4e29144f72e3ad12ca
2022-03-03 23:09:25 +00:00
jenkins-bot abff70ff2d Merge "Fix missing return value and related docs in MWTransclusionNode" 2022-03-03 21:49:54 +00:00
Ed Sanders 29b9c9c34a Remove logic for disabling VE when certain extensions are running
This logic has been moved to the relevant extensions which can
now disable VE using a hook.

Depends-On: I47880be15b6ce1a93f389a32aff304cc3b798bcb
Depends-On: If188e8fcceb248738fc625ddd5afec351c01c484
Bug: T174180
Change-Id: I245295373af3caffb1d4cbc288e8d2bd008520b7
2022-03-02 21:20:55 +00:00
Thiemo Kreuz eb25116734 Block Ctrl+Del/Backspace when Remove button is inaccessible
* I can't guarantee this fixes T301914. But I suspect the bug can not
be triggered any more with this plus If9b6050 in place.

* I wasn't able to reproduce the issue locally. But I learned that
  1. it's related to the hotkey, and
  2. it's because the dialog looses focus, and the focus ends on the
     VE surface in te background. Pressing Esc there closes VE. That's
     intended behavior.

* I tried to use .trigger( 'click' ), but it doesn't make much of a
difference. The only magic check is if the button is disabled. But no
visibility checks are done.

Bug: T301914
Change-Id: I2f66fc2411144c60cd08baae58452d336b4e9802
2022-03-02 11:56:29 +00:00
Thiemo Kreuz 836d36bc16 Skip initial creation of unused parameter widget
In a test case with 200 templates where all but a few parameters are
unused the loading time is cut in half.

Bug: T300974
Change-Id: Ice850cb9e5e95b9e3a19ff511b3a4f32117c7199
2022-03-02 10:19:46 +00:00
Ed Sanders 1b5550f485 Move var declarations inline
Mostly ve-mw/ui and a few left overs.

Change-Id: Idea0c94d974e661c49af8ad4545cd8fd98179ca8
2022-03-01 17:50:24 +00:00
jenkins-bot 976272fa41 Merge "Fix spacing between sticky find bar and field list" 2022-03-01 14:42:32 +00:00
jenkins-bot 46cfbc74bd Merge "Added check for hotkey action on input or textareas" 2022-03-01 12:00:20 +00:00
Svantje Lilienthal fb95572429 Added check for hotkey action on input or textareas
Bug: T301913
Change-Id: If9b6050c378836157fa1df5b9782ba4632890f1a
2022-03-01 10:14:52 +00:00
jenkins-bot a6d771dd00 Merge "MobileSaveDialog: Also add 'content' class to preview panel" 2022-02-28 23:45:18 +00:00
jenkins-bot 8eefaedf86 Merge "Make sure postEdit hook doesn't fire until after saveComplete is done" 2022-02-28 21:19:44 +00:00
jenkins-bot 2844df9615 Merge "Don't let MobileFrontend show abandonedit after saveComplete" 2022-02-28 21:19:41 +00:00
David Lynch 5012d2fa93 Make sure postEdit hook doesn't fire until after saveComplete is done
Follow-up to c8072f1af2

Bug: T302746
Change-Id: Iac76ac69a62b38282ae5aa6194a89ab9110b0954
2022-02-28 20:59:44 +00:00
David Lynch a6d11f5334 Don't let MobileFrontend show abandonedit after saveComplete
Follow-up to c8072f1af2

Bug: T302746
Change-Id: Id1ef6a02cde7a30eae7b36f1d10f07e9a363e974
2022-02-28 20:56:09 +00:00
Thiemo Kreuz 5a92880da5 Fix bad visualization of empty suggested value
Bug: T299430
Change-Id: I9a0d26c7fc88e1a0c2c68152b3e15a9ba7662991
2022-02-28 08:49:08 +01:00
Ed Sanders 3f1eb8992f Fix spacing between sticky find bar and field list
Bug: T300899
Change-Id: Ieac47d58eb1037edcd82e0d7ee5c98e125c4e78c
2022-02-24 10:40:37 +00:00
Thiemo Kreuz 0d989b6fee Never collapse newly added templates in transclusion dialog
Bug: T300640
Change-Id: Id400951cf98f1eda780700d726fc10afbc1eaa90
2022-02-22 11:37:21 +01:00
Ed Sanders b4f3ecbc5c MobileSaveDialog: Also add 'content' class to preview panel
This isn't used yet as NWE is not enabled.

Change-Id: I2ea4697c2a5ba57f537e646e3d0fb7d89fd04c7b
2022-02-22 00:23:35 +00:00
jenkins-bot e9f8ffa5a1 Merge "Log whenever browser plugin spam is detected" 2022-02-21 23:29:39 +00:00
Ed Sanders 4501771243 Log whenever browser plugin spam is detected
Our theory is that browser plugin spam shouldn't reach
the DM document unless we've made a coding error like
I194ff1d57. Log future errors so if there is more plugin
spam in the future, we can investigate the cause.

Bug: T298147
Depends-On: I705195bc5d0f76a38da5d2cc09fab184a2c32401
Change-Id: I3403859906ceaa51be63b0d79f474f0289ab4408
2022-02-21 22:48:46 +00:00
jenkins-bot 839a62829d Merge "Add and fix default values in parameter documentation" 2022-02-21 13:41:51 +00:00
jenkins-bot 8c1ad11a7d Merge "MWEditSummaryWidget: Handle multi-line comments" 2022-02-21 13:39:01 +00:00
jenkins-bot fe69e22761 Merge "tests: Mock wgVisualEditor instead of relying on SpecialPage value" 2022-02-21 13:32:51 +00:00
jenkins-bot d79527e1f2 Merge "Always scroll to top when loading VE source mode" 2022-02-21 13:23:28 +00:00
Thiemo Kreuz bc0a34b0ed Add and fix default values in parameter documentation
Same random finds while working on something else. I carefully
checked and made sure these methods are actually called without the
optional parameter.

Change-Id: Iab36fd130258322985b5d6e7f8e1f7b4ee235ba2
2022-02-21 13:19:21 +00:00
jenkins-bot aa8b08bd1a Merge "DesktopArticleTarget.init: Handle popState target reactivation properly" 2022-02-21 13:14:38 +00:00
jenkins-bot ba5f31ef8f Merge "DesktopArticleTarget.init: Make getInitialEditMode re-usable" 2022-02-21 13:12:00 +00:00
jenkins-bot 2a72f4e290 Merge "Remove not needed self = this indirections" 2022-02-21 12:57:41 +00:00
Thiemo Kreuz 3c042049bf Use .bind() syntax where it makes code more readable
This focuses on a few trivial cases where the syntax helps making
the code more readable. One level of indirection is gone with this.

Change-Id: Ibf25d7eaa06952e69b36bd5a78a48d04ac62890c
2022-02-21 10:34:03 +00:00
Thiemo Kreuz 58e27f56d6 Remove not needed self = this indirections
These are only needed when we need to access a specific `this` from
within another `function () {}` context. This is not the case in the
situations here.

This is split from Ibf25d7e to make it smaller and easier to argue
about.

Change-Id: Ide1476de91fc343aa992ad92a1321d3a38b06dd0
2022-02-21 10:52:24 +01:00
Lucas Werkmeister 957036fa19 MWEditSummaryWidget: Handle multi-line comments
The `.` character class matches any character *except* line terminators,
but edit summaries can contain those. Use [^] to match truly everything
in the comment part. (In the section part, I assume `.` is okay.)

Bug: T302103
Change-Id: I29fcdd7489d118674bab5cfe5c0a15b8e4efac64
2022-02-18 19:54:03 +01:00
Ed Sanders e4c22ec0d6 Don't suppress teardown prompt when pressing escape
Follow-up to If9e5d1fbf00f8359.

Bug: T302096
Change-Id: I60fcddee7bf0dfb3a39e92d26898da2963861c19
2022-02-18 18:15:40 +00:00
jenkins-bot 0db6720128 Merge "Move methods from DesktopArticleTraget to ArticleTarget" 2022-02-18 18:04:28 +00:00
jenkins-bot d7a33aa9f9 Merge "ApiVisualEditorEdit: Pass useskin & mobileformat to ApiParse" 2022-02-18 18:01:45 +00:00
Ed Sanders c8072f1af2 Move methods from DesktopArticleTraget to ArticleTarget
To allow them to be used by MobileArticleTarget.

Change-Id: I33e8b3c2361c2dfd0fae8aa41eacf993c93c9c48
2022-02-18 17:04:04 +00:00
Ed Sanders 93a7f33989 ApiVisualEditorEdit: Pass useskin & mobileformat to ApiParse
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
2022-02-18 16:59:07 +00:00
Ed Sanders 54cd911db0 DesktopArticleTarget.init: Handle popState target reactivation properly
This ensures the full loading sequence is shown when the
user opens VE using history navigation.

Bug: T301843
Change-Id: Ia7a641c8bd5a036f23c9da94bc539d8cf66c5021
2022-02-16 15:56:24 +00:00
Ed Sanders c3f88d72c8 DesktopArticleTarget.init: Make getInitialEditMode re-usable
Also let parseSection handle undefined.

Change-Id: I2ec9e7e642d116a555c03af6070f7577ce7030a7
2022-02-16 15:56:24 +00:00
Ed Sanders ca6ed21835 Always scroll to top when loading VE source mode
Change-Id: Ibfbb241f523fbdfcf6eb9fd1aeaa0e13782586aa
2022-02-16 15:17:19 +00:00
Ed Sanders 88609cb885 DesktopArticleTarget.init: Only bind event listener once
Previously we were adding an event listener every time the
target was opened, and not removing the old ones.

Change-Id: I0ce609f1d9e2d6fb00b605dcade6f27e7a887b9d
2022-02-16 14:41:04 +00:00
Timo Tijhof bdb7737a5a tests: Mock wgVisualEditor instead of relying on SpecialPage value
Found via Iaf989bc50363a (patch set 6):

> FAILED TESTS:
>   ve.init.mw.DesktopArticleTarget
>     ✖ init
>     Died on test #1
>     TypeError: Cannot set property 'pageLanguageCode' of null
>         at Object.<anonymous>

Bug: T89434
Change-Id: I8ad2cc4c115224eb276d1488091b9518fde739f9
2022-02-16 10:19:11 +00:00
Ed Sanders 8101b6511e Improve smooth scroll to section behaviour
* Append the toolbar before starting the scroll
* If the toolbar is floating set the anchor to full height
  immediately. This shouldn't cause the content to jump down
  due to scroll anchoring:
  (https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-anchor/Guide_to_scroll_anchoring)
  But add our own logic for it for browsers which don't support that.
* Now the browser only has to deal with the scroll animation,
  and not the height animation of the toolbar anchor at the
  same time, making it smoother and less buggy.

Bug: T301773
Change-Id: I61d533d40758d559b03c858e0006ef2e4f0fcd16
2022-02-15 15:23:47 +00:00