Editor Features

Fresns 编辑器流程图

全局权限

发表配置页设置的功能为第一优先级

控制面板 > 运营配置 > 发布配置

角色权限

角色权限为第二优先级

控制面板 > 运营配置 > 用户角色

上传权限

存储设置为第三优先级

控制面板 > 系统设置 > 存储设置

解说

  • 第一层:全局配置对全员有效,当开启特定条件时,全员需要满足该条件才能发表,比如账号邮箱或手机号绑定、特殊规则等;但是白名单角色除外,配置在 post_limit_whitelistcomment_limit_whitelist 两个键名中。
  • 第二层:当发表配置未开启条件时(或者符合发表配置的条件),再判断主角色的,如果主角色权限有开启,则该主角色的成员需要满足条件才能发表,比如发表权限、特殊规则等。
    • 第二层备注:如果主角色有过期时间,并且已经过期,则以继承角色权限为主;如果无继承角色(或者该继承 ID 找不到角色),则以配置表 default_role 键名键值的角色权限为准;如果配置表键值为空(或找不到角色),则当无权处理。
  • 第三层:当角色权限未设置上传参数时,以系统存储设置为准,如果角色有设置,则以角色权限为准,比如是否可以上传、上传大小和时长等。

客户端处理流程

原型:https://fresns.org/prototype/editor/open in new window

  • 1、获取编辑器配置信息 /api/fresns/editor/configs
  • 2、判断是否有权发表 data.post.publishPerm.statusdata.comment.publishPerm.status,原因是 tips
  • 3、渲染编辑器,判断是否显示以下内容
    • 3.1、特殊规则 roleLimit.statusglobalLimit.status
    • 3.2、编辑器工具栏 toolbar,当开启了 toolbar.editorEmoji 表情功能,再请求 /api/fresns/info/emojis 获取表情列表
    • 3.3、小组选项 toolbar.editorGroup,当开启了,再请求 /api/fresns/member/markLists 获取小组分类和小组列表
    • 3.4、标题输入框 toolbar.editorTitle,需显示可输入字数提示 editorTitle.wordCount
    • 3.5、正文可输入字数提示 contentWordCount
  • 4、载入处理词列表,请求 /api/fresns/info/stopWords 接口。
  • 5、请求 /api/fresns/editor/lists 接口,获取现有草稿,传参 type=1status=1
    • 5.1、用户选择了一个草稿,则请求 /api/fresns/editor/detail 接口加载当前草稿的内容到编辑器。
    • 5.2、用户选择创建新草稿,则请求 /api/fresns/editor/create 接口创建新的草稿。
  • 6、涉及回调返参功能,使用 /api/fresns/info/callbacks 接口
  • 7、编辑器实时更新逻辑,使用 /api/fresns/editor/update 接口
    • 7.1、当选择了小组(或更换了小组),触发更新;
    • 7.2、当上传了图片(或者删除了图片),触发更新;
    • 7.3、当上传了视频(或者删除了视频),触发更新;
    • 7.4、当上传了音频(或者删除了音频),触发更新;
    • 7.5、当上传了文档(或者删除了文档),触发更新;
    • 7.6、当添加位置(或更改位置),触发更新;
    • 7.7、当选择匿名(或取消匿名),触发更新;
    • 7.7、当回调返参获取到“评论附带按钮配置”(或编辑器中删除评论设置),触发更新;
    • 7.8、当回调返参获取到“阅读权限配置”(或编辑器中删除阅读权限配置),触发更新;
    • 7.9、当回调返参获取到“特定成员列表配置”(或编辑器中删除特定成员列表配置),触发更新;
    • 7.10、当回调返参获取到“扩展内容”(或编辑器中删除扩展内容),触发更新;
    • 7.11、标题和内容的录入,不会主动触发更新,编辑器自己每 10 秒更新一次标题和内容。
    • 7.12、每次触发更新时,同步更新 types 参数,参数介绍见 API 开发说明
  • 8、回调返参的配置,修改按钮凭 unikey 去匹配扩展列表 toolbar.editorExpand.list.plugin 获取修改访问页面的 URL
  • 9、点击「发表」按钮时,检测“处理词”(contentMode=3),如果存在,则提示修改;没有则提交发表。

编辑帖子

  • 1、获取编辑器配置信息 /api/fresns/editor/configs
  • 2、判断是否开启了编辑 data.post.editPerm.statusdata.comment.editPerm.status
  • 3-4 步骤逻辑一样。
  • 5、请求 /api/fresns/editor/create 接口,创建编辑草稿,传参 type=1uuid=
    • 5.1、不允许编辑,则会返回状态
    • 5.2、允许编辑,则会返回草稿。同时使用倒计时 data.post.editPerm.timeLimitdata.comment.editPerm.timeLimit
  • 6-9 步骤逻辑一样。

新发表评论 或 编辑评论

  • 逻辑同上,将 post 命名前缀替换为 comment
  • 评论没有「小组、标题、评论设置、阅读权限配置、特定成员列表配置」五项功能,其余结构同帖子一样。

内容规律

  • 艾特:以 @ 符号开头,空格结尾。
  • 话题:根据配置(hashtag_show),值为 1 则是 # 符号开头,空格结尾;值为 2,则是 # 符号开头,# 符号结尾,双 # 号中间可以有单个空格(不能连续空格),但是符号后面或前面不支持有空格。
  • 表情符:以 [ 符号开头,] 符号结尾,中间不能有空格。