While all of the following are valid in the model:
1. <mwBlockImage></mwBlockImage>
Image with no caption. Must use the media dialog to insert one.
2. <mwBlockImage><mwImageCaption></mwImageCaption></mwBlockImage>
Image with empty caption. There is a slug to insert a paragraph.
3. <mwBlockImage><mwImageCaption><paragraph></paragraph></mwImageCaption></mwBlockImage>
Image with caption with empty paragraph. Nice and intuitive!
(Same for <mwGalleryImage> / <mwGalleryImageCaption>.)
The third option is the most convenient for the user. We should always
generate that when converting documents from HTML and from the editing
tools (MWGalleryDialog, MWMediaDialog/MWImageModel).
Previously, the editing tools generated option 2 if no caption text
was entered, and the converter generated option 2 if there was no
caption node or if it was empty. Curiously, option 1 was never used.
Wikitext for manual testing:
```
[[File:Foo.png|thumb]]
[[File:Foo.png|thumb|]]
[[File:Foo.png|thumb|Caption]]
<gallery mode="packed">
File:Foo.png
File:Foo.png|
File:Foo.png|Caption
</gallery>
```
Bug: T200387
Change-Id: Ie82fb339f6bd8ae1b289235bf5402490722d9a7c
This is similar to the hack in ve.ui.MWMetaDialog, except uglier :(
We already explicitly focus the right field in the ready process.
I am not really sure why the focus change causes the issue, but
preventing it definitely fixes it. It would make sense if we changed
the value of the field after focussing it (as setValue() restores the
validity flag cleared by onFocus()), but we don't seem to do it.
Bug: T199838
Change-Id: Ia602551ee0b0885cefbd4cb2fc00d569ff42da67
The #getReadyProcess method should be used pretty much only to focus
a field inside the dialog after it is opened. It runs after the window
opening animation finishes, so if you add stuff to the window here,
that will be visibly delayed.
The #getSetupProcess method should be used pretty much for everything
else that depends on the opening `data`. It runs before the window
opening animation, so if you add stuff to the window here, it will be
visible while animating it.
Bug: T185944
Change-Id: I71ea5b6e1e1947c1cf8fd749100e854953a8ef3c
This adds in missing functionality, such as deactivating
the surface selection while the dialog is open.
Change-Id: I0d8652a989504a35e5c235224b0ef924b6dcbeed
It doesn't have a "cancel and do nothing" route to fall back on, so pressing
escape does the non-progressive action, which is to paste-as-wikitext rather
than paste-as-plaintext. Neither of these is really an intuitive outcome.
Change-Id: I786b6fc87e3cdf3bb50898a070a15a353a242848
Throw a dialog box up to ask whether to convert something with formatting to
wikitext, or downconvert it to plain text.
This logically depends on Ie9aaaa59e9dfa138d394051fe491573253df1805.
Bug: T190079
Change-Id: I6afbbe303d1506426109e75c95f6be546ec48536
Depends-On: Ie9aaaa59e9dfa138d394051fe491573253df1805
T190570 (I54d75ab6061de0de79b7a8112eb859a4c8a5e22a) changed old editor's
display of the limit to only show when there's <= 99 remaining. Bring same
behavior into this dialog.
Bug: T194458
Change-Id: I7f6fd7ee95348c39b107131a7e297d158a07c00e
Just generate the standard wiki skin markup for categories. Adjust linkcache to always know
whether links are hidden categories. (It previously knew *sometimes*,
depending on whether a MWCategoryWidget had interacted with that category.)
Make the save dialog preview use the same method as the bottom-of-editor preview.
Bug: T194092
Change-Id: I37fea15eaef0a5847f27ce41dd92370a4bf353b6
Pass through the current document when available, otherwise
assume the current surface's document.
Also add a getter for getPageName, so that can vary based
on the target document.
Bug: T193856
Change-Id: Ifdc951fdc6a43b924d102e3fcd7e59e52023757b
Also, pass $overlay to all PageLayout subclasses used in ve.ui.MWMetaDialog
and ve.ui.MWTemplateDialog/ve.ui.MWTransclusionDialog, for consistency.
Bug: T191395
Change-Id: Ib7ed2e2c04ff7930be1161bd2b981180ee59557a
Various checks didn't think a rel attribute could contain multiple values.
Mostly they don't, but to play it safe let's adjust the checks.
Change-Id: I29823b7c8c65ef6b2ff41ce9a801840000972e9c
Depends-On: I33a456351ab025d0c81cfb1a1577d5a2ae9df51a
updateSize eventually calls setDimensions, which calls
positionDiffElement, so protect against infinite recursion.
Change-Id: I07992f337394712000e6e12c637c6e1442869722
We still don't allow inserting such galleries, but we can handle them
in existing content.
Bug: T75230
Change-Id: I5d7350f00871ac295b0ebc00a633b44570347d85
Separate the preference by surface mode, so you can
use a different preference for NWE.
Bug: T178691
Change-Id: Ib8494a4562ce766a7c8ef7ec1447d06f5d0f17c5
Accesskeys in this situation are unreliable cross-browser. Firefox won't
trigger the accesskey inside the dialog. We can manually simulate it, via the
existing trigger.
Bug: T121183
Change-Id: Ib919d8b9fcd9324a517037bcc6ef93a26d1488b9
Category links weren't being checked for redlink status, and weren't opening
in a new window.
Bug: T179913
Change-Id: Ic665583128bf51710178c5674cd35c273f5f207e
The MW attributes are 'style' and 'class'. The plural
forms are used internally only to avoid JS keywords.
Change-Id: I1b7d14872aab4b6b3882d00165924fd1639e1744
This prevents the image jumping into another paragraph,
e.g. in a different table cell.
Move the logic for removing the old image out of MWMediaDialog
and into MWImageModel#insertImageNode.
Bug: T121449
Change-Id: Ibd7c92f3f90c382ceffd3e0defb12ba36a3786d2
In Internet Explorer and Edge, NodeList objects do not have the
'forEach' method. However, Array's 'forEach' can be applied to them,
as we do elsewhere in the code.
https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach
Bug: T170466
Change-Id: Icb19995e140607d45c47fb6ae8d60ac80b664d02
The promise #getTeardownProcess is trying to resolve/reject no longer
exists, causing exceptions. The code has been unnecessary for a while,
as we do all the work in #getActionProcess. (In the case that we do
switch, the teardown code isn't even called, since we navigate away.)
Cancelling the switch to wikitext works correctly after removing this
code.
Bug: T169588
Change-Id: I1b9b12edf12a0b91f06c13aa53024efb80868387
Remove config option `multiline` and change to MultilineTextInputWidget as
appropriate.
Bug: T169272
Change-Id: I45565f01de76a88d64d7b0691d1e7279354f375d
A missing image should return some data to say the
image is missing, not just reject the promise.
Bug: T169337
Change-Id: Ib41a64a783c1baca88f428417c98e7fb913d14a1
As I understand it, the button should be enabled whenever there's more than
one option in the sidebar, and disabled otherwise. The previously chosen
conditions weren't perfectly proxying this, and the button would be disabled
whenever editing an already-existing transclusion.
Bug: T167710
Change-Id: Id303b680c072642ae7b66066e28ecc9f1dc90fd7
Reverting a new weird hack for an issue and bringing back the
old, tried and true hack that was removed in the mistaken belief
that if a bug is marked as fixed, it is really fixed.
* Revert "MWTransclusionDialog: size footer correctly"
This reverts commit 032fb2924e.
* Revert "Remove dialog height hack tagged against resolved bug"
This reverts commit a97eacd05b.
Bug: T93290
Bug: T167483
Change-Id: If1cc07837892bb0248c74025d5403f9698e77705
This fixes the focussing problems from T166150.
As a separate consequence, when loading a template/transclusion
takes a while (it can take several seconds for e.g. a template with
100 parameters), we will now display nothing while the user waits.
Previously we displayed an empty frozen dialog (note that this only
worked the first time for some reason).
Bug: T166150
Change-Id: I414a72ee248517867eef63a75f2d327aa5d5b908
Renaming CardLayout to TabPanelLayout and all connected code instances.
Follow-up to Icfe1652cc038dc131b6b855ce9b45040b8ee5178
Bug: T164903
Change-Id: I9ce4e31e390522d469e126fb3a4b05787cef7fef
* Fix focus and resize/scroll into view after the
captcha has loaded (so after the image has loaded
for FancyCaptch).
* Add margin between input and captcha
* Enable enter-to-submit on captch input field.
* Unify code for simple/math/questy and correctly
render math as HTML (by looking at the mime type)
Change-Id: I10433cefbfea8569674c120dde5b489570e20966
* Pass a wikitext promise, instead of wikitext
* Handle writing of content to the dialog from within
the dialog.
* Handle diff errors within the dialog.
* Never disable the 'Return to save form' (approve) button
* Remove redundant messages
Change-Id: Ibd76e8951998f751abfb4f407682202c2f73ac7e
New changes:
ae0204885 stylelint: Remove no-unsupported-browser-features overrides
d744cd576 Localisation updates from https://translatewiki.net.
1338c50f5 [BREAKING CHANGE] Remove resize handlers from within DiffElement
Local changes:
Trigger diff element resize on dialog resize
Depends-On: I82a67a4309bf76db5407ea38c26c47d14c01e921
Change-Id: I912a99edca25ff576e2872723f91afe54e36a170
This will be required later when we have to fetch the original
document from the server before running a visual diff.
Change-Id: I351688f4d1fec892bc297f40c209939cbb2ccf95
Provide a utility funcition in ve.init.mw.LinkCache to do this.
Also use this in ve.ce.MWTransclusionNode/ve.ui.MWPreviewElement, and
introduce to ve.ce.MWExtenionNode
Bug: T73900
Bug: T153535
Change-Id: Ieb9a0274b8c5ae1932c431546f09d18000fa6dd9
After 79ccfb9372cb57afa569036ef39ead13abfba673, MediaWiki's `<pre>`
tags get rendered as `<pre typeof="mw:Extension/pre">` in Parsoid HTML.
MediaWiki's indent-pre syntax (block indented by a single space) is
still rendered as `<pre>` in Parsoid HTML, however.
Indent-pre is still handled by MWPreformattedNode (no changes).
Introducing MWPreNode, which will handle `<pre>` extension tags,
and MWPreDialog to change its contents (and allow converting
to MWPreformattedNode).
Pieces copied from MWGalleryNode, MWLinkNodeInspector, CommentInspector.
Possible future improvements:
* Add a specific icon for MWPreContextItem
* Avoid API roundtrips for rendering (but rendering wikitext <pre>
is not as simple as it looks)
* Consider a way to insert these other than '<pre' sequence
Bug: T159900
Change-Id: I5bc4ea6e5d893736f65ef0dd43b08c18cb1a1e85
It's actually a bit surprising that the only thing broken by using
OptionWidget instead of MenuOptionWidget is some missing styles.
Change-Id: I3961fedbfc61f2f17d91dc7375d47a3cdff2a257
Fixing T107251 made it so that clicking "save" always switched back to the
save panel momentarily, causing a flicker of "maybe I can edit this"
experience. With this change, we can only switch back to the save panel when
saving from other panels if a message is being shown.
Bug: T156891
Change-Id: I8f67693283e61c39cfce40ee12d5c6788dd97932
We don't support editing <div>s right now (as they're BranchNodes) nor
<span>s (as they're annotations), but most of those are inside templates
and so not editable in VE anyway.
Bug: T157989
Change-Id: I647b2a544fd16952696d0de8d07cb72189b27ecb
We now use dialog's overlay in every case where we have a FieldsetLayout
or a FieldLayout with a help popup inside a dialog.
Bug: T100571
Change-Id: I8bd0ed430637feca63ec0f13cb7e1e1c659391a5
The dialog already supports cancelling by pressing Escape,
but the usual dedicated button was missing.
Change-Id: Ic63b5b59940a43474051466bdbbba0dbeb4342a9
This is currently used to display a warning about missing edit summary
and to display a CAPTCHA field. They now appear in a separated area at
the bottom of the dialog, which slides into view when a message is
added.
Change-Id: I7541284a92d5fd2fa8f469d479e059098c59c0ac
Firefox throws exceptions when trying to focus hidden inputs. Using the
"preview" keyboard shortcut entirely bypasses the save panel, but the ready
process assumes it'll always be opened first.
Bug: T153958
Change-Id: Ifb3861116565e77c30b3874fe47889298c3ace6d
Make inspectors inheriting from MWLiveExtensionInspector
and dialogs inheriting from MWExtensionPreviewDialog
update their 'done' action every time updatePreview is
called. Since both mix in ExtensionWindow, two new methods,
updateActions and isModified are added there.
This should make it more difficult to insert an empty node
accidentally or create a transaction just by opening and
closing an inspector or dialog.
For more complicated dialogs, or inspectors or dialogs
that don't live-update, this behaviour will have to be
implemented separately.
Bug: T155330
Change-Id: Iacafa01fcd419faaec9b112c96be86693a57d561
Refactor save dialog setup so logic for canPreview/canReview
is external and passed in.
'Show preview' will show in the VE command help dialog until
I56c1036e6 is merged in core.
Bug: T149914
Change-Id: Id718ad622be43c03df61d12b8688d53462c59f36
Also disable relevant fields the first time the dialog is
opened, not just when the dropdown is changed.
Bug: T151482
Bug: T151512
Change-Id: Ic511e1832a9fcaaeaed71c1d495aecc65fdd1d3b
Create a new MWSaveDialogAction, which can be hooked up to triggers. Switch
the existing save dialog accesskey to just use the trigger system.
(Maintaining all the accesskey logic, so we don't change the shortcut on
people.)
Bug: T149914
Change-Id: I9b4ef8504148703556f802b266a517dd5098c06b
New changes:
f58ddea DiffElement: Use document slices with full internal lists
83800c0 DebugBar: Remove hard-coded i18n
b4f89e1 Update OOjs UI to v0.18.1
40c7bf6 Factor out active node functionality from SectionNode for captions
2d967be Move 'mode' property to surface, rename target property to 'defaultMode'
5d8c214 wrapAllNodes in sourcefragment
dd3d9e5 Refactor ve.dm.Transaction
9d61aca Use canonical ve.dm.TransactionBuilder.static.newFrom* methods
df4f72a Make table caption node an active node
b79f72d Core source mode
7533ac4 Localisation updates from https://translatewiki.net.
ae30d71 SourceSurfaceFragment: Check range is not collapsed
Local changes:
Get edit mode from surface where possible
Depends-On: Iec758c1892d518ad4bc2c0d1aaf6ca00fa354323
Change-Id: Ifaf6a26078b2731b374aaad2cb40c08928de9c84
Make sure the button is always visible in the
gallery dialog menu by fixing it to the bottom.
Bug: T151506
Change-Id: I560b0dffbaad9e18c6f7f703cb155356470580ee
New changes:
f1297b8 [BREAKING CHANGE] Allow target widgets to be re-used
Local changes:
Re-use target widgets
Change-Id: I5decb918f398704d4b6c108a16fbc1cc073ef077
Change I94f4fadd84cd3e prevents the gallery dialog from inserting
duplicate images into the gallery dialog after one request (e.g.
so double-clicking on an image in the search widget doesn't cause
the image to be inserted twice). However, galleries can
intentionally contain duplicates of the same image, so it is
possible to make a spearate request to insert a duplicate image.
When the dialog is first opened, it requests all the images in
the gallery at once, so the above change was causing the
duplicates in an existing gallery to be dropped. Duplicates
should be allowed to be inserted following this initial request.
Bug: T150894
Change-Id: I34353bc9b8db947488474c4be52292e0a1447705
The namespace prefix before image filenames is optional
in galleries, but the API requires it. If the prefix is
omitted, add the file namespace prefix.
Change-Id: I3d126550c2ad2e84454122f92307ba4bc943780b
One after the other is okay though.
Also fix this so that, if the user is fast enough, two images simultaneously
also works.
Bug: T148558
Change-Id: I94f4fadd84cd3ed97d9676043cadc64f0e09f0b9
To align with the linked patch in MediaWiki core. Taking advantage of
the opportunity to use core's messages for these, and remove some dead
wood old messages that were never used like "restore" items in mobile.
Bug: T139033
Depends-On: Ie81b5edd275963a965cd44d0fd325cae9ee2f1a6
Change-Id: Ie00e94cc77cb750a7e8d1104366bb3dad65af8a4
Fetch default options for mode, image heights and image widths
rather than hard-coding them.
Bug: T139632
Change-Id: I1adc7987fdeb1258ee87ce46acbab469ea18116e
If width or height attributes are left empty in the form,
they are now undefined in mwData.
Bug: T140094
Change-Id: I76dadbd07a89ce762e42ce714f364ce74a9cc1f0
Make new graphical interface for editing existing
galleries and adding new galleries.
NB The dialog does not yet support rich text in the
image captions, nor does it provide separate fields for
e.g. link, alt text, etc. These are dependent on parsing
the text within the tag, which is yet to be implemented
by Parsoid. For now, these attributes should be
specified in wikitext in the image-specific caption
field.
Bug: T45037
Change-Id: I2b4082e991268241a15b9bbd6d85c94cdc2185f2
Make some of the methods we currently use to render the node
static so we can re-use them before inserting. We do the evaluation
without inserting the node so as not to dirty the document and
transcation history.
In the unlikely case the request fails, just fallback to inline.
This only handles insertions for now as type changes on edit will be
very rare.
This changes the signature of insertTransclusionNode, which is used
in Cite and Citoid extensions.
Bug: T51784
Change-Id: Ibc2fc66e6866084b0a4deeb082c8a1ca412febb2
Building DOM trees while attached is much slower. This makes
things about twice as fast.
Remove unused StackLayout wrapper this.panels.
Bug: T134814
Change-Id: Idb269cf3f06c350ffe28b66e2e883c0a7a3348cd
Double-clicking the "insert" button would double-insert the template. Counting
the close as a pending action avoids that.
Bug: T129725
Change-Id: I41af7c051fd54004cecd563d7a6cf8fdb452840f
Trim the cached image data from the media dialog down so that it only caches
the same information that would have been fetched for a non-uploaded image.
Consistency!
Bug: T126081
Change-Id: I0f057c111b66f29c6360e27f97256384f5320b75
Warn the user about an empty edit summary when the "edit section"
link is used to trigger VE.
Re-does Ic7b456ca a different way.
Bug: T114857
Change-Id: I319c9c5bed47140a81eb409d490c9f82b89a49fe
Only call setup in ready process, as setup includes setting
focus. Defer fitInput call to category widget until transition
is finished so measurements are correct.
Change-Id: I49a30402cf58e36f16316e3ab04fa3349d19954e
Otherwise temporary changes to the previewNode will pollute the original
doc's model tree.
Bug: T121488
Change-Id: I6a6b3d904061b0ce6e0c513ad424aabc3c4472b5
This makes way for a base mw.Target class which is
not specific to articles (e.g. Flow boards).
Bug: T97166
Change-Id: If72650bdf87aa9f195b004da0a4d815f1a8063a3
This was removed upstream in OOUI as unecessary in general, but clearly
this was the place for which the rule had been designed. :-)
Bug: T119547
Change-Id: I46a1df1141c337b436e66872f1a8cdae026816cd
This fixes some rendering issues, and also increases the font
size of reference contexts from 12.8px (interface) to 14px (content).
Bug: T119430
Change-Id: Ib1bae8cd4cfe86903d78406a33db78e1489fde86
An MWExtensionDialog with a PreviewElement for the selected node,
or node to insert.
Depends on Icd622e15cd7 in VE core.
Change-Id: Ia0f46da2d445dd94c8aa50be73508d9f1afcb816