Commit graph

469 commits

Author SHA1 Message Date
Ed Sanders eb2ee52de0 Create wrapper paragraph when converting block image to inline
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
2017-08-24 15:56:22 +01:00
jenkins-bot 6f12d066d1 Merge "Rename LanguageConverter markup fields" 2017-08-11 14:28:11 +00:00
C. Scott Ananian 4ff740fe21 Rename LanguageConverter markup fields
Avoid confusion by using `twoway` instead of `bidir`, which could be
confused with the Unicode bidirectional layout algorithm.

Depends-On: Ib59dff22e64f235e30778a5a5b3e525e4fc7fdd3
Change-Id: I7efb35245d48125b167dc0f0ef8f12aa0fff94e5
2017-08-10 10:59:57 -04:00
Roan Kattouw 448944de3b Standardize on /^(\.\.?\/)*/ for interpreting Parsoid hrefs
We used (\.+\/)* instead of (\.\.?\/)* in some places,
but that doesn't make much sense since we won't and shouldn't
ever see stuff like '.../'

Change-Id: I9efcff2d2a34499ca57321dfbae29392ecb422d7
2017-08-02 21:30:31 +00:00
Ed Sanders 539a1cab43 Compare template names when diffing, not just type
As type is always 'mwTransclusionInline/Block'.

Bug: T166801
Change-Id: I76cdf0add780d556206c439797cfcca19133d94d
Depends-On: I0f24d9d81b5491a8f09bc59e5f544f99751fd506
2017-07-28 21:32:32 +01:00
C. Scott Ananian 9ee713d480 Display LanguageConverter markup in VisualEditor
Implement special node types for language variant markup, so that they
display appropriately based on the currently-selected variant.

(Parsoid uses empty elements to represent this markup, so without this
patch anything in -{ ... }- is alienated and disappears.)

A follow-up patch will implement context items and inspectors to
allow editing these nodes.  This patch is basic "read-only" support.

Depends on I4fcdebc2290ec35ba188f4c2e69d578791fbcd67 in Parsoid to
generate the appropriate markup, but this patch is safe to merge
independently.

Bug: T49411
Change-Id: Ie11e9301d2513bfe4a36036481cee9a047f46d37
2017-07-25 15:26:41 +00:00
Ed Sanders 835a775a49 build: Upgrade grunt-eslint from 19.0.0 to 20.0.0
Mostly indent and regex fixes.

Change-Id: Iaf9d02363c78cb71deec5c4cab53a05b67f60600
2017-07-18 12:55:33 +01:00
Ed Sanders dd54c9c95d Return truthy object when image info not found
A missing image should return some data to say the
image is missing, not just reject the promise.

Bug: T169337
Change-Id: Ib41a64a783c1baca88f428417c98e7fb913d14a1
2017-07-03 18:01:33 +00:00
Ed Sanders b3d44c1ccd Normalize to template namespace when comparing
Bug: T169307
Change-Id: Ic3524819fb026713b27b193e4a03338fffd97229
2017-07-03 16:41:08 +00: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
Ed Sanders 9ccdf15695 dm.MWTransclusionNode: Move mixin comment, remove duplicated static property
Change-Id: Id8f8205db92a70dde7ba22b39e90e37590efb3d1
2017-06-06 16:28:01 +01:00
David Lynch 07e4d5fd17 dm.MWTransclusionNode: remove TableCellableNode mixin
Change-Id: Ic08c7ba03ad2bee35a96a750377450475d0efeed
2017-05-19 20:55:14 +02:00
Ed Sanders 153f7b034d Allow extension nodes to convert to a specified type of dataElement
Sub-classes want to dynamically change type, e.g. inlineFoo/blockFoo,
but doing this after storeGeneratedContents invalidates the cache,
so ensure this is done as soon as the element is generated.

Bug: T151130
Change-Id: I80e2f2587cff8e9d9fe6ded5d8581263268deaa8
2017-05-19 16:08:01 +02:00
jenkins-bot cfa8de994e Merge "MWTransclusionNode: Implement MWTransclusionTableCell" 2017-05-15 18:05:01 +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
jenkins-bot 75b762d5c4 Merge "Specify suggested parent node types for tables" 2017-05-04 18:50:48 +00:00
Ed Sanders 9d83efc747 Specify suggested parent node types for tables
This won't do anything useful until T164017 is resolved.

Bug: T164016
Change-Id: I39bffe2dc59a97888b81bdbe990e55ba95b0dd94
2017-05-04 14:50:49 +00:00
Ed Sanders 8e6105fec8 Allow headings in divs
Bug: T164453
Change-Id: I986b1b376a592095c94d29a102278d4fde0a621f
2017-05-04 12:43:36 +01:00
James D. Forrester 486bbd7609 Follow-up 57a06a6: Use the same attribute name on read and on write
Bug: T164054
Change-Id: I6770f6c91248fcd9ab39322413874e20a1b65552
2017-05-02 14:42:22 -07: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
jenkins-bot 323f2479ea Merge "Add basic support for Parsoid HTML5 video/audio" 2017-04-28 15:26:44 +00:00
Ed Sanders 0c2bb3da9c Add basic support for Parsoid HTML5 video/audio
Change-Id: I30b787261c57e912e571170d8aa2d04726b6aa3a
2017-04-28 14:08:18 +01:00
David Lynch 88f3191926 tests: MWInternalLinkAnnotation getFragment
Also, fix docs for it. It could also return null for a missing fragment.

Change-Id: Ib6df379c5c3686a59026b6b66f26b3050ede231a
2017-04-27 11:21:58 -05:00
James D. Forrester 8fd621ad74 MWTransclusionModel: Update for change in TemplateData
Depends-On: I7905502d0c419a04e4487095214634f1513b461c
Change-Id: I97a1bfc9f9ead082a673a91b9d2053630a90309c
2017-04-24 19:13:59 +00:00
Ed Sanders f20b9b0aa0 doc: Tag mixin inheritance hacks with bug
Also mixin dm.MWResiazble to dm.MWImage (already done
in CE).

Bug: T92540
Change-Id: I32215873993a7e9a7f775ce3f39e2d378e0f31cd
2017-04-13 11:00:17 -07:00
James D. Forrester 57a06a6e75 dm.metaitems: Turn grouped metas into variadic ones
We're getting rid of meta item grouping, so we need to prepare.

Merged:
* ve.dm.MWIndexMetaItem
  from ve.dm.MWIndexDisableMetaItem and ve.dm.MWIndexForceMetaItem
* ve.dm.MWNewSectionEditMetaItem
  from ve.dm.MWNewSectionEditDisableMetaItem and ve.dm.MWNewSectionEditForceMetaItem
* ve.dm.MWTOCMetaItem
  from ve.dm.MWTOCDisableMetaItem and ve.dm.MWTOCForceMetaItem

These three now inherit from ve.dm.MWFlaggedMetaItem to avoid code duplication.

Change-Id: Ic8a9cdb1226dccac2c27e7f4b965c1590a7387c0
2017-04-11 11:13:18 -07:00
David Lynch d5ac18a466 LinkCache: don't treat a link with a fragment as a selflink
This matches the rendered output for the page.

Bug: T162669
Change-Id: I1ea0ab37a2751c0b4669da8a23adf0ce271facea
2017-04-11 12:19:01 -05:00
Ed Sanders 55368c1170 VisualDiff: Ignore changes to originalMw
Can happen when switching edit modes.

Also fix typo in describeChanges.

Change-Id: I2c02adc34aef975b9f6f902a74907d24b7edc54a
2017-04-10 21:22:16 +01:00
Ed Sanders d50f49de82 MWExtension describeChanges: Actually return value of parent
Bug: T161357
Change-Id: I7a81ab68dc2f632bd6f380caafef2cba326ad0ef
2017-04-03 22:57:49 +02:00
jenkins-bot 34fa4dcda6 Merge "Use original title or normalized title when inserting link text" 2017-03-24 22:27:33 +00:00
Ed Sanders 738d3aff47 Use original title or normalized title when inserting link text
Original title will preserve the case of what the user entered
into the inspector. Noramlized title will remove any unwanted
leading colons from file/category links.

Bug: T118408
Bug: T124410
Bug: T160977
Change-Id: I92ffc19eab4eead0d124e84afc1e5a0a3e535867
2017-03-24 22:16:31 +00:00
James D. Forrester c70526f0a2 ve.dm.MWImageNode#describeChanges: Ignore borderImage noise from the model
Also follow-up 335b56728a by adding the visualeditor-changedesc-align
i18n which was missed.

Change-Id: I801f66c0028f71cf2cdbcb8f1675ba1f5a3cde31
2017-03-22 17:28:41 -07:00
Ed Sanders 9cd8faea8b VisualDiff: Add custom messages for change descriptions
Bug: T151403
Change-Id: I469a3c7897f2417c1850364f65da51c0deca2386
2017-03-16 14:36:09 -07:00
Bartosz Dziewoński 49f603c703 Update <pre> support for Parsoid changes
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
2017-03-14 14:08:50 -07:00
James D. Forrester 6fd475e8ec MWWikitextSurfaceFragment#convertFromSource: Don't make an invalid doc
Though neat, this hack to get the internal list doesn't seem to be used
and creates an invalid document (just an internal list with no content,
so the internal list is at the start and the default selection position
is inside it). Instead, use the ve.dm.Document.static.newBlankDocument()
utility function that was made for this use case.

Bug: T153509
Change-Id: Iba5931cb5e3f939a803c1d59fa0d8f30a0513f84
2017-03-02 05:43:03 +00:00
Bartosz Dziewoński 461f99e9da Document usages of ve.dm.Node.static.suggestedParentNodeTypes
Ed told me this.

Change-Id: I5e3160d3e5c38f9babc133db8977a6e6b8bbd610
2017-03-02 00:11:54 +01:00
Ed Sanders 501d0c94d2 Cache generated content request when inserting templates
We request the generated content of a template to determine
if it will be block or inline. This is the same request as
the view makes later to show the rendering, so we should cache
this repsonse.

Bug: T156698
Change-Id: I0ffd36ccd0aa821aa44d99328f2e3a2abc23dc0f
2017-02-22 04:00:38 +00:00
Ed Sanders 9337e6ecbd Tables: Add support for editing mw-collapsible/mw-collapsed
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
2017-02-16 17:21:44 +01:00
Ed Sanders f2cf73eaaf Define default HTML types for extension nodes
Use span/div for inline/block nodes respectively.

Bug: T157389
Change-Id: I4c501a6af88a490eec83af26adaa515a2b1d18d1
2017-02-07 20:12:39 +00:00
jenkins-bot 50e7fd0653 Merge "Fix MWInternalLinkAnnotation.getTargetDataFromHref's behaviour with URLs containing query parts" 2017-01-05 15:08:33 +00:00
James D. Forrester 122f49b2dd build: Bump file copyright notices for 2017
Change-Id: I3c20809e71cc0da58123e1b5f29c4f3aac945496
2017-01-03 08:58:33 -08:00
Alex Monk 4c061de2e0 Fix MWInternalLinkAnnotation.getTargetDataFromHref's behaviour with URLs containing query parts
ve.dm.MWInternalLinkAnnotation.static.getTargetDataFromHref(
	'http://mediawiki.krenair.dev/mediawiki_dev/wiki/Main_Page?veaction=editsource',
	ve.init.target.surface.model.documentModel.htmlDocument
)

Wrong, current result:
Object {
	title: "Main Page?veaction=editsource",
	rawTitle: "Main_Page?veaction=editsource",
	hrefPrefix: "",
	isInternal: true
}

New result:
Object {
	title: "http://mediawiki.krenair.dev/mediawiki dev/wiki/Main Page?veaction=editsource",
	rawTitle: "http://mediawiki.krenair.dev/mediawiki_dev/wiki/Main_Page?veaction=editsource",
	hrefPrefix: "",
	isInternal: false
}

Change-Id: I3d6d7fcfeb0d8354623026c831605c7633c3e11a
2016-12-24 20:12:44 +01:00
Ed Sanders 854256bb8e Use deep clone for empty convertFromSource
Bug: T153254
Change-Id: I0dc6be0d20020e3fb385c9d065f9395dbda5a6b6
2016-12-14 22:09:25 +00:00
Alex Monk c843824c97 Batch gallery imageinfo requests via ImageInfoCache subclass
Also get rid of .join( '|' ) for API request parameters per Bartosz

Bug: T147067
Change-Id: If4444cca300d65e28d6fb9003fcac5e076a5129a
2016-12-06 22:10:19 +00:00
Ed Sanders f01d617c53 Bypass API call when wikitext is empty string
Change-Id: Ie0cedfaae286f73e73bcde7bfca3cb2ae6197924
2016-12-03 17:44:04 +00:00
Ed Sanders c97e0b58d4 NWE: Disable progress bar when pre-parsing for WindowAction's
The progress bar dialogs interfere with the life cycle
of the window you are trying to open. Just disable these
progress bars for now to avoid catastrophic behaviour.

Change-Id: I77c8ae67a2d502bbd189836deb320cd55c3cb11a
2016-12-03 17:20:24 +00:00
Ed Sanders 9ceb13ce60 Update VE core submodule to master (5be61ce)
New changes:
860954b [BREAKING CHANGE] Parse selection before applying source tools

Local changes:
Implement convertFromSource/convertToSource in WikitextSurfaceFragment

Depends-On: Iaa41c49e2f8e28af28a8a64cb6915f705fa35e8c
Change-Id: I746619d442fb565cd582cb09de3126526c73c333
2016-12-03 03:43:59 +00:00
James D. Forrester a835f4f9d5 Use canonical ve.dm.TransactionBuilder.static.newFrom* methods
Change-Id: I082048a677baa2699d94e21548373952d52db61b
2016-12-01 10:43:10 -08:00
Ed Sanders 2ee9e62a4d Use upstream media search widget from core
Bug: T140166
Depends-On: If53ef7f4b62c7a5d4da565c14dd2a353778694e5
Change-Id: I28845e9c143e78d3a377f067606c62da212e3bf1
2016-11-29 17:19:14 +00:00
jenkins-bot c62e71f44d Merge "ve.dm.MWMediaResourceProvider: Use mw.ForeignApi rather than JSONP" 2016-11-02 20:07:06 +00:00