diff --git a/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties b/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties
index 25b8d1d022..ebde9f1fec 100644
--- a/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties
+++ b/config/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties
@@ -3723,6 +3723,10 @@
# DEFAULT: elfinder
# wysiwyg.editor.ckeditor.browser=fckeditor
+# CKEDITOR plugins
+# DEFAULT: none
+# ckeditor.addons=a11ychecker,ckawesome,btgrid,pasteFromGoogleDoc
+
# KNL-1535 - List of tool registration ids that a custom title will always be applied to
# DEFAULT: sakai.iframe,sakai.rutgers.linktool,sakai.news
# site.tool.custom.titles = sakai.iframe,sakai.rutgers.linktool,sakai.news
diff --git a/library/pom.xml b/library/pom.xml
index ab8a4d19b3..a82a0be727 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -467,16 +467,15 @@
-
- ckeditor-extras
+
+ ckeditor-addons
- false
+ true
- ckeditor-extras
+ ckeditor-addons
- ,a11ychecker
@@ -491,6 +490,38 @@
${ckeditor.balloonpanel.version}
runtime
+
+ org.sakaiproject.webjars
+ ckeditor-ckawesome
+ ${ckeditor.ckawesome.version}
+ runtime
+
+
+ org.sakaiproject.webjars
+ ckeditor-btgrid
+ ${ckeditor.btgrid.version}
+ runtime
+
+
+ org.sakaiproject.webjars
+ ckeditor-pasteFromGoogleDoc
+ ${ckeditor.pasteFromGoogleDoc.version}
+ runtime
+
+
+
+
+
+ ckeditor-extras
+
+ false
+
+ ckeditor-extras
+
+
+
+
+
diff --git a/library/src/webapp-filtered/editor/ckeditor.launch.js b/library/src/webapp-filtered/editor/ckeditor.launch.js
index cae0226d25..a3aca980d8 100755
--- a/library/src/webapp-filtered/editor/ckeditor.launch.js
+++ b/library/src/webapp-filtered/editor/ckeditor.launch.js
@@ -169,12 +169,12 @@ sakai.editor.editors.ckeditor.launch = function(targetId, config, w, h) {
['Link','Unlink','Anchor'],
(sakai.editor.enableResourceSearch
? ( sakai.editor.contentItemUrl
- ? ['ContentItem', 'AudioRecorder','ResourceSearch', 'Image','Movie','Table','HorizontalRule','Smiley','SpecialChar']
- : ['AudioRecorder','ResourceSearch', 'Image','Movie','Table','HorizontalRule','Smiley','SpecialChar']
+ ? ['ContentItem', 'AudioRecorder','ResourceSearch', 'Image','Movie','Table','HorizontalRule','Smiley','SpecialChar','ckawesome','btgrid']
+ : ['AudioRecorder','ResourceSearch', 'Image','Movie','Table','HorizontalRule','Smiley','SpecialChar','ckawesome','btgrid']
)
: ( sakai.editor.contentItemUrl
- ? ['ContentItem', 'AudioRecorder', 'Image','Movie','Table','HorizontalRule','Smiley','SpecialChar']
- : ['AudioRecorder', 'Image','Movie','Table','HorizontalRule','Smiley','SpecialChar']
+ ? ['ContentItem', 'AudioRecorder', 'Image','Movie','Table','HorizontalRule','Smiley','SpecialChar','ckawesome','btgrid']
+ : ['AudioRecorder', 'Image','Movie','Table','HorizontalRule','Smiley','SpecialChar','ckawesome','btgrid']
)
),
'/',
@@ -262,6 +262,9 @@ sakai.editor.editors.ckeditor.launch = function(targetId, config, w, h) {
// Accessibility checker has a dependency on balloonpanel
CKEDITOR.plugins.addExternal('balloonpanel',webJars+'balloonpanel/${ckeditor.balloonpanel.version}/', 'plugin.js');
CKEDITOR.plugins.addExternal('a11ychecker',webJars+'a11ychecker/${ckeditor.a11ychecker.version}/', 'plugin.js');
+ CKEDITOR.plugins.addExternal('ckawesome',webJars+'ckawesome/${ckeditor.ckawesome.version}/', 'plugin.js');
+ CKEDITOR.plugins.addExternal('btgrid',webJars+'btgrid/${ckeditor.btgrid.version}/', 'plugin.js');
+ CKEDITOR.plugins.addExternal('pasteFromGoogleDoc',webJars+'pasteFromGoogleDoc/${ckeditor.pasteFromGoogleDoc.version}/', 'plugin.js');
/*
To enable after the deadline uncomment these two lines and add atd-ckeditor to toolbar
and to extraPlugins. This also needs extra stylesheets.
@@ -278,7 +281,10 @@ sakai.editor.editors.ckeditor.launch = function(targetId, config, w, h) {
//ckconfig.extraPlugins+="atd-ckeditor,";
//ckconfig.contentsCss = [basePath+'atd-ckeditor/atd.css'];
- ckconfig.extraPlugins+="${ckeditor-extra-plugins}${ckeditor-a11y-extra-plugins}";
+ if (typeof CKEDITOR_ADDONS === "undefined" || CKEDITOR_ADDONS === null) {
+ CKEDITOR_ADDONS = "";
+ }
+ ckconfig.extraPlugins+="${ckeditor-extra-plugins}" + CKEDITOR_ADDONS;
// Load FontAwesome CSS in case a user wants to manually add FA markup
ckconfig.contentsCss = [webJars+'fontawesome/4.7.0/css/font-awesome.min.css'];
diff --git a/master/pom.xml b/master/pom.xml
index 41be64dab1..75e230a125 100644
--- a/master/pom.xml
+++ b/master/pom.xml
@@ -107,6 +107,9 @@
1.1.1
4.9.2
4.11.1
+ 1.02
+ 1.0b1
+ 1.0
diff --git a/portal/portal-service-impl/impl/src/java/org/sakaiproject/portal/service/EditorRegistryImpl.java b/portal/portal-service-impl/impl/src/java/org/sakaiproject/portal/service/EditorRegistryImpl.java
index 86c52e4ddc..6b3ed45b87 100644
--- a/portal/portal-service-impl/impl/src/java/org/sakaiproject/portal/service/EditorRegistryImpl.java
+++ b/portal/portal-service-impl/impl/src/java/org/sakaiproject/portal/service/EditorRegistryImpl.java
@@ -27,6 +27,7 @@ import java.util.List;
import org.sakaiproject.portal.api.BaseEditor;
import org.sakaiproject.portal.api.Editor;
import org.sakaiproject.portal.api.EditorRegistry;
+import org.sakaiproject.component.cover.ServerConfigurationService;
public class EditorRegistryImpl implements EditorRegistry {
@@ -34,10 +35,14 @@ public class EditorRegistryImpl implements EditorRegistry {
public void init() {
//TODO: pull this out to somewhere appropriate
+ String ckeditorAddOns = ServerConfigurationService.getString("ckeditor.addons","");
+ if (ckeditorAddOns != "" && ckeditorAddOns != null) {
+ ckeditorAddOns = "," + ckeditorAddOns;
+ }
register("textarea", "textarea", "/library/editor/textarea/textarea.js", "/library/editor/textarea.launch.js", "");
register("fckeditor", "FCKeditor", "/library/editor/FCKeditor/fckeditor.js", "/library/editor/fckeditor.launch.js", "");
register("ckeditor", "CKEditor", "/library/webjars/ckeditor/4.11.3/full/ckeditor.js", "/library/editor/ckeditor.launch.js",
- "var CKEDITOR_BASEPATH='/library/webjars/ckeditor/4.11.3/full/';\n");
+ "\nvar CKEDITOR_BASEPATH='/library/webjars/ckeditor/4.11.3/full/';\nvar CKEDITOR_ADDONS='" + ckeditorAddOns + "';\n");
}
public void destroy() {
diff --git a/webjars/ckeditor-btgrid/README.md b/webjars/ckeditor-btgrid/README.md
new file mode 100755
index 0000000000..35f790f62c
--- /dev/null
+++ b/webjars/ckeditor-btgrid/README.md
@@ -0,0 +1,3 @@
+WebJar for CKEditor pasteFromGoogleDoc
+
+More info: https://ckeditor.com/cke4/addon/btgrid
diff --git a/webjars/ckeditor-btgrid/pom.xml b/webjars/ckeditor-btgrid/pom.xml
new file mode 100755
index 0000000000..667546e6b5
--- /dev/null
+++ b/webjars/ckeditor-btgrid/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+
+ webjars
+ org.sakaiproject.webjars
+ 20-SNAPSHOT
+ ../pom.xml
+
+
+ jar
+ org.sakaiproject.webjars
+ ckeditor-btgrid
+ ${ckeditor.btgrid.version}
+ CKEditor-btgrid-webjar
+ WebJar for CKEditor-btgrid
+ http://webjars.org
+
+
+ UTF-8
+ ${ckeditor.btgrid.version}
+ https://ckeditor.com/cke4/sites/default/files/btgrid/releases/btgrid
+ ${project.build.outputDirectory}/META-INF/resources/webjars/btgrid/${upstream.version}
+
+ {
+ "paths": {
+ "btgrid": "btgrid",
+ }
+ }
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.8
+
+
+ process-resources
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/webjars/ckeditor-ckawesome/README.md b/webjars/ckeditor-ckawesome/README.md
new file mode 100755
index 0000000000..e7e5bb5e91
--- /dev/null
+++ b/webjars/ckeditor-ckawesome/README.md
@@ -0,0 +1,3 @@
+WebJar for CKEditor pasteFromGoogleDoc
+
+More info: https://ckeditor.com/cke4/addon/ckawesome
diff --git a/webjars/ckeditor-ckawesome/pom.xml b/webjars/ckeditor-ckawesome/pom.xml
new file mode 100755
index 0000000000..378eb0c5a7
--- /dev/null
+++ b/webjars/ckeditor-ckawesome/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+
+ webjars
+ org.sakaiproject.webjars
+ 20-SNAPSHOT
+ ../pom.xml
+
+
+ jar
+ org.sakaiproject.webjars
+ ckeditor-ckawesome
+ ${ckeditor.ckawesome.version}
+ CKEditor-ckawesome-webjar
+ WebJar for CKEditor-ckawesome
+ http://webjars.org
+
+
+ UTF-8
+ ${ckeditor.ckawesome.version}
+ https://ckeditor.com/cke4/sites/default/files/ckawesome/releases/ckawesome
+ ${project.build.outputDirectory}/META-INF/resources/webjars/ckawesome/${upstream.version}
+
+ {
+ "paths": {
+ "ckawesome": "ckawesome",
+ }
+ }
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.8
+
+
+ process-resources
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/webjars/ckeditor-pasteFromGoogleDoc/README.md b/webjars/ckeditor-pasteFromGoogleDoc/README.md
new file mode 100755
index 0000000000..1bd3f1f701
--- /dev/null
+++ b/webjars/ckeditor-pasteFromGoogleDoc/README.md
@@ -0,0 +1,3 @@
+WebJar for CKEditor pasteFromGoogleDoc
+
+More info: https://ckeditor.com/cke4/addon/pasteFromGoogleDoc
diff --git a/webjars/ckeditor-pasteFromGoogleDoc/pom.xml b/webjars/ckeditor-pasteFromGoogleDoc/pom.xml
new file mode 100755
index 0000000000..0792157dfa
--- /dev/null
+++ b/webjars/ckeditor-pasteFromGoogleDoc/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+
+ webjars
+ org.sakaiproject.webjars
+ 20-SNAPSHOT
+ ../pom.xml
+
+
+ jar
+ org.sakaiproject.webjars
+ ckeditor-pasteFromGoogleDoc
+ ${ckeditor.pasteFromGoogleDoc.version}
+ CKEditor-pasteFromGoogleDoc-webjar
+ WebJar for CKEditor-pasteFromGoogleDoc
+ http://webjars.org
+
+
+ UTF-8
+ ${ckeditor.pasteFromGoogleDoc.version}
+ https://ckeditor.com/cke4/sites/default/files/pastefromgoogledoc/releases/pastefromgoogledoc
+ ${project.build.outputDirectory}/META-INF/resources/webjars/pasteFromGoogleDoc/${upstream.version}
+
+ {
+ "paths": {
+ "pasteFromGoogleDoc": "pasteFromGoogleDoc",
+ }
+ }
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.8
+
+
+ process-resources
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/webjars/pom.xml b/webjars/pom.xml
index bf28bf864f..995b8fb2da 100644
--- a/webjars/pom.xml
+++ b/webjars/pom.xml
@@ -27,6 +27,11 @@
+ ckeditor-balloonpanel
+ ckeditor-a11ychecker
+ ckeditor-ckawesome
+ ckeditor-btgrid
+ ckeditor-pasteFromGoogleDoc
@@ -39,8 +44,6 @@
- ckeditor-balloonpanel
- ckeditor-a11ychecker