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
If the value has changed since the event was fired, we're operating on old
data, *and* another event will have been fired for that change anyway. So
abort this check.
Bug: T146306
Change-Id: Ia6682ec0218fd3fbc573582753d815a56963eb71
OnInternalLinkChange happened post-validation, and received an already title-
normalized version of the href. Thus `file://` would become `:File://`. As
such, hook up to the raw internal link input change event, and judge what the
user actually entered.
Bug: T138956
Change-Id: I0f9f3de3b7bf6e5430e55fa69626522b0c74296a
Currently the switch only happens if it's a valid schema. Instead, switch if
any schema at all is detected, so we can tell the user it's invalid. If they
really meant to link to an internal wiki-page that just happens to start with
a "schema://", they can switch back to the internal tab to force it.
Bug: T138956
Change-Id: Icfd74157fd8439920668a417661265ddd52c9a21
If internal link detection is in the LinkAnnotationInspector, it falls down
when a valid URL which isn't also a valid page title (e.g. percent-encoded
titles) is pasted into the input. This is fixed by moving the detection to the
input's change handler before any validation can occur.
Bug: T119431
Change-Id: I1eb2040dd918fdcc22c28594b5cbad835cf384a8
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
We were selecting outside the annotation, when converting a LinkNode to a
LinkAnnotation. This meant that typing would overwrite the annotation as well
as the label. Speculatively, this is probably a side-effect of recent changes
to how nails and cursor offsets interact.
Bug: T121448
Change-Id: Ib2274bc5857294c5b691b3c3567b135d68bfa596
Depends-On: I3954c7f8f8e5870b13a8f6c4f0e86fb3b20b3cd3
This causes the inspector to take focus early (line 291) on
first load, and is not necessary as this method fires when
needed anyway.
Bug: T129228
Change-Id: Ia69f76b68e89daf5cb01449c40e71de4ec32d400
Otherwise the selection will/won't contain the opening node of the
link, depending on where in the paragraph it is. This makes the
experience of starting to type unpredictable to the user. By forcing
it to always have the contents of the node selected, typing always
just updates the label.
Bug: T114643
Depends-On: I7c46a917d9752145174919f41066b4841b203218
Change-Id: Ic1c573c2c28ced49f685ec6082506cb20d5163cd
If you create an autolink in the middle of bolded text, the magic link
should also be bolded. Similarly, if you convert a bolded simple link
to a magic link, the magic link should stay bolded.
Change-Id: I38c7f3c0c275851049088a37f3b37d815ed38e4e
Applying staging doesn't emit an update event on the node, so
forcefully emit one with 'staged' equal to false, so the full
error is rendered (if present).
Logically depends on I8ebb26d4bc in core.
Bug: T114480
Change-Id: I7ba54b67982fc5b10839426cdc216e14c0e33c01
As part of the plan to render extension errors in the
inspector instead of the view, append an element to
contain the error. More specifically, the element is
a div that contains a LabelWidget (in which the error
message is displayed) and a ButtonWidget (to expand
and collapse the error).
Initially the error element is hidden, but if Parsoid
returns an error, the element will be shown. If the
error is longer than 1 line, it is truncated but can
be expanded. On closing the inspector, any remaining
error is collapsed and hidden.
Depends on I6002d9870d2b to work
Bug: T113172
Change-Id: Ie84130d4ac0da9a738bf98ad0a3677d47566d585
Call updatePreview in insertOrUpdate node, when closing the
inspector. If edits have only been made to attributes that
don't affect the rendering, updatePreview will not have been
called, so the model won't have changed. Therefore
updatePreview should be called every time the inspector is
closed to make sure such edits are applied.
Bug: T113078
Change-Id: I48fb291487f76fc515f122646d205366a60dca62
New changes:
18e46b6 [BREAKING CHANGE] LinkAnnotationWidget: Abstract .text property to getTextInputWidget
Local channges:
* MWLinkAnnotationInspector: Use new getTextInputWidget method
Change-Id: Ia33797d612be7b4521e7212047a38480ee2520df
* Don't insert/update/remove nodes on cancel in MWExtensionInspector
* Don't forget to popStaging on cancel in MWLiveExtensionInspector
Bug: T110992
Change-Id: I1e30206595e304eb502c7e745bf5e00d145d12d7
Implement a special node type, context item, and inspector for
ISBN/PMID/RFC magic links. Add buttons to the link inspectors
to convert back and forth between "simple" links, and magic links.
Depends on I5d000d8b63dafdfe0a2753069d3f0ac5b03b8829 in Parsoid
for clean round-tripping of localized ISBN magic links.
Bug: T63558
Change-Id: Id5b7a2ae3c80b0e5eed598f0bd024d3e94f7e9aa
You can now do this from the context menu. No need to have extra buttons, and
this makes it consistent with the MWInternal/MWExternal link inspector.
Bug: T109646
Change-Id: Ifd4b3645c66ba2f32ccee7e2848967cf5e7ec82e
Add ve.dm.MWInternalLinkAnnotation.static.newFromTitle to build an
appropriate internal link annotation from a mw.Title. Tweaked some
method signatures to avoid repeated reparsing of the title text.
Also refactor ve.dm.MWInternalLinkAnnotation.static.getTargetDataFromHref
to explicitly return a boolean indicating whether the result was determined
to be an internal link.
Bug: T64816
Change-Id: I74385d7b3ede1794398dabb749185f4080509b99
LinkAnnotationInspector in VE core calls
this.setAnnotation( null ); on teardown, which causes
MWLinkAnnotationInspector#onInternalLinkChange to be invoked
with a null fragment.
Bug: T103176
Bug: T104231
Change-Id: Ibb50ba1696609bebdfc2857ea292ee30b6b5126a
Get the HtmlDocument in a different way that doesn't involve
ve.init.target.
For page (non-Flow) MW VE, I checked that it yields the same result.
Bug: T103176
Change-Id: I54bdf4f29f6acf4359be45b5b2ddfd23b5835c34
Although an internal link is unlikely to be a valid external link, this
prevents an annoying experience when the user switches to external and
then back to internal while exploring features.
Change-Id: I178cf3f641db683f5dd0a49c246c204ded89760c
Don't use the full IndexLayout for now as it doesn't
work easily in variable height situations.
Depends on this feature being preset in MW core.
Bug: T97878
Change-Id: I5d949bf69b0721b288c37c1f12210b0265658eb5
New changes:
68959f2 Localisation updates from https://translatewiki.net.
2c0224d [BREAKING CHANGE] Link widget refactor
f81eefa [BREAKING CHANGE] Rename LinkInspector to LinkAnnotationInspector
Local changes:
Adjust for link inspector refactor
Create separate widgets for internal and external link
annotations. Remove annotation specific logic from link
target input widget.
Change-Id: I054c3fe7ac9c61fbc3302471abd58cab89fed5a4
MWExtensionNode:
* Inherit from LeafNode at the top level. Inline and block only
differ in CE where inline has isContent set.
MWAlienExtensionNode:
* Inhert from MW(Inline|Block)ExtensionNode respectively. Both
mixin MWAlienExtensionNode.
Bonus:
* Bring in paragraph unwrapping on inline nodes from MWMathNode
Bug: T93712
Change-Id: Ib04234f740cf1f27c861d8b3cfeea5e323b94678
Also fix up logic duplicated between ExtensionInspector
and LiveExtensionInspector.
BREAKING CHANGE:
* nodeModel property no longer exists, use NodeInspector's modelClasses
property, which is an array.
Bug: T93592
Change-Id: Ib0131c9485a903d73b770090bf8a938056782ba3
Local teardown process was jumping to the front of the queue
resulting in the attributeInputs being emptied before they
were read in updateMwData.
Bug: T85818
Change-Id: I24cb490996048e514895c359dedf5945acdecb0a
New changes:
6bbcd6a Localisation updates from https://translatewiki.net.
b8d8a5b [BREAKING CHANGE] The Great Selection Rewrite of 2014
Local changes:
Update to use new selection/range API
Change-Id: I5480d5c77d599c93c2d374fac88bb2fdb68b0024
Inserting a new external link from the link inspector when nothing is
selected (collapsed selection) will now produce an autonumbered external
link ('link/mwNumberedExternal' node, corresponding to wikitext
"[http://example.com]"). It used to produce annotated link text
('link/mwExternal' annotation, corresponding to wikitext
"[http://example.comhttp://example.com]" or "http://example.com").
Depends on two commits in VisualEditor/VisualEditor:
* Icc2e368a to insert unannotated content from the inspector.
* I40cd4d5a to insert non-text content from the inspector.
Bug: 51309
Change-Id: Ie4a633ed42907551337a62d96d0abd59e208d49d
New changes:
c4ce5ee Update OOjs UI to v0.1.0-pre (466a8762ac)
Update changes:
* Remove manager arugment from window constructors
* Use this.$content instead of this.frame.$content
* Use this.getDir() instead of this.frame.getDir()
* this.loading is now a promise, not a boolean
Change-Id: Ia83449a60078dd24ea4f976221c0859e5a121279
* Separate teardown into (insertOrUpdate|remove)Node
* Override insertOrUpdate completely to avoid generating
extra transactions. Surface#applyStaging creates all the
transactions we need.
* Override remove to popStaging before calling parent.
* Fix isEmpty check to use getInnerValue (ignoring whitepsace)
Change-Id: I903302af178d6f923de00aff9c58e5330d682813
There is a MWLinkNodeInspector too, renaming the class instead of the
file to avoid name confusion.
Change-Id: Idaa26503ecd9b0fd0903937bb209397672138054
This was implemented, but didn't work because the node was removed
before its annotations were copied.
Also fixed:
* Don't do an unnecessary transaction to change attributes of a node
we're going to remove anyway.
* Apply the same link href fixups when converting as when not
(previously, changing the href to 'example.com' and clicking "Add
label" would break the link in interesting ways).
* Do a single transaction from replacement instead of removal+insertion
when possible.
Bug: 67377
Change-Id: I0318ae62c799300fb7696506a9736b839e2c8578
LinkNodeInspector was broken when you clicked away/pressed escape, because data was not set.
Normalizing on data being initialized at the top of get*Process methods if used.
Change-Id: I89728ac558545a6f2c325014b6f457ec6bef17b8
New changes:
56de6f5 Localisation updates from https://translatewiki.net.
f8bda64 Widgetise demo menu
6ac48d8 Localisation updates from https://translatewiki.net.
365e131 builderloader: Omit value for boolean "disabled" attribute per HTML5
706e4b3 Prevent double counting of DM nodes in getNodeAndOffset
b141a7d Update OOjs UI to v0.1.0-pre (d2451ac748)
c5b3921 Localisation updates from https://translatewiki.net.
1606983 Update reference to ConfirmationDialog to use MessageDialog
Deletions:
* Styles for ve.ui.MWBetaWelcomeDialog - not needed anymore because
OO.ui.MessageDialog provides them
* Styles for ve.ui.MWGalleryInspector - not needed anymore because
ve.ui.MWExtensionInspector provides part of them and the rest are being
replaced by programatic sizing
Modifications:
* ve.ui.MWLinkTargetInputWidget - Added support for validation and href
getter
* Split message between tool and dialog title for ve.ui.MWEditModeTool
and ve.ui.MWWikitextSwitchConfirmDialog
General changes:
* Updated inheritance.
* Added manager param to constructors of dialogs and inspectors.
* Updated use of show/hide with toggle.
* Added meaningful descriptions of dialog and inspector classes.
* Configured dialog and inspector sizes statically.
* Configured dialog action buttons statically.
* Interfaced with OO.ui.ActionSet to control action buttons.
* Moved applyChanges code into getActionProcess methods.
* Always using .next in setup/ready process getters and .first in
hold/teardown process getters.
Change-Id: Ia74732e6e32c0808eee021f0a26225b9e6c3f971
XML-like tags in wikitext are not actually XML and don't expect
their contents to be escaped. This means that (usually) it is not
possible for a tag '<foo>…</foo>' to contain the string '</foo>'
(see bug 57429 comment 4 for details).
Prevent the user from doing that by escaping the first angle bracket
'<' to '<' in such inputs when the inspector closes.
Bug: 57429
Change-Id: Ia566452ae0ffc9caa3ea48a52e5b8032c33fc9c8
Our coding style has been upstreamed and first released
in node-jscs v1.5.0 (grunt-jscs-checker v0.6.0).
Change-Id: Ifc0cfc7177946b9d11407f60e38b0177883724c5
Some surface fragment methods return a clone, so make sure
that is written back to this.fragment in dialogs, as this.fragment.select()
is called on teardown.
Functionally depends on If26cc0a2d in core.
Bug: 65706
Bug: 65716
Change-Id: Ia552b2a4c4c59ffc308a4acdecac78a7803a1c1f
It's already done by the parent, and done in a more complex manner
(with whitespace preservation) which this destroys.
Change-Id: I0385abe4093223b1804b11d77222cf8212a6360f
Assume this was copied over from annotation inspector
but doesn't really make sense for a large textarea.
Change-Id: If731d22d09fc4c5636301a3da3089096555a9dc1
Follow up to Ia10987fb which fixed some but not all the typos
and in so doing broke functionality.
Change-Id: Idce901e04f09b2b34c45081d622ee161036e6c90