大道至简,新一代企业应用无栈开发

平台之上,一种语言,可视化、脚本化、全端一体化开发

文件编辑器

提供插件机制,在线编辑各种格式的文档

docutils document without title

文件在线编辑,是指直接在浏览器上编辑文件。

1   编辑器统一入口

不管使用哪种编辑器,编辑文件的入口为:

https://path/to/doc/@zopen.editor:index

这个文件定义了文件编辑的同一接口,包括加解锁等。

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信息

渲染编辑器脚本,通常:

  1. 加锁
  2. 保存新版本,同时抛出刷新界面事件
  3. 退出解锁

2.2   编辑器描述json

编辑器的附加信息(annotation)是记录适用条件的json文本:

{
    'mimes':['text/*', '....'],
    'browser':['ie9+'],
    'features':['multi-user-editing'],  # 是否支持多人编辑
}

其中:

  1. mimes: 编辑器可以编辑的文件类型列表,具体子项可以是:
    • 具体的文件mime_type,比如 text/plain
    • mime模糊匹配,比如 text/*
    • 文件的大分类或者子类,比如 office word
  2. browser: 编辑器对浏览器的要求:
    • ie9+: 要求支持基础的h5功能: IE9以及最新的Chrome/FireFox/Safari/edge
    • ie11+: 要求支持更高的h5功能: IE11以及最新的Chrome/FireFox/Safari/edge
  3. 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

某个文件可以在线编辑的条件是:

  1. 文件的 mime 、mime大类、分类、子分类,在editors中有注册
  2. 当前浏览器符合editor的要求说明