网站内容发布审核流程(一个drupal7网站了drupal的类似功能的模块 )

优采云 发布时间: 2022-01-22 09:13

  网站内容发布审核流程(一个drupal7网站了drupal的类似功能的模块

)

  一个drupal 7网站,前期工作基本结束,又到了文章的审核发布时间。所以我检查了几个具有相似功能的drupal模块。

  第一个是工作台套件。这是一个系列。详细介绍在前面的文章中提到过,不再赘述。简单地说,工作台为个人内容管理提供了一个工作空间。Workbenchaccess 提供内容协同工作的功能,树形结构,每个节点位置的人都可以修改同一个节点或子节点的内容。在协作的工作环境中使用。Workbenchmoderation 提供了工作流的概念,提供了一种机制,内容从创建开始,经过可定制的不同状态,并在发布前得到不同权限的人的批准。只是权限不够详细。默认只提供所有内容的权限,不能细分。

  二是改版。与工作台的大场景相比,修改具有实用主义的特点。修订没有提供工作流的概念,节点只有两种状态:等待发布和发布。Revisioning提供对noderevision的管理,可以为每个节点类型设置权限。对于按节点类型划分列的站点,分配权限并不难。

  还有分类访问控制模块。因为本站是按分类分栏的,所以想用TAC模块配合workbenchmoderation来实现分栏的发布控制,但最终失败了。TAC模块中只有view、update、delete三种权限,release或revoke release在update中,不能单独控制。而且 TAC 也没有解决对未发布站点的访问控制问题。

  经过这件事,我意识到drupal对复杂网站的实现是相当麻烦的。当然,如果你勤于写代码,也是可以实现的。写代码的问题在于drupal已经是一个复杂的系统,需要大量的时间和经验去熟悉。这方面知识的积累,对于非专业的drupal开发者来说,一方面是积累比较慢,另一方面是一段时间接触比较多的时候积累,不再接触的时候积累再过一段时间,就会慢慢被遗忘。一些知识。这是一件非常麻烦的事情。对于像我这样的人,我仍然习惯于基于框架的开发。因为经常使用,所以不太容易忘记。

  Drupal 有它的优势。对于小而简单的网站,drupal 完全胜任,可以节省大量的开发时间。但是对于更大或更复杂的网站,还是基于框架开发比较好。

  本站发布审核最终选择了workbench + workbench moderation + own code。

  向内容编辑者开放的权限(基于注册用户):查看未发布的内容、查看内容修订版、恢复内容修订版、删除内容修订版、特定节点类型的权限(创建新内容、编辑自己的内容、删除自己的内容),查看管理主题,使用管理工具栏,访问我的工作台,查看审核历史记录,查看节点上的审核消息,使用“MyDrafts”工作台选项卡,审核从草稿到需要审核的所有内容,审核从需要审核到草稿的所有内容。

  对内容审阅者开放的权限(基于内容编辑者):特定节点类型(编辑任何内容,删除任何内容),查看所有未发布的内容,取消发布当前的实时修订,使用“NeedsReview”工作台选项卡,审核来自的所有内容需要审核才能发布。

  这样的设置并没有完全解决分栏审核和发布的问题。因为拥有版主权限的人会看到系统中所有等待发布的内容,并有发布权限。

  因此,详细的权限控制是通过hook_node_access在自己的模块中实现的。

  所需权限由 hook_node_access 中的 hook_permission 定义,访问权限根据节点类型和分类的值确定。

  这样做之后,权限控制了,但还是有问题。在工作台审核的需求审核中,仍会显示需求审核的所有节点。使用 hook_view_pre_render 来解决。

  还有一个问题。在工作台审核的需要审核页面,如果要查看节点内容再审核,会链接到节点页面。返回需求审核页面时,需要从管理菜单点击进入。有点麻烦。打开需要审核对应的视图,取消标题中的Link this field to the original of content,打开rewriterresult,选中它,在链接路径中输入node/[nid_1],在target中输入_blank。这样做之后,直接访问admin/workbench/needs-review可以达到目的,但是从管理菜单中打开MyWorkbench,然后点击NEEDSREVIEW,还是不行。分析HTML发现target=”_blank”改成target=”_parent”,应该是ajax修改,并且地址也改为workbench#overlay=admin/workbench/needs-review。在网上搜索,发现是modules/overlay/overlay-parent.js的问题。打开这个文件,第 570 行:

  

$target.attr('target', '_parent');

  改成

  

if (!$target.attr('target')) {

$target.attr('target', '_parent');

}

问题解决。<br />

<br />

<br />

  一个 Drupal网站Review 和发布流程的实现(改进版)

  

<br />

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线