FCKeditor插件开发

  FCKeditor插件开发建立一个WTP的WEB工程,解压FCKeditor的压缩包,将压缩包下面的FCKeditor目录拷贝到建立的WEB工程的WebContent目录下,目录结构如图所示:下面对FCKedior目录下面的目录及文件作一个说明:(1)    “_”开头的目录或文件为FCKeditor的DEMO等资料,都可以在工程中删除 (2)    edi
摘要由CSDN通过智能技术生成
  
FCKeditor 插件开发

建立一个WTPWEB工程,解压FCKeditor的压缩包,将压缩包下面的FCKeditor目录拷贝到建立的WEB工程的WebContent目录下,目录结构如图所示:

下面对FCKedior目录下面的目录及文件作一个说明:

(1)    “_”开头的目录或文件为FCKeditorDEMO等资料,都可以在工程中删除

(2)    editor目录

该目录为FCKeditor主要目录,目录结构如图:

该目录为FCKeditor的核心目录,包含了FCKeditor的核心文件,其中:

(1)    _sourceFCKEditor的源文件目录

(2)    cssFCKeditor的样式文件目录

(3)    dialogFCKeditor工具栏中相应的工具按钮的弹出对话框文件目录

(4)    filemanagerFCKeditor处理文件上传的文件目录

(5)    imagesFCKeditor中增加表情头像等资源的图像文件目录

(6)    jsFCKeditor的核心javascript文件目录

(7)    langFCKeditor的语言文件目录,包含国际化支持。

(8)    pluginsFCKeditor的插件目录,FCKeditor的插件开发文件都放入该目录

(9)    skinsFCKeditor的皮肤文件,自带三种皮肤文件default,office2003silver。

本文所写的插件开发,主要就是在plugins目录下进行的。下面说明如何编写FCKeditor插件:(在编写插件的时候借鉴了FCKeditor的插件placeholder,该插件也在plugins目录下)

(1)    plugins目录下面新建code目录

(2)    code目录下面新建lang目录

目录结构如图所示:

(3)    新建fckplugins.js文件,该文件为FCKeditor插件的定义文件,内容如下:

// 注册Code命令.
FCKCommands.RegisterCommand(  ' Code ' new  FCKDialogCommand(  ' Code ' , FCKLang.CodeDlgTitle, FCKPlugins.Items[ ' code ' ].Path  +   ' code.html ' 340 170  ) ) ;

//  注册名为”Code”的工具栏按钮
var  oCodeItem  =   new  FCKToolbarButton(  ' Code ' , FCKLang.CodeBtn ) ;
oCodeItem.IconPath 
=  FCKPlugins.Items[ ' code ' ].Path  +   ' code.gif '  ;

FCKToolbarItems.RegisterItem( 
' Code ' , oCodeItem ) ;


//  创建FCKCodes对象,通过FCKCodes对象处理工具栏按钮的操作
var  FCKCodes  =   new  Object() ;

下面分加对上面的各个命令作一下说明:

通过FCKCommandsRegisterCommand命令注册一个名为”Code”的命令,new FCKDialogCommand()说明”Code”命令为一个对话框命令,FCKLang.CodeDlgTitle为弹出对话框的标题,它的值在code目录下的lang目录下的语言文件中定义,lang目录下面en.js,zh_cn.js等是语言的资源文件,采用国际化资源文件的命名方式,下面给出zh_cn.js的内容:

FCKLang.CodeDlgTitle就说明在语言文件中有一个键为FCKLang.CodeDlgTitle的字符串。

FCKPlugins.Items['code'].Path + 'code.html', 340, 170 ) ),这个方法主要是用来加载code目录下面的code.html网页文件(该网页的内容在下面给出),上面说到的弹出对话框,就是以窗口的方式显示code.html这个网页文件。而下面的340,170是弹出的网页的大小(这个和windows.open()这个方法类似)

//  注册名为”Code”的工具栏按钮
var  oCodeItem  =   new  FCKToolbarButton(  ' Code ' , FCKLang.CodeBtn ) ;
oCodeItem.IconPath 
=  FCKPlugins.Items[ ' code ' ].Path  +   ' code.gif '  ;

通过FCKToolbarButton来定义一个名为”Code”的工具栏按钮,FCKLang.CodeBtn同样为获取语言文件中的字符串。

FCKPlugins.Items['code'].Path + 'code.gif' 用来加载code目录下面的code.gif图像文件,该图像用为工具栏按钮的位图文件。

FCKToolbarItems.RegisterItem( 'Code', oCodeItem ) 最后通过FCKToolbarItems.RegisterItem注册Code按钮。

(注意:上面的code都为plugins下面定义的code插件的目录名)

 

下面是fckcustom.js文件,内容如下:

 

//  ONLY CHANGE BELOW HERE
FCKConfig.SkinPath  =  FCKConfig.BasePath  +   ' skins/silver/ ' ;

FCKConfig.Plugins.Add( 
' code ' ' en,zh,zh-cn '  ) ;

FCKConfig.ToolbarSets[
" Plugin " =  [
    [
' Source ' , ' - ' , ' - ' , ' Templates ' ],
    [
' Cut ' , ' Copy ' , ' Paste ' , ' PasteWord ' , ' - ' , ' Print ' , ' SpellCheck ' ],
    [
' Undo ' , ' Redo ' , ' - ' , ' Find ' , ' Replace ' , ' - ' , ' SelectAll ' ],
    
' / ' ,
    [
' Bold ' , ' Italic ' , ' Underline ' , ' StrikeThrough ' , ' - ' , ' Subscript ' , ' Superscript ' ],
    [
' OrderedList ' , ' UnorderedList ' , ' - ' , ' Outdent ' , ' Indent ' ],
    [
' JustifyLeft ' , ' JustifyCenter ' , ' JustifyRight ' , ' JustifyFull ' ],
    [
' Link ' , ' Unlink ' ],
    
' / ' ,
    [
' Image ' , ' Table ' , ' Rule ' , ' Smiley ' ],
    [
' FontName ' , ' FontSize ' ],
    [
' TextColor ' , ' BGColor ' ],
    [
' - ' , ' Code ' ]
] ;

FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/silver/'为设定FCKeditor的皮肤文件,这些皮肤文件就是在FCKeditor/editor/skins目录下面的皮肤文件。

FCKConfig.Plugins.Add( 'code', 'en,zh,zh-cn' ) 为加载刚才自己定义的code插件(注意:这里的code都为plugins下面定义的code插件的目录名),后面的en,zh,zh-cn为该插件支持的语言,这里指定支持英文,简体中文和繁体中文(需要在插件目录的lang目录中编写语言文件)

可以看到,这就是一个普通的HTML文件,里面可以写HTML标签,也支持javascript的脚本语言,需要说明的是下面部分:

如上面代码所示,首先要加载自己定义的FCKeditor配置文件,就是我们刚才写的fckcustom.js文件,加外,我们在上面已经在自定义的ToolbarSets ---Plugin中加入了自定义的Code工具栏按钮,所以我们只要在FCKeditor中指定使用Plugin这一个工具栏设置就可以了。

最后效果如下图所示:

注意工具栏右下角的工具栏按钮,就是自己定义的按钮,code.gif图片内容,下图为弹出的网页:

var  oEditor  =  window.parent.InnerDialogLoaded() ;
var  FCKLang  =  oEditor.FCKLang ;
var  FCKCodes  =  oEditor.FCKCodes ;
window.onload 
=   function  ()
{
    oEditor.FCKLanguageManager.TranslatePage( document ) ;
    window.parent.SetOkButton( 
true ) ;    
}

var oEditor = window.parent.InnerDialogLoaded()通过这个方法,来获取弹出网页的父网页

接着就可以这个oEditor对象来获取FCKeditor的资源,包括刚才自定义的插件对象,像下面的

var FCKCodes = oEditor.FCKCodes来获取在fckplugins.js中定义的FCKCodes对象。

加一个要说明的地方是<span fckLang="CodeDlgName">,可以通过fckLang这个标签来获取在lang目录下面的语言文件中的语言资源,以此来实现FCKeditor的国际化。

通过window.onload()方法中网页文件加载时调用上面创建的oEditor对象的FCKLanguageManager对象的TranslatePage(document)方法给页面加入国际化支持。

并且指定父窗口的Ok命令可用。

FCKeditor中调用自定义插件

oFCKeditor.Config[ ' CustomConfigurationsPath ' =   ' ../editor/plugins/code/fckcustom.js ' ;
oFCKeditor.ToolbarSet 
=   " Plugin " ;

FCKConfig.ToolbarSets[ " Plugin " =  [
    [
' Source ' , ' - ' , ' - ' , ' Templates ' ],
    [
' Cut ' , ' Copy ' , ' Paste ' , ' PasteWord ' , ' - ' , ' Print ' , ' SpellCheck ' ],
    [
' Undo ' , ' Redo ' , ' - ' , ' Find ' , ' Replace ' , ' - ' , ' SelectAll ' ],
    
' / ' ,
    [
' Bold ' , ' Italic ' , ' Underline ' , ' StrikeThrough ' , ' - ' , ' Subscript ' , ' Superscript ' ],
    [
' OrderedList ' , ' UnorderedList ' , ' - ' , ' Outdent ' , ' Indent ' ],
    [
' JustifyLeft ' , ' JustifyCenter ' , ' JustifyRight ' , ' JustifyFull ' ],
    [
' Link ' , ' Unlink ' ],
    
' / ' ,
    [
' Image ' , ' Table ' , ' Rule ' , ' Smiley ' ],
    [
' FontName ' , ' FontSize ' ],
    [
' TextColor ' , ' BGColor ' ],
    [
' Code ' ]
] ;

这定义自己的工具栏,注意其中的[Code]Code为刚才定义的Code工具栏命令按钮,通过FCKConfig.ToolbarSets将自定义的插件加入到了工具栏中。

 

下面给出code.html文件内容:

 

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

< html >
    
< head >
        
< title > Code Properties </ title >
        
< meta  http-equiv ="Content-Type"  content ="text/html; charset=utf-8" >
        
< meta  content ="noindex, nofollow"  name ="robots" >
        
< link  href ="stylesheets/highlight.css"  media ="screen"  rel ="Stylesheet"
            type
="text/css"   />
        
< script  language ="javascript" >

var  oEditor  =  window.parent.InnerDialogLoaded() ;
var  FCKLang  =  oEditor.FCKLang ;
var  FCKCodes  =  oEditor.FCKCodes ;

window.onload 
=   function  ()
{
    oEditor.FCKLanguageManager.TranslatePage( document ) ;
    window.parent.SetOkButton( 
true  ) ;    
}

function  Ok()
{
   
var  select  =  document.getElementById( ' code_type ' );
   FCKCodes.Add(select.options[select.selectedIndex].innerHTML,document.getElementById(
' code_text ' ).value);
    
return   true  ;
}
</ script >
    
</ head >
    
< body  scroll ="no"  style ="OVERFLOW: hidden" >
        
< table  height ="100%"  width ="95%"  align ="center" >
            
< tr  height ="40" >
                
< td >< span  fckLang ="CodeDlgName" ></ span ></ td >
                
< td >
                    
< select  id ="code_type" >
                        
< option  selected ="selected" > java </ option >
                        
< option > ruby </ option >
                        
< option > python </ option >
                        
< option > c/c++ </ option >
                        
< option > c# </ option >
                        
< option > sql </ option >
                        
< option > xml </ option >
                        
< option > css </ option >
                        
< option > javascript </ option >
                    
</ select >
                
</ td >
                
</ td >
            
</ tr >
            
< tr  valign ="top" >
                
< td >< span  fckLang ="Code" ></ span ></ td >
                
< td >< textarea  id ="code_text"  cols ="90"  rows ="20" ></ textarea ></ td >
            
</ tr >
        
</ table >
    
</ body >
</ html >

FCKLang.CodeBtn                      =   ' 插入代码 '  ;
FCKLang.Code                        
=   ' 代码 ' ;
FCKLang.CodeDlgTitle               
=   ' 插入代码 '  ;
FCKLang.CodeDlgName                
=   ' 语言 '  ;
FCKLang.CodeErrNoName              
=   ' 请输入代码 '  ;

// 注册Code命令.
FCKCommands.RegisterCommand(  ' Code ' new  FCKDialogCommand(  ' Code ' , FCKLang.CodeDlgTitle, FCKPlugins.Items[ ' code ' ].Path  +   ' fck_code.html ' 340 170  ) ) ;
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值