修改配置fckeditor

    由于从网上下载的fckeditor过大并且也不适于自己的需要,而4ngel提供的精简版( http://www.sablog.net/blog/?action=show&id=379 )又去掉了一些我所需要的功能(比如图片上传),于是萌生了自己修改的想法。说干就干,步骤记录 如下:首先从官方网站上下载fckeditor2.6,地址: http://www.fckeditor.net/download ,解压开来后,删除所有以"_"开头的文件夹和文件,另外根目录下只保留以下文件:fckconfig.js,fckeditor.js,fckeditor.php,fckeditor_php5.hp,fckstyles.xml,fcktemplates.xml
默认的编辑器样式是上半部分没有边框的,而4ngel提供的则是有边框的,看起来也更加美观。对此进行修改:

   打开editor目录下的fckeditor.html文件,找到 id="xToolbarSpace" 的td行(大概在第271行),修改其style为:"overflow: hidden;border:1px solid #696969;border-width:1px 0 0 1px;",此处是设置工具栏的左边框和上边框,再找到id="xCollapseHandle"所在行,在其style上加入padding:0,此处是为了减小显示/隐藏工具栏所占用的空间。经此修改后的界面为:

注:由于是事后记录,以上的工具栏是重新配置过的~

      下一步替换掉原来的默认表情,而使用4ngel精简版中的表情。方法如下:将准备好的QQ表情复制到/editor/images/smiley目录中,这里也可以新建个目录或者复制到其中目录中,最后修改fckconfig.js文件,找FCKConfig.SmileyPath所在行,修改此配置值。比如我是在smiley下新建个qq目录,并将表情拷贝到其中,则对应的配置是:

FCKConfig.SmileyPath    = FCKConfig.BasePath + 'images/smiley/qq/' ;
然后再修改FCKConfig.SmileyImages为

FCKConfig.SmileyImages    = ['1.gif','10.gif','11.gif','12.gif','13.gif','14.gif','15.gif','16.gif','17.gif','18.gif','19.gif',

'2.gif','20.gif','21.gif','22.gif','23.gif','24.gif','25.gif','26.gif','27.gif','28.gif','29.gif',

'3.gif','30.gif','31.gif','32.gif','33.gif','34.gif','35.gif','36.gif','37.gif','38.gif','39.gif',

'4.gif','40.gif','41.gif','42.gif','43.gif','44.gif','45.gif','46.gif','47.gif','48.gif','49.gif',

'5.gif','50.gif','51.gif','52.gif','53.gif','54.gif','55.gif','56.gif','57.gif','58.gif','59.gif',

'6.gif','60.gif','61.gif','62.gif','63.gif','64.gif','7.gif','8.gif','9.gif'] ;

同时,再修改

FCKConfig.SmileyColumns
FCKConfig.SmileyWindowWidth
FCKConfig.SmileyWindowHeight
 

的值。至此,表情替换完成。

    接下来将fck汉化,找到fckconfig.js中以下两行

FCKConfig.AutoDetectLanguage 
FCKConfig.DefaultLanguage 
 

将其值分别设为false和zh-cn。fckeditor语言文件在editor/lang目录下,可将多余的语言文件删除。

    再修改fckeditor的字体列表,可在FCKConfig.FontNames配置项中加入中文常用字体,如“宋体;黑体;隶书;楷体_GB2312”。

    最后再按自己所需对工具栏进行配置。至此配置算是完成了。

    接下来做的是修改一些上传方面的设置。首先修改的是插入图片中的文件上传功能。按照官方说明,找到fckconfig中的

FCKConfig.ImageUploadURL
 

 配置,此配置定义了图片上传表单的action值,如果不修改此值,则默认由/editor/filemanager/connectors中的相关文件来处理,对于PHP环境,则由php/upload.php来处理。

    由于我的项目是基于ThinkPHP编写的,因此此处我将此值设定为:FCKConfig.BasePath+'../../../../../index.php/Public/uploadImage,由PublicAction的uploadImage来处理图片上传。首先需要了解由服务端返回给客户端的消息类型,找到\editor\dialog\fck_image.js文件,在OnUploadCompleted函数中,我们可以看到由服务器返回给客户端的信息类型:

errNumer共有:0,表明上传成功,201表明由于存在同名文件故将上传文件重命名,202表明非法/无效的文件类型,203表明没有上传权限,500表明connector被禁用,另外1为自定义错误,101为自定义警告,其他情况下为在上传过程中发生错误。除errNumber外,服务器还要返回上传后文件的URL,文件名,自定义信息。OnUploadCompleted的声明为:

    OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )

完整的服务器输出参见io.php(位于 /editor/filemanager/connectors/php目录中 ),代码如下:

function SendUploadResults( $errorNumber, $fileUrl = '', $fileName = '', $customMsg = '' )
{
	// Minified version of the document.domain automatic fix script (#1919).
	// The original script can be found at _dev/domain_fix_template.js
	echo <<<EOF
<script type="text/javascript">
(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
EOF;

	$rpl = array( '\\' => '\\\\', '"' => '\\"' ) ;
	echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . strtr( $fileUrl, $rpl ) . '","' . strtr( $fileName, $rpl ) . '", "' . strtr( $customMsg, $rpl ) . '") ;' ;
	echo '</script>' ;
	exit ;
}

   

至此,我们可以编写出自己所需upload处理代码了。

 

 //先到这里了...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值