Ckeditor5 图片媒体库浏览插件
2020-07-01T17:46:38
找了一圈,网上的各种资源都是针对图片上传的,没有针对已有的图片进行浏览添加。顾参考插件教程写了一个支持图片浏览的插件。
首先是说明,这个只提供了接口,具体的图片窗口展示样式需要自己做。
源码参考地址: https://gitee.com/yanlong-li/ckeditor5-build-classic/tree/stable/src/plugins/ImageBrowsing
提供两个api:
open 负责点击菜单时,回调自定义函数来开启图片浏览窗口
init 负责在插件初始化时,给一个匿名函数,用于图片浏览后给定一个图片地址进行插入
下面是 插件,放置在 /src/plugins 目录下的,可自定义,imageIcon 也是自定义一个图标
import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
import imageIcon from './icon.svg';
import ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview';
// 导出插件 ImageBrowsing 可自定义
export default class ImageBrowsing extends Plugin {
init() {
//插件的名字 imageBrowsing 可自定义
const config = this.editor.config.get('imageBrowsing');
const editor = this.editor;
// 调用 init 函数 将 匿名函数传递进去 方便在外围调用
config.init((imageUrl) => {
if (!imageUrl) {
return;
}
editor.model.change(writer => {
const imageElement = writer.createElement('image', {
src: imageUrl
});
// Insert the image in the current selection location.
editor.model.insertContent(imageElement, editor.model.document.selection);
});
})
editor.ui.componentFactory.add('ImageBrowsing', locale => {
const view = new ButtonView(locale);
view.set({
label: '媒体库',
icon: imageIcon,
tooltip: true
});
// Callback executed once the image is clicked.
view.on('execute', () => {
if (!config.open) {
return;
}
config.open()
});
return view;
});
}
}
引用时的配置:
imageBrowsing: {
call: null,
init: (call) => {
// 接收一个匿名形参,并保存起来,存在哪里都行;
this.call = call
// 当选择图片时调用
// call("图片url地址")
},
open: () => {
console.log('哈哈哈');
}
},