FCKeditor的几点修改小结
程序员文章站
2022-06-09 20:41:41
在我的文章系统中,打算使用fckeditor作为在线文本编辑器,在开发过程中,有几个地方需要对编辑器 进行修改,才能满足功能设计。 一、修改默认的上传文件名 &...
在我的文章系统中,打算使用fckeditor作为在线文本编辑器,在开发过程中,有几个地方需要对编辑器
进行修改,才能满足功能设计。
一、修改默认的上传文件名
fckeditor上传文件时,默认使用客户端的文件名,遇到重名文件,则自动重新命名,对于中文名称
的文件也是如此,这样对中文支持不好的服务器和浏览器,就容易对中文文件名的编解码出现错误而导致
乱码,因此需要将默认的文件命名方法修改为以当前日期、时间为基本要素的文件名,同时,为了避免重
复,还要用到随机函数。在.net中,可以用system.redom.next(min, max)来生成一个介于min和max之间
的随机数,但要注意的时,system.redom必须实例化。
此处修改需要fckeditor的源代码并进行重新编译,使用vs.net 2003打开工程文件,对uploader.cs
文件进行修改。
首先,将第46行string sfilename = system.io.path.getfilename( ofile.filename );注释掉;
其次,在其下方加入如下代码
datetime dt = datetime.now;
string sfilename = dt.year.tostring() + dt.month.tostring() + dt.day.tostring() +
dt.hour.tostring() + dt.minute.tostring() + dt.second.tostring() + dt.millisecond + new
system.random().next(0, 999).tostring();
sfilename += system.io.path.getextension( ofile.filename );
这样,sfilename就是形如“20070510171005230010.jpg”的文件名了,并且不可能出现重复文件名
的现象。
按下组合快捷键ctrl+shift+b生成解决方案,将项目文件夹下的bin/debug/fredck.fckeditorv2.dll
组件拷贝到网站根目录下的bin目录中,即可在网站工程中进行引用了。
二、把上传的图片动态加入编辑器所在页面的下拉列表中
由于需要指定文章的标志图片,除了输入以外,还应该可以从下拉列表中选择已经上传的图片,这样
,就必须在fckeditor上传完图片时,*纵编辑器所在页面的select,并为其加入新的option。此处的关
键在于对静态模式网页对话框父窗口的引用,以及利用javascript加入option。
打开fckeditor编辑器所在目录的\editor\dialog\fck_image\fck_image.js文件,在文件上传成功的
事件部分,加入以下代码。
var ddl = oeditor.parent.document.form1.ddlpicurl;
var opt = oeditor.parent.document.createelement("option")
opt.text = filename;
opt.value= fileurl
ddl.options.add(opt);
其中,oeditor是fckeditor是对网页对话框的父窗口的引用,而oeditor.parent就是对编辑器所在页
面的引用了。
获取这样一个列表后,就可以在文章发布页面编写相关的javascript函数,来实现预览、选择等功能
进行修改,才能满足功能设计。
一、修改默认的上传文件名
fckeditor上传文件时,默认使用客户端的文件名,遇到重名文件,则自动重新命名,对于中文名称
的文件也是如此,这样对中文支持不好的服务器和浏览器,就容易对中文文件名的编解码出现错误而导致
乱码,因此需要将默认的文件命名方法修改为以当前日期、时间为基本要素的文件名,同时,为了避免重
复,还要用到随机函数。在.net中,可以用system.redom.next(min, max)来生成一个介于min和max之间
的随机数,但要注意的时,system.redom必须实例化。
此处修改需要fckeditor的源代码并进行重新编译,使用vs.net 2003打开工程文件,对uploader.cs
文件进行修改。
首先,将第46行string sfilename = system.io.path.getfilename( ofile.filename );注释掉;
其次,在其下方加入如下代码
datetime dt = datetime.now;
string sfilename = dt.year.tostring() + dt.month.tostring() + dt.day.tostring() +
dt.hour.tostring() + dt.minute.tostring() + dt.second.tostring() + dt.millisecond + new
system.random().next(0, 999).tostring();
sfilename += system.io.path.getextension( ofile.filename );
这样,sfilename就是形如“20070510171005230010.jpg”的文件名了,并且不可能出现重复文件名
的现象。
按下组合快捷键ctrl+shift+b生成解决方案,将项目文件夹下的bin/debug/fredck.fckeditorv2.dll
组件拷贝到网站根目录下的bin目录中,即可在网站工程中进行引用了。
二、把上传的图片动态加入编辑器所在页面的下拉列表中
由于需要指定文章的标志图片,除了输入以外,还应该可以从下拉列表中选择已经上传的图片,这样
,就必须在fckeditor上传完图片时,*纵编辑器所在页面的select,并为其加入新的option。此处的关
键在于对静态模式网页对话框父窗口的引用,以及利用javascript加入option。
打开fckeditor编辑器所在目录的\editor\dialog\fck_image\fck_image.js文件,在文件上传成功的
事件部分,加入以下代码。
var ddl = oeditor.parent.document.form1.ddlpicurl;
var opt = oeditor.parent.document.createelement("option")
opt.text = filename;
opt.value= fileurl
ddl.options.add(opt);
其中,oeditor是fckeditor是对网页对话框的父窗口的引用,而oeditor.parent就是对编辑器所在页
面的引用了。
获取这样一个列表后,就可以在文章发布页面编写相关的javascript函数,来实现预览、选择等功能
上一篇: ASX文件 终极教程第1/2页