fckeditor 插件参考一

2024-03-21 02:38
文章标签 插件 参考 fckeditor

本文主要是介绍fckeditor 插件参考一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一:插件的目录结构
插件目录的名称必须和插件的名称一样,而且目录里面必须包含一个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 ) ;
在弹出窗口上访问编辑器:
1、如何在编辑器中插入文本:

前置约定:
插件名:insertvariables
插件位置:editor/plugins/insertvariables/

//创建自己的命令,不采用FCKDialogCommand的目的是FCKDialogCommand使用的是fck的缺省布局。
var InsertVariableCommand=function(){
};
InsertVariableCommand.prototype.Execute=function(){
}
//让按钮不能点击。
InsertVariableCommand.GetState=function() {
return FCK_TRISTATE_OFF; }
//打开弹出窗口
InsertVariableCommand.Execute=function() {
window.open('insertVariable.do', 'insertVariable', 'width=500,height=400,scrollbars=no,scrolling=no,location=no,toolbar=no');
}
//注册命令:
FCKCommands.RegisterCommand('Insert_Variables', InsertVariableCommand );
//注册按钮
var oInsertVariables = new FCKToolbarButton('Insert_Variables', 'insert variable');
oInsertVariables.IconPath = FCKConfig.PluginsPath + 'insertvariables/variable.gif';
FCKToolbarItems.RegisterItem( 'Insert_Variables', oInsertVariables );

//插入变量的请求页面:insertVariable.do
<html><head> etc...
<script language="javascript">
<!--
var variable = null;
var FCK = window.opener.FCK;
function ok() {
if(variable != null) {
FCK.Focus(); //只在ie中有效
var B = FCK.EditorDocument.selection.createRange();
B.text = variable;
}
window.close();
}
//-->
</script>
</head>
<body>
etc..
<a href="#" onClick="variable='this is a test'; ok();">insert text</a>
</body>
</html>

//在fckconfig.js文件中加入以下字段
FCKConfig.Plugins.Add( 'insertvariables' ) ;
FCKConfig.ToolbarSets["myToolbar"] = [
['Bold','Italic','Underline'],['Insert_Variables']
] ;
        2、关联上下文菜单选项:将插件的command注册到上下文菜单中:FCK.ContextMenu.RegisterListener( {
AddItems : function( menu, tag, tagName )
{
// 符合条件显示:if ( tagName == 'IMG' && !tag.getAttribute( '_fckfakelement' ) ) if ( tagName == 'SPAN' && tag._fckplaceholder )
{
// 显示分隔符 menu.AddSeparator() ;
// 需要注册命令名,标题,以及图片路径。 menu.AddItem( 'placeholder', FCKLang.PlaceholderDlgTitle, oPlaceholderItem.IconPath ) ;
}
}}
);
一:基于对话框的插件:一步一步创建基于对话框的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 插件参考一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/831531

相关文章

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

eclipse安装subversion(SVN)版本控制插件

陈科肇 查看插件更新站点 网址:http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA 网站截图: 根据自己的eclipse版本,选择需要的更新站点. 使用eclipse集成subservion插件 Help > Install New Software…> 等待下载安装插件…

Weex入门教程之2,Android Studio安装Weex插件

插件位置及描述 https://plugins.jetbrains.com/idea/plugin/8460-weex 貌似对windows还不是很支持,先放着吧。 安装 插件功能 先预览下都有什么功能 安装完成Weex插件后,如果在main toolbar找不到这些功能图标,那么就需要手动添加到main toolbar 添加到main toolbar 红框内就是

mybatis框架基础以及自定义插件开发

文章目录 框架概览框架预览MyBatis框架的核心组件MyBatis框架的工作原理MyBatis框架的配置MyBatis框架的最佳实践 自定义插件开发1. 添加依赖2. 创建插件类3. 配置插件4. 启动类中注册插件5. 测试插件 参考文献 框架概览 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射,为开发者提供了极大的灵活性和便利性。以下是关于M

PrestaShop免费模块/插件/扩展/工具下载

PrestaShop免费模块/插件/扩展/工具下载 PrestaShop免费模块 适用于您的电子商务网站的PrestaShop模块 现有超过3,000个PrestaShop模块可帮助您自定义在线商店,增加流量,提高转化率并建立客户忠诚度。 使您的电子商务网站成功! 下载(超过142+之多的PrestaShop官网认证的免费模块) 标签PrestaShop免费, PrestaShop免费工

zblog自定义关键词和描述,zblog做seo优化必备插件

zblog自定义关键词和描述,zblog做seo优化必备插件     首先说下用到的一款插件:CustomMeta自定义数据字段 ,我们这里用到的版本是1.1,1.1+版增加了列表页标签支持!     插件介绍:文章,分类等添加自定义数据字段。1.1+版适用于 Z-Blog 2.0 B2以上版本。     在zblog2.0beta1里面,这个插件是集成到了程序里面,beta2里面默认没有了

2024 年高教社杯全国大学生数学建模竞赛 C 题 农作物的种植策略 参考论文 无水印

持续更新中,2024年数学建模比赛思路代码论文都会发布到专栏内,只需订阅一次!  完整论文+代码+数据结果链接在文末!  订阅后可查看参考论文文件 第一问 1.1 问题重述 这个问题围绕的是华北山区的某乡村,在有限的耕地条件下,如何制定最优的农作物种植策略。乡村有 34 块露天耕地和 20 个大棚,种植条件包括粮食作物、蔬菜、水稻和食用菌。除了要考虑地块的面积、种植季节等,还要确保