`
j2eeli
  • 浏览: 44737 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FCKeditor,添加自定义工具栏---插入代码

阅读更多

文章开始前,把两位达人的BLOG先发出来:

 

清清泡泡http://j2ee.blog.sohu.com/36813753.html(详细讲解了如何添加自定义工具栏,可是很多都是不需要的步骤)
幻想曲http://www.lemongtree.com/Archives/fckedit_toolbar.aspx
http://www.lemongtree.com/Archives/fckeditor_toolbar_2.aspx(只给了源码没说明,= =!源码地址在16楼的回复里)

 

另外,插入代码功能的JS脚本是用了 月伤 melody  制作的双鱼文本编辑器 PiscesTextEditor V1.0中的脚本,要特别感谢!

作品链接:http://www.2fstory.net/blog/View.aspx?blogID=47      

 

首先,打开fckeditor下的fckconfig.js文件,找到FCKConfig.ToolbarSets["Default"]FCKConfig.ContextMenu 在他们后面加上InsertCode,这个当然是自己要添加的工具栏的名字了。然后,我们在“fckeditor\editor\lang\”文件夹下找到zh-cn.js,在最后一行后面加上以下2句:

//自定义

InsertCode:"插入代码",

InsertCodeProp:"插入代码属性"

注意在这2句前DlgAboutInfo      : "要获得更多信息请访问 "后面加个逗号。当然,还可以同样方法修改其他语言js文件,我就修改了繁体的zh.js和英文的en.js

 

    现在,我们已经定义了工具栏,开始第二大步,打开“fckeditor\editor\js\”下的fckeditorcode_gecko.jsfckeditorcode_ie.js,我们开始注册工具栏;

第一步:在2个文件中搜索“InsertHorizontalRule”,在后面加上“InsertCode”。

第二步:同样在2个文件中搜索“default:if (FCKRegexLib”,在“default”之前加上这么一句:

Case 'InsertCode':B = new FCKDialogCommand('InsertCode' , FCKLang.InsertCode ,'dialog/InsertCode/InsertCode.htm',510,450);break;

这句话意思就是,点击工具栏图标时打开InsertCode.htm文件,定义了高和宽,至于文件内容我们之后再说。

第三步:还是在这2个文件,搜索“default:alert(FCKLang.UnknownToolbarItem”,在“default”之前加上下面一句:

case 'InsertCode':B = new FCKToolbarButton('InsertCode' , FCKLang.InsertCode,null,null,null,null,67);

        这句话意思是定义了工具栏的图标,FCKeditor的默认图标文件是“fckeditor\editor\skins\default\”下的fck_strip.gif图片,本人由于不想用重复的默认图标,因此加了一个小图片:

新增的插入代码图片20*20

默认图片是16*2056,用PS把画布加长到16*2072,再把自己的小图片放到最下面,这样,自定义的图片刚好排67位。以后加新功能还可以依次增加此图片。

好了。经过这么3步,我们已经把自定义工具栏加上去了。(在about之后,如果想加在中间,可以在刚才的第二和第三步里把添加的语句加到相应的Case前面。)

 

    做了这么多,任务算完成1/3,加油!

下面我们开始定义“InsertCode.htm”文件:

    在“fckeditor\editor\dialog\”下新增InsertCode文件夹,新建HTM文件InsertCode.htm,里面代码先拷贝“fckeditor\editor\dialog\fck_textfield.html”文件,好了,,大手术开始:

 

    首先,在“<title></title>”中加上“Insert Code Properties”,这个是打开的新窗体的标题;更改FCKeditorJS文件“common/fck_dialog_common.js”的引用为“../common/fck_dialog_common.js”,再加上双鱼编辑器里的插入代码脚本“<script src="code.js" type="text/javascript"></script>”。

然后更改“window.onload = function()”函数,把里面的if  {}  else{}删除掉,再把function Ok()里的代码全部删除,加上下面2句:

oEditor.FCK.InsertHtml(code()) ;

    window.parent.Cancel() ;

因为我们是更改成代码格式的字符串加到FCKeditor编辑器里,所以用到内置的InsertHtml函数,code()函数传过来的是字符串;至于下面的html代码,就更改为双鱼编辑器里InsertCode.htm的代码(这里就不提供了,本人把更改好的放上来,这里只做个简单说明)。

    下面我们修改“code.js”文件里的代码,把“function code()”里的

window.returnValue = FormateCode(str,language,showLine,canCollapse,canAllCollapse,allRegion);

window.close();

这两句更改为一句:

return FormateCode(str,language,showLine,canCollapse,canAllCollapse,allRegion);

 

好了,至此,就可以使用插入代码功能了。(添加其他功能的时候到这一步就可以完成了。)

完成后的编辑器图片:
 
最后效果图

看见最后一个图片没,这就是了,点击后出现的图形为:

弹出的窗口图片

 

嘿,兴冲冲地试了下,诶呀,怎么代码前这么多红XX呢?看下源代码,原来里面的折叠图片路径全是错的,这下郁闷了,试了N种方法,都没用。无奈,最后查看FCKeditor中其他的htm文件,发现个东东:FCKConfig.BasePath,作用是取得editor文件夹的相对路径,例如我的例子就是:“/AJAXEnabledWebSite1/FCKeditor/editor/”。好了,那现在为了得到我们存放折叠图片的文件夹路径,我们现在要定义一个变量,打开fckconfig.js文件,在文件最后一行之后加上这么一句:

FCKConfig.CodePath  = FCKConfig.BasePath + 'dialog/InsertCode/codeimages/' ;

    有了图片路径之后,我们的继续修改“code.js”文件:

首先,在“function code()”前面加上下面3句:

var oEditor = window.parent.InnerDialogLoaded() ;

var FCKConfig = oEditor.FCKConfig ;

var CodeImagePath   = FCKConfig.CodePath ;//得到图片所在文件夹路径

搜索“PiscesTextEditor/codeimages/”,全部替换为“”(即,全部删除。注意:是空,不是空格;)

同样搜索“PiscesTextEditor\/codeimages\/”,全部替换为“”

替换好之后,我们就要用到上面的图片所在文件夹路径了,我们这里使用正则替换字符串。

搜索“if (showLine) str = AddLineNumber(str);   ”,在它前面加上下面2句:

var src = /\b(src=")\b/g;

    str = str.replace(src,'src="'+CodeImagePath);//得到正确路径

意思就是,把所有img控件的只有图片名的src路径替换为正确的相对路径。

 

好了。。修改就到这里,不过,还只是完成了95%,为什么呢,仔细试了下,双鱼编辑器的插入代码功能还有好多BUG。喜欢看下去的朋友继续看,不喜欢的可以直接下载我的文件了。

今天到此为止,明天我们继续,修改Code.js文件,减少点BUG,源码明天提供

分享到:
评论
3 楼 AI渣娃 2010-08-19  
我最近也在研究自定义组件。要实现的功能就是在编辑器中插入模板语言和JSP标签语言。想实现的效果就是点右键,选择自定义标签,确定。然后源代码里就插入这个语句<test a=2 test/>,视图页面显示的是一个自定义的图标。比较有难度 呵呵
2 楼 j2eeli 2010-07-27  
shang548 写道
看起来好像是挺复杂的!

弄清楚原理就简单了:)
1 楼 shang548 2010-07-08  
看起来好像是挺复杂的!

相关推荐

    FCK编辑器(FCKEditor)添加新按钮和功能的修改方法

    最近项目需要对已有的FCKeditor添加新的功能,以前的做法只是在外壳处再次封装,这次无法满足需求只能进行内部修改了。

    FCKeditor使用指南

    4.7 自定义工具栏按钮 17 4.8 自定义右键菜单 18 5 文件上传问题 19 5.1 开启和关闭文件上传功能(fckconfig.js) 19 5.2 文件上传的基本使用 19 5.3 上传中文文件名的文件会出现乱码 20 5.4 创建中文名目录会出现...

    FCKeditor RedFishX配置版 1.1

    600为宽度 400为高度 “redfishx”为自定义的工具栏集合名称。 &lt;br&gt;redfishx是一个精简的工具栏,包含大部分常用功能,建议您直接使用。 &lt;br&gt;为了让FCKEditor更好地为我们所用,以后我会亲自编写...

    FCKeditor RedFishX配置版

    配置:红鱼X (http://blog.csdn.net/redfishx) 功能:大部分在线Web编辑器功能,精简了工具栏,另外加上了代码插入功能。 &lt;br&gt; &lt;br&gt;使用方法如下(示例): 首先把下载的文件解压到某文件夹,然后在...

    fckedit编辑器

    1.FCKeditor自定义标签 (必须加头文件 &lt;%@ taglib uri="/TestFCKeditor" prefix="FCK" %&gt; ) 2.script脚本语言调用 (必须引用 脚本文件 &lt;script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js...

    Fckeditor2.6.4插件 for pjblog

    6、更换了QQ表情包关于FCK本身工具栏按钮添加删除和改变布局的方法: 如果FCK编辑器的工具栏中本身自带的某些按钮对你没有用处,你可以通过修改来去掉他们,或者也可以改变他们在工具栏中的位置。 方法是打开...

    fckconfig.js中文注释

    //启动fckeditor工具栏默认是否展开 34. FCKConfig.ToolbarCanCollapse = true ;//是否允许折叠或展开工具栏 35. FCKConfig.IgnoreEmptyParagraphValue = true ;//是否忽略空的段落值 36. FCKConfig....

    ASP.NET 3.5 开发大全11-15

    1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3...

    ASP.NET 3.5 开发大全1-5

    1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3...

    ASP.NET 3.5 开发大全

    1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3...

    ASP.NET 3.5 开发大全word课件

    1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3...

    ASPNET35开发大全第一章

    1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3...

    ASP.NET3.5从入门到精通

    目录 第一篇 .NET基础 第 1 章认识 ASP.NET 3.5 1.1 什么是ASP.NET 1.1.1 .NET 历史与展望 1.1.2 ASP.NET 与ASP ...18.5.1 在客户端添加WCF 服务 18.5.2 在客户端使用WCF 服务 18.6 小结 第 19 章 WPF...

Global site tag (gtag.js) - Google Analytics