SCAYT and CKEditor in Liferay portal 6

FCKeditor has been around for more than six years. Since 2003 it has built a strong user community becoming the most used editor in the market, accumulating more than 3,5 million downloads. On 2009, decided renaming the editor, bringing to the light next generation solution: CKEditor 3.x.

CKEditor inherits the quality and strong features people were used to find in FCKeditor, in a much more modern product, added by dozens of new benefits, like accessibility and ultimate performance. 

Why CKEditor 3.x?  Standards support: W3C (WAI-AA and WCAG 1.0) , 508 (Section 508); Web accessibility is now reality. CKEditor is for everybody. http://ckeditor.com/

Abstracted from the book: Liferay Portal 6 Enterprise Intranets (coming out soon)

In previous blogs, we have dicussed SCAYT - Spell Check as You Type – What and How in FCKEditor 2.6.5. And special thanks to Juan Fernández and Brian Chan who made CKEditor 3 integration for Liferay 6 a reality. Refer to LPS-5075.

This article will share how to configure SCAYT and CKEditor in Liferay portal 6.

It is very simple to use SCAYT and CKEditor in Liferay portal 6.

  • locate the folder $PORTAL_ROOT_HOME/html/js/editor/ckeditor
  • open the JSP file ckconfig.jsp
  • add following updates for CKEDITOR.config.toolbar_liferay and save it.

    CKEDITOR.config.toolbar_liferay =
        [
            ['Source','-','Save','NewPage','Preview','-','Templates'],
            ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
            ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
            ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
            '/',
            ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
            ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'],
            ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
            ['Link','Unlink','Anchor'],
            ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
            '/',
            ['Styles','Format','Font','FontSize'],
            ['TextColor','BGColor'],
            ['Maximize', 'ShowBlocks','-','About']
        ];

In the same way, you would be able to enable CKEditor SCAYT in Liferay article toolbar (that is, CKEDITOR.config.toolbar_liferayArticle), edit-in-place toolbar (says, CKEDITOR.config.toolbar_editInPlace), and email toolbar (that is, CKEDITOR.config.toolbar_email) in JSP file ckconfig.jsp.

  • Add following lines at the end of $PORTAL_ROOT_HOME/WEB-INF/classes/portal-ext.properties

    #
    editor.wysiwyg.default=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.blogs.edit_entry.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.calendar.edit_configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.enterprise_admin.view.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.invitation.edit_configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.journal.edit_article_content.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.journal.edit_article_content_xsd_el.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.journal.edit_configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.login.configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.mail.edit.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.mail.edit_message.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.message_boards.edit_configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.shopping.edit_configuration.jsp=ckeditor
    editor.wysiwyg.portal-web.docroot.html.portlet.wiki.edit.html.jsp=ckeditor 
 

Then you would see following screenshot after restarting the portal.

  • Click on the ckditor button "'Scayt'" to enable SCAYT - Spell Check as You Type.
  • Then type your content, and click on the ckditor button 'SpellChecker' to check spelling. You would see following screenshot.

This is one of cool features in Liferay portal 6. Isn't it?

Blogs
Hi Jonas!

Thank you for this great editor!!!

We are trying to customize it, but we have having problems. It seems that the editor doesn't take the changes of the config.js file. It seems that the ckconfig.jsp keeps ruling in the configuration!!!

Thanks in advance,

Luis
Hi Luis, Thanks. Yes, need to configure ckconfig.jsp as well as that of FCKEditor. You may find details at the book: Liferay Portal 6 Enterprise Intranets - https://www.packtpub.com/liferay-portal-6-enterprise-intranets/book.
Hi!~ I'm new to Liferay. =)

This doesn't work for me, too. I have Liferay 6. I'm trying to modify the editor's dimension, set it to allow resize & change the editor height.

Also, the editor when accessed inside the Control Panel is not wysiwyg in the sense that custom styles are not applied.

I suppose it has something to do with this bug entry:
http://issues.liferay.com/browse/LPS-5075

I hope someone can help me with this. Massive thanks!~
Update!

I played with the CKEditor config file config.js found at
..\liferay-portal-6.0.1\html\js\editor\ckeditor

Added the path to my theme where those styles I need are found by:

config.contentsCss = '/path-to-my-theme/main.css';


That pretty much fixed it. =) yey~
Hi Renee, Thanks. It is nice that you have fixed the issue.

By the way, it is better to configure config.jsp instead of config.js.
Thanks!~ I found that editing either does the changes I added. I actually followed this article in choosing to edit config.js

I'm not much of a programmer but I'm curious, what is the difference of configuring config.jsp from config.js?

I'm learning a lot here~ =) Massive thanks!
Hi Renee, it is 'config.jsp' used for configuration of CKEditor in Liferay 6 (6.0.5 GA 3 for example).
I am new to Liferay and have been going nuts trying to get the spell checker and Scayt to show up in the CKeditor toolbar.

I think there is an error in 6.0.5. ckconfig.jsp file (see partial file below). The entry says "Spellcheck" instead of "Spellchecker" and also there is no entry for Scayt. I found the correct information at http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Toolbar.

I changed these and now it works.

CKEDITOR.config.toolbar_liferay = [
['Styles', 'FontSize', '-', 'TextColor', 'BGColor'],
['Bold', 'Italic', 'Underline', 'StrikeThrough'],
['Subscript', 'Superscript'],
'/',
['Undo', 'Redo', '-', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'SelectAll', 'RemoveFormat'],
['Find', 'Replace', 'SpellCheck'],
['OrderedList', 'UnorderedList', '-', 'Outdent', 'Indent'],
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
'/',
['Source'],
['Link', 'Unlink', 'Anchor'],
['Image', 'Flash', 'Table', '-', 'Smiley', 'SpecialChar']
];
I am confused about config.js vs. ckconfig.jsp. In the post at http://issues.liferay.com/browse/LPS-5075, Juan Fernandez says to configure ckeditor with the config.js file. In this post, Jonas Yuan says to use ckconfig.js to configure ckeditor. Which is it...and why? Does one file override the other like portal-ext.properties does to portal.properties?

At http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Toolbar it tells you to use config.js to configure ckeditor.

Would someone please clarify this?
Jonas,
I spoke too soon when I said above that changing SpellCheck to SpellChecker and adding Scayt to config.js fixed my problem. It did not. After further experimentation here is what I have discovered.

First of all let me explain my setup. I am running Windows 7, running liferay-portal 6.0.5 with the tomcat bundle, and running on a localhost. I am using Ckeditor 3.4.1 And, I am using Firefox 3.6.11 and IE8. I get different results in Firefox and IE8 when using the Ckeditor.

If I use the original downloaded ckconfig.jsp file in 6.0.5 and only change SpellCheck to SpellChecker and add Scayt, then in Firefox I do not see the spell checker or Scyat icons in the toolbar at first. However, if I refresh the browser, then I see a full toolbar configuration instead of what is defined in the ckconfig.jsp file. Under these conditions, in IE8, I do not see the spell checker or Scyat icons.

Now, if I delete the CKeditor toolbar configuration out ckconfig.jsp and put it into config.js, then I see both the spell checker and Scayt icons in the toolbar on Firefox at first. But if I refresh the browser, It switches to the full toolbar configuration. Under these conditions, if I bring up CKeditor in IE, there is no toolbar at all, and refreshing the browser does not change this.

Do you have any idea what is going on here?

Additionally, I have your book “Liferay Portal 6 Enterprise Intranets.” On page 293 you talk about upgrading FCKeditor, but I don’t see anything on upgrading CKeditor. I tried to apply what you say about FCKeditor to CKeditor, but it says nothing about adding spell checker or Scayt to the toolbar. Also, in this procedure, you talk about setting a portal browser folder. I see the folder you mention in FCKeditor, but I can find no such folder in CKeditor. Should there be such a folder? I was wondering if this might have something to do with my problem.

Any help you can give me would be greatly appreciated.
Jonas,

Regarding my last reply. I think I have found a workaround. That is if I modify the original downloaded ckconfig.jsp file as shown below, then blogs and web content work fine in both IE8 and Firefox 3.6.11. I can't test email and don't know what editInPlace is used for. So I did not test those functions.

<%
/**
* Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
%>

<%@ page import="com.liferay.portal.kernel.util.HtmlUtil" %>
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %>

<%
String cssPath = ParamUtil.getString(request, "cssPath");
%>

CKEDITOR.addStylesSet(
'liferayStyles',
[

// Block Styles

{name: 'Normal', element : 'p'},
{name: 'Heading 1', element : 'h1'},
{name: 'Heading 2', element : 'h2'},
{name: 'Heading 3', element : 'h3'},
{name: 'Heading 4', element : 'h4'},

//Special classes

{name: 'Preformatted Text', element:'pre'},
{name: 'Cited Work', element:'cite'},
{name: 'Computer Code', element:'code'},

//Custom styles

{name : 'Info Message', element : 'div', attributes : {'class' : 'portlet-msg-info'}},
{name : 'Alert Message', element : 'div', attributes : {'class' : 'portlet-msg-alert'}},
{name : 'Error Message', element : 'div', attributes : {'class' : 'portlet-msg-error'}}
]
);

CKEDITOR.config.contentsCss = '<%= HtmlUtil.escape(cssPath) %>/main.css';

CKEDITOR.config.entities = false;

CKEDITOR.config.resize_enabled = false;

CKEDITOR.config.height = 265;

CKEDITOR.config.stylesCombo_stylesSet = 'liferayStyles';

CKEDITOR.config.toolbar_liferay =
[
['Source','-','Save','NewPage','Preview','-','Templates'],
['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'],
'/',
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
['Link','Unlink','Anchor'],
['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
'/',
['Styles','Format','Font','FontSize'],
['TextColor','BGColor'],
['Maximize', 'ShowBlocks','-','About']
];

CKEDITOR.config.toolbar_liferayArticle = [
['Styles', 'FontSize', '-', 'TextColor', 'BGColor'],
['Bold', 'Italic', 'Underline', 'StrikeThrough'],
['Subscript', 'Superscript'],
'/',
['Undo', 'Redo', '-', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'SelectAll', 'RemoveFormat'],
['Find', 'Replace', 'SpellChecker', 'Scayt'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
'/',
['Source'],
['Link', 'Unlink', 'Anchor'],
['Image', 'Flash', 'Table', '-', 'Smiley', 'SpecialChar', 'LiferayPageBreak']
];

CKEDITOR.config.toolbar_editInPlace = [
['Styles'],
['Bold', 'Italic', 'Underline', 'StrikeThrough'],
['Subscript', 'Superscript', 'SpecialChar'],
['Undo', 'Redo'],
['SpellChecker', 'Scayt'],
['OrderedList', 'UnorderedList', '-', 'Outdent', 'Indent'], ['Source', 'RemoveFormat'],
];

CKEDITOR.config.toolbar_email = [
['FontSize', 'TextColor', 'BGColor', '-', 'Bold', 'Italic', 'Underline', 'StrikeThrough'],
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
['SpellChecker', 'Scayt'],
'/',
['Undo', 'Redo', '-', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'SelectAll', 'RemoveFormat'],
['Source'],
['Link', 'Unlink'],
['Image']
];
Hi David, Thanks.

Do you get issues fixed?

As mentioned earlier, it is better to configure config.jsp instead of config.js.

Hope that it helps.
Hi Jonas,

Thanks for your replay, but no my issues are not fixed. I have only found a workaround.

What I am saying is that the ckconfig.jsp file you give at the beginning of this post does not fix the problem with the ckconfig.jsp that is included in LR 6.0.5. That should work fine and give you a spell checker and Scayt without your modifications above, but it does not. See ckconfig.jsp that comes with LR 6.0.5 below.

In that bundle the spell checker is configured incorrectly and there is no Scyat. In the LR 6.0.5 ckconfig.jsp file, the spell check icon is defined as "SpellCheck" and it should say "SpellChecker" also "Scayt" is missing.

Your ckconfig.jsp file above does not include CKEDITOR.config.toolbar_liferayArticle = or CKEDITOR.config.toolbar_editInPlace = or CKEDITOR.config.toolbar_email =

Here is what you get for ckconfig.jsp when you download LR 6.0.5:

<%
/**
* Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
%>

<%@ page import="com.liferay.portal.kernel.util.HtmlUtil" %>
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %>

<%
String cssPath = ParamUtil.getString(request, "cssPath");
%>

CKEDITOR.addStylesSet(
'liferayStyles',
[

// Block Styles

{name: 'Normal', element : 'p'},
{name: 'Heading 1', element : 'h1'},
{name: 'Heading 2', element : 'h2'},
{name: 'Heading 3', element : 'h3'},
{name: 'Heading 4', element : 'h4'},

//Special classes

{name: 'Preformatted Text', element:'pre'},
{name: 'Cited Work', element:'cite'},
{name: 'Computer Code', element:'code'},

//Custom styles

{name : 'Info Message', element : 'div', attributes : {'class' : 'portlet-msg-info'}},
{name : 'Alert Message', element : 'div', attributes : {'class' : 'portlet-msg-alert'}},
{name : 'Error Message', element : 'div', attributes : {'class' : 'portlet-msg-error'}}
]
);

CKEDITOR.config.contentsCss = '<%= HtmlUtil.escape(cssPath) %>/main.css';

CKEDITOR.config.entities = false;

CKEDITOR.config.resize_enabled = false;

CKEDITOR.config.height = 265;

CKEDITOR.config.stylesCombo_stylesSet = 'liferayStyles';

CKEDITOR.config.toolbar_liferay = [
['Styles', 'FontSize', '-', 'TextColor', 'BGColor'],
['Bold', 'Italic', 'Underline', 'StrikeThrough'],
['Subscript', 'Superscript'],
'/',
['Undo', 'Redo', '-', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'SelectAll', 'RemoveFormat'],
['Find', 'Replace', 'SpellCheck'],
['OrderedList', 'UnorderedList', '-', 'Outdent', 'Indent'],
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
'/',
['Source'],
['Link', 'Unlink', 'Anchor'],
['Image', 'Flash', 'Table', '-', 'Smiley', 'SpecialChar']
];

CKEDITOR.config.toolbar_liferayArticle = [
['Styles', 'FontSize', '-', 'TextColor', 'BGColor'],
['Bold', 'Italic', 'Underline', 'StrikeThrough'],
['Subscript', 'Superscript'],
'/',
['Undo', 'Redo', '-', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'SelectAll', 'RemoveFormat'],
['Find', 'Replace', 'SpellCheck'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
'/',
['Source'],
['Link', 'Unlink', 'Anchor'],
['Image', 'Flash', 'Table', '-', 'Smiley', 'SpecialChar', 'LiferayPageBreak']
];

CKEDITOR.config.toolbar_editInPlace = [
['Styles'],
['Bold', 'Italic', 'Underline', 'StrikeThrough'],
['Subscript', 'Superscript', 'SpecialChar'],
['Undo', 'Redo'],
['SpellCheck'],
['OrderedList', 'UnorderedList', '-', 'Outdent', 'Indent'], ['Source', 'RemoveFormat'],
];

CKEDITOR.config.toolbar_email = [
['FontSize', 'TextColor', 'BGColor', '-', 'Bold', 'Italic', 'Underline', 'StrikeThrough'],
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
['SpellCheck'],
'/',
['Undo', 'Redo', '-', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'SelectAll', 'RemoveFormat'],
['Source'],
['Link', 'Unlink'],
['Image']
];
Thanks, David.

The configuration in this blogs is correct. If you follow the same steps, you should be able to get it.

Just tested the same in 6.0.5 GA 3, it was working well.

Please let me know if you have any issues,

Thanks again,

Jonas
Jonas,

I agree your ckconfig.jsp file does work for creating a blog, but without the "CKEDITOR.config.toolbar_liferayArticle =" section you cannot create web content with the CKeditor.
Jonas,
I think the bottom line here is that in LR 6.0.5 the default editor has been set to CKeditor in Portal.Properties and a ckconfig.jsp file has been included with that bundle but the spellcheck icon and Scayt do not appear in the toolbar.

It looks to me like the CKconfig.jsp says "SpellCheck" and it should say "SpellChecker". Also, Scayt is missing.

Dave
Thank you, David.

Got you, same fix should be put in ckconfig.jsp.

I will raise it as a fix ticket.

Thanks

Jonas
Guys do you have any idea why jquery isn't "visible" to custom ckeditor plugins ? If I include jquery in liferay-portlet.xml for the portlet where ckeditor is used and I use "$('div#cke_wordcount_'+editor.name)" for instance, then I get "Uncaught exception: ReferenceError: Undefined variable: $" as If jquery was not loaded. I can use jquery within entire portal, but not in ckeditor plugins.
Hi Jakub,

Only an appointment, if you are using LR 5.2... you need to use "jQuery" instead of "$"

Hope it helps,

Luis
Thanks Luis, I'm using the current trunk version. If I use jQuery instead of "$" then "jQuery is not defined"
Hi Jakub, do you get issue fixed?

jQuery is not packaged by default in portal core.
Hi Jonas, it works now, but I must admit, that I don't understand much how the editor is included into the portlet. http://www.liferay.com/community/forums/-/message_boards/message/7580822
Btw, there is an issue regarding ckeditor: http://issues.liferay.com/browse/LPS-15415 that I cannot solve. Also if you put ckeditor into Alloy panel (via jsp tag), it is rendered twice - it looks pretty ugly, because it is rendered quite slowly
One more to point out :-) http://issues.liferay.com/browse/LPS-15425 ... The problem is that "instanceReady" callback in ckeditor.jsp doesn't work in chrome and opera. It works in firefox ... therefore "onChangeMethod", specified via "<liferay-ui:input-editor" is never called.
Nice! Thank you, Jakub.
I'm sorry that I can't provide more details, but I'm just learning javascript and most of the time it makes me extremely mad, I got drunk yesterday because of that issue :-)
There is also a little problem, that ckeditor.jsp <body><script/></body> is executed usually first, before scripts in parent document and even those scripts referenced in header section. It results in the fact that one cannot declare a function in the parent document <script> in JSP that is initialized in AUI( ).use( ) sandbox. It is very hard to create a callback function using AUI then.
I am not able to make scayt enable by default in Liferay 6 SP1 particular in IE browser.

I've added below lines in html\js\editor\ckeditor\ckeditor.jsp

CKEDITOR.config.scayt_autoStartup = true;

But when I create any web content using CKEditor after make it autoStart=true, it's not showing scayt by default enable.

When I cleared my cookie and Refresh the page again, It worked and it shows me enable. emoticon

But when I refresh the page again, same result. It's disabled again emoticon.
I am not sure why it's behaving like that.

Any idea what could be the issue ? Am I missing any other thing ? Any thoughts/suggestions would be appreciated.
Hi Tejas, thanks.

Which browser are you using? would you be able to produce the same in many browsers like IE 7/8/9, FireFox 3.6/4, Chrome, Safari, Opera?
Is it possible to customize the layout of the ckeditor on a per-portlet basis? I'd rather not mess with Liferay source files and keep all my changes in portlets, themes and hooks

I tried defining a "CKEDITOR.config.toolbar_mylayout" in a portlet jsp-page or overriding the ckconfig.jsp in my template/portlet but i cant seem to get this to work.
Hi Jonas,

It's resolved now. It was not working in IE7/8. For Mozilla it was working fine.

I've made below change for the same in config.js instead of ckeditor.jsp.


By adding the following lines into <tomcat-root>/webapps/ROOT/html/js/editor/ckeditor/config.js

config.scayt_autoStartup = true;

So somehow it's not reflecting using ckeditor.jsp in IE.
Hi Tejas, thanks.

Are you able to produce the same issue in IE 9?

For issues in IE 7/8, you may report it in JIRA - http://issues.liferay.com/secure/Dashboard.jspa.
Hi Joost, Thanks.

Yes, you can customize the layout of the ckeditor.

You can modify ckconfig.jsp

CKEDITOR.config.toolbar_yours=[...]

Hope that it helps.
Hi Jonas ,
I am using Liferay 6.0.5. I am getting "sc_dojo is not defined" error in firebug. How to remove upgrade message ??
Hi KK Rajput,

It seems that you are using custom code "sc_dojo". You may remove it by un-deploying your custom code.