﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JAVA流通桥-文章分类-Fckeditor编辑器</title><link>http://www.blogjava.net/zhuyan/category/29968.html</link><description>JAVA启发者</description><language>zh-cn</language><lastBuildDate>Mon, 10 Mar 2008 12:25:20 GMT</lastBuildDate><pubDate>Mon, 10 Mar 2008 12:25:20 GMT</pubDate><ttl>60</ttl><item><title>实战FCKeditor，添加自定义工具栏---插入代码（一） </title><link>http://www.blogjava.net/zhuyan/articles/185172.html</link><dc:creator>朱岩</dc:creator><author>朱岩</author><pubDate>Mon, 10 Mar 2008 10:49:00 GMT</pubDate><guid>http://www.blogjava.net/zhuyan/articles/185172.html</guid><wfw:comment>http://www.blogjava.net/zhuyan/comments/185172.html</wfw:comment><comments>http://www.blogjava.net/zhuyan/articles/185172.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhuyan/comments/commentRss/185172.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhuyan/services/trackbacks/185172.html</trackback:ping><description><![CDATA[<p>打开fckeditor下的fckconfig.js文件，找到FCKConfig.ToolbarSets["Default"]和FCKConfig.ContextMenu 在他们后面加上&#8221;InsertCode&#8221;，这个当然是自己要添加的工具栏的名字了。然后，我们在&#8220;fckeditor\editor\lang\&#8221;文件夹下找到zh-cn.js，在最后一行后面加上以下2句： <br />
//自定义</p>
<p>InsertCode:"插入代码",</p>
<p>InsertCodeProp:"插入代码属性"</p>
<p>注意在这2句前DlgAboutInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : "要获得更多信息请访问 "后面加个逗号。当然，还可以同样方法修改其他语言js文件，我就修改了繁体的zh.js和英文的en.js</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 现在，我们已经定义了工具栏，开始第二大步，打开&#8220;fckeditor\editor\js\&#8221;下的fckeditorcode_gecko.js和fckeditorcode_ie.js，我们开始注册工具栏；</p>
<p>第一步：在2个文件中搜索&#8220;InsertHorizontalRule&#8221;，在后面加上&#8220;InsertCode&#8221;。</p>
<p>第二步：同样在2个文件中搜索&#8220;default:if (FCKRegexLib&#8221;，在&#8220;default&#8221;之前加上这么一句：</p>
<p>Case 'InsertCode':B = new FCKDialogCommand('InsertCode' , FCKLang.InsertCode ,'dialog/InsertCode/InsertCode.htm',510,450);break;</p>
<p>这句话意思就是，点击工具栏图标时打开InsertCode.htm文件，定义了高和宽，至于文件内容我们之后再说。</p>
<p>第三步：还是在这2个文件，搜索&#8220;default:alert(FCKLang.UnknownToolbarItem&#8221;，在&#8220;default&#8221;之前加上下面一句：</p>
<p>case 'InsertCode':B = new FCKToolbarButton('InsertCode' , FCKLang.InsertCode,null,null,null,null,67);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这句话意思是定义了工具栏的图标，FCKeditor的默认图标文件是&#8220;fckeditor\editor\skins\default\&#8221;下的fck_strip.gif图片，本人由于不想用重复的默认图标，因此加了一个小图片:</p>
<p>（20*20）</p>
<p>默认图片是16*2056，用PS把画布加长到16*2072，再把自己的小图片放到最下面，这样，自定义的图片刚好排67位。以后加新功能还可以依次增加此图片。</p>
<p><br />
好了。经过这么3步，我们已经把自定义工具栏加上去了。（在about之后，如果想加在中间，可以在刚才的第二和第三步里把添加的语句加到相应的Case前面。）</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 做了这么多，任务算完成1/3，加油！</p>
<p>下面我们开始定义&#8220;InsertCode.htm&#8221;文件：</p>
<p>&nbsp;&nbsp;&nbsp; 在&#8220;fckeditor\editor\dialog\&#8221;下新增InsertCode文件夹，新建HTM文件InsertCode.htm，里面代码先拷贝&#8220;fckeditor\editor\dialog\fck_textfield.html&#8221;文件，好了，，大手术开始：</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 首先，在&#8220;&lt;title&gt;&lt;/title&gt;&#8221;中加上&#8220;Insert Code Properties&#8221;，这个是打开的新窗体的标题；更改FCKeditor的JS文件&#8220;common/fck_dialog_common.js&#8221;的引用为&#8220;../common/fck_dialog_common.js&#8221;，再加上双鱼编辑器里的插入代码脚本&#8220;&lt;script src="code.js" type="text/javascript"&gt;&lt;/script&gt;&#8221;。</p>
<p>然后更改&#8220;window.onload = function()&#8221;函数，把里面的if&nbsp; {}&nbsp; else{}删除掉，再把function Ok()里的代码全部删除，加上下面2句：</p>
<p>oEditor.FCK.InsertHtml(code()) ;</p>
<p>&nbsp;&nbsp;&nbsp; window.parent.Cancel() ;</p>
<p>因为我们是更改成代码格式的字符串加到FCKeditor编辑器里，所以用到内置的InsertHtml函数，code()函数传过来的是字符串；至于下面的html代码，就更改为双鱼编辑器里InsertCode.htm的代码（这里就不提供了，本人把更改好的放上来，这里只做个简单说明）。</p>
<p>&nbsp;&nbsp;&nbsp; 下面我们修改&#8220;code.js&#8221;文件里的代码，把&#8220;function code()&#8221;里的</p>
<p>window.returnValue = FormateCode(str,language,showLine,canCollapse,canAllCollapse,allRegion);</p>
<p>window.close();</p>
<p>这两句更改为一句：</p>
<p>return FormateCode(str,language,showLine,canCollapse,canAllCollapse,allRegion);</p>
<p>&nbsp;</p>
<p>好了，至此，就可以使用插入代码功能了。（添加其他功能的时候到这一步就可以完成了。）</p>
<p>完成后的编辑器图片：<br />
&nbsp;</p>
<p><br />
看见最后一个图片没，这就是了,点击后出现的图形为：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>嘿，兴冲冲地试了下，诶呀，怎么代码前这么多红XX呢？看下源代码，原来里面的折叠图片路径全是错的，这下郁闷了，试了N种方法，都没用。无奈，最后查看FCKeditor中其他的htm文件，发现个东东：FCKConfig.BasePath，作用是取得editor文件夹的相对路径，例如我的例子就是：&#8220;/AJAXEnabledWebSite1/FCKeditor/editor/&#8221;。好了，那现在为了得到我们存放折叠图片的文件夹路径，我们现在要定义一个变量，打开fckconfig.js文件，在文件最后一行之后加上这么一句：</p>
<p>FCKConfig.CodePath&nbsp; = FCKConfig.BasePath + 'dialog/InsertCode/codeimages/' ;</p>
<p>&nbsp;&nbsp;&nbsp; 有了图片路径之后，我们的继续修改&#8220;code.js&#8221;文件：</p>
<p>首先，在&#8220;function code()&#8221;前面加上下面3句：</p>
<p>var oEditor = window.parent.InnerDialogLoaded() ;</p>
<p>var FCKConfig = oEditor.FCKConfig ;</p>
<p>var CodeImagePath&nbsp;&nbsp; = FCKConfig.CodePath ;//得到图片所在文件夹路径</p>
<p>搜索&#8220;PiscesTextEditor/codeimages/&#8221;，全部替换为&#8220;&#8221;（即，全部删除。注意：是空，不是空格；）</p>
<p>同样搜索&#8220;PiscesTextEditor\/codeimages\/&#8221;，全部替换为&#8220;&#8221;</p>
<p>替换好之后，我们就要用到上面的图片所在文件夹路径了，我们这里使用正则替换字符串。</p>
<p>搜索&#8220;if (showLine) str = AddLineNumber(str);&nbsp;&nbsp; &#8221;，在它前面加上下面2句：</p>
<p>var src = /\b(src=")\b/g;</p>
<p>&nbsp;&nbsp;&nbsp; str = str.replace(src,'src="'+CodeImagePath);//得到正确路径</p>
<p>意思就是，把所有img控件的只有图片名的src路径替换为正确的相对路径。</p>
<p>&nbsp;</p>
<p>原文标题：实战FCKeditor，添加自定义工具栏---插入代码 - EC80电子商务<br />
原文网址：http://ec80.cn/html/64/n-1664.html</p>
<img src ="http://www.blogjava.net/zhuyan/aggbug/185172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhuyan/" target="_blank">朱岩</a> 2008-03-10 18:49 <a href="http://www.blogjava.net/zhuyan/articles/185172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>