背景:

公司为了方便的管理过程文档,搭建了一个Confluence服务器,版本6.9。在使用过程中,需要按照用户对空间中上传的附件进行下载权限控制。

解决过程及处理方案:

一、Confluence中导出功能支持导出的内容:

二、Confluence中如何控制导出功能:

https://confluence.atlassian.com/confkb/how-to-restrict-the-ability-to-export-a-space-in-confluence-800699946.html?_ga=2.128750732.1874233445.1556014885-1264367639.1556014885

社区中给出的这个方案,

第一种是全局的,由于需求仅仅是限制某个空间、某些用户的下载,所以第一种不合适

第二种方案尝试之后无法控制,原因是:

https://confluence.atlassian.com/conf69/space-permissions-overview-950284360.html

空间权限控制这里如果有查看权限,默认就会有导出功能,所以从下图的控制无法实现。

三、Confluence提供的权限控制不能直接满足需求,需要扩展实现一下。发现Confluence中有“自定义HTML”的功能,即在界面中增加html代码,准备在这里做一些手脚

具体操作如下:

Body尾部添加的代码如下:其中****处填写空间的标识

<script type="text/javascript">
$(document).ready(function(){
$('body').bind("DOMNodeInserted",function(e){
if(AJS.params.spaceKey=="****")
{
if(AJS.params.canRemovePage==false)
{
$('.cp-control-panel-download').hide();
          //禁用页面打印  
          $('head').append('<style> @media print{html, body{display:none} } </style> ');
          //禁用右键菜单

            $('body').attr('oncontextmenu','self.event.returnValue=false');

           //禁用选中文字

           $('body').attr('onselectstart','return false');


}
}
})
AJS.toInit(function(){
if(AJS.params.spaceKey=="****")
{
if(AJS.params.canRemovePage==false)
{
AJS.$('#action-export-word-link').hide();
AJS.$('#action-export-pdf-link').hide();
           //禁用页面打印  
          $('head').append('<style> @media print{html, body{display:none} } </style> ');
          //禁用右键菜单

            $('body').attr('oncontextmenu','self.event.returnValue=false');


           //禁用选中文字


           $('body').attr('onselectstart','return false');

} } });}) </script>

上面的代码功能主要是

1.做一个界面元素绑定的监听,当下载按钮元素加载后,符合代码中要求就隐藏掉

2.把confluence界面上的“导出为**”控件隐藏

这里把html直接写到Body尾部,而不用js脚本引用的方式是因为,当使用js脚本时,测试过程中发现js文件下载用时20s,具体原因不是太清楚,所以暂时把html直接写到Body尾部这里

四、完成自定义HTML的配置之后,仅需要简单的做一下用户的权限配置就行

当用户分配了页面的添加、删除权限之后,就同步有下载、导出的权限

参考资料

Atlassian社区

https://support.atlassian.com/confluence-server/

最新文章

  1. Xcode 常用快捷键
  2. Javascript基础系列之(一)JavaScript语法
  3. 推迟调用以及Lambda表达式
  4. Blender to XPS(blender 2.7x Internal materials)
  5. [摘]Hibernate查询事务必要性
  6. CheckBox和RadioButton
  7. 【AS3 Coder】任务七:初涉PureMVC——天气预报功能实现
  8. org.springframework.util.Assert
  9. javascript一些有用但又不常用的特性
  10. uva 10152 ShellSort 龟壳排序(希尔排序?)
  11. Linux下crontab详解
  12. SilkTest高级进阶系列8 – 放下榔头,立地成佛
  13. CART分类与回归树与GBDT(Gradient Boost Decision Tree)
  14. Ubuntu14.04下SP_Flash_Tool_exe_Linux无法烧录
  15. ArcGIS API for JavaScript 4.2学习笔记[12] View的弹窗(Popup)
  16. Collections.synchronizedMap()、ConcurrentHashMap、Hashtable之间的区别
  17. 变量前缀__device__以及__managed__
  18. springboot整合zookeeper
  19. Vuejs——(1)入门(单向绑定、双向绑定、列表渲染、响应函数)
  20. YUM仓库安装LAMP与LNMP

热门文章

  1. adb.exe 已停止工作解决办法
  2. git提交忽略某些文件或文件夹
  3. 清北-Day5-R2-divide
  4. excel导出导入通用方法
  5. 期货大赛项目|五,表格插件datatatables在MVC中的应用
  6. 一条很用的MSSQL语句
  7. Redis 数据结构之dict
  8. python运算符——比较运算符
  9. MD5加密工具类
  10. tap穿透之zepto的bug