文章目录

  • 版本控制
  • 页面间互相引用
  • 插件 indexmenu
  • 增加页面
  • 删除页面
  • 上传文档
  • 页面里引用文件
  • 文档管理
  • 用户管理
  • 权限管理

dokuwiki 很适合作为中小团队的知识库,在公司内网部署。考虑到我所在公司的现状,我认为 dokuwiki 要有以下的功能:

  1. 知识管理。用于知识的沉淀和分享,每个人都可以创建页面,也可以多人协同编辑页面;历史版本可追溯,可恢复。页面之间可以互相引用。

  2. 树形结构。

    阳志平老师在他的博文中提到:

    我提过多次的 MIT 认知科学家 Joshua B. Tenenbaum 发表在 PNAS 的论文( The discovery of structural form )中,比较了抽象知识的不同表征结构……最终还是意识到,人类的最佳知识结构是树形结构。只有树形结构,才是最符合人类认知特点的一种结构,从树的上一层到下一层,是具备唯一通道,便于大脑将知识从记忆底层快速提取出来,符合人类大脑是个认知吝啬鬼的特点;树又是兼具横向扩展与纵向扩展能力的最优雅的结构。

    ——Zotero(2):作为知识管理工具的Zotero - 阳志平的网志

  3. 权限管理。比如 Leaders 有权限删除页面,普通成员仅可以创建,但不能删除。再比如 A 部门的员工看不到 B 部门的页面。

  4. 文档管理。可以把文档上传到服务器,页面可以引用文档;搜索文档方便;有管理文档的接口,便于增删改查。

  5. 上传附件方便。编辑页面的时候,可以很方便地插入图片,上传附件。

  6. 下载文件方便。

  7. 如果有 PDF、DOC 等格式的预览就更好了。

咱们一个一个说,看看 dokuwiki 是否支持这些功能,如果不支持怎么弄。

对于 1,dokuwiki 天然就有。关于版本控制,后文会专门用一节介绍。

对于 2,其实 dokuwiki 的页面存储本来就是树形结构,我们只是需要一个插件 indexmenu,把目录树显示出来,见后文的“插件 indexmenu”、“增加页面”

对于 3,dokuwiki 也是天然支持,后文会讲。

对于 4,参见后文的“上传文档”、“页面里引用文件”、“文档管理”

对于 5,上传附件已经说过了,插入粘贴的图片可以用插件 imgpaste,请参考我的上一篇博文。

对于 6,很简单,点击链接就可以。

对于 7,PDF 是自带预览的,其他格式似乎预览不了。

版本控制

DokuWiki 存储每一个 Wiki 页面的所有版本,允许用户比较当前版本和任何历史版本。使用了和 MediaWiki 类似的差异引擎(比较版本间的差异的软件)。通过计时锁定机制,可以防止不同用户编辑同一个页面时产生冲突。2012 年 1 月发布的新版中,加入了媒体文件版本控制。

点击页面右边的“修订记录”,如下图

点击眼镜图标就可以看到差异,第一次用这个功能的时候,是真的惊艳到我了。

页面间互相引用

可以用语法

Internal links are created by using square brackets. You can either just give
a [[pagename]] or use an additional [[pagename|link text]].

也可以用按钮

插件 indexmenu

下载地址: https://www.dokuwiki.org/plugin:indexmenu

这个插件最有用的地方是可以在边栏增加一个导航列表。

设置方法:安装完之后,在 sidebar 页面的尾部添加
{{indexmenu>:}}

增加页面

上面图片的左上角,有一个增加页面的小工具,因为我安装了 addnewpage 插件

下载地址:http://www.dokuwiki.org/plugin:addnewpage

设置方法可以参考我的上一篇博文。

在 wiki 页面的任何位置放置{{ NEWPAGE }},以获得一个新的页面标题文本输入框和一个名称空间选择下拉菜单。一般都放在 sidebar 页面。

你可以在下拉菜单中选择某个名称空间,然后输入页面名称,创建新的页面,系统会直接跳到新页面让你编辑。你也可以同时创建名称空间和页面,用英文的冒号分隔,例如在输入框里面输入:

研究院:物理所:凝聚态物理

这将创建命名空间研究院,子命名空间物理所,最后在物理所下面创建页面凝聚态物理

删除页面

把文章内容删空,页面就自动删除了。没有文章的命名空间也会被自动删除。

上传文档

上传文件就点这个按钮。

上传的时候,要注意命名空间,看看是不是你想要的。

首先,选择本地文件,然后确认命名空间。如果想创建命名空间,那就用前文介绍过的冒号语法,比如我要创建命名空间 chezi,那就手动在文件名的前面加上 chezi:

最后点击上传。

因为是上传媒体文件,而不是创建页面,在侧边栏是看不到新的命名空间的,需要点击媒体管理器。

可以看到 chezi 被成功创建。

页面里引用文件

还是刚才那个按钮,搜索你要引用的文件,点击文件名就可以了。

这时候文本编辑框会自动插入

{{ :软件部:协议组:chezi:the_eighty_five_percent_rule_for_optimal_learning.pdf |}}

保存后的效果是:

文档管理

先说搜索文档,其实很简单,在右上角的搜索框输入关键字。这里就不演示了。

dokuwiki 自带的管理文档的接口是“媒体管理器”

其实功能还比较全,比如有上传、搜索、删除、历史等。

但是我发现了一个缺点,就是无法显示出所有文件,只能分命名空间来显示,一次只能展示一个命名空间。

如何一次展示出所有文件呢?有一个插件:filelisting

下载地址:https://www.dokuwiki.org/plugin:filelisting

我在根部命名空间增加了一个页面,叫文件目录,在它的编辑栏里面输入 {{filelisting}}

就有了这样的效果:

总归可以展示出所有文件了。

Filter 这个框子可以输入文件名过滤。

用户管理

这里的“组”要说明一下。

在用户管理中,用户总是属于某个组。有两个组有点特别:

  • @ALL。每个人,即便是没有登录的人,都属于这个组。你可以使用这个组来限制所有人的访问权限(作为默认设置),然后再对特定用户放宽权限。
  • @user。所有自主注册的用户,默认都属于这个组。用这个组来给予“已登入”用户权限。这个组的名字可以通过默认组选项配置。与虚拟的“ALL”组不同,“user”组是真实的组,是在使用简单身份验证后端时所有用户默认加入的组。如果你使用不同的验证后端,你需要使用这个后端所提供的组。

在内部以及 ACL(访问控制列表)管理器中,组由“@”前缀和组名来表示。

添加用户的时候,不用事先创建组名,直接输入新的组名就可以。

权限管理

可以参考 https://www.dokuwiki.org/zh:acl

这里简单说一下。

访问控制可以针对页面或者命名空间。共有7种权限:读取编辑创建上传删除以及管理。高权限会包含低权限,其中读取是最低的权限,删除是最高的权限。需要注意的是,创建、上传和删除权限只能应用于命名空间。

为命名空间设置的规则也会应用到其下的媒体文件和页面。

当 Dokuwiki 检查它应该给用户何种权限时,它会使用所有匹配该用户及其所在组的规则。最终应用的权限规则由以下方式选出:

  • 规则的应用范围越接近指定的页面,优先级就越高 —— 我们称之为“specific matching”
  • 当多个规则的应用范围相同,给予最高权限的那个规则会被采用。

想方便地添加新规则或更改已存在的规则,你需要使用“管理”菜单中的 ACL 管理器。如下图:

注意: 删除权限仅影响媒体文件。页面可以删除(和恢复)这个属于编辑权限。有上传权限但没有删除权限的人不能覆盖现有的媒体文件。

基本上,增加一条新的 ACL 规则有三个步骤:

  1. 从左上角的树状导航栏中选择需要限制的命名空间或者页面
  2. 选择需要应用 ACL 规则的组或人
  3. 设置适当的权限

已有规则可以在 ACL 管理器下面的表格中修改或者删除。

文中举了一个例子,我们看看。规则列表如下:

This time we look what rules will match for different users when trying to access the page private:bobspage.

当访问命名空间 private 下的 bobspage 页面的时候,我们看看对每个用户要应用什么规则。

  1. abby, 普通用户

    根据她所属的组,#1, #2, #4 都匹配;规则的应用范围越接近指定的页面,优先级就越高,所以应用规则 #4,所以 abby’s permissions level is 0

  2. bob, 普通用户

    #1, #2, #4, #6 都匹配,#6 对应的范围完全匹配指定的页面,所以 bob’s permission level is 16

  3. bob 忘记了登录,但是要访问 private:bobspage.

    #1 & #4 匹配,#4 的范围更接近,所以 bob’s permission level while not logged in is 0

  4. charlie, @staff 组的成员

    #1 - #5 这 5 个规则都匹配,#4 和 #5 对应的范围最接近指定页面,根据当多个规则的应用范围相同,给予最高权限的那个规则会被采用,所以应用规则 5,charlie’s permission level is 16

高级话题:可以在 acl 中使用用户通配符,本文就略了。

回到现实应用,对于企业来说,经常是 A 部门不能访问 B 部门的页面,反之亦然。针对这个应用场景,如何设定 ACL 规则呢?

前文已经说了:

@ALL。每个人,即便是没有登录的人,都属于这个组。你可以使用这个组来限制所有人的访问权限(作为默认设置),然后再对特定用户放宽权限。

也就是说,指导思想是先宽再严

说明:

  1. 对于 @ALL,默认规则是读取
  2. 对于硬件组 @hw,在“硬件部”这个命名空间有最高权限
  3. 出于信息保密,对于 @ALL,在“硬件部”这个命名空间无权限

这样一来,只有硬件组 @hw 的用户可以访问“硬件部”这个命名空间。软件部的设置也是类似的,就不赘述了。

以某个硬件组成员的身份登录,可以看到:

  1. 只能在硬件部命名空间里面增加页面
  2. 看不到软件部的页面

同理,以某个软件组成员的身份登录,可以看到:

  1. 只能在软件部命名空间里面增加页面
  2. 看不到硬件部的页面

当然,要达到这种效果,肯定还有其他制定规则的方法,本文仅是抛砖引玉。

【end】

dokuwiki 的管理和使用相关推荐

  1. dokuwiki 的管理和使用(补充)

    文章目录 我的安装环境 如何修改上传文件的大小限制 如何修改可上传的文件类型 插件 medialist 如何恢复删除的页面 如何修改左上角的 logo 图片 我的安装环境 Apache2.4.39 p ...

  2. 一个小团队使用的知识管理方案与工具

    公司在使用 Mediawiki 进行内部知识管理也有一段时间了,使用过一段时间发现问题不少.其中最让人抓狂的应该就是 Mediawiki 的插件了,虽然数量很多,但安装过程中五花八门的异常,有时候就是 ...

  3. DokuWiki 开源wiki引擎程序

    DokuWiki是一个开源wiki引擎程序,运行于PHP环境下.DokuWiki程序小巧而功能强大.灵活,适合中小团队和个人网站知识库的管理. 官网:https://www.dokuwiki.org/ ...

  4. dokuwiki 部署笔记

    文章目录 dokuwiki 是什么 dokuwiki 在 Windows 上的安装 方法一:用 XAMPP 方法二:用 PHPstudy 创建目录和页面 修复不能显示以中文命名的页面 如何安装插件 插 ...

  5. dokuwiki mysql_dokuwiki安装和使用总结 (windows安装版本)

    由于部门打算建立自己的知识库,所以我开始进行dokuwiki的研究.阅读了一下官方文档,写得真是全面啊,写得真是多啊,但是我感觉很难入手.可能是因为操作太简单了,作者不屑于详细说明操作. 以下由我总结 ...

  6. 54款开源服务器软件(内容管理、数据库、电子商务、邮件服务器、文件传输、操作系统、安全、小公司服务 .

    本文逐一介绍了内容管理.数据库.电子商务.邮件服务器.文件传输.操作系统.安全.小公司服务器.服务器日志文件监控和分析.存储.虚拟化.Web服务器.维基/协作及其他方面的开源服务器软件. 据斯坦福大学 ...

  7. 阿里云centos 安装和配置 DokuWiki

    DokuWiki 是一个开源的 wiki 项目, 可方便进行知识和内容的管理和分享,不用安装数据库,内置权限管理,书写直观方便,有大量的插件支持. 特别适用于企业内部的内容和知识管理,只允许内部员工编 ...

  8. ssrf漏洞 php,DokuWiki fetch.php SSRF漏洞与tok安全验证绕过分析

    作者:baolongniu of Tencent Security Platform Department 关于DokuWiki DokuWiki是一个开源wiki引擎程序,运行于PHP环境下.Dok ...

  9. DokuWiki的发现之旅

    ★DokuWiki介绍 Wiki是什么?是一种允许一群用户用简单的描述来创建和连接一组网页的社会计算系统,可以让人们在web的基础上对Wiki文本进行浏览.创建和更改,是一种人类的知识的网络系统,有助 ...

最新文章

  1. 找不到或无法加载主类 org.jivesoftware.openfire.starter.ServerStarter
  2. git bash 操作文件及文件夹命令
  3. boost::mp11::mp_transform相关用法的测试程序
  4. 使用VirtualBox SDK之初步编译
  5. angularjs上传文件到服务器,AngularJS:如何使用multipart表单实现简单的文件上传?...
  6. C#学习(6)——LINQ学习
  7. mysql dsec_MySQL基础(一)查询
  8. asppython份额_为什么JAVA份额那么高,存在感却不如Python?
  9. 【渝粤教育】广东开放大学 集体谈判与集体合同 形成性考核 (30)
  10. spss选择主要特征_SPSS统计作图教程:一维箱线图
  11. 基于P2P终结者的ARP欺骗攻击实验
  12. mysql拼接字符串的方式_mysql 字符串拼接,你知道几种方式?
  13. LTE网络架构的简单概述
  14. 100个开源游戏-街机类、棋牌类、休闲益智类、教育类、音乐类、RPG和AVG、策略类开源游戏【转】...
  15. yolov3的weights文件获取方法(yolov3-spp.weights等等)
  16. Enhancing Underwater Images and Videos by Fusion
  17. 新股高中签率的技巧|提高新股中签率技巧
  18. 【雪碧图】url放置图片路径
  19. 改善网站安全性的5种方法
  20. c语言游泳是怎么钓鱼的,钓鱼怎么找水层?看完这篇你就懂!

热门文章

  1. HUE配置文件hue.ini 的zookeeper模块详解(图文详解)(分HA集群)
  2. C#可用的日出日落时间类
  3. python基础教程第3章——字符串
  4. MongoDB与c#(二)简单例子 使用1.7版本驱动
  5. UVA 10564 计数DP
  6. 用jsphtml:file实现一个文件上传的例子,而且有验证
  7. Python进阶_wxpy学习:实用组件
  8. 远程唤醒linux系统方法
  9. shell脚本中一些特殊符号
  10. CUDA编程指南阅读笔记