Fckeditor学习研究整理笔记

Fckeditor学习笔记
配置fckeditor工程
1、新建web project
2、引入以下5个jar包,可以见工程中的reference library
3、js的使用可参见test1.html和test2.html,刚好对应官方文档中的以下两种方法

http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Integration/JavaScript
Step 1
The first thing to do is to include the "JavaScript Integration Module" scripts inside the <HEAD> of your page, just like this:

<script type="text/javascript"src="fckeditor/fckeditor.js"></script>

 

Step 2
Now the FCKeditor class is available and ready to use. There are three ways to create an FCKeditor in your page:

Method 1
The inline method (preferred): Go to the body of your page, to the place you want the editor to be (usually inside a form) and place the following

script there:

<script type="text/javascript">
var oFCKeditor = new FCKeditor('FCKeditor1');
oFCKeditor.BasePath = "/fckeditor/";
oFCKeditor.Create();
</script>

 

Method 2
The TEXTAREA replacement method:

In <HEAD> add the "onload" method:

<script type="text/javascript">
window.onload = function()
{
var oFCKeditor = new FCKeditor( 'MyTextarea' ) ;
oFCKeditor.BasePath = "/fckeditor/" ;
oFCKeditor.ReplaceTextarea() ;
}
</script>

 

In <BODY> add the below code to replace an existing TEXTAREA in the page: 

<textarea id="MyTextarea" name="MyTextarea">This is <b>the</b> initial value.</textarea>

  

4、jsp的使用可参见editor.jsp
需要在jsp页面中加

<%@ taglib uri="http://java.fckeditor.net" prefix="FCK"%>
<body>
  <FCK:editor instanceName="myEditor" basePath="/fckeditor" value= "this is comment">

  </FCK:editor>
</body>

 

注意,官方文档上还要求修改server.xml,增加以下内容
   

<servlet>
      <servlet-name>Connector</servlet-name>
        <servlet-class>
          net.fckeditor.connector.ConnectorServlet
      </servlet-class>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>Connector</servlet-name>
      <url-pattern>
        /fckeditor/editor/filemanager/connectors/*
      </url-pattern>
    </servlet-mapping>

创建一个文件 fckeditor.properties,in your classpath (即src下)文件内容如下:
 

connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImpl

 

 

一、修改配置的三中方法
方法1、直接修改配置文件fckconfig.js
方法2、定义单独的配置文件(只需要写需要修改的配置项)
方法3、在页面的调用代码中对fckeditor的实例进行配置

二、配置加载顺序
1、先加载主配置文件fckconfig.js
2、加载自定义文件配置会覆盖相同的配置项
3、使用对实例的配置会覆盖相同的配置项(只对当前的实例有效)

三、注意

      1、系统会自动侦测并运用适当的语言界面(默认,可以修改)
      2、不能删除主配置文件fckconfig.js
      3、修改配置后要清空浏览器缓存,以免影响结果(或访问时强制刷新也可以IE中是Ctrl+F5)

 四、修改配置信息--工具集配置(方法2、定义单独的配置文件,只需要写需要修改的配置项)
1)、文档中对应配置集的选项网页为http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Configuration/Configuration_Options/ToolbarSets

2)、先拷贝ToolbarSets["Default"]功能,为下面修改做好准备

FCKConfig.ToolbarSets["Default"] = [
['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
'/',
['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
['Link','Unlink','Anchor'],
['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
'/',
['Style','FontFormat','FontName','FontSize'],
['TextColor','BGColor'],
['FitWindow','ShowBlocks','-','About'] // No comma for the last row.
] ;

 
3)、在拷贝的基础上修改自定义工具集

FCKConfig.ToolbarSets["itcastbbs"] = [
['Source','DocProps'],
['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
['Link','Unlink','Anchor'],
['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
'/',
['Style','FontFormat','FontName','FontSize'],
['TextColor','BGColor'],
['FitWindow','ShowBlocks','-','About'] // No comma for the last row.
] ;

 

4)在创建myconfig.js,将该自定义工具集放入myconfig.js

5)在fckconfig.js页面中申明以上自定义myconfig.js如下//此处用的是绝对路径,下文还使用了相对路径,发布时建意用相对路径。
FCKConfig.CustomConfigurationsPath ='/test/myconfig.js';

在test2.jsp测试页面中申明如下:
oFCKeditor.ToolbarSet="itcastbbs";

5)、此时刷新原来的test2.html便可以看到自定义的工具集了。


五、修改配置信息--字体的配置
A、原字体的配置在fckconfig中为     

FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
B、拷贝上面的

FCKConfig.FontNames= 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;到myconfig.js文件
C、修改为

FCKConfig.FontNames='宋体;楷体_GB2312;黑体;隶书;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

六、修改回车和shift+回车行为
A、原回车和shift+回车行为的配置在fckconfig中为  FCKConfig.EnterMode = 'p' ;         // p | div | br
FCKConfig.ShiftEnterMode = 'br' ; // p | div | br
B、拷贝上面的到myconfig.js文件
C、修改为FCKConfig.EnterMode = 'br' ; // p | div | br
FCKConfig.ShiftEnterMode = 'p' ; // p | div | br

七、修改编辑区样式文件
A、原编辑区样式文件在fckconfig中为  FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css' ;
注意,这个属性FCKConfig.BasePath和test2.html页面中oFCKeditor.BasePath = "/test/fckeditor/" ;的BasePath不是同一个概念。
B、FCKConfig.BasePath代表了样式文件所在的文件夹,本例中在fckeditor/editor文件夹下
C、开发时可以把自己的样式加在fck_editorarea.css文件中。

八、配置表情图片
A、原配置表情图片在fckconfig中为
FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ;
FCKConfig.SmileyImages =

['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.

gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thu

mbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'] ;
FCKConfig.SmileyColumns = 8 ;
FCKConfig.SmileyWindowWidth  = 320 ;
FCKConfig.SmileyWindowHeight = 210 ;

说明:上面FCKConfig.SmileyPath指表情图片所在的文件夹
FCKConfig.SmileyImages配置文件夹中那些图片将会被用到
FCKConfig.SmileyColumns每行显示几个
FCKConfig.SmileyWindowWidth表情图片的宽度
FCKConfig.SmileyWindowHeight表情图片的高度

注意:
1、要使用UTF-8编码保存配置文件
2、注意,这个属性FCKConfig.BasePath和test2.html页面中oFCKeditor.BasePath = "/test/fckeditor/" ;的BasePath不是同一个概念。
3、发布时不能再使用绝对路径
如原先myconfig.js是放在webroot下的,使用的是FCKConfig.CustomConfigurationsPath ='/test/myconfig.js'; 配置
现在需要把myconfig.js文件移到fckeditor文件夹下,并且用相对路径配置如下FCKConfig.CustomConfigurationsPath =FCKConfig.EditorPath+"myconfig.js";


九、配置文件上传及中文乱码问题
1、准备工作

A、   Declare the ConnectorServlet in your web.xml
 
    <servlet>
      <servlet-name>Connector</servlet-name>
        <servlet-class>
          net.fckeditor.connector.ConnectorServlet
      </servlet-class>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>Connector</servlet-name>
      <url-pattern>
        /fckeditor/editor/filemanager/connectors/*
      </url-pattern>
    </servlet-mapping>
   

 </web-app>Assuming you installed the editor in the /fckeditor folder in your webapp.
The Connector is now declared but still disabled. The response is going to be an error message.

B、创建一个文件 fckeditor.properties,in your classpath (即src下)文件内容如下:
 
connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImpl

 

2、文件中文名乱码问题
是在服务器端上传时出现的乱码。
解决方法
1)、在我的test项目中ConnectorServlet.java类,类的内容与net.fckeditor.connector.ConnectorServlet.java内容一致
2)、然后修改该类,在该类的doPost()方法中try {

     List<FileItem> items = upload.parseRequest(request);
语句前加上如下语句:
upload.setHeaderEncoding("UTF-8");
这样就不会出现乱码了

3)、在上述A步骤中servlet配置中需要修改以下内容:
将原来的 <servlet-class>
          net.fckeditor.connector.ConnectorServlet
      </servlet-class>

修改为
      <servlet-class>
          com.symbio.hz.fckeditor.ConnectorServlet
      </servlet-class>

重启服务器可以完成中文文件名的图片的上传了!

3、中文目录乱码问题
1)同上修改文件名乱码(1)
2)修改doGet()方法中的    
     String newFolderStr = UtilsFile.sanitizeFolderName(request
         .getParameter("NewFolderName"));


    
     String tempStr=request.getParameter("NewFolderName");
     tempStr=new String(tempStr.getBytes("iso8859-1"),"UTF-8");
 
     String newFolderStr = UtilsFile.sanitizeFolderName(tempStr);

 

3)、同上修改文件名乱码(3)


4、引用中文名的图片显示时不能正常使用。
1)此时需要修改tomcat连接器的配置。但是此方法不好,会对get方法提交的内容造成乱码
  在 <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
增加一项配置 URIEncoding="UTF-8"如下
   <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
2)方法二:
还是和以上解决中文文件名一样,修改ConnectorServlet.java
doPost方法中修改代码
                                        if (!ExtensionsHandler.isAllowed(resourceType, extension))
      ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
     else {

为//此处修改filename的目的是为了避免显示图片时因中文名而无法预览。
     filename=UUID.randomUUID().toString()+"."+extension;
     if (!ExtensionsHandler.isAllowed(resourceType, extension))
      ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
     else {

 

十、控制允许上传的文件类型
1、在java-core核心包中的类net.fckeditor.handlers中
复制需要修改的内容到
上文提到的在src下新建的fckeditor.propertis
例如复制
connector.resourceType.image.extensions.allowed = bmp|gif|jpeg|jpg|png
修改为connector.resourceType.image.extensions.allowed = bmp|gif|jpeg|jpg|png|abc

2、需要修改相应的客户端的配置文件,即上文中提到的myconfig.js
在fckconfig.js中找到FCKConfig.ImageUploadAllowedExtensions = ".(jpg|gif|jpeg|png|bmp)$" ;  

拷贝到myconfig.js(待续)

修改为FCKConfig.ImageUploadAllowedExtensions = ".(jpg|gif|jpeg|png|bmp|abc)$" ;
那么以abc结尾的格式的图片也可以上传了。

3、各类上传文件类型修改时对应操作如下如



 4、上传时控制文件大小

十一、控制上传文件的大小
1、在服务器端的servlet中,在保存文件之前判断一下文件的大小,如果超出了限制,就传递一个自定义的错误码,并不在保存文件
2、修改对应页面的回调函数,增加对这个自定义的错误码的处理。
3、具体操作
1)修改自己创建的ConnectorServlet.java类在原文件位置
if (!ExtensionsHandler.isAllowed(resourceType, extension)){
ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);

的下方增加为
//如果该文件的扩展名不允许上传
     if (!ExtensionsHandler.isAllowed(resourceType, extension)){
      ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
     }
     //如果文件大小超出限制,则传递一个自定义的错误码
     else if(uplFile.getSize()>10*1024*1024){
      ur = new UploadResponse(204);//204来历看下面第2)点
     }


2)在上传页面上点击右键看属性,找到文件为找到文件fck_image.html,根据这个文件看它引用了哪个js文件,找到了文件
fck_image.js,打开该文件(路径为/fckeditor/editor/dialog/fck_image/fck_image.js)看到错误码204还未被使用。
添加如下代码case203下面
case 204 :
alert( "the file is too big" ) ;++++++
return ;

3)修改页面frmupload.html的回调函数,增加对这个自定义的错误码的处理。修改方法同上。

4)若要把提示信息都改成中文,修改方法在对应的页面中把提示信息改成中文就可以了
case 204 :
alert( "你上传的文件超过规定大小" ) ;
return ;

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值