Esanders has uploaded a new change for review.
https://gerrit.wikimedia.org/r/197447
Change subject: Add handlers for font annotations
......................................................................
Add handlers for font annotations
So that we can throw them away on import.
Bug: T92969
Change-Id: I39ec49c408c0eaa4971ebf6e8bbd064516d68e8b
---
M .jsduck/eg-iframe.html
M build/modules.json
M demos/ve/desktop.html
M demos/ve/mobile.html
A src/ce/annotations/ve.ce.FontAnnotation.js
A src/dm/annotations/ve.dm.FontAnnotation.js
M src/init/ve.init.Target.js
M tests/ce/ve.ce.Surface.test.js
M tests/index.html
9 files changed, 99 insertions(+), 1 deletion(-)
git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor
refs/changes/47/197447/1
diff --git a/.jsduck/eg-iframe.html b/.jsduck/eg-iframe.html
index e6723c4..c449c1a 100644
--- a/.jsduck/eg-iframe.html
+++ b/.jsduck/eg-iframe.html
@@ -216,6 +216,7 @@
<script
src="../src/dm/annotations/ve.dm.CodeAnnotation.js"></script>
<script
src="../src/dm/annotations/ve.dm.DatetimeAnnotation.js"></script>
<script
src="../src/dm/annotations/ve.dm.DefinitionAnnotation.js"></script>
+ <script
src="../src/dm/annotations/ve.dm.FontAnnotation.js"></script>
<script
src="../src/dm/annotations/ve.dm.HighlightAnnotation.js"></script>
<script
src="../src/dm/annotations/ve.dm.ItalicAnnotation.js"></script>
<script
src="../src/dm/annotations/ve.dm.QuotationAnnotation.js"></script>
@@ -284,6 +285,7 @@
<script
src="../src/ce/annotations/ve.ce.CodeSampleAnnotation.js"></script>
<script
src="../src/ce/annotations/ve.ce.DatetimeAnnotation.js"></script>
<script
src="../src/ce/annotations/ve.ce.DefinitionAnnotation.js"></script>
+ <script
src="../src/ce/annotations/ve.ce.FontAnnotation.js"></script>
<script
src="../src/ce/annotations/ve.ce.HighlightAnnotation.js"></script>
<script
src="../src/ce/annotations/ve.ce.ItalicAnnotation.js"></script>
<script
src="../src/ce/annotations/ve.ce.QuotationAnnotation.js"></script>
diff --git a/build/modules.json b/build/modules.json
index 030efe3..f27ee99 100644
--- a/build/modules.json
+++ b/build/modules.json
@@ -245,6 +245,7 @@
"src/dm/annotations/ve.dm.CodeAnnotation.js",
"src/dm/annotations/ve.dm.DatetimeAnnotation.js",
"src/dm/annotations/ve.dm.DefinitionAnnotation.js",
+ "src/dm/annotations/ve.dm.FontAnnotation.js",
"src/dm/annotations/ve.dm.HighlightAnnotation.js",
"src/dm/annotations/ve.dm.ItalicAnnotation.js",
"src/dm/annotations/ve.dm.QuotationAnnotation.js",
@@ -313,6 +314,7 @@
"src/ce/annotations/ve.ce.CodeSampleAnnotation.js",
"src/ce/annotations/ve.ce.DatetimeAnnotation.js",
"src/ce/annotations/ve.ce.DefinitionAnnotation.js",
+ "src/ce/annotations/ve.ce.FontAnnotation.js",
"src/ce/annotations/ve.ce.HighlightAnnotation.js",
"src/ce/annotations/ve.ce.ItalicAnnotation.js",
"src/ce/annotations/ve.ce.QuotationAnnotation.js",
diff --git a/demos/ve/desktop.html b/demos/ve/desktop.html
index de901dd..ca3a8be 100644
--- a/demos/ve/desktop.html
+++ b/demos/ve/desktop.html
@@ -233,6 +233,7 @@
<script
src="../../src/dm/annotations/ve.dm.CodeAnnotation.js"></script>
<script
src="../../src/dm/annotations/ve.dm.DatetimeAnnotation.js"></script>
<script
src="../../src/dm/annotations/ve.dm.DefinitionAnnotation.js"></script>
+ <script
src="../../src/dm/annotations/ve.dm.FontAnnotation.js"></script>
<script
src="../../src/dm/annotations/ve.dm.HighlightAnnotation.js"></script>
<script
src="../../src/dm/annotations/ve.dm.ItalicAnnotation.js"></script>
<script
src="../../src/dm/annotations/ve.dm.QuotationAnnotation.js"></script>
@@ -301,6 +302,7 @@
<script
src="../../src/ce/annotations/ve.ce.CodeSampleAnnotation.js"></script>
<script
src="../../src/ce/annotations/ve.ce.DatetimeAnnotation.js"></script>
<script
src="../../src/ce/annotations/ve.ce.DefinitionAnnotation.js"></script>
+ <script
src="../../src/ce/annotations/ve.ce.FontAnnotation.js"></script>
<script
src="../../src/ce/annotations/ve.ce.HighlightAnnotation.js"></script>
<script
src="../../src/ce/annotations/ve.ce.ItalicAnnotation.js"></script>
<script
src="../../src/ce/annotations/ve.ce.QuotationAnnotation.js"></script>
diff --git a/demos/ve/mobile.html b/demos/ve/mobile.html
index afefbca..83b11ae 100644
--- a/demos/ve/mobile.html
+++ b/demos/ve/mobile.html
@@ -234,6 +234,7 @@
<script
src="../../src/dm/annotations/ve.dm.CodeAnnotation.js"></script>
<script
src="../../src/dm/annotations/ve.dm.DatetimeAnnotation.js"></script>
<script
src="../../src/dm/annotations/ve.dm.DefinitionAnnotation.js"></script>
+ <script
src="../../src/dm/annotations/ve.dm.FontAnnotation.js"></script>
<script
src="../../src/dm/annotations/ve.dm.HighlightAnnotation.js"></script>
<script
src="../../src/dm/annotations/ve.dm.ItalicAnnotation.js"></script>
<script
src="../../src/dm/annotations/ve.dm.QuotationAnnotation.js"></script>
@@ -302,6 +303,7 @@
<script
src="../../src/ce/annotations/ve.ce.CodeSampleAnnotation.js"></script>
<script
src="../../src/ce/annotations/ve.ce.DatetimeAnnotation.js"></script>
<script
src="../../src/ce/annotations/ve.ce.DefinitionAnnotation.js"></script>
+ <script
src="../../src/ce/annotations/ve.ce.FontAnnotation.js"></script>
<script
src="../../src/ce/annotations/ve.ce.HighlightAnnotation.js"></script>
<script
src="../../src/ce/annotations/ve.ce.ItalicAnnotation.js"></script>
<script
src="../../src/ce/annotations/ve.ce.QuotationAnnotation.js"></script>
diff --git a/src/ce/annotations/ve.ce.FontAnnotation.js
b/src/ce/annotations/ve.ce.FontAnnotation.js
new file mode 100644
index 0000000..57694b7
--- /dev/null
+++ b/src/ce/annotations/ve.ce.FontAnnotation.js
@@ -0,0 +1,37 @@
+/*!
+ * VisualEditor ContentEditable FontAnnotation class.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see
http://ve.mit-license.org
+ */
+
+/**
+ * ContentEditable font annotation.
+ *
+ * @class
+ * @extends ve.ce.TextStyleAnnotation
+ * @constructor
+ * @param {ve.dm.FontAnnotation} model Model to observe
+ * @param {ve.ce.ContentBranchNode} [parentNode] Node rendering this annotation
+ * @param {Object} [config] Configuration options
+ */
+ve.ce.FontAnnotation = function VeCeFontAnnotation() {
+ // Parent constructor
+ ve.ce.FontAnnotation.super.apply( this, arguments );
+
+ // DOM changes
+ this.$element.addClass( 've-ce-fontAnnotation' );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.ce.FontAnnotation, ve.ce.TextStyleAnnotation );
+
+/* Static Properties */
+
+ve.ce.FontAnnotation.static.name = 'textStyle/font';
+
+ve.ce.FontAnnotation.static.tagName = 'font';
+
+/* Registration */
+
+ve.ce.annotationFactory.register( ve.ce.FontAnnotation );
diff --git a/src/dm/annotations/ve.dm.FontAnnotation.js
b/src/dm/annotations/ve.dm.FontAnnotation.js
new file mode 100644
index 0000000..34bf2ee
--- /dev/null
+++ b/src/dm/annotations/ve.dm.FontAnnotation.js
@@ -0,0 +1,34 @@
+/*!
+ * VisualEditor DataModel FontAnnotation class.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see
http://ve.mit-license.org
+ */
+
+/**
+ * DataModel font annotation.
+ *
+ * Represents `<font>` tags.
+ *
+ * @class
+ * @extends ve.dm.TextStyleAnnotation
+ * @constructor
+ * @param {Object} element
+ */
+ve.dm.FontAnnotation = function VeDmFontAnnotation() {
+ // Parent constructor
+ ve.dm.FontAnnotation.super.apply( this, arguments );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.dm.FontAnnotation, ve.dm.TextStyleAnnotation );
+
+/* Static Properties */
+
+ve.dm.FontAnnotation.static.name = 'textStyle/font';
+
+ve.dm.FontAnnotation.static.matchTagNames = [ 'font' ];
+
+/* Registration */
+
+ve.dm.modelRegistry.register( ve.dm.FontAnnotation );
diff --git a/src/init/ve.init.Target.js b/src/init/ve.init.Target.js
index 1ba3085..4b7089d 100644
--- a/src/init/ve.init.Target.js
+++ b/src/init/ve.init.Target.js
@@ -150,7 +150,7 @@
blacklist: [
// Annotations
// TODO: allow spans
- 'textStyle/span',
+ 'textStyle/span', 'textStyle/font',
// Nodes
'alienInline', 'alienBlock', 'comment'
]
diff --git a/tests/ce/ve.ce.Surface.test.js b/tests/ce/ve.ce.Surface.test.js
index cc7d7ca..9b651ff 100644
--- a/tests/ce/ve.ce.Surface.test.js
+++ b/tests/ce/ve.ce.Surface.test.js
@@ -594,6 +594,23 @@
},
{
range: new ve.Range( 4 ),
+ pasteHtml: '<span
style="color:red;">Foo</span><font style="color:blue;">bar</font>',
+ expectedRange: new ve.Range( 10 ),
+ expectedOps: [
+ [
+ { type: 'retain', length: 4 },
+ {
+ type: 'replace',
+ insert: [ 'F', 'o',
'o', 'b', 'a', 'r' ],
+ remove: []
+ },
+ { type: 'retain', length:
docLen - 4 }
+ ]
+ ],
+ msg: 'Span and font tags stripped'
+ },
+ {
+ range: new ve.Range( 4 ),
pasteHtml: '<span
rel="ve:Alien">Foo</span><b>B</b>a<!-- comment --><b>r</b>',
expectedRange: new ve.Range( 7 ),
expectedOps: [
diff --git a/tests/index.html b/tests/index.html
index bb04db7..4506cf9 100644
--- a/tests/index.html
+++ b/tests/index.html
@@ -169,6 +169,7 @@
<script
src="../src/dm/annotations/ve.dm.CodeAnnotation.js"></script>
<script
src="../src/dm/annotations/ve.dm.DatetimeAnnotation.js"></script>
<script
src="../src/dm/annotations/ve.dm.DefinitionAnnotation.js"></script>
+ <script
src="../src/dm/annotations/ve.dm.FontAnnotation.js"></script>
<script
src="../src/dm/annotations/ve.dm.HighlightAnnotation.js"></script>
<script
src="../src/dm/annotations/ve.dm.ItalicAnnotation.js"></script>
<script
src="../src/dm/annotations/ve.dm.QuotationAnnotation.js"></script>
@@ -237,6 +238,7 @@
<script
src="../src/ce/annotations/ve.ce.CodeSampleAnnotation.js"></script>
<script
src="../src/ce/annotations/ve.ce.DatetimeAnnotation.js"></script>
<script
src="../src/ce/annotations/ve.ce.DefinitionAnnotation.js"></script>
+ <script
src="../src/ce/annotations/ve.ce.FontAnnotation.js"></script>
<script
src="../src/ce/annotations/ve.ce.HighlightAnnotation.js"></script>
<script
src="../src/ce/annotations/ve.ce.ItalicAnnotation.js"></script>
<script
src="../src/ce/annotations/ve.ce.QuotationAnnotation.js"></script>
--
To view, visit https://gerrit.wikimedia.org/r/197447
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I39ec49c408c0eaa4971ebf6e8bbd064516d68e8b
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits