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