之前给茶饭后的fckeditor编辑器做过一次添加自定义工具按钮,也有想把添加方法整理一下的念头,当时懒,以为添加一次就可以了,以后很少用到,没想到今天又用到了,之前怎么添加的忘的差不多,又去查资料,这次索性整理一个完整的添加方法以备后用。
我需要在工具栏添加一个用来向编辑区插入一条链接信息的按钮,具体可以看截图:
点击确定后,向编辑区插下如下代码:
手术开始,Fckeditor的
下载地址,当前版本2.6.3。
需要修改的文件:
- fckeditor\fckconfig.js
- fckeditor\editor\lang\zh-cn.js
- fckeditor\editor\js\fckeditorcode_gecko.js
- fckeditor\editor\js\fckeditorcode_ie.js
- fckeditor\editor\skins\default\fck_strip.gif
- fckeditor\editor\_source\internals\fckcommands.js
- fckeditor\editor\_source\internals\fckregexlib.js
- fckeditor\editor\_source\internals\fcktoolbaritems.js
需要添加的文件:
- fckeditor\editor\dialog\fck_playgame.htm
- 首先要给工具栏按钮起个名字,我这里起名叫PlayGame。
现在先来修改文件1.fckconfig.js,在文件的119行,有个叫Basic的工具栏定义,我在“关于”按钮的后面加入我的自定义按钮,修改完的代码如下:['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About','PlayGame']
- 然后修改文件2.zh-cn.js,在文件的结尾处加入如下信息:(注意加入之后,先给最后一行DlgDivInlineStyle:”CSS 样式”的结尾加上,号)
PlayGame : "本地游戏", PlayGameProp : "本地游戏属性", DlgPlayGameWidth : "宽度", DlgPlayGameHeight : "高度", DlgPlayGameFileName : "文件名", DlgPlayGameLinkTxt : "链接文字", DlgPlayGameErrorWidth : "游戏宽度不能为空", DlgPlayGameErrorHeight : "游戏高度不能为空", DlgPlayGameErrorFileName : "游戏文件名不能为空", DlgPlayGameErrorLinkTxt : "链接文字不能为空"
- 然后是修改文件3.fckeditorcode_gecko.js和文件4.fckeditorcode_ie.js,两个文件的修改内容完全一样。
- 查找InsertHorizontalRule,在后面加入|PlayGame
- 查找default:if (FCKRegexLib,在前面加入如下代码,用于显示点击按钮后的浮动窗口,后三个参数分别是窗口对应的文件名,宽,高。
case 'PlayGame':B=new FCKDialogCommand('PlayGame',FCKLang.PlayGame,'dialog/fck_playgame.htm',380,300);break;
- 查找default:alert(FCKLang.UnknownToolbarItem,在前面加入如下代码,用于显示按钮样式,78的意思就是文件5.fck_strip.gif中对应的小图。
case 'PlayGame':B = new FCKToolbarButton('PlayGame' , FCKLang.PlayGame,null,null,null,null,78);break;
- 修改文件5.fck_strip.gif,把画布的高度向下增加16个像素,然后找个16像素的图标放进来,那么它对应的数字就是78了,如果你不确定而且有足够耐心,可以数一下,哈哈。
- 继续修改文件6.fckcommands.js,查找到 case ‘Undefined’ : oCommand = new FCKUndefinedCommand() ; break ;,在后面加入如下代码:
case 'PlayGame' : oCommand=new FCKDialogCommand('PlayGame',FCKLang.PlayGame,'dialog/fck_playgame.htm',380,300); break ;
- 文件7.fckregexlib.js,查找NamedCommands,同样在这一行的结尾InsertHorizontalRule后面加入|PlayGame
- 文件8.fcktoolbaritems.js,查找FCKLang.ShowBlocks, null, null, null, true, 72 ) ; break ;,在下一行加入如下代码:
case 'PlayGame' : oItem = new FCKToolbarButton( 'PlayGame' , FCKLang.PlayGame, null, null, null, null, 78); break;
- 剩下最后一个文件fck_playgame.htm,内容较多,就不放进日志了