浏览代码

Replaced the "config.mediaEmbed.semanticDataOutput" configuration with "mediaPreviewsInData", also making the feature produce semantic data by default.

Aleksander Nowodzinski 7 年之前
父节点
当前提交
724fc1d6c3

+ 2 - 8
packages/ckeditor5-media-embed/src/converters.js

@@ -31,18 +31,12 @@ import ViewPosition from '@ckeditor/ckeditor5-engine/src/view/position';
  * @param {module:media-embed/mediaregistry~MediaRegistry} registry The registry providing
  * the media and their content.
  * @param {Object} options
- * @param {String} [options.semanticDataOutput] When `true`, the converter will create view in the semantic form.
+ * @param {String} [options.renderMediaPreview] When `true`, the converter will create view in the non-semantic form.
  * @param {String} [options.renderForEditingView] When `true`, the converter will create a view specific for the
  * editing pipeline (e.g. including CSS classes, content placeholders).
  * @returns {Function}
  */
 export function modelToViewUrlAttributeConverter( registry, options ) {
-	const mediaViewElementOptions = {
-		useSemanticWrapper: options.semanticDataOutput,
-		renderContent: !options.semanticDataOutput,
-		renderForEditingView: options.renderForEditingView
-	};
-
 	return dispatcher => {
 		dispatcher.on( 'attribute:url:media', converter );
 	};
@@ -59,7 +53,7 @@ export function modelToViewUrlAttributeConverter( registry, options ) {
 		// TODO: removing it and creating it from scratch is a hack. We can do better than that.
 		viewWriter.remove( ViewRange.createIn( figure ) );
 
-		const mediaViewElement = registry.getMediaViewElement( viewWriter, url, mediaViewElementOptions );
+		const mediaViewElement = registry.getMediaViewElement( viewWriter, url, options );
 
 		viewWriter.insert( ViewPosition.createAt( figure ), mediaViewElement );
 	}

+ 4 - 6
packages/ckeditor5-media-embed/src/mediaembedediting.js

@@ -156,7 +156,7 @@ export default class MediaEmbedEditing extends Plugin {
 		const schema = editor.model.schema;
 		const t = editor.t;
 		const conversion = editor.conversion;
-		const semanticDataOutput = editor.config.get( 'mediaEmbed.semanticDataOutput' );
+		const renderMediaPreview = editor.config.get( 'mediaEmbed.mediaPreviewsInData' );
 		const registry = this.registry;
 
 		editor.commands.add( 'mediaEmbed', new MediaEmbedCommand( editor ) );
@@ -176,8 +176,7 @@ export default class MediaEmbedEditing extends Plugin {
 				const url = modelElement.getAttribute( 'url' );
 
 				return createMediaFigureElement( viewWriter, registry, url, {
-					useSemanticWrapper: semanticDataOutput || !url,
-					renderContent: !semanticDataOutput
+					renderMediaPreview: url && renderMediaPreview
 				} );
 			}
 		} ) );
@@ -185,7 +184,7 @@ export default class MediaEmbedEditing extends Plugin {
 		// Model -> Data (url -> data-oembed-url)
 		conversion.for( 'dataDowncast' ).add(
 			modelToViewUrlAttributeConverter( registry, {
-				semanticDataOutput
+				renderMediaPreview
 			} ) );
 
 		// Model -> View (element)
@@ -194,8 +193,7 @@ export default class MediaEmbedEditing extends Plugin {
 			view: ( modelElement, viewWriter ) => {
 				const url = modelElement.getAttribute( 'url' );
 				const figure = createMediaFigureElement( viewWriter, registry, url, {
-					renderForEditingView: true,
-					renderContent: true
+					renderForEditingView: true
 				} );
 
 				return toMediaWidget( figure, viewWriter, t( 'media widget' ) );

+ 9 - 11
packages/ckeditor5-media-embed/src/mediaregistry.js

@@ -90,8 +90,7 @@ export default class MediaRegistry {
 	 * @param {module:engine/view/downcastwriter~DowncastWriter} writer The view writer used to produce a view element.
 	 * @param {String} url The url to be translated into a view element.
 	 * @param {Object} options
-	 * @param {String} [options.renderContent]
-	 * @param {String} [options.useSemanticWrapper]
+	 * @param {String} [options.renderMediaPreview]
 	 * @param {String} [options.renderForEditingView]
 	 * @returns {module:engine/view/element~Element}
 	 */
@@ -213,21 +212,14 @@ class Media {
 	 *
 	 * @param {module:engine/view/downcastwriter~DowncastWriter} writer The view writer used to produce a view element.
 	 * @param {Object} options
-	 * @param {String} [options.renderContent]
-	 * @param {String} [options.useSemanticWrapper]
+	 * @param {String} [options.renderMediaPreview]
 	 * @param {String} [options.renderForEditingView]
 	 * @returns {module:engine/view/element~Element}
 	 */
 	getViewElement( writer, options ) {
 		const attributes = {};
 
-		if ( options.useSemanticWrapper || ( this.url && !this._contentRenderer && !options.renderForEditingView ) ) {
-			if ( this.url ) {
-				attributes.url = this.url;
-			}
-
-			return writer.createEmptyElement( 'oembed', attributes );
-		} else {
+		if ( options.renderForEditingView || ( options.renderMediaPreview && this.url && this._contentRenderer ) ) {
 			if ( this.url ) {
 				attributes[ 'data-oembed-url' ] = this.url;
 			}
@@ -245,6 +237,12 @@ class Media {
 
 				return domElement;
 			} );
+		} else {
+			if ( this.url ) {
+				attributes.url = this.url;
+			}
+
+			return writer.createEmptyElement( 'oembed', attributes );
 		}
 	}
 

+ 0 - 1
packages/ckeditor5-media-embed/src/utils.js

@@ -45,7 +45,6 @@ export function toMediaWidget( viewElement, writer, label ) {
  * @param {module:media-embed/mediaregistry~MediaRegistry} registry
  * @param {String} url
  * @param {Object} options
- * @param {String} [options.renderContent]
  * @param {String} [options.useSemanticWrapper]
  * @param {String} [options.renderForEditingView]
  * @returns {module:engine/view/containerelement~ContainerElement}

+ 4 - 1
packages/ckeditor5-media-embed/tests/manual/mediaembed.js

@@ -14,7 +14,10 @@ ClassicEditor
 		plugins: [ ArticlePluginSet, MediaEmbed ],
 		toolbar: [
 			'heading', '|', 'mediaEmbed', '|', 'bold', 'italic', 'bulletedList', 'numberedList', 'blockQuote', 'link', 'undo', 'redo'
-		]
+		],
+		mediaEmbed: {
+			mediaPreviewsInData: true
+		}
 	} )
 	.then( editor => {
 		window.editor = editor;

+ 1 - 4
packages/ckeditor5-media-embed/tests/manual/semanticmediaembed.js

@@ -14,10 +14,7 @@ ClassicEditor
 		plugins: [ ArticlePluginSet, MediaEmbed ],
 		toolbar: [
 			'heading', '|', 'mediaEmbed', '|', 'bold', 'italic', 'bulletedList', 'numberedList', 'blockQuote', 'link', 'undo', 'redo'
-		],
-		mediaEmbed: {
-			semanticDataOutput: true
-		}
+		]
 	} )
 	.then( editor => {
 		window.editor = editor;

+ 10 - 13
packages/ckeditor5-media-embed/tests/mediaembedediting.js

@@ -131,9 +131,7 @@ describe( 'MediaEmbedEditing', () => {
 
 				describe( 'default value', () => {
 					beforeEach( () => {
-						return createTestEditor( {
-							semanticDataOutput: true
-						} )
+						return createTestEditor()
 							.then( newEditor => {
 								editor = newEditor;
 								view = editor.editing.view;
@@ -475,10 +473,9 @@ describe( 'MediaEmbedEditing', () => {
 		} );
 
 		describe( 'conversion in the data pipeline', () => {
-			describe( 'semanticDataOutput=true', () => {
+			describe( 'mediaPreviewsInData=false', () => {
 				beforeEach( () => {
 					return createTestEditor( {
-						semanticDataOutput: true,
 						providers: providerDefinitions
 					} )
 						.then( newEditor => {
@@ -603,7 +600,6 @@ describe( 'MediaEmbedEditing', () => {
 
 					it( 'should not convert unknown media', () => {
 						return createTestEditor( {
-							semanticDataOutput: true,
 							providers: [
 								testProviders.A
 							]
@@ -622,10 +618,11 @@ describe( 'MediaEmbedEditing', () => {
 				} );
 			} );
 
-			describe( 'semanticDataOutput=false', () => {
+			describe( 'mediaPreviewsInData=true', () => {
 				beforeEach( () => {
 					return createTestEditor( {
-						providers: providerDefinitions
+						providers: providerDefinitions,
+						mediaPreviewsInData: true
 					} )
 						.then( newEditor => {
 							editor = newEditor;
@@ -794,11 +791,10 @@ describe( 'MediaEmbedEditing', () => {
 		} );
 
 		describe( 'conversion in the editing pipeline', () => {
-			describe( 'semanticDataOutput=true', () => {
+			describe( 'mediaPreviewsInData=false', () => {
 				beforeEach( () => {
 					return createTestEditor( {
-						providers: providerDefinitions,
-						semanticDataOutput: true
+						providers: providerDefinitions
 					} )
 						.then( newEditor => {
 							editor = newEditor;
@@ -811,10 +807,11 @@ describe( 'MediaEmbedEditing', () => {
 				test();
 			} );
 
-			describe( 'semanticDataOutput=false', () => {
+			describe( 'mediaPreviewsInData=true', () => {
 				beforeEach( () => {
 					return createTestEditor( {
-						providers: providerDefinitions
+						providers: providerDefinitions,
+						mediaPreviewsInData: true
 					} )
 						.then( newEditor => {
 							editor = newEditor;