在上一个文章中,介绍了自己写的一个image上传的ckeditor的 js的 扩展
,发现在editor.destory();后在生成editor的时候,自己写的image上传的就调用不了了,没有自己查明原因,觉得可能是 CKEditor.on('pluginsLoad',function(){})的加载的问题,于是修改成了插件的方式。
建立步骤如下:
1.首先在ckeditor的plugins文件夹下面建立一个myAddImage文件夹,注意
最好文件夹得名字的大小写
,如果你用是linux系统,那么如果把myAddImage 写成 myaddimage 那么ckeditor会获取不到,我在测试的时候就犯了这个错误。
2.在myAddImage文件夹下建立plugin.js文件。
文件内容:
CKEDITOR.plugins.add( 'myAddImage',{
init : function( editor )
{
/*
/* 获取CKEditorFuncNum
*/
var getFuncNum = function(url) {
var reParam = new RegExp('(?:[\?&]|&)CKEditorFuncNum=([^&]+)', 'i') ;
var match = url.match(reParam) ;
return (match && match.length > 1) ? match[1] : '' ;
};
/*
/* iframe onload处理
* 这段可以放在外面,根据不同的返回值自行进行处理
*/
var getAjaxResult = function (t){
var _id = this.getId();
var _doc = this.getFrameDocument();
//获取页面返回值
var data = _doc.getBody().getHtml();
//firebrowser的处理
CKEDITOR.tools.callFunction(t.listenerData, data);
this.removeListener('load', getAjaxResult);
}
CKEDITOR.dialog.add( 'myAddImage', function( editor )
{
return {
title : '添加图片',
minWidth : 400,
minHeight : 200,
contents :
[
{
id : 'addImage',
label : '添加图片',
title : '添加图片',
filebrowser : 'uploadButton',
elements :
[
{
id : 'txtUrl',
type : 'text',
label : '图片网址',
required: true
},
{
id : 'photo',
type : 'file',
label : '上传图片',
style: 'height:40px',
size : 38
},
{
type : 'fileButton',
id : 'uploadButton',
label : '上传',
filebrowser :
{
action : 'QuickUpload',
target : 'addImage:txtUrl',
onSelect:function(fileUrl, errorMessage){
//在这里可以添加其他的操作
}
},
onClick: function(){
var d = this.getDialog();
var _photo = d.getContentElement('addImage','photo');
_funcNum = getFuncNum(_photo.action);
var _iframe = CKEDITOR.document.getById(_photo._.frameId);
//可以查看ckeditor.event doc 了解此段代码
//http://docs.cksource.com/ckeditor_api/
_iframe.on('load', getAjaxResult, _iframe, _funcNum);
},
'for' : [ 'addImage', 'photo']
}
]
}
],
onOk : function(){
_src = this.getContentElement('addImage', 'txtUrl').getValue();
if (_src.match(/(^\s*(\d+)((px)|\%)?\s*$)|^$/i)) {
alert('请输入网址或者上传文件');
return false;
}
this.imageElement = editor.document.createElement( 'img' );
this.imageElement.setAttribute( 'alt', '' );
this.imageElement.setAttribute( 'src', _src );
//图片插入editor编辑器
editor.insertElement( this.imageElement );
}
};
});
editor.addCommand( 'myImageCmd', new CKEDITOR.dialogCommand( 'myAddImage' ) );
editor.ui.addButton( 'AddImage',
{
label : '图片',
icon:'images/images.jpg', //toolbar上icon的地址,要自己上传图片到images下
command : 'myImageCmd'
});
},
requires : [ 'dialog' ]
});
可以看出和上个文章的myeditor.js 的代码与本文中CKEDITOR.dialog.add中没有什么区别。
关于为什么要用额外的
getAjaxResult
是因为有很多时候,我们的返回值不一定就直接是图片web地址,可能是json数据,要进行处理。
我没有发现firebrowser的
onSelect:function(fileUrl, errorMessage){
//在这里可以添加其他的操作
}
会有对目标(
target : 'addImage:txtUrl',
)
的值的更新能够处理的,不论你在onselect中对fileUrl如何赋值,都不会影响txtUrl中的值。
3.就是外部如何调用这个plugin了
var editor = CKEDITOR.replace( id,
{
extraPlugins : 'myAddImage', //就是这里
toolbar : ['Source','-','Bold','Italic','Underline','Strike','-','Link','-','Unlink','-','AddImage'],
filebrowserUploadUrl : '/upload.php'
});
你也可以在config.js里面添加
extraPlugins : 'myAddImage'
这句话
分享到:
相关推荐
ckeditor-简单图像插件 一个为 CKEditor 添加图片的简单插件 #GPL 许可证 该程序是免费软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证(许可证的第 3 版或(由您选择)任何更高版本)的条款重新分发和/或...
CKEditor 4图片上传CKEditor 4的简单隐藏iframe图片上传按钮下载档案将imageupload文件夹上传到ckeditor插件文件夹 [removed][removed][removed] CKEDITOR.plugins.addExternal('imageupload', '/ckeditor/plugins/...
#CKEditor Image Uploader 这是直接从您的计算机上传图像文件的解决方案之一。 使用 Bootstrap、jQuery 和 PHP 构建。 #Step by Step 要上传图片,我们只需要点击上传图片按钮,浏览您要上传的图片,最后我们只需要...
如果你想改变图片上传对话框的外观或功能,可以修改`dialog/image2.js`文件。这里可以调整字段的显示顺序、添加自定义选项,甚至添加新的表单字段来收集额外的信息,如图片描述或分类。 4. **扩展上传功能**: ...
文件列表中的"ckeditor5-build-classic"很可能是编辑器的构建文件夹,包含JavaScript、CSS、图片等资源,用于在网页中集成CKEditor 5 Classic Build。 在实际应用中,CKEditor 5 Classic Build 10.0.1可以用于: -...
CKEditor5-plugins基于ckeditor5的,适用于自定义构建的插件包。要使用此插件包,则不建议直接使用官方的classic、document、inline、balloon等构建,建议自定义构建features 包含功能├── src│ ├── clear-...
3. **添加CKFinder插件到CKEditor**:CKEditor支持插件系统,我们需要将CKFinder的插件文件(`ckfinder_plugin.js`)复制到CKEditor的`plugins`目录下。 4. **注册CKFinder插件**:在CKEditor的实例化代码中,使用`...
"ckeditor5-custom-upload" 是一个基于 CKEditor 5 的自定义上传插件项目,它主要用于在富文本编辑器中实现用户友好的文件上传功能。CKEditor 5 是一个流行的开源富文本编辑器,提供强大的文本格式化、媒体插入和...
然后通过JavaScript调用`CKEDITOR.replace()`方法初始化编辑器: ```html <textarea id="myEditor"></textarea> CKEDITOR.replace('myEditor'); ``` ### 3. 配置选项 CDitor 提供丰富的配置选项,可以根据需求...
- 插件开发通常涉及创建一个新目录,比如`fckeditor/plugins/video`,并在此目录下放置必要的文件,如`plugin.js`(插件主文件)、`lang`(语言文件)和`icons`(图标资源)。 - 在`plugin.js`中,你需要定义插件...