文件编辑器
提供插件机制,在线编辑各种格式的文档
文件在线编辑,是指直接在浏览器上编辑文件。
2 编写编辑器
2.1 编辑器脚本
所有编辑器脚本,都是以 editor_ 开头:
- zopen.editor:editor_ace: 纯文本编辑器,支持多种格式语法加亮
- zopen.editor:editor_tinymce :富文本编辑器
- zopen.editor:editor_ueditor: 百度的富文本编辑器
- zopen.editor:editor_msoffice: 微软的office online,支持各种office文档
编辑器脚本,参数包括:
- context:被编辑的文档
- request:请求对象
- view:前端view对象
- session:多人共享编辑的session信息
渲染编辑器脚本,通常:
- 加锁
- 保存新版本,同时抛出刷新界面事件
- 退出解锁
2.2 编辑器描述json
编辑器的附加信息(annotation)是记录适用条件的json文本:
{ 'mimes':['text/*', '....'], 'browser':['ie9+'], 'features':['multi-user-editing'], # 是否支持多人编辑 }
其中:
- mimes: 编辑器可以编辑的文件类型列表,具体子项可以是:
- 具体的文件mime_type,比如 text/plain
- mime模糊匹配,比如 text/*
- 文件的大分类或者子类,比如 office word
- browser: 编辑器对浏览器的要求:
- ie9+: 要求支持基础的h5功能: IE9以及最新的Chrome/FireFox/Safari/edge
- ie11+: 要求支持更高的h5功能: IE11以及最新的Chrome/FireFox/Safari/edge
- features: 支持的特性:
- multi-user-editing: 多人编辑
3 注册在线编辑器
在站点设置-文件编辑器中,可设置不同的格式所使用的编辑器。
统一记录在站点根的设置信息中:
root.settings['editors']
这个记录了不同mime的文档,支持的编辑器脚本:
{'text/html':['zopen.editors:online_editor_uedit'], 'text/x-edopage':['zopen.editors:online_editor_edopaper'] 'text/markdown':['zopen.editors:online_editor_markdown'] 'text/*':['zopen.editors:tinyedit', 'zopen.editors:online_editor_uedit'], 'application/ms-office':['zopen.editors:online_editor_office365'] }
其中key可以是:
- 具体的文件mime_type,比如 text/plain
- mime模糊匹配,比如 text/*
- 文件的大分类,比如 office
- 或者某个子类:比如 word
某个文件可以在线编辑的条件是:
- 文件的 mime 、mime大类、分类、子分类,在editors中有注册
- 当前浏览器符合editor的要求说明