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

Reply via email to