Commit graph

67 commits

Author SHA1 Message Date
James D. Forrester 8463524e18 MWSaveDialog: Run links through a render function for preview & visual diff
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
2017-03-31 10:51:35 +01:00
James D. Forrester 122f49b2dd build: Bump file copyright notices for 2017
Change-Id: I3c20809e71cc0da58123e1b5f29c4f3aac945496
2017-01-03 08:58:33 -08:00
Ed Sanders e655880d14 eslint: Remove unused exception and fix documentation errors
Don't enable valid-jsdoc yet though, due to @chainable bug.

Change-Id: I4d2a6de19c72c6e4c20733446616d8046419d431
2016-10-28 12:02:36 -07:00
Roan Kattouw f2c715aaa0 ce.MWTransclusionNode: Clean up href normalization
This became a special case when decodeURIComponentIntoArticleTitle()
was introduced, presumably because we skipped underscore transformation
out of laziness here. It doesn't matter whether we do underscore normalization
because we do title normalization right after, so make this code
less exceptional by using the fully decoded title.

Change-Id: I036cc7f1e08895d36224c94b8edc3ad700af1947
2016-09-29 00:16:15 +00:00
Roan Kattouw bb45d984ca dm.MWInternalLinkAnnotation: Fix href normalization for special characters
<a href="Foo%3F"> would dirty-diff to <a href="Foo?"> and also render
as such, pointing to the wrong page.

We also called decodeURIComponent() on the href twice, which can't
have been good.

Move URI decoding and underscore normalization into
getTargetDataFromHref(), and add rawTitle for callers that need it.
Put rawTitle in the origTitle attribute, so that equivalence
comparisons (decode(origTitle) === title) work as intended.

Bug: T145978
Change-Id: I29331a4ab0f8f7ef059c109f6813fa670a2c7390
2016-09-22 09:10:41 -07:00
Ed Sanders 4ae7bc6a31 Show name of template for invisible templates
Soft dependency on Id842389d in core.

Bug: T141861
Change-Id: I24f100dde387549a735ebd93e1c9a21f59f52170
2016-08-03 18:52:20 +00:00
David Chan 367bc2437f New decodeURIComponentIntoArticleTitle method
This replaces ve.safeDecodeURIComponent(...).replace( /_/g, ' ' ) . This action
is really specific to the quirks of mediawiki title processing.

Change-Id: Ia9e525c9340e6de9e485355899996c97867ccb48
2016-06-14 23:31:23 +01:00
Ed Sanders 236e3d1241 [BREAKING CHANGE] Evalute block/inline state when inserting a transclusion node
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
2016-05-16 09:19:13 +01:00
Ed Sanders 681250dd5e Filter out auto-generated reference lists
Bug: T101553
Bug: T127664
Change-Id: Idc8c6f30ccdd5eaf76a3f7c1b923d8656ca36413
Depends-On: I24250845e97acb4b7de9c495cb46dbd28fc8817e
2016-03-28 17:23:42 +00:00
Ed Sanders 98bc5daba1 Use new iconWhenInvisible feature in Transclusion/Extenion nodes
Change-Id: Iba55676c06a1cd625187c38c1ae0c9c20b065827
Depends-On: I127bb5d34850cdc545ea3c05d0fc41a8ae1c6dea
2016-02-02 18:07:13 +00:00
James D. Forrester ada58df361 build: Bump file copyright notices for 2016
Change-Id: I3c618c196e504a80ca297a4132a17f1977a24fb7
2016-01-03 14:57:25 -08:00
jenkins-bot ce6d4eb8c5 Merge "ve.ce.MWTransclusionNode: Pass number of templates to context" 2015-08-24 21:47:08 +00:00
Alex Monk b5dd86685b ve.ce.MWTransclusionNode: Pass number of templates to context
Fixing <visualeditor-dialog-transclusion-contextitem-description>.

Bug: T109564
Change-Id: Icdf762b3761227c3fcedefc947ffc512520cff76
2015-08-24 14:41:07 -07:00
James D. Forrester f5c6f61163 build: Enable jscs rule 'requireSpacesInsideBrackets' and make pass
Change-Id: I846d36c15e1b1f810d2ef7fd422f8412790bcb0f
2015-08-19 10:33:02 -07:00
C. Scott Ananian a6775796fe Detect paste of wikitext and convert it
This invokes Parsoid to convert likely wikitext pastes.

This addresses about 20% of the <nowiki> insertion quantified at
https://fr.wikipedia.org/wiki/Wikip%C3%A9dia:%C3%89diteurVisuel/Avis/Nowiki
for 2015-04-08 which were due to inadvertent pastes of wikitext.

For a better user experience, suppress Parsoid's P-wrapping if the
output consists of a single top-level P element.  This ensures that
pasting '[[Foo]]' won't add an unexpected newline before the paste.

Bug: T54204
Bug: T109449
Change-Id: I26a4cd8dc5b7e7caf16ca081dbe7baf6a7db8e5c
2015-08-18 15:16:06 +00:00
Ed Sanders de98382a55 Make transclusions which are td/th elements behave as table cells
Depends on Ic94242c0 in core.

Bug: T85648
Change-Id: I0f65fca37fe94486d0a736d763270b3dc5503649
2015-08-04 17:52:13 +00:00
C. Scott Ananian 85b86fb45d Stop using deprecated aliases for OO.ui.mixin.*
These classes were renamed in OOUI v0.11.4.

Change-Id: Ie932eb3bf5e65866ae4ba3bf2317facb1e740d3b
2015-06-10 20:25:04 +00:00
Roan Kattouw 95bffa22a0 Stop using this.$
Has been a backwards-compatibility alias since OOjs UI 0.7.0.

Change-Id: I17d7c03e9d1b9fa991d88444d22abfd403269ee0
2015-04-14 02:54:01 +01:00
Roan Kattouw f3b7ccdefb Use ve.safeDecodeURIComponent()
Depends on Iacc50230a in VE core.

Change-Id: I7fc505c261726f8d83c86a9cc352a0bf9fcb455a
2015-03-31 22:08:46 +00:00
Ed Sanders f86b8aef74 Use new isVisible method
Also make sure only one icon is appended in the case where
$element consists of multiple siblings.

Depends on I7b4d9a54c in core.

Change-Id: I5a7985b7a2c709f079afcdfd5108d73cc7bfc688
2015-03-30 11:28:54 -07:00
Ed Sanders a1bc7aeac1 Move template icon code to setup event
We must wait until setup before we can measure this.$element.

Change-Id: If657b29e30e44af750516c20d318707293066910
2015-03-26 18:12:46 +00:00
Moriel Schottlender 4fc02cea6a Use a detached icon in transclusion node
In the case the node is empty and we need an icon, use a separate
icon element that is detached and reattached as needed.

Change-Id: I5bcbe531cb1db1a4ac25ed4a2f462dde08513b7b
2015-03-09 12:05:32 -07:00
Moriel Schottlender be965d1c4f Follow-up I11b9f0ab: Only make icon on transclusions that require it
When deciding to add an icon to a transclusion (specifically, when
it is hidden) do so only if it is justified. Otherwise the
node becomes the icon even when it has information in it, which,
starting from the latest OOjs UI change, also has specific (small)
sizing.

Change-Id: I521c92fc645a392077e6cc90f55557c4cea3cb11
2015-03-09 17:54:55 +00:00
Moriel Schottlender 2ae9fa6b29 Add an icon to hidden templates
Check if, after being fully rendered, a template is effectively
empty. If it is, add an icon and style to it so it displays for
the user and is clickable.

Bug: T51806
Change-Id: I11b9f0aba3398a3deb3e755051366e174a28e586
2015-03-04 10:30:50 -08:00
Alex Monk 8e48f94580 Use mw.Api to run requests rather than our own stuff in ve.init.mw.Target
Bug: T58659
Bug: T89435
Change-Id: I18162f04c50f48606378aed62ee99fccdc3159f6
2015-02-25 01:57:22 +00:00
Roan Kattouw ee886cd8f8 ce.MWTransclusionNode: Protect against race condition in GCN rendering
If an MWTransclusionNode is inserted, then immediately modified,
a race condition can occur where the GCN rendering arrives for the old
node, which is already detached and doesn't have a ModelHtmlDocument
any more. Protect against this happening so we don't cause a JS error
by passing null for the document parameter to ve.resolveUrl()

Change-Id: I1964baa3a9b294b130620e9b34a695584fc55143
2015-02-16 19:21:00 -08:00
James D. Forrester 2f8b3e0d96 build: Bump copyright notices to 2015
Change-Id: Ie92dab7411116d3410195c3fb0a3513c664c0c30
2015-01-12 20:34:19 -08:00
Roan Kattouw f71054d67d Work around $.parseHTML( '' ) returning null
$.parseHTML() always returns an array, except in this one case,
so checking .length of the return value almost always works except
when it blows up in your face.

Filed upsteam as https://github.com/jquery/jquery/issues/1997

Bug: T86056
Change-Id: If133a9df4d573b41b0ecb5bde47b3e6ada053921
2015-01-07 21:02:17 +01:00
Alex Monk a7b9b89479 Fix href parsing in transclusion nodes when on alternative (e.g. mobile) domains/paths
Use model HTMLDocument when parsing transclusion nodes and their link hrefs

As well as mobile, this also covers the issue I found in /w/index.php?veaction=edit

See also T76374

Bug: T76379
Change-Id: I07c9ba0adbcee32f7eb2ca280d3a1d46e963d28f
2014-12-05 22:23:09 +00:00
Alex Monk c2ed5201e5 Handle encoding of links in transclusion nodes properly when determining existence
Bug: T75823
Change-Id: I9398e4e1657b218043658d83b13c3dc78ffa8ff1
2014-12-02 01:09:12 +00:00
James D. Forrester cfb20ef8a1 ve.ce.MWTransclusionNode: Replace last use of ', ' in VE-MW with <comma-seperator>
Bug: 66894
Change-Id: Idd6d02e35b9aa0db5f71c75adb0a0400cc31c83a
2014-11-19 11:19:50 +00:00
Roan Kattouw 36060a2782 Apply pre-save transform to template previews
Because autoValues often involve {{subst:}}

Bug: 71157
Change-Id: I2787f2595f8c4b8838a3e9ac9ba898af0b43b58e
2014-10-22 15:47:51 -07:00
Alex Monk 55164d4027 Don't try to check page existence of external links in transclusion nodes
Only internal links

See bug 71900 comment 1

Change-Id: I35c9bea4c3735bdcdf8e4eda4f2a24567596e639
2014-10-17 19:49:32 +01:00
Alex Monk 8f7713e796 Apply link styling logic to transclusion nodes
Only template nodes for now. Not sure what we can do about generated content nodes in general...

Bug: 65353
Change-Id: I848f36764b446ed30c74c0e641d0973008f6880b
2014-10-08 15:03:40 +01:00
Alex Monk ef1cebd111 Use mw.Title#getRelativeText to deal with titles relative to specific namespaces
Added in MW core in Ie554adef, was backported to 1.24.

Change-Id: Iedc0319042529d41d29846d1734b5481850e9552
2014-09-26 02:47:18 +00:00
James D. Forrester a232147b11 Switch 'disallowQuotedKeysInObjects' jscs rule on and fix up
Change-Id: I75ac4b378ef485feead9d0eff34ed7877b94b5d0
2014-08-22 13:50:48 -07:00
James D. Forrester c2f37a0450 test: Move mw into the global list of globals for VE-MW
Silly to have 38 MW-specific files needing to declare that they're using mw.

Change-Id: I97891ed922fe0c37d8c96425a4d23bd15098438b
2014-07-19 17:42:45 +00:00
Alex Monk 51142e8b11 Replace ve.bind( fn, ... ) calls with fn.bind( ... )
Bug: 62762
Change-Id: I1a7fc7f27fa737d17f5c6b3d084ef4a35e4bebc0
2014-07-10 13:54:07 +00:00
Alex Monk c6396e019e Try some more to handle template namespace properly
Looks like I messed up in Ia67f9054 and got a setting backwards

Also prefix titles in a couple more places

Bug: 67384
Bug: 66893
Change-Id: Id6d5841ee1645be62a024308da48ddc6769c78b6
2014-07-03 01:20:02 +00:00
Ed Sanders 41672be584 Update VE core submodule to master (dc01df0)
New changes:
d02cf3d Fix simulation of .prepend() in ve.ce.BranchNode#onSplice
c19fa38 [BREAKING CHANGE] Remove generated content node wrappers

Local changes to remove classes attached to GC nodes

Change-Id: Ide82c96db4803ef59d398788b46fa5d7fb9a2476
2014-06-30 16:34:56 -07:00
Roan Kattouw 8a536eb294 Normalize titles in template descriptions in context menu
For {{echo}} we would show "echo", but for {{Echo}} we would
show "Echo". Same for {{cite web}} vs {{cite_web}}. Normalize
these template names before displaying them in the context menu.

Reported by Matma Rex on IRC.

Bug: 66893
Change-Id: I84945aab13e53cd0aba529c298b5cc0b2e7eff1e
2014-06-21 01:29:19 +00:00
Ed Sanders c70d32c017 Use registered target, instead of ve.init.Target
Depends on I468d4eb4 in core.

Uses various hacks to trick the test runner into thinking
an MW target is in use, when in fact we still use SA targets.

Change-Id: If4611307d5d7aaee4af84f86ef82faf9078043b6
2014-06-17 20:41:01 +01:00
Ed Sanders 0688aa7b02 Update VE core submodule to master (89820e5)
Remove clickable node mixins.

New changes:
65e2e22 [BREAKING CHANGE] Make all focusable nodes clickable

Change-Id: I24403e12621e5b789e0b8c99f54f1d1b8fa802cc
2014-06-16 12:59:37 -07:00
Roan Kattouw 10cda9359a Update VE core submodule to master (fc52878)
Remove RelocatableNode mixins for new FocusableNode.

New changes:
fc52878 [BREAKING CHANGE] Merge RelocatableNode into FocusableNode

Change-Id: Id8ce497b0fd1ff7732f68aa1ae8af4f4f8f9db0f
2014-06-11 11:14:46 -07:00
Roan Kattouw 310601ef47 Update VE core submodule to master (e1b0e33)
Remove ProtectedNode mixins for new FocusableNode.

New changes:
e1b0e33 [BREAKING CHANGE] Merge ProtectedNode into FocusableNode

Change-Id: Ie515704163c24317739fd34d35094b9ada6bfa66
2014-06-10 16:52:49 -07:00
James D. Forrester 4be0218bbb Update VE core submodule to master (5f10e73)
New changes:
a53f101 Update OOjs UI to v0.1.0
1fa518b Update OOjs UI to v0.1.0-pre (15f4156bac)
257af53 Use ContextWidget instead of toolbar inside context menu
5f10e73 Follow-up Ia2076a42: Mark getDescription() as @inheritable for Annotation, Node

Local changes to adjust for the ContextWidget changes.

Change-Id: I47f68f5cf1b9583dab9bd0109fa6504481bdfc67
2014-06-09 18:35:08 -07:00
Rob Moen ec40953722 Mixin ClickableNode and add primary command names
Created ve.ui.MWCommandRegistery, added inspector and dialog commands

Change-Id: I6b45018bdb719e36a85a785d4e08d32ee4b9b0a3
2014-03-20 00:33:38 +00:00
jenkins-bot 2284cb9aae Merge "Factor out AJAX defaults into ve.init.mw.Target.static.apiRequest()" 2014-01-15 10:37:43 +00:00
Roan Kattouw 97c4c6c71b Factor out AJAX defaults into ve.init.mw.Target.static.apiRequest()
Change-Id: I90b0858ccd657b7183ae5327903449d17d9f0bef
2014-01-13 11:45:30 -08:00
jenkins-bot 6edb66229b Merge "Use $.parseHTML() to parse HTML in the transclusion preview" 2014-01-06 15:40:13 +00:00