Parcourir la source

Schema improvements.

Szymon Kupś il y a 9 ans
Parent
commit
384b40c56a

+ 1 - 1
packages/ckeditor5-image/src/converters.js

@@ -30,7 +30,7 @@ export function viewToModelImage() {
 		}
 
 		// Check if image element can be converted in current context.
-		if ( !conversionApi.schema.check( { name: 'image', inside: data.context } ) ) {
+		if ( !conversionApi.schema.check( { name: 'image', inside: data.context, attributes: 'src' } ) ) {
 			return;
 		}
 

+ 5 - 2
packages/ckeditor5-image/src/imageengine.js

@@ -31,12 +31,15 @@ export default class ImageEngine extends Plugin {
 	init() {
 		const editor = this.editor;
 		const doc = editor.document;
+		const schema = doc.schema;
 		const data = editor.data;
 		const editing = editor.editing;
 
 		// Configure schema.
-		doc.schema.registerItem( 'image', '$block' );
-		doc.schema.allow( { name: 'image', attributes: [ 'src', 'alt' ] } );
+		schema.registerItem( 'image' );
+		schema.requireAttributes( 'image', [ 'src' ] );
+		schema.allow( { name: 'image', attributes: [ 'alt', 'src' ], inside: '$root' } );
+		schema.objects.add( 'image' );
 
 		// Build converter from model to view for data pipeline.
 		buildModelConverter().for( data.modelToView )

+ 4 - 2
packages/ckeditor5-image/tests/imageengine.js

@@ -31,7 +31,8 @@ describe( 'ImageEngine', () => {
 	} );
 
 	it( 'should set proper schema rules', () => {
-		expect( document.schema.check( { name: 'image', attributes: [ 'src', 'alt' ] } ) ).to.be.true;
+		expect( document.schema.check( { name: 'image', attributes: [ 'src', 'alt' ], inside: '$root' } ) ).to.be.true;
+		expect( document.schema.objects.has( 'image' ) ).to.be.true;
 	} );
 
 	describe( 'conversion in data pipeline', () => {
@@ -97,9 +98,10 @@ describe( 'ImageEngine', () => {
 				const editing = editor.editing;
 
 				document.schema.registerItem( 'div', '$block' );
+				document.schema.disallow( { name: 'image', inside: 'div', attributes: [ 'src' ] } );
+
 				buildModelConverter().for( data.modelToView, editing.modelToView ).fromElement( 'div' ).toElement( 'div' );
 				buildViewConverter().for( data.viewToModel ).fromElement( 'div' ).toElement( 'div' );
-				document.schema.disallow( { name: 'image', inside: 'div' } );
 
 				editor.setData( '<div><figure class="image"><img src="foo.png" alt="alt text" /></figure></div>' );