ASP.NET下FCKeditor配置方法全解

本文所采用的FCKeditor版本是FCKeditor 2.6.4和FCKeditor.NET 2.6.3,都是当前FCKeditor的最新版本,在http://www.fckeditor.net上可以找到。


搞ASP.NET开发有一年时间了,做网站时常常用到在线HTML编辑器,一直用得是FCKeditor。FCKeditor在ASP.NET上的集成和配置,可以说搞得已经很清楚了。在网络上得到过很多前辈同仁们的帮助,现在把自己的一点经验贡献出来,帮助需要帮助的人。

原创作品,转载请注明出处。有不当的地方,敬请批评指正。

参考:
    舒健,在ASP.NET中如何使用FCKEditor,http://blog.csdn.net/fhbcn/archive/2008/05/10/2431559.aspx。(应该是转载的)
    三味书屋,FCKeditor使用方法,http://hi.baidu.com/howes/blog/item/529c7a8b6200bc16c8fc7ac5.html。
    fckeditor.net,ASP.NET Integration,http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Integration/ASP.NET。
    Mohannd Jahedur Rahman,Integrating FCKeditor in ASP.NET,http://www.blog.valenticabd.com/2008/07/20/integrating-fckeditor-in-aspnet.html。


一、集成方法
    FCKeditor应用在ASP.NET上,需要两组文件,一组是FCKeditor本身,另一个是用于ASP.NET的FCKeditor控件(分为1.1和2.0两个版本,这里使用2.0版本)。

    1. 将FCKeditor加入到项目中
    解压FCKeditor编辑器,得到文件夹fckeditor,复制此文件夹到Web应用的项目下(也可以是子孙目录下)。
    解压FCKeditor控件,在其子目录bin/Release/2.0下有一个程序集。在Web应用的项目中引用该程序集。

    2. 在页面中使用FCKeditor
    有两种方式。
    (1)手工编码
    在页面中加入ASP.NET指令:
        <%@ Register Namespace="FredCK.FCKeditorV2" Assembly="FredCK.FCKeditorV2" TagPrefix="FCKeditorV2" %>
    然后在需要的地方加入FCKeditor控件:
        <FCKeditorV2:FCKeditor id="FCKeditor1" runat="server" />
    (2)集成到Visual Studio工具箱
    打开一ASP.NET页面,展开Toolbox,打开右键菜单,选择“Choose Items ...”,在出现的“Choose Toolbox Items”会话框的“.NET Framework Components”选项卡中选择“Browse”,找到并选中FCKeditor程序集,打开后回到“Choose Toolbox Items”窗口,点击“OK”,完成控件导入。
    这时,在Toolbox的General分类下出现了一个名为FCKeditor的控件,可以像使用Visual Studio内置控件一样使用它。

    3. 配置FCKeditor编辑器路径
    在页面中,使用的是FCKeditor控件,该控件需要知道FCKeditor编辑器文件组的路径。有两种配置方法。
    (1)配置web.config
    在appSettings配置节中加入
        <add key="FCKeditor:BasePath" value="~/PathOfFCKeditor/" />
    使用这种配置方法后,对于项目中任何一个页面中用到的FCKeditor控件,都不用再配置其BasePath属性。
    (2)直接对用到的FCKeditor控件进行配置
    在页面代码中设置FCKeditor的属性BasePath为FCKeditor编辑器文件组的路径,或者在Page_Init事件处理器中设置其BasePath的值。

    4. 配置FCKeditor编辑器文件上传路径
    在web.config的appSettings配置节中加入
        <add key="FCKeditor:UserFilesPath" value="~/YourUploadFilePath" />
    
    这样,就完成了FCKeditor向ASP.NET页面的集成工作。


二、配置FCKeditor
    按照FCKeditor的默认配置,可以完成一些常用的HTML可视化编辑工作,但在实际应用中,还需要对其做进一步的配置。FCKeditor控件的可配置属性不多,且配置后只能作用于一个单一实例。实际上,需要对FCKeditor编辑器文件组中的通用配置文件/fckconfig.js和ASP.NET专用文件上传管理代码文件/editor/filemanager/connectors/aspx/config.ascx进行配置。
    
    1. 配置控件语言
    FCKeditor是自动探测浏览器所使用的语言编码的,其默认语言是英文。修改配置行"FCKConfig.DefaultLanguage    = 'en';"为'zh-cn',采用中文为默认语言。

    2. 配置控件应用技术
    FCKeditor默认是用于php技术的。修改配置行"var _FileBrowserLanguage   = 'php';"和"var _QuickUploadLanguage    = 'php';"为'aspx',采用ASP.NET技术。

    3. 配置Tab键
    默认Tab键在FCKeditor中不可用,可以修改配置行"FCKConfig.TabSpaces    = 0;"为1,启用Tab键。

    4. 定制FCKeditor工具栏
    FCKConfig提供两种工具栏配置。在配置行"FCKConfig.ToolbarSets["Default"] = [ ... ];"中定义了使用全部可用按钮的配置(作为工具栏的默认配置)。在配置行"FCKConfig.ToolbarSets["Basic"] = [ ... ];"中定义了一个精简按钮的工具栏配置。实际使用时,默认配置按钮太多,精简配置按钮又太少。因此需要定制工具栏。
    配置值[ ... ]中是形式为[[v, v2, .., vN], '/', [ ... ],...](vN表示要显示的按钮名字,'/'表示之后的按钮组在下一行显示)的按钮分组的集合。如果不需要整个分组的按钮,那么就删掉该分组(形式为[ , , ...]);如果只是不需要分组中的某个按钮,删掉该按钮。

    5. 定制可用的文本字体
    FCKeditor是外国人做的,默认使用的字体当然也是西文字体了。修改配置行"FCKConfig.FontNames = '...';",加入要使用的中文字体名,如宋体,楷体_GB2312等。
    FCKConfig默认使用HTML字体关键字来表示可选的字体大小,这存在着不同浏览器显示效果不一致的问题。因此,建议修改配置行"FCKConfig.FontSizes  = '...';",去掉字体关键字值,加入像素值或磅值。(当然,在网页里定义了全局样式表的话,就不需要修改这项设置了,但应该教会最终用户如何设置字体达到最佳显示效果。)

    6. 启用文件上传
    FCKeditor提供了非常强大和易用的文件上传功能,但是默认配置里,文件上传功能不可用,这是基于安全的考虑。但我认为访问安全性控制应该由程序来做,不应由控件来做。
    在文件config.ascx中,修改CheckAuthentication()的返回值为true。如果希望上传具有多扩展名的文件,修改SetConfig()中ForceSingleExtension的值为false。FCKeditor默认可以上传文件、图片、Flash和多媒体四种类型的文件,可以在SetConfig()中对AllowedTypes修改来增减允许的类型(这个类型可以在后面的TypeConfig["TypeName"]中定义,比如在AllowedExtensions属性中定制本类型允许的上传文件扩展名,在DeniedExtensions里定制不允许的上传文件扩展名)。
    在文件fckconfig.js中,修改配置行"FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;"为FCKConfig.LinkBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=File&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;";修改配置行"FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension ;"为"FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension + '?Type=File' ;"。(在这个配置文件里,看起来似乎Type=File是作为默认参数的,但实际上不加这个参数的话,会出错。)
    
    7. 其它配置
    对于这两个配置文件中的配置属性,从名字上很容易知道它们所代表的含义,基本上都可以定制。但要注意,属性值的格式要正确。


三、将FCKeditor编辑器文件组ASP.NET化
    FCKeditor编辑器文件组包含了用于它所支持的各种应用技术的文件,所以,对于ASP.NET应用来说,有很多文件是不需要的。

    根目录下,只保留文件夹editor,文件fckconfig.js、fckeditor.js、fckpackager.xml、fckstyles.xml和fcktemplates.xml。
    子目录editor/filemanager/connectors下,只保留文件夹aspx。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

FckEditor配置手册中文教程详细说明

性能
首先,FCKEDITOR的性能是非常好的,用户只需很少的时间就可以载入FCKEDITOR所需文件.对于其他在线编辑器来说,这几乎是个很难解决的难题,因为在开启编辑器时需要装载太多的文件.比如CUTEEDITOR,虽然功能比FCKEDITOR还要强大,可是,它本身也够庞大了,至于FREETEXTBOX等,其易用性与FCKEDITOR相比,尚有差距,可以说,FCKEDITOR是一个别具匠心的在线编辑器,它里面融入了作者高深的面向对象的JAVASCRIPT功力,集易用性与强大的功能与一体.

.与编辑器相关的所有图像,脚本以及调用页
.语言文件
.编辑器的皮肤文件
.工具样的贴图等
这些将导致在服务器和客户端间产生相当的流量.如果有许多文件被调用,那么即便每个文件很小.也会让用户等得不耐烦.
装载顺序
从2.0版开始,编辑器按以下步骤装载资源:
.基本页(就是编辑器所在页)以及装入编辑器的JS脚本
.用来建立编辑器的脚本
.编辑器的语言和皮肤.
.建立编辑器.
.载入预置的编辑文档内容.
.从现在开始,用户可以阅读和编辑文档了,不过,拖拽支持以及工具栏都是不可用的
.载入编辑器引擎脚本
.建立工具栏,并且可用
.从现在开始,编辑器的所有功能都已经完整
.载入工具栏图标

脚本压缩
在打包任何新版本时,编辑器的JS脚本将会进行预处理.预处理步骤如下:
.移除所有代码注释
.移除所有无用的空白字符.
.将脚本合并成几个文件
使用上面的方法,我们可以将脚本文件的大小压缩到原来的50%.
压缩后,原始的代码仍然存在于一个名为_Source的文件夹中

如何打包?
编辑器已经自带了打包程序,它位于FCKEDITOR的根文件夹中_PACKAGER文件夹中,名为Fckeditor.Packager.exe,将其复制到FCKEDITOR根文件夹中并运行,即可自动将JS脚本打包并压缩
需要注意的是该程序是一个.NET程序,必须安装.NET FRAMEWORK才能使用

想要获取支持?
如果你捐赠15000欧元,你就可以获得1年的免费技术支持(比较贵的说,相当于人民币15万,不过西欧的费用相当惊人)

如何安装?
1.下载最新版的FCKEDITOR
2.解压缩到你的站点根文件夹中名为FCKEDITOR的文件夹中(名称必须为FCKEDITOR,因为配置文件中已经使用此名称来标示出FCKEDITOR的位置)
3.现在,编辑器就可以使用了,如果想要查看演示,可以按下面方法访问:
http://<your-site>/FCKeditor/_samples/default.html
注意:你可以将FCKEDITOR放置到任何文件夹,默认情况下,将其放入到FCKEDITOR文件夹是最为简单的方法.如果你放入的文件夹使用别的名称,请修改配置文件夹中编辑器BasePath参数,如下所示:
oFckeditor.BasePath="/Components/fckeditor/";
另外,FCKEDITOR文件夹中所有以下划线开头的文件夹及文件,都是可选的,可以安全的从你的发布中删除.它们并不是编辑器运行时必需的

如何将FCKEDITOR整合进我的页面?
由于目前的版本提供的FCKEDITOR仅提供了JAVASCRIPT式的整合,因此,这里仅讲述如何应用JAVASCRIPT来整合FCKEDITOR到站点中,当然,其他各种语言的整合,你可以参考_samples文件夹中的例子来完成
1,假如编辑器已经安装在你的站点的/FCKEDITOR/文件夹下.那么,第一步我们需要做的就是在页面的HEAD段中放入SCRIPT标记以引入JAVASCRIPT整合模块.例如:
<script type="text/javascript" src="/fckeditor/fckeditor.js"></script>
其中路径是可更改的
2,现在,FCKEDITOR类已经可以使用了.有两个方法在页面中建立一个FCKEDITOR编辑器:
方法1:内联方式(建议使用):在页面的FORM标记内需要插入编辑器的地方置入以下代码: 
script type="text/javascript">
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
oFCKeditor.Create() ;
</script>
方法2:TEXTAREA标记替换法(不建议使用):在页面的ONLOAD事件中,添加以下代码以替换一个已经存在的TEXTAREA标记
<html>
<head>
<script type="text/javascript">
window.onload = function()
{
var oFCKeditor = new FCKeditor( 'MyTextarea' ) ;
oFCKeditor.ReplaceTextarea() ;
}
</script>
</head>
<body>
<textarea id="MyTextarea" name="MyTextarea">This is <b>the</b> initial value.</textarea>
</body>
</html>
3.现在,编辑器可以使用了

FCKEDITOR类参考:
下面是用来在页面中建立编辑器的FCKEDITOR类的说明

构造器:
FCKeditor( instanceName[, width, height, toolbarSet, value] )
instanceName:编辑器的唯一名称(相当于ID)
WIDTH:宽度
HEIGHT:高度
toolbarSet:工具条集合的名称
value:编辑器初始化内容 

属性:
instanceName:编辑器实例名
width:宽度,默认值为100%
height:高度,默认值是200
ToolbarSet:工具集名称,参考FCKCONFIG.JS,默认值是Default
value:初始化编辑器的HTML代码,默认值为空
BasePath:编辑器的基路径,默认为/Fckeditor/文件夹,注意,尽量不要使用相对路径.最好能用相对于站点根路径的表示方法,要以/结尾
CheckBrowser:是否在显示编辑器前检查浏览器兼容性,默认为true
DisplayErrors:是否显示提示错误,默为true;

集合:
Config[Key]=value;
这个集合用于更改配置中某一项的值,如
oFckeditor.Config["DefaultLanguage"]="pt-br";

方法:
Create()
建立并输出编辑器

RepaceTextArea(TextAreaName)
用编辑器来替换对应的文本框

如何配置FCKEDITOR?
FCKEDITOR提供了一套用于定制其外观,特性及行为的设置集.主配置文件名为Fckconfig.js
你既可以编辑主配置文件,也可以自己定义单独的配置文件.配置文件使用JAVASCRIPT语法.

修改后,在建立编辑器时,可以使用以下语法:
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
oFCKeditor.Config['CustomConfigurationsPath'] = '/myconfig.js' ;
oFCKeditor.Create() ;

提醒:当你修改配置后,请清空浏览器缓存以查看效果

配置选项: 
AutoDetectLanguage=true/false 自动检测语言
BaseHref="http://dszhang.blog.163.com/blog/" _fcksavedurl="""" 相对链接的基地址
ContentLangDirection="ltr/rtl" 默认文字方向
ContextMenu=字符串数组,右键菜单的内容
CustomConfigurationsPath="" 自定义配置文件路径和名称
Debug=true/false 是否开启调试功能,这样,当调用FCKDebug.Output()时,会在调试窗中输出内容
DefaultLanguage="" 缺省语言
EditorAreaCss="" 编辑区的样式表文件
EnableSourceXHTML=true/false 为TRUE时,当由可视化界面切换到代码页时,把HTML处理成XHTML
EnableXHTML=true/false 是否允许使用XHTML取代HTML
FillEmptyBlocks=true/false 使用这个功能,可以将空的块级元素用空格来替代
FontColors="" 设置显示颜色拾取器时文字颜色列表
FontFormats="" 设置显示在文字格式列表中的命名
FontNames="" 字体列表中的字体名
FontSizes="" 字体大小中的字号列表
ForcePasteAsPlainText=true/false 强制粘贴为纯文本
ForceSimpleAmpersand=true/false 是否不把&符号转换为XML实体
FormatIndentator="" 当在源码格式下缩进代码使用的字符
FormatOutput=true/false 当输出内容时是否自动格式化代码
FormatSource=true/false 在切换到代码视图时是否自动格式化代码
FullPage=true/false 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容
GeckoUseSPAN=true/false 是否允许SPAN标记代替B,I,U标记
IeSpellDownloadUrl=""下载拼写检查器的网址
ImageBrowser=true/false 是否允许浏览服务器功能
ImageBrowserURL="" 浏览服务器时运行的URL
ImageBrowserWindowHeight="" 图像浏览器窗口高度
ImageBrowserWindowWidth="" 图像浏览器窗口宽度
LinkBrowser=true/false 是否允许在插入链接时浏览服务器
LinkBrowserURL="" 插入链接时浏览服务器的URL
LinkBrowserWindowHeight=""链接目标浏览器窗口高度
LinkBrowserWindowWidth=""链接目标浏览器窗口宽度
Plugins=object 注册插件
PluginsPath="" 插件文件夹
ShowBorders=true/false 合并边框
SkinPath="" 皮肤文件夹位置
SmileyColumns=12 图符窗列数
SmileyImages=字符数组 图符窗中图片文件名数组
SmileyPath="" 图符文件夹路径
SmileyWindowHeight 图符窗口高度
SmileyWindowWidth 图符窗口宽度
SpellChecker="ieSpell/Spellerpages" 设置拼写检查器
StartupFocus=true/false 开启时FOCUS到编辑器
StylesXmlPath="" 设置定义CSS样式列表的XML文件的位置
TabSpaces=4 TAB键产生的空格字符数
ToolBarCanCollapse=true/false 是否允许展开/折叠工具栏
ToolbarSets=object 允许使用TOOLBAR集合
ToolbarStartExpanded=true/false 开启是TOOLBAR是否展开
UseBROnCarriageReturn=true/false 当回车时是产生BR标记还是P或者DIV标记 

如何自定义样式列表呢?
FCKEDITOR的样式工具栏中提供了预定义的样式,样式是通过XML文件定义的,默认的XML样式文件存在于FCkEditor根文件夹下的FckStyls.xml文件中
这个XML文件的结构分析如下:
<?xml version="1.0" encoding="utf-8" ?>
<Styles >
<Style name="My Image" element="img">
<Attribute name="style" value="padding: 5px" />
<Attribute name="border" value="2" />
</Style >
<Style name="Italic" element="em" />
<Style name="Title" element="span">
<Attribute name="class" value="Title" />
</Style >
<Style name="Title H3" element="h3" />
</Styles>

每一个STYLE标记定义一种样式,NAME是显示在下拉列表中的样式名,ELEMENT属性指定此样式所适用的对象,因为FCKEDITOR中的样式是上下文敏感的,也就是说,选择不同的对象,仅会显示针对这类对象定义的样式

拼写检查
FCKEDITOR带了两种拼写检查工具,一种是ieSpell,默认情况下使用这种,使用这种方式的拼写检查,要求客户下载并安装iespell这个小软件,另外,也提供SpellPager的方式来进行拼写检查,不过,由于SPELLPAGER是由PHP编写的服务器端脚本,因此,要求你的WEB服务器必须支持PHP脚本语言方可
更改拼写检查器的方式请参见有关配置文件的详细说明

压缩脚本
为了提供脚本载入的效率,FCKEDITOR采用以下方法对脚本尽量压缩以减少脚本尺寸:
1,移除掉脚本中的注释
2.移除掉脚本中所有无意义的空白
另外,FCKEDITOR还提供了一个专门用于压缩脚本的工具以便 你在发布时能减小文件尺寸,
你可以将_Packager文件夹中的Fckeditor.Packager.exe复制到FCKEDITOR根文件夹来运行并压缩脚本

本地化FCKEDITOR
如果FCKEDITOR没有提供您所需要的语言(实际上全有了),你也可以自行制作新的语言
,你只需要复制出EN.JS,然后在其基础上进行翻译.另外,语言名称与对应的脚本文件名必须遵循RFC 3066标准,但是,需要小写,例如:Portuguess Language对应的脚本文件名必须为pt.js
如果需要针对某个国家的某种语系,则可以在语系缩写后加上横线及国家缩写即可

在使用时,系统会自动侦测客户端语系及国别而运用适当的界面语言.

当建立一种新的语言后,你必须在"Edit/lang/fcklanguagemanager.js"中为其建立一个条目,如下所示:
FCKLanguageManager.AvailableLanguages = 
{

en : 'English',
pt : 'Portuguese' 


需要提醒的是,文件必须保存为UTF-8格式

如何与服务器端脚本进行交互?
请查看例子以得到相关内容

另外,在ASP.NET中以以下步骤使用
1.把FCKEDITOR添中到工具箱
2.托拽FCKEDITOR控件到页面
3.为其指定名称
4.FCKEDITOR类的所有属性不光可以在代码中使用,而且可以作为FCKEDITOR控件的属性直接使用,例如,要改变皮肤,可以在UI页面中指定SkinPath="/fckeditor/editor/skins/office2003"即可,其实FCKEDITOR的ASP.NET版本可以做得更好,你可以找到FCKEDITOR ASP.NET 2.1的源文件,然后修改该控件的设计,为其暴露更多有用的属性,重新编译即可
5,POSTBACK后的数据,使用FCKEDITOR控件的value属性获得
6.由于默认状态下,ASP.NET不允许提交含有HTML及JAVASCRIPT的内容,因此,你必须将使用FCKEDITOR的页面的ValidateRequest设为false.(<%@page validteRequest="false" %>即可)

    附:
一、如何设置上传文件语言

把FCKeditor根目录下面的fckconfig.js文件里

var _FileBrowserLanguage    = 'asp' ;    // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage    = 'asp' ;    // asp | aspx | cfm | lasso | php

这两行中改成您所需要调用的编辑器语言,如用asp.net则改为aspx;

二、解决中文的问题:
在web.config中加入:
<globalization requestEncoding="GB2312" responseEncoding="GB2312"/>
这样设置后可以显示中文的文件,但URL地址也是中文的;
如果服务器对中文地址的解析不好,可能导致图片无法浏览;
所以修改:editor\filemanager\browser\default\frmresourceslist.html
中的OpenFile函数,把
window.top.opener.SetUrl( fileUrl ) ; 
修改为:
window.top.opener.SetUrl( escape(fileUrl) ) ;

三.设置上传的目录:
1:在web.config中设置:
 <appSettings>
     <add key="FCKeditor:UserFilesPath" value="/fck/UpLoad/" />
 </appSettings>

2:在Session中设置:
在editor\filemanager\browser\default\connectors\aspx\connector.aspx中加入以下代码:
<script runat="server" language="C#">
 protected override void OnInit(EventArgs e)
 {
  Session["FCKeditor:UserFilesPath"] = "/fck/UpLoad1/";
 }
</script>

如何在asp.net中动态设置上传图片的路径?

1.在javascript中修改FCKConfig.ImageBrowserURL的值,修改方式如下:
 FCKConfig.ImageBrowserURL += "?Path=要上传的文件路径";
 如:要把文件上传到站点根目录的UploadFile文件夹中,则设置为:
 FCKConfig.ImageBrowserURL += "?Path=/UploadFile";
2.在"editor\filemanager\browser\default\connectors\aspx\connector.aspx"文件最后中增加以下程序:
<script runat="server" language="C#">
    protected override void OnInit(EventArgs e)
    {
 if( Request.QueryString["Path"]==null ){
  Session["FCKeditor:UserFilesPath"] = "/UpLoadFiles/"; //设置默认值
 }else{
  Session["FCKeditor:UserFilesPath"] = Request.QueryString["Path"];
 }
    }
</script>
 


多环境下的配置和使用技巧

 在fckeditor中添加右键菜单
现在网上介绍FCKEditor如何配置,如何精简的例子非常之多,如有需要可以google一下,此处不必赘述。现在介绍一下,如何自定义此编辑器,暂包括如何添加工具条上的item,产生响应,添加右键菜单。IT SEEMS VERY EASY!

  闲言少叙,书归正传。
  一、自定义右键菜单:
  1、 首先,在editor/lang/zh-cn.js里添加你所要添加的工具条item的名字,此文件定义了一个FCKLang变量,仿照里边的格式写哦,如:First: "第一",注意,如果是不在倒数第二行(倒数第一行是“}”),后边的这个逗号是一定要有的,不然网页中不会出现编辑器,笔者曾经犯过如此低级的错误,待醒悟后,找一僻静之所大嘴巴子招呼;呵呵,我们是中国人,自然在冒号后对应汉语,这也是将来在网页中显示的内容。
  2、 之后,在editor/_source/internals/fckcommands.js 里新建一个command:case 'First': oCommand = new FCKFirstCommand ( 'First', FCKLang.First); break注意那个红色字体的FCKFirstCommand了么?这个是一个自定义的command,稍候将讨论它。
  3、 然后,在editor/_source/internals/fckcontextmenu.js 添加一个context menu 。 在case 'Generic' : 下面添加如下: oGroup.Add( new FCKContextMenuItem( this, 'First', FCKLang.First, true ) ) ; 其中第四个布尔类型的参数,如果指定为true,说明菜单有图标,反之则无。在此,我指明了我所自定义的菜单是有图标的,那么我就应该把图标放在editor\skins\xxx\toolbar目录下,其中xxx就是你在你的配置文件里选择的编辑器的皮肤,但是我们的图标命名可是有学问的,必须是如FCKContextMenuItem构造函数(且这么叫它)第二个字符串参数的小写字母形式,如,这里我的图标被命名为first.gif了。 Ok,如此右键菜单就被添加上去了,运行你的网页,看看FCKEditor是否奏效?如果不奏效的话就要重新参考此文喽^_^。
  4、然后,还有最关键的一步:用editor下的fckeditor.original.html网页的内容代替fckeditor.html的内容,同时不要忘记备份fckeditor.html文件!
  5、现在开始讨论步骤2中的FCKFirstCommand。菜单添加上其了,你总得让丫拥有什么功能吧?好,在editor/_source/commandclasses/fck_othercommands.js里新建这个类:

 四大 FCKeditor 实战应用技巧

一般建立好类后,还要建立两个静态函数:xxx .prototype.Execute,xxx .prototype.GetState。前者是事件处理函数,即点击了该右键菜单所要执行的功能全部写在这个函数,后者返回菜单的状态(可用?不可用?)。在此为了演示,我们实现一个最简单的功能: FCKPageCommand.prototype.Execute = function(){ window.alert("It works!");}够简单吧,只是不疼不痒的弹出一个提示框。 当然,这里我们也可以不用自定义的FCKFirstCommand,而直接用FCKEditor定义好的command,比如FCKDialogCommand,它也定义在fck_othercommands.js里,当然如果这样的话,弹出的会是一个dialog。 再次运行网页,右击,点击你的自定义菜单,是否弹出提示框呢?

FCKeditor至今已经到了2.3.1版本了,对于国内的WEB开发者来说,也基本上都已经“闻风知多少”了,很多人将其融放到自己的项目中,更有很多大型的网站从中吃到了甜头。今天开始,我将一点点的介绍自己在使用FCKeditor过程中总结的一些技巧,当然这些其实是FCK本来就有的,只是很多人用FCK的时候没发现而已 :P

  1、适时打开编辑器

  很多时候,我们在打开页面的时候不需要直接打开编辑器,而在用到的时候才打开,这样一来有很好的用户体验,另一方面可以消除FCK在加载时对页面打开速度的影响,如图所示

  点击“Open Editor"按钮后才打开编辑器界面

 

  实现原理:使用JAVASCRIPT版的FCK,在页面加载时(未打开FCK),创建一个隐藏的TextArea域,这个TextArea的name和ID要和创建的FCK实例名称一致,然后点击"Open Editor"按钮时,通过调用一段函数,使用FCK的ReplaceTextarea()方法来创建FCKeditor,代码如下

<script type="text/javascript"> 
     <!-- 
     function showFCK(){ 
      var oFCKeditor = new FCKeditor( 'fbContent' ) ; 
      oFCKeditor.BasePath = '/FCKeditor/' ; 
      oFCKeditor.ToolbarSet = 'Basic' ; 
      oFCKeditor.Width = '100%' ; 
      oFCKeditor.Height = '200' ; 
      oFCKeditor.ReplaceTextarea() ; 
     } 
     //--> 
     </script> 
     <textarea name="fbContent" id="fbContent"><textarea>

 2、使用FCKeditor 的 API

  FCKeditor编辑器,提供了非常丰富的API,用于给End User实现很多想要定制的功能,比如最基本的数据验证,如何在提交的时候用JS判断当前编辑器区域内是否有内容,FCK的API提供了GetLength()方法;

  再比如如何通过脚本向FCK里插入内容,使用InsertHTML()等;

  还有,在用户定制功能时,中间步骤可能要执行FCK的一些内嵌操作,那就用ExecuteCommand()方法。

  详细的API列表,请查看FCKeditor的Wiki。而常用的API,请查看FCK压缩包里的_samples/html/sample08.html。此处就不贴代码了。

3、外联编辑条(多个编辑域共用一个编辑条)

  这个功能是2.3版本才开始提供的,以前版本的FCKeditor要在同一个页面里用多个编辑器的话,得一个个创建,现在有了这个外联功能,就不用那么麻烦了,只需要把工具条放在一个适当的位置,后面就可以无限制的创建编辑域了,如图:

  要实现这种功能呢,需要先在页面中定义一个工具条的容器:<divid="xToolbar"></div>,然后再根据这个容器的id属性进行设置。

  ASP实现代码:  

<div id="fckToolBar"></div>  
<%  
Dim oFCKeditor  
Set oFCKeditor = New FCKeditor  
with oFCKeditor  
.BasePath = fckPath  
.Config("ToolbarLocation") = "Out:fckToolBar"  

.ToolbarSet = "Basic"  
.Width = "100%"  
.Height = "200"  

.Value = ""  
.Create "jcontent"  

.Height = "150"  
.Value = ""  
.Create "jreach"  
end with  
%>

  JAVASCRIPT实现代码 

<div id="xToolbar"></div>  
FCKeditor 1:  
<script type="text/javascript">  
<!--  
// Automatically calculates the editor base path based on the _samples directory.  
// This is usefull only for these samples. A real application should use something like this:  
// oFCKeditor.BasePath = '/fckeditor/' ; // '/fckeditor/' is the default value.  
var sBasePath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_samples')) ;  

var oFCKeditor = new FCKeditor( 'FCKeditor_1' ) ;  
oFCKeditor.BasePath = sBasePath ;  
oFCKeditor.Height = 100 ;  
oFCKeditor.Config[ 'ToolbarLocation' ] = 'Out:parent(xToolbar)' ;  
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using FCKeditor.' ;  
oFCKeditor.Create() ;  
//-->  
</script>  
<br />  
FCKeditor 2:  
<script type="text/javascript">  
<!--  
oFCKeditor = new FCKeditor( 'FCKeditor_2' ) ;  
oFCKeditor.BasePath = sBasePath ;  
oFCKeditor.Height = 100 ;  
oFCKeditor.Config[ 'ToolbarLocation' ] = 'Out:parent(xToolbar)' ;  
oFCKeditor.Value = 'This is some <strong>sample text</strong>. You are using FCKeditor.' ;  
oFCKeditor.Create() ;  
//-->  
</script>

  此部分的详细DEMO请参照:
_samples/html/sample11.html
_samples/html/sample11_frame.html

4、文件管理功能、文件上传的权限问题

  一直以后FCKeditor的文件管理部分的安全是个值得注意,但很多人没注意到的地方,虽然FCKeditor在各个Release版本中一直存在的一个功能就是对上传文件类型进行过滤,但是她没考虑过另一个问题:到底允许谁能上传?到底谁能浏览服务器文件?

  之前刚开始用FCKeditor时,我就出现过这个问题,还好NetRube(FCKeditor中文化以及FCKeditor ASP版上传程序的作者)及时提醒了我,做法是去修改FCK上传程序,在里面进行权限判断,并且再在fckconfig.js里把相应的一些功能去掉。但随之FCK版本的不断升级,每升一次都要去改一次配置程序fckconfig.js,我发觉厌烦了,就没什么办法能更好的控制这种配置么?事实上,是有的。

  在fckconfig.js里面,有关于是否打开上传和浏览服务器的设置,在创建FCKeditor时,通过程序来判断是否创建有上传浏览功能的编辑器。首先,我先在fckconfig.js里面把所有的上传和浏览设置全设为false,接着我使用的代码如下:

  ASP版本:

<%  
Dim oFCKeditor  
Set oFCKeditor = New FCKeditor  
with oFCKeditor  
.BasePath = fckPath  
.Config("ToolbarLocation") = "Out:fckToolBar"  
if request.cookies(site_sn)("issuper")="yes" then  
.Config("LinkBrowser") = "true"  
.Config("ImageBrowser") = "true"  
.Config("FlashBrowser") = "true"  
.Config("LinkUpload") = "true"  
.Config("ImageUpload") = "true"  
.Config("FlashUpload") = "true"  
end if  
.ToolbarSet = "Basic"  
.Width = "100%"  
.Height = "200"  
.Value = ""  
.Create "jcontent"  
%> 

  JAVASCRIPT版本: 

      var oFCKeditor = new FCKeditor( 'fbContent' ) ; 
      <%if power = powercode then%> 
      oFCKeditor.Config['LinkBrowser'] = true ; 
      oFCKeditor.Config['ImageBrowser'] = true ; 
      oFCKeditor.Config['FlashBrowser'] = true ; 
      oFCKeditor.Config['LinkUpload'] = true ; 
      oFCKeditor.Config['ImageUpload'] = true ; 
      oFCKeditor.Config['FlashUpload'] = true ; 
      <%end if%> 
      oFCKeditor.ToolbarSet = 'Basic' ; 
      oFCKeditor.Width = '100%' ; 
      oFCKeditor.Height = '200' ; 
      oFCKeditor.Value = '' ; 
      oFCKeditor.Create() ;
FCKPageCommand.prototype.Execute = function() 

              window.alert("It works!"); 
}

FCKeditor在ASP环境中配置使用

先说一下我的测试环境:XPSP2,IIS5.1,FCKeditor2.0

在IIS上建立一个新的站点,我直接取名为FCKeditor
在DW里建立一个相对应的站点,测试服务器为本机,支持VBScript
下载FCKeditor2.0,这个东西是开源的,网上能下到的地方很多,自己找去……

下载下来的应该是压缩包,解压到FCKeditor站点根目录,什么都不需要更改,直接就可以开始调用了。等你会了的时候,会发现简单得要死去!

在站点根目录下,新建一个index.asp页面,<body>段内加如下代码(调用编辑器):

<% 
Dim oFCKeditor
 Set oFCKeditor = New FCKeditor
 oFCKeditor.BasePath = "/FCKeditor/"  //设置编辑器的路径,我站点根目录下的一个目录
 oFCKeditor.ToolbarSet = "Default"
 oFCKeditor.Width = "100%"
 oFCKeditor.Height = "600"

 oFCKeditor.Value = "" //这个是给编辑器初始值
 oFCKeditor.Create "logbody" //以后编辑器里的内容都是由这个logbody取得,命名由你定

 %>

加了这一段别忘了在index.asp前面第二行加上

<!--#include file="FCKeditor/fckeditor.asp" -->

把fckeditor.asp包含进来。切记切记!

就这么简单!

现在你只要把这个编辑器当成一个控件来使用,提取它的数据时用:request("logbody")

现在松口气吧。测试成功了。里面有些设置,去网上找些高级的使用说明来看吧。

FCKeditor使用初步

作者:柠檬园主

  FCKeditor 2.0版终于出来了,之所以用“终于”这个词,是因为在这一版本上加上了众望所归的FLASH插入功能。可以说在所有的在线编辑器中,FCKeditor是目前互联网上最好的编辑器,功能强大,支持多种浏览器,无平台限制,可以和多种WEB语言融合,多语言支持,开源等~~

  对于一个全新的网站,FCKeditor就可以直接拿过来用了,不需要进行什么修改。但是对于绝大多数的已有网站而言,FCKeditor的一些设置并不适合自己的使用,这篇文章旨在告诉你简单的修改FCKeditor以方便您的网站的使用。

  第一项工作就是对这个功能宏大的编辑器进行精简,当然是文件精简而非功能精简化。在这里我以asp版的FCKeditor为例进行,进入到FCKeditor 2.0文件夹下,先把以“_”为开头的文件夹统统删除,这些文件夹里放的是范例或是一些其它工具。其实也就是只保留editor文件夹、fckconfig.js、fckeditor.asp、fckeditor.js、fckstyles.xml、fcktemplates.xml就可以了,最外层的精简化完毕,进入到editor文件夹内,先把“_source”文件夹删除,这里是一些源文件,对于使用来说没什么用处。

  进入images文件夹,删除smiley文件夹,些文件是放表情图标的,由于接下来我会用我自己的表情图标,先把他们的删除,当然,如果你想用这里的表情图标那就不要删掉了。退出 images再进入lang文件夹内,这里的东西可以来个大清洗了,只保留fcklanguagemanager.js、zh-cn.js、en.js、zh.js这四个文件,第一个文件是语言配置文件,有了它才能和fckconfig.js里的设置成对对应上相应的语言文件,zh-cn.js是简体中文语言包,en.js就不用说了吧,zh.js是繁体中文的。怎么样?一下子少了几百K,爽吧~

  再退出lang文件夹,进入skin文件夹,如果你想使用fckeditor默认的这种奶黄色,那就把除了default文件夹外的另两个文件夹直接删除,如果想用别的,那就自己考虑了,不过我给你个建议,如果不想用默认的,那就选那个silver,因为银色也就是灰色和任何颜色配起来都不会难看,而那个office2003的皮肤,反正我是非常不喜欢的,并且图片相对也比较大,又增加了下载时间,不要!

  精简的最后一步,退出skin文件夹,再进入filemanager,如果你用的不是最新版的fckeditor的话,那这里就一个文件夹browser,新版的还有一个upload文件夹。一个个来,先进入到filemanager/browser/default/connectors/下,因为我是用的asp的,所以除asp文件夹外,全部删除。然后再进入filemanager/upload/下,同样,只留asp文件夹,至此,编辑器的精简化已经结束了,接下来,我们对编辑器进行设置修改。

   第一个修改的文件,也就是fckeditor总配置文件,位于根目录下的fckconfig.js文件。请根据下面的列表进行(以fckeditor 2.0版的为准):

找到第20行 FCKConfig.DefaultLanguage  = 'en' ;改为 FCKConfig.DefaultLanguage  = 'zh-cn' ;设置默认语言为简体中文
找到第40行 FCKConfig.TabSpaces  = 0 ; 改为FCKConfig.TabSpaces  = 1 ; 即在编辑器域内可以使用Tab键。

如果你的编辑器还用在网站前台的话,比如说用于留言本或是日记回复时,那就不得不考虑安全了,在前台千万不要使用Default的toolbar,要么自定义一下功能,要么就用系统已经定义好的Basic,也就是基本的toolbar,
找到第64行 FCKConfig.ToolbarSets["Basic"] = [
 ['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-','Smiley','SpecialChar','Replace','Preview']
] ;
这是我改过的Basic,把图像功能去掉,把添加链接功能去掉,因为图像和链接和flash和图像按钮添加功能都能让前台页直接访问和上传文件,要是这儿不改直接给你上传个木马还不马上玩完?但是光这样还不行,fckeditor还支持编辑域内的鼠标右键功能。
找到第73行 
FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField',/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;
 
这也是我改过的把鼠标右键的“链接、图像,FLASH,图像按钮”功能都去掉。


找到 第77行 FCKConfig.FontNames  = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
加上几种我们常用的字体 FCKConfig.FontNames  = '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

  接下来就设置上传功能了,还是以ASP为例,其实fck默认的就是asp的,把100行以下的所有被注释掉的代码全部删掉就行,然后再把下面所有有关于browser.html和upload.asp的后面的?Type=XX都改成Type=YY,其中YY为你想保存文件的文件夹名称。

  而如果你还想用自己的表情图标的话,那跳到131行,改掉那个表情图标的文件夹地址,以及下面的表情图标的文件名,再下面那三个数字是每行显示表情数及弹出窗口的宽和高了,这个的大小要根据您的表情图标排列的窗口的大小而定了。OK,总配置文件修改结束。

  接下来是编辑器位置的设置,我的习惯是把editor放在根目录下,最开始所述的五个文件也放在根目录下(Tips:建议放在根目录下,并且建议使用时设置路径也采用绝对路径,如"/fckeditor/",而我的习惯的设置是"/"),这样有利于fckeditor的更新升级,并且网站下所有文件夹都可以任意调用,不存在其它文件夹名变了而其它地方就无法使用编辑器的问题。

  打开fckeditor.asp文件,找到  sBasePath  = "/fckeditor/"改为  sBasePath  = "/"
  打开fckeditor.js文件,找到  this.BasePath  = '/fckeditor/' ;改为  this.BasePath  = '/' ;

  编辑器域内默认的显示字体为12px,而我的主页默认字体为14px,所以看着就很不舒服,想要修改可以通过修改样式表来达到要求,打开/editor/css/fck_editorarea.css,把第4行改为  font-size: 14px;即可。

  接下来就是上传文件的设置了,这个比较麻烦,请仔细操作。

  打开\editor\filemanager\browser\default\frmresourcetype.html,找到第15行,插入“ ['uploadfile','uploadfile'],”配合上刚才在fckconfig.js里的设置,那么我的上传文件路径就是/uploadfile,当然你也可以改成你想要的文件夹,但这里的名称一定要和fckconfig.js里的那个“Type=YY”里的YY一致才行。

  还没完,继续进入到editor\filemanager\browser\default\connectors\asp,打开config.asp,先把ConfigIsEnabled = False改成为ConfigIsEnabled = True,要不是没法上传文件的,再把ConfigUserFilesPath = "/UserFile"改成我想要的ConfigUserFilesPath = "/"。
  接着在“Set ConfigDeniedExtensions = CreateObject( "Scripting.Dictionary" )”后面加入ConfigAllowedExtensions.Add "uploadfile", ""
ConfigDeniedExtensions.Add "uploadfile", ""
同理,这里的设置也是要和上面以及fckconfig.js里面对应的。

  还有一个上传,就是快速上传,这个功能是在fckeditor 2.0里才有的,以前的版本没这个功能。进入\editor\filemanager\upload\asp,同样打开config.asp,也同样的把ConfigIsEnabled = False 设置成 ConfigIsEnabled = True,我这里把ConfigUserFilesPath = "/UserFiles/"改成我想要的 ConfigUserFilesPath = "/uploadfile/"& Year(Date()) &"-"& Month(Date()) &"/",因为我的上传文件是放在uploadfile文件夹下,并且是按月分开放置的。快速上传,不会让你选择文件夹,而是通过这里的设置直接上传的,这儿设置如果和前面的设置配合不好的话,你的文件就会被上传得乱七八糟,很不方便管理。接前重复前一个config.asp里的操作,在后面加上
ConfigAllowedExtensions.Add "uploadfile", ""
ConfigDeniedExtensions.Add "uploadfile", ""

   接下来呢,就讲一下如何创建自己的在线编辑器,这里以ASP和JS版的为例,ASP版示例代码,一般用于后台操作:

 <%
 Dim oFCKeditor
 Set oFCKeditor = New FCKeditor
 oFCKeditor.BasePath = "/"

 oFCKeditor.ToolbarSet = "Default"
 oFCKeditor.Width = "100%"
 oFCKeditor.Height = "400"

 oFCKeditor.Value = rs("logbody")
 oFCKeditor.Create "logbody"
 %>

  ASP版的,当然只能用在以.asp为扩展名的页面中,如果你在前在fckedito.asp里设置过BasePath为"/"的话,这里就可以省掉第三行,ASP版的只有一个Create函数。建议在修改一篇内容时用ASP版的。

接下来看JS版的:

 <script type="text/javascript">
 var oFCKeditor = new FCKeditor( 'logbody' ) ;
 oFCKeditor.BasePath = '/' ;
 oFCKeditor.ToolbarSet = 'Basic' ;
 oFCKeditor.Width = '100%' ;
 oFCKeditor.Height = '400' ;
 oFCKeditor.Value = '' ;
 oFCKeditor.Create() ;
 </script>

  BasePath的设置同上所述,JS版的可用于任何网页中,甚至用于html页面,因为其是客户端生成的,这样的好处就是一可以减小网络流量,因为编辑器文件只需下载一次,二是可以由客户端定义什么时候显示,由于fckeditor初始化需要一定时间,在这一点上JS就很有作用了。

另外,JS版的还有一个功能函数就是ReplaceTextarea()函数,可以替换指定的TextArea,拿我的网站的日志的回复部分示例:

     <script type="text/javascript">
     <!--
     function showFCK(){
     var oFCKeditor = new FCKeditor( 'fbContent' ) ;
     oFCKeditor.BasePath = '/' ;
     oFCKeditor.ToolbarSet = 'Basic' ;
     oFCKeditor.Width = '100%' ;
     oFCKeditor.Height = '200' ;
     oFCKeditor.Value = '' ;
     //oFCKeditor.Create() ;
     oFCKeditor.ReplaceTextarea() ;
     //document.blog_feedback.blogsubmit.disabled = '';
     document.blog_feedback.blogsubmit.style.display = '';
     document.blog_feedback.openFCK.disabled = 'true';
     document.blog_feedback.openFCK.style.display = 'none';
     }
     //-->
     </script>

把其写成一个简单的函数,当用户显示打开编辑器时才生成这个fckeditor,不用每次刷新页面都去初始化一个编辑器,页面的速度就会快多了。

补遗:前面讲到了,说是在编辑已有数据内容时不要用JS版的,那是因为单引号(')的问题造成的,在数据内容里难免会有单引号存在而用JS版生成编辑器时可能就会因为单引号问题,而使编辑器无法正常生成,而采用asp则不同,用ASP版本的是因为数据被当成是一个变量了,然后直接赋值给编辑器域。还有就是除非你要用ReplaceTextArea()方法来生成编辑器,否则你不需先写一个<textarea>这样的标签,一切都会由fckeditor自动生成的,你所需做的只是给fckeditor指定一个实例名。同时你也不用担心如何提交,在表单提交的时候,fckeditor会自动提交,提交的变量名是以你指定的fckeditor实例命名的。 


FCKEditor在Asp.net环境下的配置安装
不知道大家留意到没有了:

  • FreeTextbox 不开源了,虽然我还有它以前的开源版本。
  • CSDN用的这个在线编辑器很优秀。
  • 它的名字叫做FCKEditor
  • 它是开源的
  • 与平台无关,最起码能支持 Asp, Asp.net , PHP

  以前我一直用FreeTextBox(主要是从Community Server那里知道的)。但是发现它并不是想象中好用,主要是上传图片没有弄好。好了好了,言归正传,说说我们今天的主角,FCKEditor,怎么在Asp.net中部署吧。

  首先,他的网站下载吧。这里要注意,你要下载两个ZIP文件,一个是Core,即核心文件,里面是整个FCKEditor的核心。第二个是For .net的组件。为了描述方便,我将真实文件名附上,以后要自己灵活修改啊。

  下载的核心文件叫FCKeditor_2.3.1.zip

  For .net 的文件叫FCKeditor.Net_2.2.zip

  部署步骤:

  解压FCKeditor_2.3.1.zip,将里面的FCKEditor复制到你的IIS主目录里面,其实要的效果是能够这样访问到就可以了 http://localhost/Fckeditor/ ,将http://localhost/Fckeditor/fckconfig.js的变量:

  _FileBrowserLanguage,_QuickUploadLanguage 的值改为 aspx,不难做吧。

  (可选)将复制好的FCKEditor里的以 '_' 开头的文件及文件夹删除,当然如果你是在开发也可以不删除,里面都是示例及调试页面。

  解压缩FCKeditor.Net_2.2.zip,然后在VS.net 2003中添加新的控件那样添加,bin\Release\FredCK.FCKeditorV2.dll 这个文件,呵呵,以后你就可以随便拖放这个控件了。

  (重要)将上面的DLL文件复制到 http://localhost/FCKeditor/editor/filemanager/upload/aspx/bin/

  然后在IIS设置中让 http://localhost/FCKeditor/editor/filemanager/upload/aspx/ 这个目录可以运行Aspx。同样,http://localhost/FCKeditor/editor/filemanager/browser/default/connectors/aspx/ 也要重复上面的过程。

  另外一种更加简单的方法是将FredCK.FCKeditorV2.dll 复制 http://localhost/FCKeditor/bin/ 目录下,然后在IIS中创建应用程序。

  这一步的目的是让:

  http://localhost/FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx

  http://localhost/FCKeditor/editor/filemanager/upload/aspx/upload.aspx

  这两个文件能够工作。

  好了,到此为止,你在aspx也里面拖入FCKEditor,将BasePath 设置为 /FCKEditor/就可以用了。

如果:

  http://localhost/FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx 工作不正常

  你在浏览服务器时,就会有XML Request Error:XXXXXXXXXXXXXX(500)错误。

  http://localhost/FCKeditor/editor/filemanager/upload/aspx/upload.aspx

  你在上传图片时,按钮怎么按都没有反应的。

 在jsp环境中配置使用FCKEditor

FCKeditor是sourceforge.net上面的一个开源项目,主要是实现在线网页编辑器的功能,可以让web程序拥有如MS Word这样强大的编辑功能。官方网站为http://www.fckeditor.net ,在服务器端支持ASP.Net、ASP、ClodFusion、PHP、Java等语言,并且支持IE 5+、Mozilla 、Netscape等主流浏览器。

  首先在官方网站下载fckeditor,注意有两个包,一个是主文件,一个是jsp整合包的。

  1、解压FCKeditor_2.2.zip,(FCKeditor主文件),将FCKeditor目录复制到网站根目录下,

  2、解压FCKeditor-2.3.zip,(jsp,FCKeditor整合包),作用:This is the JSP Integration Pack for using FCKeditor inside a java server page without the complexity of using a Java scriptlets or the javascript api.

  3、将FCKeditor-2.3/web/WEB-INF/web.xml中的两个servlet,servlet-mapping定义复制到自已项目的web.xml文件中
修改

<servlet-mapping>  
        <servlet-name>Connector</servlet-name>  
        <url-pattern>/editor/filemanager/browser/default/connectors/jsp/connector</url-pattern>  
    </servlet-mapping>  

    <servlet-mapping>  
        <servlet-name>SimpleUploader</servlet-name>  
        <url-pattern>/editor/filemanager/upload/simpleuploader</url-pattern>  
 </servlet-mapping>

  为 

<servlet-mapping>  
        <servlet-name>Connector</servlet-name>  
        <url-pattern>/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector</url-pattern>  
    </servlet-mapping>  

    <servlet-mapping>  
        <servlet-name>SimpleUploader</servlet-name>  
        <url-pattern>/FCKeditor/editor/filemanager/upload/simpleuploader</url-pattern>  
  </servlet-mapping>

  4、将FCKeditor-2.3/web/WEB-INF/lib目录下文件复制到自已项目的lib文件夹中

  5、在需使用FCKeditor的jsp界面中加入:

 

// 文件开头处加入  
<%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %>  
//要使用的地方加入  
<FCK:editor id="content" basePath="/FCKeditor/"  
                                imageBrowserURL="/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector"  
                                linkBrowserURL="/FCKeditor/editor/filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" 
                                flashBrowserURL="/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector"  
                                imageUploadURL="/FCKeditor/editor/filemanager/upload/simpleuploader?Type=Image"  
                                linkUploadURL="/FCKeditor/editor/filemanager/upload/simpleuploader?Type=File"  
                                flashUploadURL="/FCKeditor/editor/filemanager/upload/simpleuploader?Type=Flash">  
            this is default content :)  
</FCK:editor>

  启动服务器测试。。。。成功后,来给FCKeditor瘦瘦身. 

  1、将FCKeditor目录下及子目录下所有以”_”下划线开头的文件夹删除
  2.FCKeditor根目录下只保留fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml其余全部删除
  3.将editor/filemanager/upload目录下文件及文件夹清空.
  4.还可以将editor/skins目录下的皮肤文件删除,只留下default一套皮肤(如果你不需要换皮肤的话)
  5.还可以将editor/lang目录下文件删除,只保留en.js, fcklanguagemanager.js, zh-cn.js, zh.js文件(英文,简体中文,繁体中文一般应该够用了:) )

  完成,现在看是不是清爽了很多?

  其它问题:
  在struts+spring+hibernate中使用,上传图像功能中可能会出现报:
  The output format must have a '{http://xml.apache.org/xalan}content-handler’ property!
  错的情况,将WEB-INF/lib目录下xalan*.jar删除试试

  安全问题:
  假如在前台让普通用户也能使用FCKEditor,要注意相关安全问题,在前台使用时,不要使用默认的ToolBar,
  要将添加图像,flash,图像域按钮去掉
在fckconfig.js中大约78行配置  那些数组中的值就像当于界面上的一个功能,你可以强行把每组值试出来代表什么。:P

  到此安装FCKeditor就完成了,相关详细配置你可以看FCKeditor-2.3.zip,(jsp,FCKeditor整合包)文件夹中web/_samples目录下的例子。

PHP环境下配置在线编辑器FCKeditor

在线编辑器FCKeditor 2.0PHP环境下试用小记

  一、简介
  2004年11月30日推出了FCKeditor 2.0 RC1版,据其官方网站称:这是FCKeditor 2.0版的第一个稳定版本。大家现在可以考虑正式使用它了。目前支持的后台语言有ASP、ASP.Net、PHP和ColdFusion。

  笔者在经过简单的试用发现,在线编辑器2.0版确实比1.6版有了许多的改进。首先是FCKeditor的文件结构更加清晰,可以更方便地将其部署在自己的系统中。另外2.0版终于支持了Firefox 1.0浏览器,这将为FCKeditor赢得更多的使用者。废话不多说,让我们赶快来学习如何安装、配置FCKeditor 2.0吧。

  二、安装与范例

  首先到 http://sourceforge.net/projects/fckeditor/ 下载FCKeditor 2.0 RC1(554K),并将其解压缩到你的网站目录里面,并将文件夹名改为FCKeditor。举例来说,如果你的网站放在shaof这个目录下面,则在这个目录中建立3个子目录:
n         FCKeditor:存放从网站上下载的FCKeditor在线编辑器
n         upimages:用于存放上传的图片
n         admin:里面存放测试页面

  网站的结构如下:

      /FCKeditor           //FCKeditor目录 
      /UserFiles            //上传文件目录 
      /admin 
              test.php          //提交数据页面 
              testsubmit.php     //显示数据页面 


  进入到FCKeditor目录下,打开_samples目录,里面含有各种编程语言调用FCKeditor的范例程序页面,其中php目录中包含着一些使用PHP来调用FCKeditor的范例,大家可以看一下,了解FCKeditord的调用方法,下面是我简写了一个test.php程序,放在网站根目录下的admin目录中: 


if($_POST["ADD"]){     
       $Content=$_POST['EditorDefault']; 
echo $Content; 
//变量$Content就是我们在FCKeditord里面编辑的内容,这里可以将其保存到数据库,代码省略。 
}
 
 


  三、配置在线编辑器

  FCKeditor 2.0的配置文件为FCKeditor\fckconfig.js,其中几个重要的配置项目如下:

  1、工具栏的设置

默认情况下,FCKeditor会调用如下的工具栏按钮,大家可以根据自己的需要进行增减。需要注意的是,2.0版与1.6版的按钮并不完全相同,有些按钮以及删除或者改名了。

//## 
//## Toolbar Buttons Sets 
//## 
FCKConfig.ToolbarSets["Default"] = [ 
       ['Source','-','Save','NewPage','Preview'], 
       ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'], 
       ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'], 
       ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'], 
       ['OrderedList','UnorderedList','-','Outdent','Indent'], 
       ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'], 
       ['Link','Unlink'], 
       ['Image','Table','Rule','SpecialChar','Smiley'], 
       ['Style','FontFormat','FontName','FontSize'], 
       ['TextColor','BGColor'], 
       ['About'] 
] ;


  2、简体中文设置

  编辑edit/lang/fcklanguagemanager.js

  将下面语句

FCKLanguageManager.AvailableLanguages =  

 'ar'  : 'Arabic', 
 'bs'  : 'Bosnian', 
 'ca'  : 'Catalan', 
 'en'  : 'English', 
 'es'  : 'Spanish', 
 'et'  : 'Estonian', 
 'fi'  : 'Finnish', 
 'fr'  : 'French', 
 'gr'  : 'Greek', 
 'he'  : 'Hebrew', 
 'hr'  : 'Croatian', 
 'it'  : 'Italian', 
 'ko'  : 'Korean', 
 'lt'  : 'Lithuanian', 
 'no'  : 'Norwegian', 
 'pl'  : 'Polish', 
 'sr'  : 'Serbian (Cyrillic)', 
 'sr-latn' : 'Serbian (Latin)', 
 'sv'  : 'Swedish' 
}

  添加一行 'zh-cn'    : 'Chinese' 从而变成

FCKLanguageManager.AvailableLanguages =  

 'ar'  : 'Arabic', 
 'bs'  : 'Bosnian', 
 'ca'  : 'Catalan', 
 'en'  : 'English', 
 'es'  : 'Spanish', 
 'et'  : 'Estonian', 
 'fi'  : 'Finnish', 
 'fr'  : 'French', 
 'gr'  : 'Greek', 
 'he'  : 'Hebrew', 
 'hr'  : 'Croatian', 
 'it'  : 'Italian', 
 'ko'  : 'Korean', 
 'lt'  : 'Lithuanian', 
 'no'  : 'Norwegian', 
 'pl'  : 'Polish', 
 'sr'  : 'Serbian (Cyrillic)', 
 'sr-latn' : 'Serbian (Latin)', 
 'sv'  : 'Swedish', 
 'zh-cn'     : 'Chinese' 
}

  然后到这里http://www.shaof.com/download/zh-cn.js下载汉化好的zh-cn.js保存到editor/lang目录下即可。
 
  四、设置文件上传

  FCKeditor 2.0在线编辑器采用了一种名为“Connector”(连接器)的技术来实现对文件的浏览以及上传。下图显示了文件浏览的工作流程图。


  从图中可以看出,当客户端向服务器发出一个文件操作请求后,Connector就会对此请求进行响应,在服务器的文件系统中进行执行操作,如:文件和文件夹的浏览以及创建操作。最后将结果以XML的格式回应给客户端。具体的技术细节大家可以阅读FCKeditor自带的说明指南。
  落实到应用,首先我们要选择一个后台语言用来实现这个功能,这里我们以PHP为例进行说明。

  1、  修改配置文件FCKeditor\fckconfig.js中的两段内容

//Link Browsing 
FCKConfig.LinkBrowser = true ; 
FCKConfig.LinkBrowserURL = FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/php/connector.php" ; 
FCKConfig.LinkBrowserWindowWidth = screen.width * 0.7 ;    // 70% 
FCKConfig.LinkBrowserWindowHeight       = screen.height * 0.7 ;   // 70% 
//Image Browsing 
FCKConfig.ImageBrowser = true ; 
FCKConfig.ImageBrowserURL = FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&Connector=connectors/php/connector.php" ; 
FCKConfig.ImageBrowserWindowWidth  = screen.width * 0.7 ;     // 70% ; 
FCKConfig.ImageBrowserWindowHeight = screen.height * 0.7 ;       // 70% ;
 
  2、  修改配置文件

FCKeditor\editor\filemanager\browser\default\connectors\php\connector.php 
// Get the "UserFiles" path. 
$GLOBALS["UserFilesPath"] = '/UserFiles/' ;

  UserFiles为文件上传的路径,与本文开头所给的例子相对应,大家可以自行修改。
 
  好啦,只需要两步就完成了文件上传的配置工作,真是简单呀。以后我们通过FCKeditor上传的文件都会保存在网站的UserFiles目录下。


  五、结束

  最后大家可以把FCKeditor目录下的_docs和_samples两个目录删除以节省空间。本文是笔者以前写过的一篇名为《在线编辑器FCKeditor在PHP中的使用方法》(1.6版)文章的升级版本,文章如有不妥之处,还请大家指正。

  另,遇到的问题

  1、图片文件上传路径问题

  安装我文章里面的设置,上传路径设置为UserFiles/,但是上传图片文件时,FCKeditor都自动把文件上传到UserFiles/image目录下面,自做主张的建立了一个image目录,很是不爽。原因不明。

 

配置FCKeditor(FCKeditor for java)

1.下载
FCKeditor.java 2.3 (FCKeditot for java)
FCKeditor 2.2 (FCKeditor基本文件)

  2.建立项目:tomcat/webapps/TestFCKeditor.

  3.将FCKeditor2.2解压缩,将整个目录FCKeditor复制到项目的根目录下,
目录结构为:tomcat/webapps/TestFCKeditor/FCKeditor
然后将FCKeditor-2.3.zip(java)压缩包中\web\WEB-INF\lib\目录下的两个jar文件拷到项目的\WEB-INF\lib\目录下。把其中的src目录下的FCKeditor.tld文件copy到TestFCKedit/FCKeitor/WEB-INF/下

  4.将FCKeditor-2.3.zip压缩包中\web\WEB-INF\目录下的web.xml文件合并到项目的\WEB-INF\目录下的web.xml文件中。

  5. 修改合并后的web.xml文件,将名为SimpleUploader的Servlet的enabled参数值改为true,
以允许上传功能,Connector Servlet的baseDir参数值用于设置上传文件存放的位置。
添加标签定义:

<taglib> 
<taglib-uri>/TestFCKeditor</taglib-uri> 
<taglib-location>/WEB-INF/FCKeditor.tld</taglib-location> 
</taglib>

  6. 上面文件中两个servlet的映射分别为:/editor/filemanager/browser/default/connectors/jsp/connector
和/editor/filemanager/upload/simpleuploader,需要在两个映射前面加上/FCKeditor,
即改为/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector和
/FCKeditor/editor/filemanager/upload/simpleuploader。

  7.进入skin文件夹,如果你想使用fckeditor默认的这种奶黄色,
那就把除了default文件夹外的另两个文件夹直接删除.

  8.删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml四个文件以外的所有文件 
删除目录/editor/_source,
删除/editor/filemanager/browser/default/connectors/下的所有文件
删除/editor/filemanager/upload/下的所有文件
删除/editor/lang/下的除了fcklanguagemanager.js, en.js, zh.js, zh-cn.js四个文件的所有文件

  9.打开/FCKeditor/fckconfig.js
修改 FCKConfig.DefaultLanguage = 'zh-cn' ; 
把FCKConfig.LinkBrowserURL等的值替换成以下内容:

FCKConfig.LinkBrowserURL 
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ; 

FCKConfig.ImageBrowserURL 
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ; 

FCKConfig.FlashBrowserURL 
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ; 

FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ; 
FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ; 
FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ;

  10.其它
fckconfig.js总配置文件,可用记录本打开,修改后将文件存为utf-8 编码格式。找到:

  FCKConfig.TabSpaces = 0 ; 改为FCKConfig.TabSpaces = 1 ; 即在编辑器域内可以使用Tab键。

  如果你的编辑器还用在网站前台的话,比如说用于留言本或是日记回复时,那就不得不考虑安全了,
      在前台千万不要使用Default的toolbar,要么自定义一下功能,要么就用系统已经定义好的Basic,
     也就是基本的toolbar,找到:
     FCKConfig.ToolbarSets["Basic"] = [
     ['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-',
     'Smiley','SpecialChar','Replace','Preview'] ] ;
     这是改过的Basic,把图像功能去掉,把添加链接功能去掉,因为图像和链接和flash和图像按钮添加功能都能让前台
     页直接访问和上传文件, fckeditor还支持编辑域内的鼠标右键功能。

     FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField',
     /*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;

     这也是改过的把鼠标右键的“链接、图像,FLASH,图像按钮”功能都去掉。

  找到: FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
      加上几种我们常用的字体 
      FCKConfig.FontNames 
      = '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

     7、添加页面

<%@ page language="java" import="com.fredck.FCKeditor.*" %> 
<%@ taglib uri="/WEB-INF/tlds/FCKeditor.tld" prefix="FCK" %> 
<script type="text/javascript" src="http://dszhang.blog.163.com/blog/FCKeditor/fckeditor.js"></script> 
<form action="show.jsp" method="post" target="_blank"> 
<table border="0" width="700"><tr><td> 
<textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 400px">input</textarea> 
<script type="text/javascript"> 
var oFCKeditor = new FCKeditor('content') ; 
oFCKeditor.BasePath = "FCKeditor/" ; 
oFCKeditor.Height = 400; 
oFCKeditor.ToolbarSet = "Default" ;  
oFCKeditor.ReplaceTextarea(); 
</script> 
<input type="submit" value="Submit"> 
</td></tr></table> 
</form>


     编辑web.xml 文集 添加 如下片断

 
<servlet> 
  <servlet-name>SimpleUploader</servlet-name> 
  <servlet-class>com.fredck.FCKeditor.uploader.SimpleUploaderServlet</servlet-class> 
  <init-param> 
   <param-name>baseDir</param-name> 
   <param-value>/UserFiles/</param-value> 
  </init-param> 
  <init-param> 
   <param-name>debug</param-name> 
   <param-value>true</param-value> 
  </init-param> 
  <init-param> 
   <param-name>enabled</param-name> 
   <param-value>false</param-value> 
  </init-param> 
  <init-param> 
   <param-name>AllowedExtensionsFile</param-name> 
   <param-value></param-value> 
  </init-param> 
  <init-param> 
   <param-name>DeniedExtensionsFile</param-name> 
   <param-value>php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi</param-value> 
  </init-param> 
  <init-param> 
   <param-name>AllowedExtensionsImage</param-name> 
   <param-value>jpg|gif|jpeg|png|bmp</param-value> 
  </init-param> 
  <init-param> 
   <param-name>DeniedExtensionsImage</param-name> 
   <param-value></param-value> 
  </init-param> 
  <init-param> 
   <param-name>AllowedExtensionsFlash</param-name> 
   <param-value>swf|fla</param-value> 
  </init-param> 
  <init-param> 
   <param-name>DeniedExtensionsFlash</param-name> 
   <param-value></param-value> 
  </init-param> 
  <load-on-startup>1</load-on-startup> 
 </servlet> 
  <servlet-mapping> 
    <servlet-name>Connector</servlet-name> 
    <url-pattern>/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector</url-pattern> 
  </servlet-mapping> 
   
  <servlet-mapping> 
    <servlet-name>SimpleUploader</servlet-name> 
    <url-pattern>/FCKeditor/editor/filemanager/upload/simpleuploader</url-pattern> 
  </servlet-mapping>   

 <taglib> 
 <taglib-uri>/WEB-INF/FCKeditor.tld</taglib-uri> 
 <taglib-location>/WEB-INF/tlds/FCKeditor.tld</taglib-location> 
 </taglib>
  //引入在线编辑器
  include("../FCKeditor/fckeditor.php") ;
  这里我们先看一下调用FCKeditor的函数,2.0版的调用方式与1.6版变化不大,如果你以前安装过FCKeditor 1.6,那么只需要修改很少的代码升级到2.0。
  FCKeditor( instanceName[, width, height, toolbarSet, value]
引用值
含义
  InstanceName
实例化编辑器所需的唯一名称
  Width
编辑器的宽度,单位为象素或者百分比(可选择的,默认为:100%)
  Height
编辑器的高度,单位为象素或者百分比(可选择的,默认为:200)
  ToolbarSet
工具栏的名称(可选择的,默认为:Default)
  Value
编辑器的内容(HTML)初始值(可选择的)

  好啦,下面就让我们利用这个函数来定制FCKeditor吧。
 

$oFCKeditor = new FCKeditor('FCKeditor1')  ; 
$oFCKeditor->BasePath = '../FCKeditor/' ;    
$oFCKeditor->ToolbarSet = 'Default' ; 
$oFCKeditor->InstanceName = 'EditorDefault' ; 
$oFCKeditor->Width = '100%' ; 
$oFCKeditor->Height = '400' ; 
$oFCKeditor->Create() ;

你可能感兴趣的:(fckeditor)