`

FckEditor自定义 button 和 formcommand

阅读更多
源文链接:
http://www.cnblogs.com/dsliang/archive/2008/12/18/1357594.html

个人觉得这文章很适合初开发FCK插件的朋友~
一:插件的目录结构
   插件目录的名称必须和插件的名称一样,而且目录里面必须包含一个fckplugin.js文件。可选包含一个lang目录用来实现界面的国际化。每一个文件定义一种语言,文件名不包含.js,用FCKConfig.Plugins.Add()注册。如果实现的插件命令没有界面,也可以不需要支持任何语言。
   比如:findreplace插件的目录结构如下:
  /editor/plugins/findreplace/fckplugin.js
  /editor/plugins/findreplace/lang/en.js
  /editor/plugins/findreplace/lang/zh.js
   在fckplugin.js文件中定义你的插件,同时也应该注册改命令,以及创建一个工具栏按钮。

   注册代码说明:


//注册命令,RegisterCommand(命令名,命令)
FCKCommands.RegisterCommand(
   'My_Find',
    new FCKDialogCommand(
        FCKLang['DlgMyFindTitle'],
        FCKLang['DlgMyFindTitle'],
        FCKConfig.PluginsPath + 'findreplace/find.html', 340, 170));

FCKCommands.RegisterCommand('My_Replace',
    new FCKDialogCommand(
        FCKLang['DlgMyReplaceTitle'],
        FCKLang['DlgMyReplaceTitle'],
        FCKConfig.PluginsPath + 'findreplace/replace.html', 340, 200)) ;

//创建工具栏按钮,现创建,再注册。
var oFindItem = new FCKToolbarButton('My_Find', FCKLang['DlgMyFindTitle']);
oFindItem.IconPath = FCKConfig.PluginsPath + 'findreplace/find.gif' ;
FCKToolbarItems.RegisterItem( 'My_Find', oFindItem ) ;

var oreplaceItem = new FCKToolbarButton( 'My_Replace', FCKLang['DlgMyReplaceTitle']);
oreplaceItem.IconPath = FCKConfig.PluginsPath + 'findreplace/replace.gif';
FCKToolbarItems.RegisterItem('My_Replace', oreplaceItem);


二:安装插件:
安装前把解压的包拷贝到editor/plugins目录下,然后按下列步骤进行:
1、先确定按钮在工具栏的位置
最好在定制的配置文件中,新写一个工具栏来包含新的插件。

定制配置文件:

FCKConfig.ToolbarSets['PluginTest'] = [
    ['Source'],
    ['Placeholder'],
    ['My_Find', 'My_Replace'],
    ['Table','-',
        'TableInsertRow', 'TableDeleteRows',
        'TableInsertColumn', 'TableDeleteColumns',
        'TableInsertCell', 'TableDeleteCells',
        'TableMergeCells', 'TableSplitCell'
    ],
    ['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','-','About']
] ;

2:添加插件同样,可以直接在定制文件中添加插件。可以直接把插件放置到默认目录下,或者在FCKConfig.Plugins.Add方法里面的第三个参数指定插件所在的位置。
//代码分析:

FCKConfig.Plugins.Add( pluginName, availableLanguages, pathToPlugin )
        pluginName: 插件名称或者插件目录名称.
        availableLanguages: 逗号分割的可用语言列表.
        pathToPlugin: 绝对路径,指插件的所占目录,包括插件本身一层目录



在默认位置添加插件

FCKConfig.Plugins.Add( 'findreplace', 'en,it' ) ;

在其他位置添加插件,在add方法传递插件的绝对路径。

FCKConfig.PluginsPath = FCKConfig.BasePath.substr(0, FCKConfig.BasePath.length - 7) + '_samples/_plugins/' ;
var sOtherPluginPath = FCKConfig.BasePath.substr(0, FCKConfig.BasePath.length - 7) + 'editor/plugins/' ;
FCKConfig.Plugins.Add( 'placeholder', 'en,it', sOtherPluginPath ) ;
FCKConfig.Plugins.Add( 'tablecommands', null, sOtherPluginPath ) ;



//////////////////////////////////////////////////////////////////////////////////////////////
按照下面的操作一次相信你会学到不少~
一:基于对话框的插件:一步一步创建基于对话框的fck插件。

以创建一个简单的超级链接为例。可以从已经存在的placeholder插件的目录作为基本的骨架。


1. 命名插件名称为:"InsertLink". ,并建立同名的目录,并且在InsertLink目录下创建一个Lang的目录,lang目录下至少有一个文件en.js。该文件中至少要有按钮和对话框标题的国际化信息,比如:

FCKLang.InsertLinkBtn = 'Insert/Edit Link' ; //按钮的标题
FCKLang.InsertLinkDlgTitle = 'Link Properties' ; //对话框的标题

2:图片,在InsertLink文件夹中添加图片文件,最好将图片文件命名为和插件名一样的名称。图片的大小要求是20*21,并且是透明的。
3:javascript:
添加fckplugin.js文件到InsertLink目录。
注册相关命令:

//注册命令的方法是FCKCommands.RegisterCommand(命令名称,对话框命令)
//创建对话框命令的格式:new FCKDialogCommand( 命令名称, 对话框标题,url路径, 宽度,高度)

FCKCommands.RegisterCommand( 'InsertLink', new FCKDialogCommand( 'InsertLink', FCKLang.InsertLinkDlgTitle, 
FCKPlugins.Items['InsertLink'].Path + 'fck_InsertLink.html', 340, 200 ) ) ;

// 创建工具栏按钮 new FCKToolbarButton( 按钮名称, 按钮标题 ) ;
var oInsertLinkItem = new FCKToolbarButton( 'InsertLink', FCKLang.InsertLinkBtn ) ;
oInsertLinkItem.IconPath = FCKPlugins.Items['InsertLink'].Path + 'InsertLink.gif' ;
FCKToolbarItems.RegisterItem( 'InsertLink', oInsertLinkItem ) ;

//创建用于所有InsertLink操作的对象
var FCKInsertLink = new Object() ;

//在当前的选择上插入一个超级链接
// 这个添加的方法将在弹出窗口点击ok按钮时被调用。
// 该方法将会接收从对话框中传来的值。

FCKInsertLink.Add = function( linkname, caption )
{
if(linkname.substr(0,4) != "http" && linkname.substr(0,4) != "HTTP")
linkname = "http://"+linkname ;
FCK.InsertHtml("<a href='"+linkname+"'>"+caption+"</a>") ;
}

4:html
在InsertLink目录下添加请求的文件。
请求文件的模板代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Link Properties</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta content="noindex, nofollow" name="robots">
<script language="javascript">

var oEditor = window.parent.InnerDialogLoaded() ;
var FCK = oEditor.FCK ;
var FCKLang = oEditor.FCKLang ;
var FCKInsertLink = oEditor.FCKInsertLink ;

window.onload = function ()
{
LoadSelected() ; //see function below
window.parent.SetOkButton( true ) ;
}

//从编辑器中得到当前的被选择的元素,有以下两种方法:

//1. 可用于image等元素的选择。
//var eSelected = oEditor.FCKSelection.GetSelectedElement() ;

//2. 由于有内部文本的元素
var eSelected = FCK.Selection.MoveToAncestorNode( 'A' )
if ( eSelected ) 
FCK.Selection.MoveToNode( eSelected ) ;

//如果超级练级被选择,那么显示超级链接的属性
function LoadSelected()
{
if ( !eSelected )
return ;

txtHref.value = eSelected.href ; 
txtCaption.value = eSelected.innerText ; 

//适合于第一种选择操作的代码:
// if ( eSelected.tagName == 'IMG' ) {
// -- code for setting dialog values -- }
// else
// eSelected == null ; //this will replace the current selection if not the right type

}

//点击ok按钮发生的操作
function Ok()
{
if ( document.getElementById('txtHref').value.length > 0 )
FCKInsertLink.Add( txtHref.value, txtCaption.value ) ; 

return true ;
}
</script> 
</head>

<body scroll="no" style="OVERFLOW: hidden">
<table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td>
<table cellSpacing="0" cellPadding="0" align="center" border="0">
<tr>
<td>
Type the URL for the link<br>
<input id="txtHref" type="text"><br>
Type the caption for the link<br>
<input id="txtCaption" type="text">
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>

<!-- End Code -->

5:编辑fckconfig.js文件,并加入下列代码,注册插件。

FCKConfig.Plugins.Add( 'InsertLink', 'en' ) ;
//在工具栏集合中定义命令名称。
FCKConfig.ToolbarSets["Default"] = [
, ['InsertLink'] 
分享到:
评论

相关推荐

    fckeditor九套皮肤

    除了预设的九套皮肤,FCKeditor还支持自定义皮肤。开发者可以创建自己的皮肤,通过调整CSS样式和图片资源,实现完全个性化的界面设计。这需要对CSS和HTML有一定的理解,但FCKeditor提供了详细的文档和示例,帮助...

    FCKeditor2.5自定义不限大小文件上传

    修正了FCKeditor的文件上传,用户可以自己修改FCKeditor\editor\filemanager\browser\default\FileUploadInFCK.aspx.cs文件中的SaveFile方法。灵活的实现自己对上传文件的管理。需要配合AjaxPro.2.dll

    FCKEditor 自定义用户目录的修改步骤 (附源码)

    以下是对FCKEditor自定义用户目录的修改步骤和相关知识点的详细说明。 1. FCKEditor获取用户文件目录的原理 FCKEditor在处理用户上传的文件时,需要确定文件存储的位置。其默认行为是在FCKeditor的安装目录下的...

    asp fckeditor自定义上传文件的文件名

    在ASP环境中,FCKEditor的文件上传功能是通过文件管理器(file manager)和其对应的连接器(connector)实现的,连接器是一个ASP脚本,负责处理文件上传的逻辑。在FCKEditor的安装目录下,有一个专门负责文件上传的...

    自定义FCKeditor编辑框

    在本项目中,我们看到开发者对FCKeditor进行了深度的自定义,使其功能更加符合特定需求。自定义FCKeditor编辑框不仅涉及到前端界面的优化,也包括后端的集成与交互,以实现一个可以直接运行的应用。 首先,我们要...

    FCKeditor.Net_2.6.3.zip和FCKeditor-v2.6.3

    4. **自定义扩展**:开发者可以通过API和插件系统对FCKeditor进行扩展,添加自定义功能或修改原有功能,以满足特定需求。 5. **多语言支持**:内置多种语言包,方便不同地区的用户使用。 6. **源代码视图**:用户...

    对FCKeditor HTML编辑器 封装成自定义控件

    - **自定义**:这意味着我们要对FCKeditor进行一定程度的修改和调整,使其符合特定项目的需求,可能包括外观、功能、行为等方面。 **详细知识点:** 1. **FCKeditor/CKEditor介绍**:FCKeditor是一个JavaScript...

    fckeditor编辑器插件

    这需要对AJAX技术有基本理解,以及对fckeditor的`FCK.ExecuteCommand()`方法的应用,该方法可以执行预定义或自定义的命令,包括发送异步请求。在收到服务器响应后,同样利用上述方法将数据整合到编辑器中。 总的来...

    fckeditor设置和使用方法

    - FCKeditor支持自定义样式和模板,可以通过修改`fckstyles.xml`和`fcktemplates.xml`来实现。 - 可以利用`Plugins`目录中的插件扩展功能,或者开发自己的插件。 通过以上步骤,你可以在ASP.NET项目中成功集成并...

    FCKeditor添加自定义按钮

    在FCKeditor目录里的fckconfig.js打开,找到FCKConfig.ToolbarSets[“Default”] 这里的设置是配置功能按钮的,你需要的留下,不需要的可以删掉,也可以注释掉。 如需要多种配置,可以设置多个FCKConfig....

    用JSP自定义标签输出Fckeditor

    在本文中,我们将深入探讨如何在JSP中使用自定义标签来输出Fckeditor,一个流行的JavaScript富文本编辑器。Fckeditor允许用户在网页上创建和编辑复杂的内容,提供了丰富的文本格式化选项,使得非技术人员也能方便地...

    fckeditor和级联菜单日历实例

    在IT行业中,富文本编辑器(FCKeditor)是一款广泛使用的在线文本编辑工具,它允许用户在网页上创建、编辑和格式化文本,类似于桌面版的Microsoft Word。FCKeditor以其丰富的功能和易于集成的特点,深受开发者喜爱。...

    fckeditor源文件和demo

    - **文件管理**:FCKeditor通常与文件上传和管理功能结合使用,需要设置一个文件服务器来存储和访问用户上传的文件,如图片和文档。 通过深入研究这些提供的资源,开发者不仅可以将FCKeditor集成到Java项目中,还能...

    最新FCKeditor_2.6 版本 FCKeditor编辑器和控件

    兼容目前的浏览器 里面包含FCKeditor编辑器和控件 一、集成方法 FCKeditor应用在ASP.NET上,需要两组文件,一组是FCKeditor本身,另一个是用于ASP.NET的FCKeditor控件(分为1.1和2.0两个版本,这里使用2.0版本)。 ...

    FCKeditor_2.6.8.zip

    - **自定义配置**:开发人员可以根据需求自定义编辑器的外观和功能,例如设置工具栏按钮、语言选项等。 **2. FCKeditor的使用方法** 在FCKeditor 2.6.8中,开发人员需要将压缩包解压后,将相关文件整合到网站项目...

    FCKeditor开发jar包及fckeditor文件夹

    FCKeditor是一款开源的Web富文本编辑器,广泛应用于网页制作和内容管理系统中,它提供了类似于Microsoft Word的编辑体验,允许用户在浏览器中编辑文本、插入图片、创建超链接等。这个压缩包“FCKeditor开发jar包及...

    fckeditor和使用方法

    FCKeditor还允许开发者进行自定义和扩展,以满足特定需求: - **语言支持**:默认支持多种语言,可以通过修改语言文件进行定制。 - **插件开发**:可以开发新的插件,增加编辑器的功能,如插入特殊字符、地图等。 -...

    asp.net FCKeditor自定义非空验证

    ***与FCKeditor结合使用时,为了保证用户输入的内容不为空,常规的实践是利用***的内置验证控件RequiredFieldValidator来实现。然而,在实践中,可能会遇到这样的问题:当第一次提交表单时,验证无法通过,需要提交...

    fckeditor实现语法高亮和保存功能

    总的来说,通过集成和自定义,我们可以让FCKeditor具备更高级的功能,如代码语法高亮和自定义保存,提升用户体验。对于开发者来说,理解并掌握这些扩展技巧对提升工作效率大有裨益。在实际应用中,可能还需要考虑...

    FCKeditor_2.6.5和中文帮助文档

    FCKeditor 2.6.5是该编辑器的一个特定版本,它在2.6系列中提供了一些关键改进和功能增强。 1. **编辑器界面与功能** - **WYSIWYG(所见即所得)**: FCKeditor 提供了一个直观的界面,让用户在浏览器中看到的文本...

Global site tag (gtag.js) - Google Analytics