网站内容发布流程(Drupal网站,审核发布流程的实现()())

优采云 发布时间: 2021-12-23 18:02

  网站内容发布流程(Drupal网站,审核发布流程的实现()())

  一个 Drupal网站,审核并发布流程的实现。一个 文章 发布体验有 4 个状态:草稿、需要审核、审核通过、发布。

  一般流程是:

  进入人员先进入文章,然后进入草稿状态。录入完成后,提交审核。此时,它们处于needs_review 状态。审核通过后,就在等待发表。此时,它们处于 review_pass 状态,发布后将可见。

  使用的模块:工作台+工作台审核。

  在不同的环节,需要不同的角色来完成相应的动作。除了入驻人员外,还需要审核人员和发布人员。最基本的角色是三个:进入、审核和发布。同时,需要对权限进行分列(通过分类法标识)。

  状态和状态转换是通过工作台调节来实现的。Workbenchmoderation 允许一个节点同时具有两个状态:一个发布状态和另一个状态。在drupal的最初设计中,一个NODE只有一种状态,并且始终是“当前”状态(最新状态)。Workbench 审核允许您在发布节点上创建草稿修订,并且原创发布节点内容保持不变。新的草稿修订采用该过程并在发布时替换旧的发布内容。

  在drupal中完成这项工作相当麻烦。

  在工作台审核中定义几个状态,并设置相应的节点类型。在这一步中,workbenchmoderation在一个自定义的模板中,通过hook_permissions按照列定义权限。因为列是按分类法区分的,所以权限实际上是根据对应分类法术语的列表来定义的。每个term一共有5个权限:create modify review publishdelete。一个节点有一定的权限,其实就是这个节点的所有列都有对应的权限。在 hook_node_access 中定义节点访问权限。hook_node_access中只控制create、update、delete、查看权限,hook_node_access中的节点是liverevision。对于工作台审核,当有已发布的修订版时,传入已发布的修订版,否则为当前修订版。create:最简单的权限控制,检查nodetype的任意一列是否有对应的create权限进行操作。

  创建时没有列信息,因此无法进一步控制。在 hook_node_validate 中进一步控制。在 hook_node_validate 中控制节点的修改。在执行保存操作时,在这个钩子中,进一步检查权限。这里传入的是当前正在修改的修订版,而不是liverevision。这里的规则是:控制恢复修订的权限。Workbench moderation 接管drupal 的recovery 和revision 动作,通过node_revision_revert_confirm 表单进行处理,所以在workbench moderation 中控制node_revision_revert_confirm_validate。Workbenchmoderation 没有定义这个函数,所以它是在自己的模块中实现的。控制取消发布。workbenchmoderation的取消发布是通过workbench_moderation_node_unpublish_form表单进行的,所以可以在workbench_moderation_node_unpublish_form_validate中进行控制。控制适中。

  workbenchmoderation的审核操作是通过workbench_moderation_moderate_form表单进行的,但是workbenchmoderation已经实现了相应的validate功能。没办法,只需要在对应的validate函数中加一行,指向我们自己的函数,在这里实现对适度动作的控制。在这种形式中,提供了原创状态和新状态,因此更容易实现。没有更多细节。以下操作需要通过hook_menu_alter修改一些菜单项的accesscallback。为了保证我们的修改不会被其他模块改变,在system表中,增加自己模块的权重,使其稍后执行,确保hook_menu_alter对修改生效。Workbench 中度定义了一些中度操作,直接通过菜单项动作,不经过中度表单,需要定义相应菜单项的访问回调钩子来控制权限。这些操作都是通过node/%node/moderation/%/change-state/%来进行的,所以可以定义这个菜单项的accesscallback钩子,在hook_menu_alter中进行,这里不再赘述。

  查看某个节点的未发布版本时,需要通过对应菜单项的accesscallback钩子来控制访问权限。一对二菜单项:node/%node 和 node/%node/draft。node/%node由系统定义,node/%node/draft由workbenchmoderation定义。在 hook_menu_alter 中定义。定义一个视图来列出等待释放的节点。只需参考需求审查视图。need_reviewview,工作台审核已定义。通过hook_views_pre_render,进一步过滤呈现给用户的视图内容。在workbenchmoderation定义的needs_view视图或者我们自己定义的视图中没有办法添加更复杂的权限规则,所以那里列出的内容比用户可以处理的多。在这个钩子里,删除用户无法处理的内容,以提供更好的工作环境。节点编辑表单的预处理,不要等到validate才告诉你没有权限修改

  关于权限设置:

  入境权限。审核权限发布权限

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线