Skip to content

Commit

Permalink
SAK-42671 Sakai Editor Webcomponent CKEditor 5 (sakaiproject#7467)
Browse files Browse the repository at this point in the history
* SAK-42671 Sakai Editor Webcomponent CKEditor 5

* Multiple editors

* Add Ballon editor to super build

* Updates
  • Loading branch information
ern authored Nov 4, 2019
1 parent dbb880a commit ec47de1
Show file tree
Hide file tree
Showing 9 changed files with 7,729 additions and 668 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ sakai-demo.zip
*nb-configuration.xml
velocity.log
node_modules
webcomponents/tool/src/main/frontend/dist
bower_components
rebel.xml
rsf/sakai-rsf-web/templates/overlays
Expand Down
65 changes: 60 additions & 5 deletions webcomponents/tool/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<version>20-SNAPSHOT</version>
</parent>

<name>Sakai Web Components</name>
<name>Sakai Web Components Tool</name>
<groupId>org.sakaiproject</groupId>
<artifactId>webcomponents</artifactId>
<packaging>war</packaging>
Expand Down Expand Up @@ -43,16 +43,40 @@
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<filesets>
<fileset>
<directory>src/main/frontend/assets</directory>
<includes>
<include>**/*</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
<fileset>
<directory>src/main/frontend/dist</directory>
<includes>
<include>**/*</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceDirectory>src/main/webapp</warSourceDirectory>
<packagingExcludes>
node_modules/**,
ckeditor-src.js,
package.json,
package-lock.json,
webpack.config.js
webpack.config.js,
.jshintrc
</packagingExcludes>
<webResources>
<resource>
Expand All @@ -76,8 +100,26 @@
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<nodeVersion>v8.12.0</nodeVersion>
<npmVersion>6.4.1</npmVersion>
<nodeVersion>v12.12.0</nodeVersion>
<npmVersion>6.12.0</npmVersion>
</configuration>
</execution>
<execution>
<id>npm install dependencies</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>
install --unsafe-perm --save-dev
@ckeditor/ckeditor5-dev-webpack-plugin
@ckeditor/ckeditor5-dev-utils
postcss-loader@3
raw-loader@3
style-loader@1
webpack@4
webpack-cli@3
</arguments>
</configuration>
</execution>
<execution>
Expand All @@ -86,7 +128,20 @@
<goal>npm</goal>
</goals>
<configuration>
<arguments>install --unsafe-perm</arguments>
<arguments>
install --unsafe-perm
</arguments>
</configuration>
</execution>
<execution>
<id>npm build</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>
run build
</arguments>
</configuration>
</execution>
</executions>
Expand Down
3 changes: 3 additions & 0 deletions webcomponents/tool/src/main/frontend/.jshintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"esversion":6
}
106 changes: 106 additions & 0 deletions webcomponents/tool/src/main/frontend/ckeditor-src.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
/**
* @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/

// The editor creator to use.
import ClassicEditorBase from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
import InlineEditorBase from '@ckeditor/ckeditor5-editor-inline/src/inlineeditor';
import BalloonEditorBase from '@ckeditor/ckeditor5-editor-balloon/src/ballooneditor';

import Essentials from '@ckeditor/ckeditor5-essentials/src/essentials';
import UploadAdapter from '@ckeditor/ckeditor5-adapter-ckfinder/src/uploadadapter';
import Autoformat from '@ckeditor/ckeditor5-autoformat/src/autoformat';
import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';
import Italic from '@ckeditor/ckeditor5-basic-styles/src/italic';
import BlockQuote from '@ckeditor/ckeditor5-block-quote/src/blockquote';
import CKFinder from '@ckeditor/ckeditor5-ckfinder/src/ckfinder';
import EasyImage from '@ckeditor/ckeditor5-easy-image/src/easyimage';
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 ImageUpload from '@ckeditor/ckeditor5-image/src/imageupload';
import Link from '@ckeditor/ckeditor5-link/src/link';
import List from '@ckeditor/ckeditor5-list/src/list';
import MediaEmbed from '@ckeditor/ckeditor5-media-embed/src/mediaembed';
import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
import PasteFromOffice from '@ckeditor/ckeditor5-paste-from-office/src/pastefromoffice';
import Table from '@ckeditor/ckeditor5-table/src/table';
import TableToolbar from '@ckeditor/ckeditor5-table/src/tabletoolbar';


export class ClassicEditor extends ClassicEditorBase {}
export class InlineEditor extends InlineEditorBase {}
export class BalloonEditor extends BalloonEditorBase {}

// Plugins to include in the build.
const plugins = [
Essentials,
UploadAdapter,
Autoformat,
Bold,
Italic,
BlockQuote,
CKFinder,
EasyImage,
Heading,
Image,
ImageCaption,
ImageStyle,
ImageToolbar,
ImageUpload,
Link,
List,
MediaEmbed,
Paragraph,
PasteFromOffice,
Table,
TableToolbar
];

// Editor configuration.
const config = {
toolbar: {
items: [
'heading',
'|',
'bold',
'italic',
'link',
'bulletedList',
'numberedList',
'imageUpload',
'blockQuote',
'insertTable',
'mediaEmbed',
'undo',
'redo'
]
},
image: {
toolbar: [
'imageStyle:full',
'imageStyle:side',
'|',
'imageTextAlternative'
]
},
table: {
contentToolbar: [
'tableColumn',
'tableRow',
'mergeTableCells'
]
},
// This value must be kept in sync with the language defined in webpack.config.js.
language: 'en'
};

BalloonEditor.builtinPlugins = plugins;
BalloonEditor.defaultConfig = config;
InlineEditor.builtinPlugins = plugins;
InlineEditor.defaultConfig = config;
ClassicEditor.builtinPlugins = plugins;
ClassicEditor.defaultConfig = config;
Loading

0 comments on commit ec47de1

Please sign in to comment.