Commit graph

182 commits

Author SHA1 Message Date
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 b25fbd3b7b Remove redundant about attribute stripping code
Change-Id: I2d330c074075734d50d6bf3e0f67e55bade6c072
Depends-On: I8be0a362338ba12d5569e315725386142a66da24
2016-05-04 12:55:36 -04:00
Roan Kattouw f6ba399137 Fix asynchronous loading of MWAlienExtensionNode renderings
ve.dm.MWExtensionNode#toDataElement calls storeGeneratedContents()
which prepopulates the cache, but because it was being called with
the wrong context, this.name was null and so the key we were storing
it under was different from the key we'd later be looking for.

Fixed by ensuring ve.dm.MWAlienExtensionNode#toDataElement preserves
context when calling its parent. Our static context hacks are tricky.

Change-Id: If859d861453067d7656a33a1767f6efc7bd9d323
2016-04-01 12:50:13 +03:00
Ed Sanders 5e6cbc187c Link pasting: Match RDFa-less links as external
Now that some targets support link pasting (Flow) we need to
make sure that pasted links match to an allowed type ('link/mwExternal')
instead of plain 'link' annotations which should never exist
in an MW document.

In a later commit we should auto-detect internal links.

Change-Id: I7faae834aa6e730c3cf93a691331a05fd0fe3d5c
2016-03-17 17:18:41 +00:00
Ed Sanders 25be46a57d Fix transclusion node cloneElement method
* Override the static cloneElement. getClonedElement shouldn't
  be overridden as doing so misses static invocations.
* Apply the same fix to extension nodes
* Fix DOM loop to reference clone.originalDomElements[ i ]

Logically depends on Id8024c171c to work.

Bug: T126169
Bug: T126114
Change-Id: Icf4d3115db5b12b97a6c805ff3d0b71d9e88b804
2016-02-08 15:29:19 +00:00
James D. Forrester 1e0486a679 Remove all Extension:Cite code, now moved there
Depends-on: I39936ed83d5a60471a0a75da753f498e80aef234
Depends-on: Ifd853bf9f901065798bd0063aeaa786a3761aa71
Depends-on: I32c93c5118eafe5f071252290c58d3de8dacc81a
Change-Id: Iba0f25b3ebe4e5e63377da57afb760d6980f9907
2016-02-05 21:36:56 +00:00
Ed Sanders 0ed45dbf61 MWTable: use new sanitization method
This prevents tables from getting sanitized even on
VE to VE copy. Also by calling ClassAttributeNode sanitize
extra CSS classes are removed.

Bug: T97462
Bug: T125220
Depends-On: Ia3ce386b2a03bc227818b10423bca72c736c0656
Change-Id: Ifd91e00b40665b446bbdcdf8859d2bb641bc0e67
2016-01-29 10:29:19 -08:00
Ed Sanders bf50e2a570 MWTableNode: Apply wikitable class to pasted tables
Bug: T85577
Change-Id: I9714cf3e8ccc165f91af939481c845c3ec9c5f6b
2016-01-22 18:43:47 +00:00
James D. Forrester ada58df361 build: Bump file copyright notices for 2016
Change-Id: I3c618c196e504a80ca297a4132a17f1977a24fb7
2016-01-03 14:57:25 -08:00
Ed Sanders ae26eefb05 Fix typos
Add some common ones to typos.json

Change-Id: I3830be4949ab6a5fd998d6937ed83e9f18091c2b
2015-12-09 16:47:13 +00:00
Bartosz Dziewoński 9be5c85db4 Provide a tool to insert a signature in namespaces that need it
VisualEditor is usually not enabled in talk namespaces... but
sometimes it is. And when users see the button to edit with VE,
they're going to click it and expect to be able to sign their posts.

This tool is only loaded on talk pages and pages in additional
namespaces defined in $wgExtraSignatureNamespaces.

Code adapted with small tweaks from my own gadget
<https://meta.wikimedia.org/wiki/User:Matma_Rex/visualeditor-signature.js?oldid=13461327>,
which is already available under the MIT license.

Changes include:
* The tool is now always visible if the wiki allows signatures in any
  VE namespaces, but disabled when not allowed in the current namespace.
* Register '~~~~' sequence to insert the signature.
* Code style tweaks for stricter lint checks in this repository.
* Documentation corrections.

Swedish translation provided by André Costa (already credited
as a translator as Lokal_Profil).

Depends on changes in VisualEditor core:
* I89fe53890ab59d12260ea6b41de802c38c24e8b9
* I14cd7efac521687ea38580341ae08ddc522edeeb

Bug: T53154
Change-Id: I6be5fb2118cf3eef5098d4c5320228aa81411ccb
2015-11-16 18:06:32 +01:00
Ed Sanders 9fb6977e52 Update VE core submodule to master (363adf2)
New changes:
63c5f67 [BREAKING CHANGE] GeneratedContentNode: Introduce new hash for rendering
6dd1cb2 Add ve.dm.Surface#selectLastContentOffset

Local changes:
* Use new getHashForRendering in GeneratedContentNode users

  As we no longer have a model hash, remove the originalIndex check
  and just rely on the deep comparison of mwData (trading a deep copy
  for a hash computation should result in similar performance).

Bug: T114689
Change-Id: Ida0ee0234418408b735232c633d41908a424a9ff
2015-10-07 15:00:32 +00:00
Ed Sanders c5c88482b9 MWExtenionNode: Ensure objects are deep copied when used in the hash
We don't expect users not to alter the hash (subclasses may delete items)
so make a copy of any objects we put in it.

Change-Id: I6274f47e02b9f2d53864d4a2ae80df42e6c89867
2015-10-01 15:57:49 +01:00
Ed Sanders 0fdf3cbb93 Update VE core submodule to master (9dcfbdb)
New changes:
184f952 [BREAKING CHANGE] ve.dm.Converter: Put static things in .static
a4c1e1e Localisation updates from https://translatewiki.net.

Local changes:
* Switch to using Converter's newly-static methods

Change-Id: If30f7b2a0de92c4c7f4d5ca57663251c132eeed2
2015-09-15 17:36:27 -07:00
Ed Sanders 830718ce22 Use ve.resolveAttributes instead of resolveUrl in clipboard conversion
This method does the tree traversal for us, and resolves src as well
as href.

Change-Id: Ic3ea47fb9acde9a1dad5caac3ee9c9b63c86d900
2015-09-15 13:44:52 +01:00
Ed Sanders 036b6c9edf Resolve image paths when writing to clipboard
Bug: T111927
Change-Id: Idf3b761481454197eecbc0f6cd5cf6199419ca6c
2015-09-09 16:19:18 +00:00
Ed Sanders d67d110d26 Use rendered contents when copying to clipboard
Bug: T111923
Bug: T111924
Change-Id: I04b98e317d0c883fc257c46552476041c7f53679
2015-09-09 08:56:22 -07:00
jenkins-bot 8502d3ea05 Merge "Specialized inspector for ISBN magic links" 2015-09-01 18:34:23 +00:00
C. Scott Ananian 7cc23367f6 Specialized inspector for ISBN magic links
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
2015-09-01 14:25:59 -04:00
Ed Sanders c6236b7b77 MWReferenceNode: Don't allow cross-VE paste of template-defined ref
The reference body is not available, so it would be useless.

Bug: T110479
Change-Id: I2a40178bc629ca65d7507feb1c5ff062fd591eda
2015-08-31 14:50:19 -07:00
James D. Forrester 282ddfa1b6 build: Enable jscs jsDoc rule 'checkTypes' and make pass
Change-Id: Idbf6e698ba7015ee5e4f1cf78234ad3f187f1c06
2015-08-19 11:37:13 -07:00
James D. Forrester 00d3226be1 build: Enable jscs jsDoc rule 'checkParamNames' and make pass
Change-Id: Ifcd3f67524c32148ff3591263d6374b31ee57d3b
2015-08-19 11:33:59 -07:00
James D. Forrester 85f91f394e build: Enable jscs jsDoc rule 'requireNewlineAfterDescription' and make pass
Change-Id: I7c0fabc93834d19198caea8f5dd1834e9e473d0a
2015-08-19 11:21:01 -07:00
James D. Forrester 945242a55a build: Enable jscs jsDoc rule 'checkAnnotations' and make pass
Change-Id: I76abb1eb1f3e1a2e8a4c03f577a080f4889b3a6d
2015-08-19 11:09:34 -07:00
James D. Forrester 19df1d4c8a build: Enable jscs rule 'requireVarDeclFirst' and make pass
Change-Id: Ia2f765d12bde001c329c2ff4c080a36b71de9803
2015-08-19 11:05:01 -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
James D. Forrester 31b4466d5f MWNumberedExternalLinkNode: Provide a context item
Bug: T98211
Change-Id: I0ca7811f5be5ce058f2ec22b2ce80e3228af5886
2015-08-17 13:10:58 -07:00
jenkins-bot f4192a7847 Merge "Make transclusions which are td/th elements behave as table cells" 2015-08-04 20:37:41 +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
Jforrester dbe11c3b14 Revert "Revert "For empty / whitespace-only headings, output <p> instead of <h#>""
It's seemingly still needed.

This reverts commit 924c58a893.

Change-Id: Ib9428865fbab2669153bd23cf239717080eb8291
2015-08-03 22:49:16 +00:00
Ed Sanders 97e0cd28a5 Make missingref references uneditable, not uninspectable
Depends on I1ba8978dd in core.

Bonus: remove not-allowed-cursor & highlight title (which was
broken) now that we can display this information properly.

Bug: T106810
Change-Id: I1800490ba1b8e10ff54b26372a8a78661c1c7d68
2015-07-24 12:03:05 -07:00
jenkins-bot 8d467915f7 Merge "Revert "For empty / whitespace-only headings, output <p> instead of <h#>"" 2015-07-22 22:05:34 +00:00
Ed Sanders aeedd808cd Never use original data optimisation when in clipboard mode
In clipboard mode we need the full body regardless of if the reference
has changed since load or not.

Bug: T104230
Change-Id: Ie59e04d381f2fd2680e8af0cf05a80df71052822
2015-07-10 19:45:56 +00:00
Ed Sanders 924c58a893 Revert "For empty / whitespace-only headings, output <p> instead of <h#>"
Functionality is now provided by Parsoid's scrubWikitext.

This reverts commit 884f301aa0.

Change-Id: I19f340a1c2d9718bfa05c6667042488f3a589719
2015-07-09 11:46:50 +01:00
Marc Ordinas i Llopis 7a33613d23 Use Parsoid's new Cite HTML and CSS
Starting with I21fbbd3247bf7801e5ef9bd5312f95777f4dd6ef, Parsoid
will emit a new HTML for its Cite extension, which enables CSS
styling. In I487095df8a7c4241a14f7b4480360f6774130bec the new
module 'ext.cite.style' is added to the Cite extension to style
this new HTML format.

This patch
* Loads the ext.cite.style module if the Cite extension is
  present.
* Uses the new HTML format for the internal structure of
  reference and reference list nodes, so they are correctly
  styled.

Backwards compatibility: Only new HTML is used internally in VE,
so as long as ext.cite.style can be loaded the new styles will be
used. It does not depend on which format Parsoid returns, so this
patch only depends on the Cite extension patch, not on the Parsoid
one.

Note: The only way I've found of adding a ext.cite.style dependency
only if Cite is present is to register the whole
ext.visualEditor.mwreference module in the
onResourceLoaderRegisterModules hook. Maybe someone can point to
a better way?

Bug: T86782
Change-Id: Ibf333a502d64d2ed6e029221458b7c606554e414
2015-07-06 14:23:18 -07:00
jenkins-bot bbd91b0fb9 Merge "Remove redundant match function from block image" 2015-06-25 00:06:40 +00:00
Ed Sanders 6d8bd6f6e8 Remove redundant match function from block image
Functionality now provided by allowedRdfaTypes.

Bug: T98999
Change-Id: Icd933f4456fdc85fe08bdc9edc61040cb5bacd89
2015-06-24 23:45:14 +00:00
Ed Sanders 965a5dde89 Give TranclusionNodes a matchFunction so they beat LanguageAnnotations
This is a hacky fix, we should find a better way of telling the
model registry that language annotation loses to certain RDFa types.

Bug: T101977
Change-Id: I8be3aa55cbbc2832b8a02a15de27289b3041967e
2015-06-16 14:12:37 +01:00
Ed Sanders 425e581613 Unregister core image types
Once MW images are registered, we should remove core image support so
we don't accidentally match to them (e.g. an MW inline image with an
unsupported extra RDFa type).

Change-Id: I1c8567346c371fe338f95b232c9ac53e009c5a46
2015-06-02 14:36:14 +01:00
suchetag dc2247460c Representation for the red-linked inline images in VE
The red-linked inline images in VE are now identifited as red links and image errors.
They can be changed and thereby be modified just as any other inline image on the editor.

Change-Id: Idb6f6f2da14379fd7db6ca19613dad32fe40023d
2015-05-25 15:18:15 +01:00
Ed Sanders 2f087d9ae7 Update VE core submodule to master (3c1f698)
New changes:
a6144f3 [BREAKING CHANGE] Allow models to specify which extra RDFa types they support

Local changes:
* Use new allowedTypes property in model registry
* For reference nodes, allow 'dc:references'.
* For transclusion nodes, allow any other types.
* For image nodes, allow 'mw:Error'.

Bug: T98999
Change-Id: I7eb2b61eb9336792535e9fd6d5a8dd2d57065f04
2015-05-18 19:42:43 +01:00
suchetag de12c761a3 Representation of red-linked images in VE
The red-linked images in VE are now identifited as red links and image errors.
They can be changed and thereby be modified just as any other image on the editor.

Bug: T52788
Change-Id: I9cbb992c34d71b7073157fe276fee04e901845b1
2015-05-16 17:15:51 +01:00
Ed Sanders fdcd42f73a Split AlienExtensionNode into inline and block
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
2015-04-09 16:32:02 +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
Roan Kattouw 884f301aa0 For empty / whitespace-only headings, output <p> instead of <h#>
Because sending HTML like <h2>  </h2> or <h2></h2> to Parsoid
produces undesirable output like ==  == or ==<nowiki />==

Bug: T51452
Bug: T52100
Bug: T57769
Bug: T61647
Change-Id: If15a1b4b31d4f08c23ecdf2ecf61a8a14a77259a
2015-03-20 23:05:37 +00:00
Roan Kattouw 8470e2c272 Update VE core submodule to master (f8f9728)
New changes:
68e20d4 Create AlignableContextItem to quickly adjust AlignableNodes
0150df2 Update OOjs UI to v0.9.3
b333fd3 FragmentInspector: Execute action on enter, rather than closing with data
2d14f7a Fix webkit column hack
be780eb Don't drop whitespace when removing empty slug paragraphs
cc19787 Split handlesOwnChildren and ignoreChildren
7f1c9a7 Localisation updates from https://translatewiki.net.

Local changes:
Add ignoreChildren to handlesOwnChildren nodes

Change-Id: Id3dc7efae8d30b6551b2fc3104ed00bc86339176
2015-03-20 16:04:15 -07:00
jenkins-bot 82dc89dc3e Merge "Remove MWTransclusionMetaNode" 2015-03-12 20:16:42 +00:00
Moriel Schottlender bbb5c84149 Remove MWTransclusionMetaNode
Since all transclusion nodes can be interacted with (including the
'hidden' ones,) there is no need for MWTransclusionMetaNodes.

Change-Id: I23d37e3d82029b7475ec68ebb04883c7e05370cc
2015-03-12 13:12:32 -07:00
Alex Monk 9a0b76ac26 Handle undoing of reference group changes
By removing from and re-inserting into the InternalList when the right
attributes change, rather than trying to hack it into the model's
updateInternalItem (which won't get run on undo).

Bug: T71119
Change-Id: Iaf7a3127576b94666e05691902d2782394d24afb
2015-03-11 19:15:47 +00:00
jenkins-bot 557e0e28ad Remove use of ve.indexOf and ve.getObjectKeys
Change-Id: Icbaa729209605fca8018e4bcbbe29c9ded64e7f2
2015-03-10 17:28:00 +01:00