8
0
Pārlūkot izejas kodu

Initial manual test with nested editables.

Szymon Kupś 9 gadi atpakaļ
vecāks
revīzija
86b715bd14

+ 6 - 0
packages/ckeditor5-engine/tests/manual/tickets/764/1.html

@@ -0,0 +1,6 @@
+<div id="editor">
+	<p>paragraph</p>
+	<figure>Caption:<figcaption>foo bar baz</figcaption></figure>
+</div>
+<h2>Model contents:</h2>
+<div id="model"></div>

+ 80 - 0
packages/ckeditor5-engine/tests/manual/tickets/764/1.js

@@ -0,0 +1,80 @@
+/**
+ * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* global console */
+
+import ClassicEditor from 'ckeditor5-editor-classic/src/classic';
+import Plugin from 'ckeditor5-core/src/plugin';
+import Enter from 'ckeditor5-enter/src/enter';
+import Typing from 'ckeditor5-typing/src/typing';
+import Paragraph from 'ckeditor5-paragraph/src/paragraph';
+import Bold from 'ckeditor5-basic-styles/src/bold';
+import Undo from 'ckeditor5-undo/src/undo';
+import buildModelConverter from 'ckeditor5-engine/src/conversion/buildmodelconverter';
+import buildViewConverter from 'ckeditor5-engine/src/conversion/buildviewconverter';
+import ViewContainerElement from 'ckeditor5-engine/src/view/containerelement';
+import ViewEditableElement from 'ckeditor5-engine/src/view/editableelement';
+import { getData } from 'ckeditor5-engine/src/dev-utils/model';
+import global from 'ckeditor5-utils/src/dom/global';
+
+class NestedEditable extends Plugin {
+	init() {
+		const editor = this.editor;
+		const document = editor.document;
+		const editing = editor.editing;
+		const data = editor.data;
+		const schema = document.schema;
+
+		schema.registerItem( 'figure' );
+		schema.registerItem( 'figcaption' );
+		schema.allow( { name: 'figure', inside: '$root' } );
+		schema.allow( { name: 'figcaption', inside: 'figure' } );
+		schema.objects.add( 'figure' );
+
+		schema.allow( { name: '$inline', inside: 'figure' } );
+		schema.allow( { name: '$inline', inside: 'figcaption' } );
+
+		buildModelConverter().for( data.modelToView, editing.modelToView )
+			.fromElement( 'figure' )
+			.toElement( () => new ViewContainerElement( 'figure', { contenteditable: 'false' } ) );
+
+		buildViewConverter().for( data.viewToModel )
+			.fromElement( 'figure' )
+			.toElement( 'figure' );
+
+		buildModelConverter().for( data.modelToView, editing.modelToView )
+			.fromElement( 'figcaption' )
+			.toElement( () => {
+				const element = new ViewEditableElement( 'figcaption', { contenteditable: 'true' } );
+				element.document = document;
+
+				return element;
+			} );
+
+		buildViewConverter().for( data.viewToModel )
+			.fromElement( 'figcaption' )
+			.toElement( 'figcaption' );
+	}
+}
+
+ClassicEditor.create( global.document.querySelector( '#editor' ), {
+	plugins: [ Enter, Typing, Paragraph, Bold, NestedEditable, Undo ],
+	toolbar: [ 'undo', 'redo', 'bold' ]
+} )
+.then( editor => {
+	editor.document.on( 'changesDone', () => {
+		printModelContents( editor );
+	} );
+
+	printModelContents( editor );
+} )
+.catch( err => {
+	console.error( err.stack );
+} );
+
+const modelDiv = global.document.querySelector( '#model' );
+function printModelContents( editor ) {
+	modelDiv.innerText = getData( editor.document );
+}

+ 1 - 0
packages/ckeditor5-engine/tests/manual/tickets/764/1.md

@@ -0,0 +1 @@
+### Nested editable manual test