Selaa lähdekoodia

Moved Article preset from the presets package.

Piotrek Koszuliński 8 vuotta sitten
vanhempi
commit
59a6308ab8

+ 9 - 0
packages/ckeditor5-core/package.json

@@ -8,7 +8,16 @@
     "@ckeditor/ckeditor5-utils": "^0.10.0"
   },
   "devDependencies": {
+    "@ckeditor/ckeditor5-autoformat": "^0.6.0",
+    "@ckeditor/ckeditor5-basic-styles": "^0.9.0",
+    "@ckeditor/ckeditor5-block-quote": "^0.2.0",
+    "@ckeditor/ckeditor5-editor-classic": "^0.8.0",
     "@ckeditor/ckeditor5-dev-lint": "^3.1.0",
+    "@ckeditor/ckeditor5-heading": "^0.10.0",
+    "@ckeditor/ckeditor5-image": "^0.7.0",
+    "@ckeditor/ckeditor5-link": "^0.8.0",
+    "@ckeditor/ckeditor5-list": "^0.7.0",
+    "@ckeditor/ckeditor5-presets": "^0.3.0",
     "@ckeditor/ckeditor5-ui": "^0.10.0",
     "eslint-config-ckeditor5": "^1.0.5",
     "gulp": "^3.9.1",

+ 113 - 0
packages/ckeditor5-core/tests/_utils-tests/articlepluginset.js

@@ -0,0 +1,113 @@
+/**
+ * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* global document */
+
+import ArticlePluginSet from '../_utils/articlepluginset';
+import ClassicTestEditor from '../_utils/classictesteditor';
+
+import EssentialsPreset from '@ckeditor/ckeditor5-presets/src/essentials';
+import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
+import Autoformat from '@ckeditor/ckeditor5-autoformat/src/autoformat';
+import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';
+import Heading from '@ckeditor/ckeditor5-heading/src/heading';
+import Image from '@ckeditor/ckeditor5-image/src/image';
+import ImageCaption from '@ckeditor/ckeditor5-image/src/imagecaption';
+import ImageStyle from '@ckeditor/ckeditor5-image/src/imagestyle';
+import ImageToolbar from '@ckeditor/ckeditor5-image/src/imagetoolbar';
+import Italic from '@ckeditor/ckeditor5-basic-styles/src/italic';
+import Link from '@ckeditor/ckeditor5-link/src/link';
+import List from '@ckeditor/ckeditor5-list/src/list';
+
+import normalizeHtml from '@ckeditor/ckeditor5-utils/tests/_utils/normalizehtml';
+
+describe( 'ArticlePluginSet', () => {
+	let editor, editorElement;
+
+	beforeEach( () => {
+		editorElement = document.createElement( 'div' );
+		document.body.appendChild( editorElement );
+
+		return ClassicTestEditor.create( editorElement, { plugins: [ ArticlePluginSet ] } )
+			.then( newEditor => {
+				editor = newEditor;
+			} );
+	} );
+
+	afterEach( () => {
+		editor.destroy();
+
+		editorElement.remove();
+	} );
+
+	it( 'should be loaded', () => {
+		expect( editor.plugins.get( ArticlePluginSet ) ).to.be.instanceOf( ArticlePluginSet );
+	} );
+
+	it( 'should load all its dependencies', () => {
+		expect( editor.plugins.get( EssentialsPreset ) ).to.be.instanceOf( EssentialsPreset );
+
+		expect( editor.plugins.get( Paragraph ) ).to.be.instanceOf( Paragraph );
+		expect( editor.plugins.get( Autoformat ) ).to.be.instanceOf( Autoformat );
+		expect( editor.plugins.get( Bold ) ).to.be.instanceOf( Bold );
+		expect( editor.plugins.get( Heading ) ).to.be.instanceOf( Heading );
+		expect( editor.plugins.get( Image ) ).to.be.instanceOf( Image );
+		expect( editor.plugins.get( ImageCaption ) ).to.be.instanceOf( ImageCaption );
+		expect( editor.plugins.get( ImageStyle ) ).to.be.instanceOf( ImageStyle );
+		expect( editor.plugins.get( ImageToolbar ) ).to.be.instanceOf( ImageToolbar );
+		expect( editor.plugins.get( Italic ) ).to.be.instanceOf( Italic );
+		expect( editor.plugins.get( Link ) ).to.be.instanceOf( Link );
+		expect( editor.plugins.get( List ) ).to.be.instanceOf( List );
+	} );
+
+	it( 'loads data', () => {
+		const data =
+			'<h2>Heading 1</h2>' +
+			'<p>Paragraph</p>' +
+			'<p><strong>Bold</strong> <i>Italic</i> <a href="foo">Link</a></p>' +
+			'<ul>' +
+				'<li>UL List item 1</li>' +
+				'<li>UL List item 2</li>' +
+			'</ul>' +
+			'<ol>' +
+				'<li>OL List item 1</li>' +
+				'<li>OL List item 2</li>' +
+			'</ol>' +
+			'<figure class="image image-style-side">' +
+				'<img alt="bar" src="foo">' +
+				'<figcaption>Caption</figcaption>' +
+			'</figure>' +
+			'<blockquote>' +
+				'<p>Quote</p>' +
+				'<ul><li>Quoted UL List item 1</li></ul>' +
+			'</blockquote>';
+
+		// Can't use data twice due to https://github.com/ckeditor/ckeditor5-utils/issues/128.
+		const expectedOutput =
+			'<h2>Heading 1</h2>' +
+			'<p>Paragraph</p>' +
+			'<p><strong>Bold</strong> <i>Italic</i> <a href="foo">Link</a></p>' +
+			'<ul>' +
+				'<li>UL List item 1</li>' +
+				'<li>UL List item 2</li>' +
+			'</ul>' +
+			'<ol>' +
+				'<li>OL List item 1</li>' +
+				'<li>OL List item 2</li>' +
+			'</ol>' +
+			'<figure class="image image-style-side">' +
+				'<img alt="bar" src="foo"></img>' +
+				'<figcaption>Caption</figcaption>' +
+			'</figure>' +
+			'<blockquote>' +
+				'<p>Quote</p>' +
+				'<ul><li>Quoted UL List item 1</li></ul>' +
+			'</blockquote>';
+
+		editor.setData( data );
+
+		expect( normalizeHtml( editor.getData() ) ).to.equal( expectedOutput );
+	} );
+} );

+ 55 - 0
packages/ckeditor5-core/tests/_utils/articlepluginset.js

@@ -0,0 +1,55 @@
+/**
+ * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/**
+ * @module core/tests/_utils/articlepluginset
+ */
+
+import Plugin from '../../src/plugin';
+
+import EssentialsPreset from '@ckeditor/ckeditor5-presets/src/essentials';
+
+import Autoformat from '@ckeditor/ckeditor5-autoformat/src/autoformat';
+import BlockQuote from '@ckeditor/ckeditor5-block-quote/src/blockquote';
+import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';
+import Heading from '@ckeditor/ckeditor5-heading/src/heading';
+import Image from '@ckeditor/ckeditor5-image/src/image';
+import ImageCaption from '@ckeditor/ckeditor5-image/src/imagecaption';
+import ImageStyle from '@ckeditor/ckeditor5-image/src/imagestyle';
+import ImageToolbar from '@ckeditor/ckeditor5-image/src/imagetoolbar';
+import Italic from '@ckeditor/ckeditor5-basic-styles/src/italic';
+import Link from '@ckeditor/ckeditor5-link/src/link';
+import List from '@ckeditor/ckeditor5-list/src/list';
+import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
+
+/**
+ * Set of plugins which create a simple article editor.
+ *
+ * This set of plugins follows [Editor Recommendations](https://github.com/ckeditor/editor-recommendations).
+ *
+ * It is maintained for **test and development purpopses**. The core team uses it to simplify
+ * creating typical editors in tests and documentation.
+ *
+ * @extends module:core/plugin~Plugin
+ */
+export default class ArticlePluginSet extends Plugin {
+	static get requires() {
+		return [
+			EssentialsPreset,
+			Autoformat,
+			BlockQuote,
+			Bold,
+			Heading,
+			Image,
+			ImageCaption,
+			ImageStyle,
+			ImageToolbar,
+			Italic,
+			Link,
+			List,
+			Paragraph
+		];
+	}
+}

+ 25 - 0
packages/ckeditor5-core/tests/manual/article.html

@@ -0,0 +1,25 @@
+<div id="editor">
+	<h2>Heading 1</h2>
+	<p>Paragraph</p>
+	<p><strong>Bold</strong> <i>Italic</i> <a href="foo">Link</a></p>
+	<ul>
+		<li>UL List item 1</li>
+		<li>UL List item 2</li>
+	</ul>
+	<ol>
+		<li>OL List item 1</li>
+		<li>OL List item 2</li>
+	</ol>
+	<figure class="image image-style-side">
+		<img alt="bar" src="sample.jpg">
+		<figcaption>Caption</figcaption>
+	</figure>
+	<blockquote>
+		<p>Quote</p>
+		<ul>
+			<li>Quoted UL List item 1</li>
+			<li>Quoted UL List item 2</li>
+		</ul>
+		<p>Quote</p>
+	</blockquote>
+</div>

+ 25 - 0
packages/ckeditor5-core/tests/manual/article.js

@@ -0,0 +1,25 @@
+/**
+ * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* globals console, window, document */
+
+import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
+
+import ArticlePluginSet from '../_utils/articlepluginset';
+
+ClassicEditor
+	.create( document.querySelector( '#editor' ), {
+		plugins: [ ArticlePluginSet ],
+		toolbar: [ 'headings', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote', 'undo', 'redo' ],
+		image: {
+			toolbar: [ 'imageStyleFull', 'imageStyleSide', '|', 'imageTextAlternative' ]
+		}
+	} )
+	.then( editor => {
+		window.editor = editor;
+	} )
+	.catch( err => {
+		console.error( err.stack );
+	} );

+ 3 - 0
packages/ckeditor5-core/tests/manual/article.md

@@ -0,0 +1,3 @@
+# Article plugin set
+
+Check whether all the available features work together.

+ 2 - 2
packages/ckeditor5-core/tests/manual/readonly.js

@@ -7,12 +7,12 @@
 
 import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
 
-import ArticlePreset from '@ckeditor/ckeditor5-presets/src/article';
+import ArticlePluginSet from '../_utils/articlepluginset';
 import ContextualToolbar from '@ckeditor/ckeditor5-ui/src/toolbar/contextual/contextualtoolbar';
 
 ClassicEditor
 	.create( document.querySelector( '#editor' ), {
-		plugins: [ ArticlePreset, ContextualToolbar ],
+		plugins: [ ArticlePluginSet, ContextualToolbar ],
 		toolbar: [ 'headings', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote', 'undo', 'redo' ],
 		image: {
 			toolbar: [ 'imageStyleFull', 'imageStyleSide', '|', 'imageTextAlternative' ],