比如cuteeditor5.0经本人测试发现默认已支持文件名含中文字符的文件上传,在cutesoft_clientcuteeditor configurationsecuritydefault.config文件中,也是没有<security name="filenamepattern" />节点的。另外cuteeditor5.0不支持把上传的文件自动命名为时间格式,因为在cutesoft_clientcuteeditor configurationsecuritydefault.config文件中没有<security name="usetimestamprenameuploadedfiles">true</security>节点,你就是给它加 上也是不起作用的。最后就是cuteeditor5.0在firefox浏览器中运行的不是很好,光标无法定位到编辑器内,解决办法就是先切换到html 视图,然后在切换回普通视图,此时再在编辑器内单击光标,就可以把光标定位到编辑器中。
cuteeditor6.0页面前端不能用脚本gethtml()获得编辑器内容,因为gethtml()根本不存在,既不在当前页面脚本中定义, 也在外链脚本中也找不找这个方法的定义,而cuteeditor5.0可以(cuteeditor5.0有些脚本方法即使存在,在不同浏览器下不一定都能 正常工作)。博客园是用了较新版本的cuteeditor,前台脚本对编辑器内容的验证只是作了非空验证,它的代码是这样的:
if (document.getelementbyid('ce_editor_edit_editorbody_id') != null && document.getelementbyid('ce_editor_edit_editorbody_id').value == '')
{
alert("请输入内容!");
return false;
}
一、第一印象
第一印象用八个字形容完全不过分,即“功能强大,配置灵活”。
二、最简单的配置
最简单的配置就是一切使用默认配置,从网上下载这个编辑器后往网站根目录下对应目录一丢就完毕。这非常适合首次使用cuteeditor的用户,他往往想第一时间看看cuteeditor运行起来是什么样子的。
现在说说这种最简单的配置。cuteeditor真正的代码其实就存在两个文件夹中,已编译代码存在bin目录,包含 (cuteeditor.dll、cuteeditor.imageeditor.dll、netspell.spellchecker.dll、 cuteeditor.lic、*.dic),另一个文件夹就是cutesoft_client。其中bin目录中的 netspell.spellchecker.dll和众多的dic文件是拼写功能要用到的,使用与否自由决定。
假设你的网站根目录为wwwroot,把上面两个文件夹丢到wwwroot目录下,然后在wwwroot目录下新建一个名为“uploads”的文 件夹(大小写当然无关,通常这个文件夹已在cuteeditor案例包中),这就是编辑器上传文件默认存放的文件夹。最终的网站目录结构看起来像下面那 样:
wwwroot/bin/ cuteeditor.dll
cuteeditor.imageeditor.dll
……wwwroot/cutesoft_client/cuteeditor/
wwwroot/cutesoft_client/cuteeditor/ configuration/
……
现在把bin目录的cuteeditor.dll添加到vs工具箱,以方便使用,不用自己书写代码和设置属性等。操作方法是打开vs后,在工具箱的 “常规”选项卡下右键选择“选择项”,在出现的对话框中选择“浏览”按钮,找到bin目录下的cuteeditor.dll添加即可,此时回到vs窗口, 发现工具箱多出了如下控件列表,另外cuteeditor.imageeditor.dll也可以添加进来。
此时拖动editor控件到页面中,点击右键可以查看编辑器的属性、事件等,如下图。
此时你甚至不设置任何属性就运行这个页面,你会发现一切正常了。这时回到网站目录下发现多出两个文件来了:1、wwwroot/bin /app_licenses.dll,2.wwwroot/licenses.licx。看名字就知道是软件授权文件,不用管它,记得在把网站上传到服务 器的时候,把这两个文件一起上传就没错了。
现在讲讲如何在服务器端和客户端获取和设置编辑器的内容。
〖服务器端〗
获取:string editorcontent = this.editor1.text
设置:this.editor1.text = "编辑器内容……"
〖客户端〗
获取:var editorcontent = document.getelementbyid('<%=editor1.clientid%>').gethtml()
设置:document.getelementbyid(' <%=editor1.clientid%>').sethtml("编辑器内容……")
gethtml()和sethtml()两个客户端脚本方法在cuteeditor5.0通过,6.0版本不行(“写在前面”部分内容有讲过),但 可以这样document.getelementbyid('<%=editor1.clientid%>').value,这样得到的值有 些字符被编码了,所以此方法用来验证一下内容输入还是可以的,博客园编辑器就是用这种方法验证非空的。
三、初级(常见)配置
使用默认配置显然在很多场合下是不适用的。现在我特别讲讲cuteeditor文件上传控制。cuteeditor可以上传不同类型的文件(图片、 flash、音视频、文档文件等),可以限制单文件大小和格式,还可以把不同类型文件存在不同的文件夹,并可以控制各文件夹的大小,比如默认情况下图片等 文件都是上传到wwwroot/uploads文件夹中的,单张图片最大限制是200k,图片最多上传到100m 。
这些配置节点都可以在wwwroot cutesoft_clientcuteeditorconfigurationsecuritydefault.config文件中进行修 改,打开此文件,根据节点的命名,你应该知道各个节点是配置什么属性的,如果不清楚,请查看我的参考文章。
因为通常编辑器中要上传的文件都是图片文件,所以我根据一个类似新闻发布编辑器进行以下配置,并作说明。
<security name="overwriteexistinguploadedfile">true</security>
<security name="usetimestamprenameuploadedfiles">true</security>
<security name="imagegallerypath">~/admin/newsimages</security>
<security name="maximagesize">1024</security>
<security name="maximagefoldersize">1024000</security>
<security name="imagefilters">
<item>.jpg</item>
<item>.jpeg</item>
<item>.gif</item>
<item>.png</item>
</security>
上面配置表示可以上传的单张图片最大为1024k(1m),图片上传总容量为1024000k(1g),允许上传的图片格式为jpg、jpeg、 gif、png,图片统统上传到wwwroot/admin/newsimages文件夹。其中把 usetimestamprenameuploadedfiles设为true是让上传的图片在服务器上自动重命名为时间的格式,像这样 “20090711154023805.jpg”,而不是原来的名字。overwriteexistinguploadedfile设为true是覆盖存 在的同名文件,如果这个选项不打开,在本地电脑有两张同名图片,其实图片内容是不一样的,都是无法同时上传的。其它类型文件配置同理。
另外在cuteeditor控件属性列表中可以修改以下三个常用属性:
(1)autoconfigure="simple" 编辑器工具栏按钮显示复杂度(多少)选项,这里选择简单的,即较少按钮那种编辑器界面。
(2)customculture="zh-cn" 对于多国语言版本,这里可以设置成对应的语言,这是设为“中文”。
(3)themetype="office2003_bluetheme" 设置编辑器风格,从window系统主题去理解你就清楚了。
四、更多配置
在一开始的时候我就说过cuteeditor的配置是很灵活的,配置的选项也是特别多,一方面我们可以在vs属性栏改一部分配置,也可以在cs代码 中动态改变属性,这都是针对一个编辑器实例的,也可以改wwwrootcutesoft_clientcuteeditor configuration文件下的各个配置文件,这些通常是全局的,比如像上面那样,把图片指定保存在wwwroot/admin /newsimages,这样你在几个地方使用了编辑器,图片都是保存在下面文件夹的。具体怎么改呢?cuteeditor都有哪些属性?可以参考官方文 档。配置太多了,我都只是了解了点皮毛。
另外在wwwrootcutesoft_clientcuteeditorconfigurationsecurity下可以看到有三个文 件:admin.config、default.config、guest.config,这是为不同用户角色准备的。至于每个编辑器实例要使用那个配置 文件,可以在cuteeditor控件的属性窗口改变securitypolicyfile属性的值。在实际应用中,在同一个页面为不同会员等级的用户分 配不同的配置文件,一方面可以根据用户权限选择显示对应的panel,每个panel放置调用不同配置文件的编辑器实例,另一个更好的办法就是在代码中动 态改变securitypolicyfile的属性值。
五、其它高级应用思路
(1)为每个用户分配属于自己的上传文件夹。
比如你把cuteeditor编辑器用在多用户博客系统中,你将需要这种解决方案。博客园(cnblogs.com)就是用cuteeditor编辑器的一个案例。下面代码实现把每个用户上传文件存放到uploads目录下以他用户名命名的子文件夹中:
string username = session["username"].tostring();
fullpath = server.mappath("uploads") + username;
if (!directory.exists(fullpath))
{
directory.createdirectory(fullpath);
}
this.editor1.setsecuritygallerypath("~/uploads/" + username);
(2)为不同等级用户分配不同大小的文件上传空间。
比如qq移动硬盘分配给用户的大小免费与收费当然是不一样的。在一些多用户博客系统中,为了激励一些积极的博主,可以为某些用户开绿色通道,提供更 大的文件存储空间。cuteeditor一样可以实现这样的功能。实现思路是在wwwrootcutesoft_clientcuteeditor configurationsecurity文件夹下建立多个配置文件(默认已有三个配置文件了),每个文件对应一种用户权限,然后在调用编辑器的页 面的代码页动态改变编辑器的securitypolicyfile属性,把其属性值设置为security目录下对应配置文件的名字就行了。
六、注意事项
(1)文件名含中文字符的文件无法上传问题。
编辑cutesoft_clientcuteeditorconfigurationsecuritydefault.config文件, 找到节点<security name="filenamepattern" />,修改成<security name="filenamepattern">^[a-za-z0-9._s-u4e00-u9fa5]+$< /security>,然后保存即可。
(2)授权问题。
如果使用的编辑器没有许可文件将出现授权提示,影响你正常使用,请购买许可。我用的是特别版,当然不可用于商业用途。许可文件就是根目录下的“licenses.licx”文件。
(3)应用主题(theme)设置后,编辑器上传图片等对话框出错问题。
这个错误是.net运行错误,根据错误信息可以知道对应那个对话框页面的<head>标签缺少“runat=”server””属性。 找到对应的错误页,加上那个runat属性,使其最终看起来像这样就行了:<head runat="server">。
(4)uploads目录权限问题。
就是在服务器上要为编辑器上传文件的文件夹开放everyone用户可写入权限