Sfoglia il codice sorgente

Added conversion for elements nested inside image figure element.

Szymon Kupś 9 anni fa
parent
commit
07929fe623

+ 9 - 0
packages/ckeditor5-image/src/converters.js

@@ -8,6 +8,8 @@
  */
 
 import ModelElement from '@ckeditor/ckeditor5-engine/src/model/element';
+import ModelPosition from '@ckeditor/ckeditor5-engine/src/model/position';
+import modelWriter from '@ckeditor/ckeditor5-engine/src/model/writer';
 import { isImageWidget } from './utils';
 
 /**
@@ -57,6 +59,13 @@ export function viewToModelImage() {
 			modelImage.setAttribute( 'alt', viewImg.getAttribute( 'alt' ) );
 		}
 
+		// Convert children of converted view element and append them to `modelImage`.
+		data.context.push( modelImage );
+		const modelChildren = conversionApi.convertChildren( viewFigureElement, consumable, data );
+		const insertPosition = ModelPosition.createAt( modelImage, 'end' );
+		modelWriter.insert( insertPosition, modelChildren );
+		data.context.pop();
+
 		data.output = modelImage;
 	};
 }

+ 9 - 0
packages/ckeditor5-image/tests/imageengine.js

@@ -132,6 +132,15 @@ describe( 'ImageEngine', () => {
 				expect( getModelData( document, { withoutSelection: true } ) )
 					.to.equal( '' );
 			} );
+
+			it( 'should dispatch conversion for nested elements', () => {
+				const conversionSpy = sinon.spy();
+				editor.data.viewToModel.on( 'element:figcaption', conversionSpy );
+
+				editor.setData( '<figure class="image"><img src="foo.png" alt="alt text" /><figcaption></figcaption></figure>' );
+
+				sinon.assert.calledOnce( conversionSpy );
+			} );
 		} );
 	} );