响应企业安全、效率需求,屏蔽、禁用、拦截、扩展云文档的导入导出等操作。

如何屏蔽\禁用\拦截\扩展文件操作项?

本定制方案仅适用于私有化WPS365版本

1. 方案概述

文档中心里,这些“新建”“导入”“上传”“导出”“分享”等按钮,都是文件操作项,企业用户可以使用这些按钮操作文件。

WURZUGZAAAABA7R4JUGZAABQF6QJOJEGZAADAD4T4WZQGZAABADG

有些企业可能出于安全、效率等需求,希望屏蔽\禁用、拦截、扩展部分文件操作项。

屏蔽\禁用指的是企业担心文档泄漏,希望完全禁止企业用户下载文档,想屏蔽\禁用WPS文档中心的下载按钮。屏蔽:指“操作项完全不可见”禁用:指“操作项可见,但点击后不生效”。
拦截指的是企业希望下级部门无法访问机密文档,希望WPS文档中心在企业用户打开文档前,先验证企业用户身分是否符合要求,如不符要求,就拦截企业用户的下载请求。(本文仅涉及“拦截”定制,权限验证的定制另有教学文档撰写中,敬请期待)
扩展有些企业希望提升员工的文件操作效率,想把第三方应用入口集成至文件操作项的菜单,方便企业用户快速选中。

我们可以使用文档中心Web端(PC端)、H5端(移动端)的开放能力,定制文件操作项:

实现方式&效果屏蔽禁用WVC7QIA4ACAHA点击999(1).txt后没有出现跳转,说明该操作已被禁用
拦截可在原有操作逻辑中插入一段开发者自定义的逻辑,如匹配权限或者插入审批后才能执行某操作。HJGACII4ABAHG拦截了收藏、分享等文件操作项
扩展ONRSKKQ4AAAGWWGSEKHJAABAAC在文档操作项菜单里,增加了“Demo示例”按钮在左上角菜单里,增加了“Demo示例”按钮
依赖版本每个位置的操作项定制,依赖的版本略有不同,操作流程里会有详细解说。但只要版本大于23-11a(含),即可实现本文提到的所有定制功能。
依赖操作系统支持X86、XC

2. 使用指南

👉定制范围总览

产品端适用场景说明
云文档PC对文件右键操作、更多操作提供拦截、扩展、屏蔽/禁用能力扩展适用于扩展新功能场景,如导出为、文件归档等屏蔽适用于如“下载”等场景拦截适用于在原有操作逻辑中插入一段客户自定义的逻辑,如匹配权限或者插入审批后才能执行某操作
云文档H5分享权限页面过滤菜单,文件列表更多面板菜单,文件点击拦截,新建面板扩展。适用场景同上

👉云文档PC端(Web端)可定制项

云文档PC端,可定制菜单功能的入口如下:

定制功能功能效果
右键空白处菜单4SBAMJI4AAACA
右键文件菜单、文件右侧更多菜单QXMQMJI4AAQAGW5I7URA4ABACK
新建文件扩展、点击拦截E6OQOJI4AAQGS
文件打开拦截OS3RCJI4ADQCC
文件操作拦截SEDQQJI4ABABI
顶部操作项扩展、点击拦截A56QQJI4AAADK

右键空白处菜单

能力:

功能能力适用版本是否支持多插件是否支持异步
修改sdk.kdrive.fileList.empty.rightMenu.onChange2023-0530
点击拦截sdk.kdrive.fileList.empty.rightMenu.onClick2023-0309

使用方法:

// 空白处右键新增过滤
sdk.kdrive.fileList.empty.rightMenu.onChange((data)=>{
  // 移除菜单,参数为要删除位置的索引
  data.menuList.remove(1);
  // 移除子菜单,第一个参数为父菜单的索引,第二个参数为子菜单的索引
  data.menuList.items()[0].children.remove(0);
  // 添加菜单,add方法第二个参数代表你要插入位置的索引
  data.menuList.add({ key: "demo", name: "DEMO示例" }, 1);
})

// 空白处右键拦截,包括子菜单
sdk.kdrive.fileList.empty.rightMenu.onClick((data)=>{
  // 此处可用data进行操作
  console.log(data);
  // return true拦截原有操作项,false则会调用原有逻辑
  return true;
})

📌 注意

新建和上传文件夹中的分割符也是一个菜单项。 多个插件进行菜单修改时,由于目前仅能确保预装插件先于非预装插件加载,而预装插件和非预装插件内部加载顺序不固定,所加菜单项位置可能不同。

效果:

F3NSGKQ4AAQEU

文件右侧更多菜单

右键文件菜单和文件右侧更多菜单共用同一个菜单列表,也是同一个能力

能力:

功能能力适用版本是否支持多插件是否支持异步
修改sdk.kdrive.fileList.rightMenu.onChange2023-0309
点击拦截sdk.kdrive.fileList.rightMenu.onClick2023-0309

使用方法:

// 右键菜单扩展事件
sdk.kdrive.fileList.rightMenu.onChange((data)=>{
  // 移除菜单,参数为要删除位置的索引
  data.operationList.remove(1);
  // 添加菜单,add方法第二个参数代表你要插入位置的索引,name也可以使用dom元素
  data.operationList.add({ key: "demo", name: "DEMO示例" }, 1);
})

// 右键菜单点击拦截
sdk.kdrive.fileList.rightMenu.onClick((data)=>{
  console.log(data);
  // return true拦截原有操作项,false则会调用原有逻辑
  return true;
})

📌 注意

分割符也是一个菜单项。 多个插件进行菜单修改时,由于目前仅能确保预装插件先于非预装插件加载,而预装插件和非预装插件内部加载顺序不固定,所加菜单项位置可能不同。

效果:

ONRSKKQ4AAAGW

新建文件扩展

云文档pc侧边栏新建文件点击拦截、扩展

能力:

功能能力适用版本是否支持多插件是否支持异步
点击拦截sdk.kdrive.aside.createFile.createPanel.onClick2023-0412
修改sdk.kdrive.aside.createFile.createPanel.onChange2023-0412

使用方法:

// 云文档pc侧边栏新建文件拦截
sdk.kdrive.aside.createFile.createPanel.onClick((data) => {
  console.log(data);
  // return true拦截原有操作项,false则会调用原有逻辑
  return true;
});

// 云文档pc侧边栏新建文件扩展
sdk.kdrive.aside.createFile.createPanel.onChange((data) => {
  // icon为dom元素
  data.createMenuList.items()[0].subList.add({ key: "demo", name: "DEMO示例", icon: <img src={cryptoPng} alt="" /> });
});

📌 注意

由于插件内部无法对其余使用点击拦截埋点的插件的点击逻辑进行拦截,例如当上架了模板库应用时,即使返回true拦截点击逻辑,也会存在点击创建文字等类型文件仍然弹出模板库页面的情况

效果:

GB4UMKQ4ADQEK

云文档文件列表上方新建操作点击拦截、扩展

能力:

功能能力适用版本
加载sdk.kdrive.fileListTopMenu.createMenu.onMounted2023-1109
点击拦截sdk.kdrive.fileListTopMenu.createMenu.onClick2023-0412
添加sdk.kdrive.fileListTopMenu.uploadMenu.onAdded2023-0412
隐藏sdk.kdrive.fileListTopMenu.uploadMenu.hide2023-0412

使用方法:

// 上传面板屏蔽
sdk.kdrive.fileListTopMenu.uploadMenu.onAdded(() => {
  // 隐藏上传面板
  sdk.kdrive.fileListTopMenu.uploadMenu.hide();
});

// 新增面板扩展
sdk.kdrive.fileListTopMenu.createMenu.onMounted((data) => {
  // 仅添加一次
  if (~data.menuList.items().findIndex((item) => item.name === "DEMO示例")) return;
  // name可以用dom元素
  data.menuList.add({ name: "DEMO示例", key: "demo" });
  // 移除菜单
  data.menuList.remove(1);
  // 可以按照对应格式批量修改
  // data.setMenuList(data.menuList.items());
});

// 新增面板菜单点击拦截
sdk.kdrive.fileListTopMenu.createMenu.onClick((data) => {
  console.log(data);
  // return true拦截原有操作项,false则会调用原有逻辑
  return true;
});

效果:

KE4EUKQ4ADAFE

文件打开拦截

能力:

功能能力适用版本是否支持多插件是否支持异步
点击拦截sdk.kdrive.fileList.file.onClick2023-0511

使用方法:

sdk.kdrive.fileList.file.onClick((data)=>{
  console.log(data)
  // return true拦截原有操作项,false则会调用原有逻辑
  return true
})

📌 注意

影响范围较大,最近、星标、共享、我的文档、我的团队、团队文档、回收站、搜索、常用等位置的文件列表的文件点击事件均会拦截。

效果:

WVC7QIA4ACAHA

文件操作拦截

包括星标、分享等功能的点击拦截

能力:

功能能力适用版本是否支持多插件是否支持异步
点击拦截sdk.kdrive.fileList.star.onClick2023-0412
点击拦截sdk.kdrive.fileList.file.share.onClick2023-0720

使用方法:

// 文件列表星标点击拦截
sdk.kdrive.fileList.star.onClick((data) => {
  console.info(data, "star");
  // return true拦截原有操作项,false则会调用原有逻辑
  return true;
});
// 文件列表分享点击拦截
sdk.kdrive.fileList.file.share.onClick((data) => {
  console.info(data, "share");
  // return true拦截原有操作项,false则会调用原有逻辑
  return true;
});

效果:

HJGACII4ABAHG

文件选中顶部操作项

能力:

功能能力适用版本是否支持多插件是否支持异步
修改sdk.kdrive.fileListSelectTopMenu.onChange2023-1109
点击sdk.kdrive.fileListSelectTopMenu.onClick2023-0511

使用方法:

// 文件列表选中操作菜单扩展
sdk.kdrive.fileListSelectTopMenu.onChange((data)=>{
  // 过滤下载按钮
  const index = data.operateList.items().findIndex((item) => item.text === "下载");
  data.operateList.remove(index);
  // 仅添加一次
  if (~data.operateList.items().findIndex((item) => item.key === "demo")) return;
  // disabled判断是否禁用
  data.operateList.add({ key: "demo", text: "DEMO示例", disabled: false });
})
// 文件列表选中操作菜单点击拦截
sdk.kdrive.fileListSelectTopMenu.onClick((data)=>{
  console.log(data)
  // return true拦截原有操作项,false则会调用原有逻辑
  return true
})

效果:

255UWKQ4ACQBE

👉云文档移动端(H5端)

云文档H5端,可定制菜单功能的入口如下:

定制功能功能效果
分享权限页面过滤菜单CRGRGJI4ACAA4
文件列表更多面板菜单L2IRGJI4ADAAG
文件点击拦截APORGJI4AAAFE
新建面板扩展NIERIJI4AAQAG

分享权限页面过滤菜单

能力

功能能力适用版本是否支持多插件是否支持异步
修改sdk.kdriveMobile.sharePermissionPage.onChange2023-0824

使用方法

sdk.kdriveMobile.sharePermissionPage.onChange(async (data)=>{
  // 移除菜单,参数为要删除位置的索引
  data.permissionOptions.remove(1)
})

📌 注意

仅支持过滤,不支持添加

效果

CP4X4HA4ACQAA

文件列表更多面板菜单

能力

功能能力适用版本是否支持多插件是否支持异步
修改sdk.kdriveMobile.common.filePanel.menu.onChange2023-0625

使用方法

sdk.kdriveMobile.common.filePanel.menu.onChange((data) => {
  // 移除菜单,参数为要删除位置的索引
  data.operationList.remove(1);
  // 添加菜单,icon为图标src地址,add方法第二个参数代表你要插入位置的索引
  data.operationList.add({ name: "DEMO示例", key: "demo", icon: cryptoPng }, 0);
});

效果

PYOU6KQ4ABACM

文件点击拦截

能力

功能能力适用版本是否支持多插件是否支持异步
点击拦截sdk.kdriveMobile.fileList.file.onClick2023-0810

使用方法

sdk.kdriveMobile.fileList.file.onClick((data)=>{
  console.log(data)
  // return true拦截原有操作项,false则会调用原有逻辑
  return true
})

效果

YXKR6II4ACQFS

新建面板扩展

能力

功能能力适用版本是否支持多插件是否支持异步
修改sdk.kdriveMobile.createNewFile.panel.onChange2023-0530

使用方法

sdk.kdriveMobile.createNewFile.panel.onChange((data) => {
  // 添加菜单,icon为dom元素,add方法第二个参数代表你要插入位置的索引
  data.add({ menuKey: "demo", text: "DEMO示例", icon: <img src={cryptoPng} alt="" /> }, 0);
  // 移除菜单,参数为要删除位置的索引
  data.remove(1);
});

📌 注意

不支持点击拦截

效果

3JJFAKQ4ABQBC

相关新闻

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

立即咨询 立即试用 上门服务

请您留言

感谢您的关注,你可留下联系方式,我们将第一时间与您联系。