Commit graph

85 commits

Author SHA1 Message Date
Thalia bbed4307d7 Separate node classes into individual files
Bug: T205231
Change-Id: I84a6f2f7a842ab44e1f7103c0f288deda0451e79
2018-09-24 12:44:45 +01:00
David Lynch 26f6429702 TemplateStyles support
MWTransclusionNode will preserve TemplateData <style> in its generated content.

Disable TemplateStyles stylesheets in the original page content, and reenable
them when the surface deactivates.

Remaining TODO: if multiple copies of a template with deduplicated styles are
on the page, and the one containing the actual <style> is removed, all will
lose their styling.

Bug: T197563
Change-Id: Ibd8939eef7d8eb532719f4ee0ce200600449ef81
Depends-On: Ia9f2afcdba5456238e3ef444c202c9b0c78838bf
2018-08-22 17:03:27 +00:00
Ed Sanders dee50b778c MWTransclusionNode: Remove old createInvisibleIcon override
Bug: T196479
Change-Id: I99aab2e0eee3274305a6877263414ce21049fa5b
2018-06-05 18:50:14 +01:00
Ed Sanders ed604c857d Fix ve.ce.MWTransclusionNode#filterRendering to work with non-element nodes
Bug: T194839
Change-Id: I90065720725e8b59bfe4a4a9215b3835179cb2d1
2018-05-17 19:19:40 +01:00
Ed Sanders 16211cdc09 Abstract API calls to 'parsefragment'
Change-Id: Id0be3207219a6d93cebff2b6b5061cd24898d5cb
2018-04-06 13:49:16 +01:00
Ed Sanders ec3c6b65c0 Remove <section> unwrapping code from ve.ce.MWTransclusionNode
Has been fixed upstream in Parsoid.

Bug: T181226
Change-Id: I7dfe228e6d1008c4e66377d501f2e4af72c1813d
2018-03-29 14:05:32 +01:00
Arlo Breault 25e3662c00 Remove autoGenerated hack
Reverts some of 471e40e

Depends-On: I2b5c7ff552b3322be74f79a81936c41d58fecabc
Change-Id: Ibfcd4ced6c58c1cd0d362af3bdb43ce4e6879941
2018-01-12 11:52:42 -05:00
James D. Forrester 0a7a845a42 doc: Bump copyright year
Change-Id: I0b299c840ede1a1b8552cecfc70c5760ab036181
2018-01-03 17:45:07 +00:00
C. Scott Ananian b85caca493 Strip legacy section IDs from inside headings
We emit <span id="..." typeof="mw:FallbackId"></span> inside headings
when necessary to provide backward compatibility with pre-HTML5
section ids.  These are mostly harmless inside VE --- they become hidden
alienated nodes, which are then safely ignored by Parsoid during html2wt
even if they manage to migrate outside of a heading --- but it's a
little safer to strip them.

Change-Id: I07d0fcf54427ab02d4930cff183d3e5579a99306
2017-12-12 12:15:05 -05:00
Ed Sanders 471e40e8bb Fix template rendering
* Look inside first child for autoGenerated (as reflists can be wrapped)
* Unwrap Parsoid sections
* Discard leading and trailing whitespace

Bug: T179618
Change-Id: Ib9ead28173360f0f1d5a4dc66c33a75d70ef34b3
2017-11-27 15:02:31 +00:00
Ed Sanders 1b8f8d8908 Replace wg(Relevant)PageName with target#pageName
The default value of target#pageName is wgRelevantPageName
but other targets my override this, or change it dynamically
(e.g. ContentTranslation).

Also remove duplicate setter of pageName in mw.ArticleTarget,
already set in mw.Target.

Change-Id: Iebd1def1d4142978a673afec584a0b663644d176
2017-09-26 13:22:00 +01:00
David Lynch 0e973e2539 ce.MWTransclusionNode: make sure model exists before getting its document
Bug: T168932
Change-Id: I8d458888ed0b80205ce17b41f3506410c550630f
2017-07-24 11:31:19 -05:00
jenkins-bot 1333373c3e Merge "Drop local 'template' icon, use 'puzzle' from upstream" 2017-07-17 15:09:28 +00:00
David Lynch 0e8ef6c307 ce.MWTransclusionNode: make sure model exists before getting its document
Bug: T168932
Change-Id: Idf18839b1f1fae6eb29621f1950d2b52c99e3433
2017-07-13 11:33:38 -05:00
James D. Forrester 528942c2e1 Drop local 'template' icon, use 'puzzle' from upstream
Now that our template icon has been upstreamed thereto.

Bug: T111041
Change-Id: If101018de284dcc1be086d92427de0d88adb0e02
2017-07-06 09:52:56 -07:00
Bartosz Dziewoński 624211a60f Use Parsoid data for template names rather than detect from wikitext
We were incorrectly handling transclusions with trailing
newlines after the template name.

This also improves handling of non-template transclusions,
e.g. parser functions like `{{int:mainpage}}`, which are
no longer mangled as if they were page names.

ve.dm.MWTransclusionNode#isSingleTemplate will now match
a template even if it's name is itself template-generated.

Logic for turning Parsoid's hrefs into page names stolen
from ve.dm.MWImageNode.prototype.getFilename.

Bug: T167613
Change-Id: Ibecf71338eb37bb3da81a7372e4ed41140a9af57
2017-06-14 23:15:18 +00:00
David Lynch 0eb6b94b4c MWTransclusionNode: Implement MWTransclusionTableCell
Back in de98382a55, references to MWTransclusionTableCell were introduced,
but weren't followed through on. So, actually add it. Have cellable
Transclusions use it as their type.

Bug: T144122
Depends-On: I054f12f4218102a12d7a9ea843f9c61e8825c52c
Change-Id: I367f878bfd1c58e20b62368cb78120604b48d791
2017-05-15 12:09:11 -05:00
Ed Sanders 7c0fc8d3b9 Fix minor lint errors and typos
* Commas that should be semicolons
* Unnecessary 'call's

Change-Id: I11a80702b5396a36e3deecc6e706a397cc354bd8
2017-04-29 12:36:17 +01:00
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