Commit graph

488 commits

Author SHA1 Message Date
thiemowmde c581f0e3bc Favor jQuery's .toggleClass() to reduce code duplication
Change-Id: Ic616ffbfac410849413e8fad6dde260514884efb
2023-09-25 18:59:10 +00:00
Bartosz Dziewoński 59a665c424 Acquire a temporary user username before previewing
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
2023-08-22 23:40:55 +02:00
Ed Sanders 916b7beb22 Convert WikitextPasteContextItem to PersistentContextItem
Depends-On: Id2900c2d2c692b611e611b7eee6cacb74a737a8c
Change-Id: Ic539a41e8623c4ed12e4fa0e24db826ca967ee5a
2023-08-11 12:54:38 +01:00
Ed Sanders 3d8315f4c3 Simplify code for showing "Loading" message in template context
Instead of passing a "teardown callback" to a specific dialog,
run the command as usual and clear the loading message once
the dialog has successfully opened.

Change-Id: Icacabb298f1a0d7a587ab8b992759b04ff59c5c3
2023-07-12 11:04:59 +01:00
Ed Sanders f1ddd483da Update CE nodes with mw-file-element/mw-file-description classes
Change-Id: I5846e370b2b1897c63fe9728d081b7a406c138ba
2023-06-09 16:52:08 +01:00
Ed Sanders 3c07178d05 MWWikitextSurface: Deactivate surface on mobile before showing paste context
Bug: T336073
Change-Id: I6d8c55f2ab7ba7c58f84ac70afe53c04241d1782
2023-05-05 17:57:45 +01:00
Ed Sanders fec0f4ecf5 Remove padding override from active external links
Since this was written, the specificity of the selector it was
overriding has increased, so isn't required any more.

Bug: T335292
Change-Id: Ib3494524f6ddfc2ea59d6d3d13a1a90138cd84af
2023-04-24 15:08:14 +01:00
Ed Sanders 55eefc366b Remove convertToWikitextOnPaste flag
This was introduced as a temporary flag for
DiscussionTools, and was removed in I0514e8f8.

Change-Id: Ia8d82baf4b93cf7de53b58ba19fa31856f1bc011
2023-03-29 18:43:36 +01:00
jenkins-bot 1d90bae5c8 Merge "Gallery: Make ve.ce.Gallery(Image)CaptionNode active (editable)" 2023-03-29 15:43:08 +00:00
Ed Sanders 4fde9c21f3 Gallery: Make ve.ce.Gallery(Image)CaptionNode active (editable)
Bug: T190224
Change-Id: I378465458d0391eb1265274b89e23dd4a308613f
2023-03-13 16:14:12 +00:00
James D. Forrester ffc2b27bf9 stylelint: Auto-fix selector-pseudo-element-colon-notation
Depends-On: I0cc0c16c5adae09090a30453431fe492f3475a69
Change-Id: Ie975f0534f32e46face9ab2ba0e0d3af11533de6
2023-03-12 22:03:06 +00:00
jenkins-bot eab91853fa Merge "Template context: Link to source templates in "Generated from:" list" 2023-03-08 17:34:43 +00:00
Ed Sanders 30b0f10c27 Template context: Link to source templates in "Generated from:" list
Bug: T328021
Change-Id: I0960f4033f99813ac761daf69abf437b00e7d3f0
2023-02-24 00:12:15 +00:00
Arlo Breault c068c166e2 Preserve link content for broken media
Parsoid will start populating the link content with the alt text if it's
available before falling back to the filename.  Preserving what's there
is needed to avoid dirty diffs during the transition and for cached
content.  In the future, we can remove errorText and replicate Parsoid's
new behaviour..

Bug: T273014
Needed-By: Iddf3e204d6e489cc8a33034da0d9e540efe65553
Change-Id: I7ab3d141b1df92d4447f7e3d6164082844d5bd10
2023-02-22 00:40:20 +01:00
Ed Sanders 12395b0a57 Follow-up I3412c53cc: Fix reference to target in ve.ce.MWWikitextSurface
Bug: T329439
Change-Id: I67632bf62c0373e7825ccd9fbe263116928e7e35
2023-02-12 11:13:48 +00:00
Ed Sanders 722e639ccb Update VE core submodule to master (b5c670c7a)
New changes:
0cf02db3a [BREAKING CHANGE] Pass Target to UI Surface and use instead of ve.init.target

Local changes:
* Pass target to surface

Bug: T305762
Change-Id: I3412c53cc70346c8ba4b8b76976ba9c7535e945f
2023-02-02 23:19:40 +01:00
Ed Sanders 7afbe7516d Always sanitize href attribute in CE nodes
Bug: T322704
Change-Id: I0ce6d57adf7c688d11f6fc39af291b44c4b5aeeb
2022-11-30 18:26:37 +00:00
Isabelle Hurbain-Palatin fa58a9e6ec Fix a few risky places for a multi-valued rel attributes
This patch follows the audit made on the extensions to check the usage
of the "rel" attribute and check that it's compatible with multi-values.

Bug: T315209
Change-Id: Ib323736d93ea96c86f9d56599e515c9e6d72a76e
2022-08-23 15:21:41 +02:00
Thiemo Kreuz efc50591c1 Inline private helper functions in MWTransclusionNode
Change-Id: Ie14ad29e214f3440f60a7e13ed660fff85c7c448
2022-06-22 10:43:11 +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
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
jenkins-bot abff70ff2d Merge "Fix missing return value and related docs in MWTransclusionNode" 2022-03-03 21:49:54 +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
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
Iniquity 427f8ab3ba Use OOUI 'play' icon for audio placeholder
Bug: T299278
Change-Id: I8cc254fdf28cb83d5c4fe310a61a8a3df2d49270
2022-01-27 21:10:51 +00:00
Ed Sanders 312c35077f VE-MW: Consistently use target/surface $scrollContainer to set/get scrollTop
As in Idd97d9e6d3 in ve-core.

Bug: T299841
Change-Id: I728a723cbbb1d992e0e573800298784ba385882e
2022-01-25 22:28:10 +00:00
Thiemo Kreuz 28a74445f0 Fix transclusion node double clicks being tracked differently
Double clicks have been tracked as "window-open-from-command", but are
now tracked as "window-open-from-context". This patch changes this
back.

Bug: T297773
Change-Id: Icabc5db526c35d681d077043c54ca009b2296bbe
2022-01-20 15:41:08 +01:00
Thiemo Kreuz 8759a60516 Disable edit button when double clicking transclusion node
The first click opens a little context menu (…ContextItem in the
code). This patch makes a double click trigger the "Edit" button in
this context item instead of executing the "open window" command
itself. This is needed to trigger the "Loading…" code in the context
item.

Bug: T297773
Change-Id: Ie1daa2e6b460c5c506a847bd767af2cb48e73a61
2022-01-20 15:20:28 +01:00
Thiemo Kreuz 0907b3eb49 Fix missing return value and related docs in MWTransclusionNode
Change-Id: I3c2c87c2644c45f934c8b1c98958c01a43579da9
2022-01-13 11:56:06 +01:00
Ed Sanders 4d13a4f4ed eslint: Enable no-jquery/no-append-html
Prevents accidentally treating plain text or user input
as HTML, which could be an XSS vulnerability.

Change-Id: Id4af48447a0907962a57340cb60aca08df9cc505
2021-12-16 02:04:11 +01:00
Ed Sanders 5c0344aeda Use new select[First|Last]SelectableContentOffset methods
* Make ve.ce.MWBlockImageNode autofocus=false, remove
  unused transition property
* Remove ignoreChildren from ve.dm.MWBlockImageNode
  based on new definition
* Remove tests which assert that deleting in a list next
  to a block image always de-indents. If this is desired
  behaviour it should be fixed without reference to
  ignoreChildren.

Bug: T295905
Depends-On: Idc0cccbe73d1b49d07b60c14a192a40f47d64608
Change-Id: Ib79a070f5d36dbe7742fa0760f8cdf55fe3046ed
2021-12-08 15:53:35 +00:00
jenkins-bot db07d0c290 Merge "Move var declarations inline" 2021-10-22 19:40:49 +00:00
Isabelle Hurbain-Palatin 3a3437007a Handle annotation tags as nodes rather than metaitems.
Preserve the place of annotation meta tags; adds information for the
users about annotation and, if necessary, annotation range extension.
The messages and individual handling of annotations for the annotation
range can be defined by the extensions: see I0b58a418 for an example
of how that can look like.

The structure of this patch closely follows the one from I104e7abbd
(handling of <noinclude> et al.).

Bug: T261181
Change-Id: I39029e4a63d22b37107edec066006557bcff34bf
2021-10-21 10:39:04 +02:00
Ed Sanders 3801aa1bac Move var declarations inline
Change-Id: I12639c515e33b3d9e7a819581b5022ea42fd7046
2021-10-13 14:02:31 +01:00
Thiemo Kreuz fccb9bb4bb Use less repetitive code when calling .showHandles()
This is just shorter and avoids duplication, but does the same
as before.

Change-Id: Ib33603bcba15c08e93406c71677b4733bf16a149
2021-09-03 09:16:22 +02:00
Bartosz Dziewoński 702d261bbd ve.ce.MWHeadingNode: Fix Uncaught TypeError: this.root is null
Similar code elsewhere checks whether this.root is set
(e.g. ve.ce.FocusableNode.prototype.onFocusableSetup).
And code here checks whether this.surface is set.

Bug: T289201
Change-Id: If07dc75ca76f2d171bc2eae83be10083d95096f8
2021-08-26 21:35:19 +02:00
Thiemo Kreuz 26b0322ff0 Minor documentation updates in template related classes
Bug: T285483
Change-Id: I1cf17d7bfb01326b93bc781b2501a492d50f0aab
2021-06-25 16:46:59 +02:00
Thiemo Kreuz 4367235dcc Inline many var declarations in the code below
This makes the code more readable and easier to reason about.
The ESLint rule responsible for this code style was removed
just recently.

Notes:
* I focus on classes that are relevant for what the WMDE team
  does right now.
* I merge multiple `var` keywords only when the variables are
  strongly connected.
* Caching the length in a for loop makes the code hard to
  read, but not really faster when it's a trivial property
  access anyway.

Bug: T284895
Change-Id: I621fed61d894a83dc95f58129bbe679d82b0f5f5
2021-06-23 09:02:24 +00:00
jenkins-bot bc0f405317 Merge "NWE: Always paste rich text as plain, and show context item to convert" 2021-06-03 18:15:59 +00:00
Thiemo Kreuz 8f045a7155 Remove/fix a few small pieces of unused code
I found these thanks to PHPStorm.

Change-Id: Ieb30a95debb58d3a454ac3c6f0546e5dbbe77ed4
2021-05-21 11:43:45 +00:00
Ed Sanders ea9ea1d17f NWE: Always paste rich text as plain, and show context item to convert
Bug: T282789
Change-Id: I1bc32c9e16140190baef9bcb08d49b4b21896883
2021-05-13 15:56:19 +01:00
Ed Sanders fab7ad9d92 Make convert to wikitext on paste feature configurable (temporarily)
Bug: T280745
Change-Id: Icc716563e5536b4ef33a48ba10a72f3a39bdec35
2021-05-03 21:16:54 +00:00
jenkins-bot cb21c4a158 Merge "Parse relative hrefs on image nodes like on regular links (try 2)" 2021-02-24 17:19:44 +00:00
jenkins-bot b193cd95a5 Merge "Show non-breaking spaces in the editor" 2021-01-28 19:38:28 +00:00
Bartosz Dziewoński d65fe812f5 Show non-breaking spaces in the editor
MWEntityNode representing &nbsp; is now displayed with a light
grey background and has a tooltip explaining that this is a
non-breaking space and not a random grey blotch.

This is not done for TextNode (in core VisualEditor), as that doesn't
actually work: Parsoid converts all &nbsp; in input to regular spaces.

It's still not easily possible to insert a non-breaking space.

Bug: T96666
Change-Id: Icbdf7cc3e5d675b199d08777a3439dc5dedceac1
2021-01-28 19:09:29 +00:00
Bartosz Dziewoński 91291d3e98 Parse relative hrefs on image nodes like on regular links (try 2)
Previous, reverted attempt: da9b6fffbd.
This attempt also includes 6037fefbe0,
and fixes minor conflicts with other changes.

* In normal images, parse relative 'href' attributes instead of
  expanding them to absolute. This resolves Parsoid generating
  |link= options for copy-pasted images (T193253).

  Keep them in the underscore-form to avoid causing dirty diffs like
  T237040 again. Unlike in the previous attempt, we don't need to be
  super-careful about the 'resource' attribute, thanks to the Parsoid
  changes in T108504.

* In gallery images stuff, prefix the 'resource' attribute with './',
  same as normal images do. This causes no functional changes, but it
  makes updating tests easier, and the consistency is probably good.

* Update test examples to also prefix 'resource' and relative 'href'
  attributes with './', like the real Parsoid does.

Bug: T193253
Change-Id: I91131728a87c9406bf069d46d3c94c9a8905a003
2021-01-27 11:53:15 +00:00
Bartosz Dziewoński 0e9dd1751d Adjust CE markup of broken images so that Parsoid styles apply to them
Depends-On: I11fc7fc955656eee2a78461b509c3fee555e8613
Change-Id: Ieb958b372212423427ac0a36cd5ec374c927d232
2021-01-27 10:12:52 +01:00
Arlo Breault 895274c20b Switch back to using <span> for gallery images
Similar to I74fe96a47d8a4d7717891c16e49f5a4d6599018a

Bug: T266143
Change-Id: I632cff28ec428828d82fcd7cc66e5545c45c2161
2020-12-15 15:43:48 -05:00
Ed Sanders 4545f53245 build: Update eslint-config-wikimedia to 0.17.0
Fix instances of variable shadowing.

Change-Id: I6e2befb020d7d4b506c7b46131eafacd951aa6d1
2020-08-18 13:16:49 +01:00
Ed Sanders 42c7096dbf Gallery: Handle invalid titles
Items which are invalid titles will still get discarded if
the gallery is edited, but this is better than crashing.

Bug: T260584
Change-Id: I5dc20c233fd9ab41bdf48531829bddca2c5b25df
2020-08-17 18:22:42 +00:00