瀏覽代碼

Internal: Aligned code with engine changes.

Oskar Wróbel 8 年之前
父節點
當前提交
5f0967eea6

+ 11 - 12
packages/ckeditor5-alignment/src/alignmentcommand.js

@@ -57,7 +57,7 @@ export default class AlignmentCommand extends Command {
 	 * @inheritDoc
 	 */
 	refresh() {
-		const firstBlock = first( this.editor.document.selection.getSelectedBlocks() );
+		const firstBlock = first( this.editor.model.document.selection.getSelectedBlocks() );
 
 		// As first check whether to enable or disable command as value will be always false if command cannot be enabled.
 		this.isEnabled = !!firstBlock && this._canBeAligned( firstBlock );
@@ -74,20 +74,19 @@ export default class AlignmentCommand extends Command {
 	 */
 	execute( options = {} ) {
 		const editor = this.editor;
-		const document = editor.document;
-
-		document.enqueueChanges( () => {
-			const batch = options.batch || document.batch();
+		const model = editor.model;
+		const document = model.document;
 
+		model.change( writer => {
 			// Get only those blocks from selected that can have alignment set
 			const blocks = Array.from( document.selection.getSelectedBlocks() ).filter( block => this._canBeAligned( block ) );
 
 			// Remove alignment attribute if current alignment is as selected or is default one.
 			// Default alignment should not be stored in model as it will bloat model data.
 			if ( this.value || this._isDefault ) {
-				removeAlignmentFromSelection( blocks, batch );
+				removeAlignmentFromSelection( blocks, writer );
 			} else {
-				setAlignmentOnSelection( blocks, batch, this.type );
+				setAlignmentOnSelection( blocks, writer, this.type );
 			}
 		} );
 	}
@@ -100,7 +99,7 @@ export default class AlignmentCommand extends Command {
 	 * @private
 	 */
 	_canBeAligned( block ) {
-		const schema = this.editor.document.schema;
+		const schema = this.editor.model.schema;
 
 		// Check if adding alignment attribute to selected block is allowed.
 		return schema.check( {
@@ -132,16 +131,16 @@ export default class AlignmentCommand extends Command {
 
 // Removes alignment attribute from blocks.
 // @private
-function removeAlignmentFromSelection( blocks, batch ) {
+function removeAlignmentFromSelection( blocks, writer ) {
 	for ( const block of blocks ) {
-		batch.removeAttribute( 'alignment', block );
+		writer.removeAttribute( 'alignment', block );
 	}
 }
 
 // Sets alignment attribute on blocks.
 // @private
-function setAlignmentOnSelection( blocks, batch, type ) {
+function setAlignmentOnSelection( blocks, writer, type ) {
 	for ( const block of blocks ) {
-		batch.setAttribute( 'alignment', type, block );
+		writer.setAttribute( 'alignment', type, block );
 	}
 }

+ 2 - 3
packages/ckeditor5-alignment/src/alignmentediting.js

@@ -49,8 +49,7 @@ export default class AlignmentEditing extends Plugin {
 	 */
 	init() {
 		const editor = this.editor;
-		const doc = editor.document;
-		const schema = doc.schema;
+		const schema = editor.model.schema;
 		const data = editor.data;
 		const editing = editor.editing;
 
@@ -93,7 +92,7 @@ export default class AlignmentEditing extends Plugin {
 	 * @inheritDoc
 	 */
 	afterInit() {
-		const schema = this.editor.document.schema;
+		const schema = this.editor.model.schema;
 
 		// Disallow alignment on caption elements.
 		if ( schema.hasItem( 'caption' ) ) {

+ 23 - 23
packages/ckeditor5-alignment/tests/alignmentcommand.js

@@ -11,12 +11,12 @@ import Command from '@ckeditor/ckeditor5-core/src/command';
 import ModelTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/modeltesteditor';
 
 describe( 'AlignmentCommand', () => {
-	let editor, doc, command, defaultAlignmentCommand;
+	let editor, model, command, defaultAlignmentCommand;
 
 	beforeEach( () => {
 		return ModelTestEditor.create()
 			.then( newEditor => {
-				doc = newEditor.document;
+				model = newEditor.model;
 				command = new AlignmentCommand( newEditor, 'center', false );
 				defaultAlignmentCommand = new AlignmentCommand( newEditor, 'left', true );
 				editor = newEditor;
@@ -24,9 +24,9 @@ describe( 'AlignmentCommand', () => {
 				editor.commands.add( 'alignCenter', command );
 				editor.commands.add( 'alignLeft', defaultAlignmentCommand );
 
-				doc.schema.registerItem( 'paragraph', '$block' );
+				model.schema.registerItem( 'paragraph', '$block' );
 
-				doc.schema.allow( { name: '$block', inside: '$root', attributes: 'alignment' } );
+				model.schema.allow( { name: '$block', inside: '$root', attributes: 'alignment' } );
 			} );
 	} );
 
@@ -41,25 +41,25 @@ describe( 'AlignmentCommand', () => {
 
 	describe( 'value', () => {
 		it( 'is true when selection is in block with command type alignment', () => {
-			setModelData( doc, '<paragraph alignment="center">x[]x</paragraph>' );
+			setModelData( model, '<paragraph alignment="center">x[]x</paragraph>' );
 
 			expect( command ).to.have.property( 'value', true );
 		} );
 
 		it( 'is false when selection is inside block that has different alignment', () => {
-			setModelData( doc, '<paragraph alignment="justify">x[]x</paragraph>' );
+			setModelData( model, '<paragraph alignment="justify">x[]x</paragraph>' );
 
 			expect( command ).to.have.property( 'value', false );
 		} );
 
 		it( 'is true when selection is in block with default alignment', () => {
-			setModelData( doc, '<paragraph>x[]x</paragraph>' );
+			setModelData( model, '<paragraph>x[]x</paragraph>' );
 
 			expect( defaultAlignmentCommand ).to.have.property( 'value', true );
 		} );
 
 		it( 'is false when selection is inside block that has different alignment (default style)', () => {
-			setModelData( doc, '<paragraph alignment="justify">x[]x</paragraph>' );
+			setModelData( model, '<paragraph alignment="justify">x[]x</paragraph>' );
 
 			expect( defaultAlignmentCommand ).to.have.property( 'value', false );
 		} );
@@ -67,7 +67,7 @@ describe( 'AlignmentCommand', () => {
 
 	describe( 'isEnabled', () => {
 		it( 'is true when selection is in a block which can have added alignment', () => {
-			setModelData( doc, '<paragraph>x[]x</paragraph>' );
+			setModelData( model, '<paragraph>x[]x</paragraph>' );
 
 			expect( command ).to.have.property( 'isEnabled', true );
 		} );
@@ -76,27 +76,27 @@ describe( 'AlignmentCommand', () => {
 	describe( 'execute()', () => {
 		describe( 'applying alignment', () => {
 			it( 'adds alignment to block element', () => {
-				setModelData( doc, '<paragraph>x[]x</paragraph>' );
+				setModelData( model, '<paragraph>x[]x</paragraph>' );
 
 				editor.execute( 'alignCenter' );
 
-				expect( getModelData( doc ) ).to.equal( '<paragraph alignment="center">x[]x</paragraph>' );
+				expect( getModelData( model ) ).to.equal( '<paragraph alignment="center">x[]x</paragraph>' );
 			} );
 
 			it( 'should remove alignment from single block element if already has one', () => {
-				setModelData( doc, '<paragraph alignment="center">x[]x</paragraph>' );
+				setModelData( model, '<paragraph alignment="center">x[]x</paragraph>' );
 
 				editor.execute( 'alignCenter' );
 
-				expect( getModelData( doc ) ).to.equal( '<paragraph>x[]x</paragraph>' );
+				expect( getModelData( model ) ).to.equal( '<paragraph>x[]x</paragraph>' );
 			} );
 
 			it( 'adds alignment to all selected blocks', () => {
-				setModelData( doc, '<paragraph>x[x</paragraph><paragraph>xx</paragraph><paragraph>x]x</paragraph>' );
+				setModelData( model, '<paragraph>x[x</paragraph><paragraph>xx</paragraph><paragraph>x]x</paragraph>' );
 
 				editor.execute( 'alignCenter' );
 
-				expect( getModelData( doc ) ).to.equal(
+				expect( getModelData( model ) ).to.equal(
 					'<paragraph alignment="center">x[x</paragraph>' +
 					'<paragraph alignment="center">xx</paragraph>' +
 					'<paragraph alignment="center">x]x</paragraph>'
@@ -105,7 +105,7 @@ describe( 'AlignmentCommand', () => {
 
 			it( 'sets alignment on all selected blocks as first block', () => {
 				setModelData(
-					doc,
+					model,
 					'<paragraph>x[x</paragraph>' +
 					'<paragraph >xx</paragraph>' +
 					'<paragraph alignment="center">x]x</paragraph>'
@@ -113,7 +113,7 @@ describe( 'AlignmentCommand', () => {
 
 				editor.execute( 'alignCenter' );
 
-				expect( getModelData( doc ) ).to.equal(
+				expect( getModelData( model ) ).to.equal(
 					'<paragraph alignment="center">x[x</paragraph>' +
 					'<paragraph alignment="center">xx</paragraph>' +
 					'<paragraph alignment="center">x]x</paragraph>'
@@ -123,15 +123,15 @@ describe( 'AlignmentCommand', () => {
 
 		describe( 'applying default alignment', () => {
 			it( 'removes alignment from block element', () => {
-				setModelData( doc, '<paragraph alignment="justify">x[]x</paragraph>' );
+				setModelData( model, '<paragraph alignment="justify">x[]x</paragraph>' );
 
 				editor.execute( 'alignLeft' );
 
-				expect( getModelData( doc ) ).to.equal( '<paragraph>x[]x</paragraph>' );
+				expect( getModelData( model ) ).to.equal( '<paragraph>x[]x</paragraph>' );
 			} );
 
 			it( 'removes alignment from all selected blocks', () => {
-				setModelData( doc,
+				setModelData( model,
 					'<paragraph alignment="center">x[x</paragraph>' +
 					'<paragraph alignment="center">xx</paragraph>' +
 					'<paragraph alignment="center">x]x</paragraph>'
@@ -139,13 +139,13 @@ describe( 'AlignmentCommand', () => {
 
 				editor.execute( 'alignLeft' );
 
-				expect( getModelData( doc ) ).to.equal(
+				expect( getModelData( model ) ).to.equal(
 					'<paragraph>x[x</paragraph><paragraph>xx</paragraph><paragraph>x]x</paragraph>'
 				);
 			} );
 
 			it( 'removes alignment from all selected blocks even if one has no alignment defined', () => {
-				setModelData( doc,
+				setModelData( model,
 					'<paragraph alignment="center">x[x</paragraph>' +
 					'<paragraph>xx</paragraph>' +
 					'<paragraph alignment="center">x]x</paragraph>'
@@ -153,7 +153,7 @@ describe( 'AlignmentCommand', () => {
 
 				editor.execute( 'alignLeft' );
 
-				expect( getModelData( doc ) ).to.equal(
+				expect( getModelData( model ) ).to.equal(
 					'<paragraph>x[x</paragraph><paragraph>xx</paragraph><paragraph>x]x</paragraph>'
 				);
 			} );

+ 20 - 22
packages/ckeditor5-alignment/tests/alignmentediting.js

@@ -15,7 +15,7 @@ import { eventNameToConsumableType } from '@ckeditor/ckeditor5-engine/src/conver
 import AlignmentCommand from '../src/alignmentcommand';
 
 describe( 'AlignmentEditing', () => {
-	let editor, doc;
+	let editor, model;
 
 	beforeEach( () => {
 		return VirtualTestEditor
@@ -24,8 +24,7 @@ describe( 'AlignmentEditing', () => {
 			} )
 			.then( newEditor => {
 				editor = newEditor;
-
-				doc = editor.document;
+				model = editor.model;
 			} );
 	} );
 
@@ -41,7 +40,7 @@ describe( 'AlignmentEditing', () => {
 	} );
 
 	it( 'allows for alignment in $blocks', () => {
-		expect( doc.schema.check( { name: '$block', inside: '$root', attributes: 'alignment' } ) ).to.be.true;
+		expect( model.schema.check( { name: '$block', inside: '$root', attributes: 'alignment' } ) ).to.be.true;
 	} );
 
 	describe( 'integration', () => {
@@ -52,25 +51,24 @@ describe( 'AlignmentEditing', () => {
 				} )
 				.then( newEditor => {
 					editor = newEditor;
-
-					doc = editor.document;
+					model = editor.model;
 				} );
 		} );
 
 		it( 'is allowed on paragraph', () => {
-			expect( doc.schema.check( { name: 'paragraph', attributes: 'alignment' } ) ).to.be.true;
+			expect( model.schema.check( { name: 'paragraph', attributes: 'alignment' } ) ).to.be.true;
 		} );
 
 		it( 'is allowed on listItem', () => {
-			expect( doc.schema.check( { name: 'listItem', attributes: [ 'type', 'indent', 'alignment' ] } ) ).to.be.true;
+			expect( model.schema.check( { name: 'listItem', attributes: [ 'type', 'indent', 'alignment' ] } ) ).to.be.true;
 		} );
 
 		it( 'is allowed on heading', () => {
-			expect( doc.schema.check( { name: 'heading1', attributes: 'alignment' } ) ).to.be.true;
+			expect( model.schema.check( { name: 'heading1', attributes: 'alignment' } ) ).to.be.true;
 		} );
 
 		it( 'is disallowed on caption', () => {
-			expect( doc.schema.check( { name: 'caption', attributes: 'alignment' } ) ).to.be.false;
+			expect( model.schema.check( { name: 'caption', attributes: 'alignment' } ) ).to.be.false;
 		} );
 	} );
 
@@ -80,12 +78,12 @@ describe( 'AlignmentEditing', () => {
 
 			editor.setData( data );
 
-			expect( getModelData( doc ) ).to.equal( '<paragraph>[]x</paragraph>' );
+			expect( getModelData( model ) ).to.equal( '<paragraph>[]x</paragraph>' );
 			expect( editor.getData() ).to.equal( '<p>x</p>' );
 		} );
 
 		it( 'adds a converter to the view pipeline for removing attribute', () => {
-			setModelData( doc, '<paragraph alignment="center">[]x</paragraph>' );
+			setModelData( model, '<paragraph alignment="center">[]x</paragraph>' );
 
 			expect( editor.getData() ).to.equal( '<p style="text-align:center;">x</p>' );
 
@@ -103,18 +101,18 @@ describe( 'AlignmentEditing', () => {
 
 			editor.setData( data );
 
-			expect( getModelData( doc ) ).to.equal( '<paragraph alignment="center">[]x</paragraph>' );
+			expect( getModelData( model ) ).to.equal( '<paragraph alignment="center">[]x</paragraph>' );
 			expect( editor.getData() ).to.equal( data );
 		} );
 
 		it( 'adds a converter to the view pipeline', () => {
-			setModelData( doc, '<paragraph alignment="center">[]x</paragraph>' );
+			setModelData( model, '<paragraph alignment="center">[]x</paragraph>' );
 
 			expect( editor.getData() ).to.equal( '<p style="text-align:center;">x</p>' );
 		} );
 
 		it( 'adds a converter to the view pipeline for changing attribute', () => {
-			setModelData( doc, '<paragraph alignment="right">[]x</paragraph>' );
+			setModelData( model, '<paragraph alignment="right">[]x</paragraph>' );
 
 			expect( editor.getData() ).to.equal( '<p style="text-align:right;">x</p>' );
 
@@ -132,12 +130,12 @@ describe( 'AlignmentEditing', () => {
 
 			editor.setData( data );
 
-			expect( getModelData( doc ) ).to.equal( '<paragraph alignment="right">[]x</paragraph>' );
+			expect( getModelData( model ) ).to.equal( '<paragraph alignment="right">[]x</paragraph>' );
 			expect( editor.getData() ).to.equal( data );
 		} );
 
 		it( 'adds a converter to the view pipeline', () => {
-			setModelData( doc, '<paragraph alignment="right">[]x</paragraph>' );
+			setModelData( model, '<paragraph alignment="right">[]x</paragraph>' );
 
 			expect( editor.getData() ).to.equal( '<p style="text-align:right;">x</p>' );
 		} );
@@ -149,12 +147,12 @@ describe( 'AlignmentEditing', () => {
 
 			editor.setData( data );
 
-			expect( getModelData( doc ) ).to.equal( '<paragraph alignment="justify">[]x</paragraph>' );
+			expect( getModelData( model ) ).to.equal( '<paragraph alignment="justify">[]x</paragraph>' );
 			expect( editor.getData() ).to.equal( data );
 		} );
 
 		it( 'adds a converter to the view pipeline', () => {
-			setModelData( doc, '<paragraph alignment="justify">[]x</paragraph>' );
+			setModelData( model, '<paragraph alignment="justify">[]x</paragraph>' );
 
 			expect( editor.getData() ).to.equal( '<p style="text-align:justify;">x</p>' );
 		} );
@@ -169,7 +167,7 @@ describe( 'AlignmentEditing', () => {
 
 			editor.setData( data );
 
-			expect( getModelData( doc ) ).to.equal( '<paragraph alignment="justify">[]x</paragraph>' );
+			expect( getModelData( model ) ).to.equal( '<paragraph alignment="justify">[]x</paragraph>' );
 
 			expect( editor.getData() ).to.equal( '<p>x</p>' );
 
@@ -186,7 +184,7 @@ describe( 'AlignmentEditing', () => {
 
 			editor.setData( data );
 
-			expect( getModelData( doc ) ).to.equal( '<paragraph>[]x</paragraph>' );
+			expect( getModelData( model ) ).to.equal( '<paragraph>[]x</paragraph>' );
 			expect( editor.getData() ).to.equal( '<p>x</p>' );
 		} );
 
@@ -195,7 +193,7 @@ describe( 'AlignmentEditing', () => {
 
 			editor.setData( data );
 
-			expect( getModelData( doc ) ).to.equal( '<paragraph>[]x</paragraph>' );
+			expect( getModelData( model ) ).to.equal( '<paragraph>[]x</paragraph>' );
 			expect( editor.getData() ).to.equal( '<p>x</p>' );
 		} );
 	} );

+ 12 - 12
packages/ckeditor5-alignment/tests/integration.js

@@ -19,7 +19,7 @@ import ClassicTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/classictest
 import { getData as getModelData, setData as setModelData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
 
 describe( 'Alignment', () => {
-	let editor, doc, element;
+	let editor, model, element;
 
 	beforeEach( () => {
 		element = document.createElement( 'div' );
@@ -31,7 +31,7 @@ describe( 'Alignment', () => {
 			} )
 			.then( newEditor => {
 				editor = newEditor;
-				doc = editor.document;
+				model = editor.model;
 			} );
 	} );
 
@@ -43,15 +43,15 @@ describe( 'Alignment', () => {
 
 	describe( 'compatibility with images', () => {
 		it( 'does not work inside image caption', () => {
-			setModelData( doc, '<image src="foo.png"><caption>Foo[]</caption></image>' );
+			setModelData( model, '<image src="foo.png"><caption>Foo[]</caption></image>' );
 
 			editor.execute( 'alignCenter' );
 
-			expect( getModelData( doc ) ).to.equal( '<image src="foo.png"><caption>Foo[]</caption></image>' );
+			expect( getModelData( model ) ).to.equal( '<image src="foo.png"><caption>Foo[]</caption></image>' );
 		} );
 		it( 'does not work inside image caption when selection overlaps image', () => {
 			setModelData(
-				doc,
+				model,
 				'<paragraph>foo[foo</paragraph>' +
 				'<image src="foo.png"><caption>bar</caption></image>' +
 				'<paragraph>baz]baz</paragraph>'
@@ -59,7 +59,7 @@ describe( 'Alignment', () => {
 
 			editor.execute( 'alignCenter' );
 
-			expect( getModelData( doc ) ).to.equal(
+			expect( getModelData( model ) ).to.equal(
 				'<paragraph alignment="center">foo[foo</paragraph>' +
 				'<image src="foo.png"><caption>bar</caption></image>' +
 				'<paragraph alignment="center">baz]baz</paragraph>'
@@ -69,27 +69,27 @@ describe( 'Alignment', () => {
 
 	describe( 'compatibility with blockQuote', () => {
 		it( 'does work inside BlockQuote on paragraph', () => {
-			setModelData( doc, '<blockQuote><paragraph>Foo[]</paragraph></blockQuote>' );
+			setModelData( model, '<blockQuote><paragraph>Foo[]</paragraph></blockQuote>' );
 
 			editor.execute( 'alignCenter' );
 
-			expect( getModelData( doc ) ).to.equal( '<blockQuote><paragraph alignment="center">Foo[]</paragraph></blockQuote>' );
+			expect( getModelData( model ) ).to.equal( '<blockQuote><paragraph alignment="center">Foo[]</paragraph></blockQuote>' );
 		} );
 
 		it( 'does work inside blockQuote on heading', () => {
-			setModelData( doc, '<blockQuote><heading1>Foo[]</heading1></blockQuote>' );
+			setModelData( model, '<blockQuote><heading1>Foo[]</heading1></blockQuote>' );
 
 			editor.execute( 'alignCenter' );
 
-			expect( getModelData( doc ) ).to.equal( '<blockQuote><heading1 alignment="center">Foo[]</heading1></blockQuote>' );
+			expect( getModelData( model ) ).to.equal( '<blockQuote><heading1 alignment="center">Foo[]</heading1></blockQuote>' );
 		} );
 
 		it( 'does work inside blockQuote on listItem', () => {
-			setModelData( doc, '<blockQuote><listItem indent="0" type="numbered">Foo[]</listItem></blockQuote>' );
+			setModelData( model, '<blockQuote><listItem indent="0" type="numbered">Foo[]</listItem></blockQuote>' );
 
 			editor.execute( 'alignCenter' );
 
-			expect( getModelData( doc ) ).to.equal(
+			expect( getModelData( model ) ).to.equal(
 				'<blockQuote><listItem alignment="center" indent="0" type="numbered">Foo[]</listItem></blockQuote>'
 			);
 		} );