草稿

PmWiki具有在页面成为"正式"版本之前进行草稿版本阶段的功能。默认情况下,所有草稿页面都以"-Draft"结尾(可以通过设置 $DraftSuffix 来更改)。可以将对页面的多次中间编辑暂时保存在"-Draft"副本中,直到草稿准备好发布到原始页面。

配置和用法

当站点管理员在本地自定义文件中设置 $EnableDrafts 时,编辑页面上的"Save"按钮会分为单独的"发布"和"保存草稿"按钮。

"保存草稿"按钮会将任何编辑保存到原始页面的"-Draft"副本中,保留原始页面的完整性。随后对页面(原始页面或-Draft页面)的编辑请求将呈现草稿副本以进行进一步编辑。

"发布"按钮保存到原始非草稿副本的页面,删除可能已创建的-Draft页面。

默认情况下,保存草稿和发布功能对具有"edit"权限的任何人都可用(参见Passwords?)。然而,站点管理员还可以设置 $EnablePublishAttr 配置变量,该变量提供了一个单独的"publish"权限,用于发布到原始页面。

在"发布"时,页面的历史记录处理方式取决于管理员是否设置了 $EnableDraftAtomicDiff 变量。

  • 当设置为1时,"发布"草稿版本将清除"草稿"历史记录,只保留最新版本和前一个"发布"版本之间的"差异"。请注意,这将删除中间未发布版本的作者名称、日期和贡献,因此您输入的"Summary"应概括变更内容。
  • 否则,所有"草稿"历史记录条目都将保留 -- 这是默认设置。最终的"发布"历史记录条目将显示自最近的"草稿"版本以来的更改。

草稿和(全部)最近更改

默认情况下,使用"保存草稿"或"保存草稿并编辑"按钮会同时记录到Site.AllRecentChanges和Group.RecentChanges。在"发布"草稿版本后,"-Draft"页面的孤立链接将保留。

要在Site.AllRecentChanges和Group.RecentChanges上禁用此功能:

$DraftRecentChangesFmt = array();

或者:

if ( @$EnableDrafts && @$_POST['postedit']>'' || @$_POST['postdraft']>'' )
  unset($RecentChangesFmt);

要仅禁用其中一个,请单独取消设置:

if ( @$EnableDrafts && @$_POST['postedit']>'' || @$_POST['postdraft']>'' ) {
  unset($RecentChangesFmt['$Group.RecentChanges']); # -and/or-
  unset($RecentChangesFmt['$SiteGroup.AllRecentChanges']);
}

如果定义了 $DraftRecentChangesFmt 数组,则在保存草稿版本时将使用该数组而不是 $RecentChangesFmt 。例如,要使所有草稿版本仅显示在页面Site.DraftRecentChanges中,可以在config.php中添加以下内容:

$DraftRecentChangesFmt['Site.DraftRecentChanges'] 
  = '* [[{$Group}.{$Name}]]  . . . $CurrentTime $[by] $AuthorLink: [=$ChangeSummary=]';

参见 $RecentChangesFmt$DraftRecentChangesFmt

带有搜索、页面列表和RSS的草稿

草稿模块还默认设置了页面列表和搜索(因此也包括RSS订阅),忽略"-Draft"页面;为了包括草稿页面在页面列表或RSS订阅中,需要执行list=all或类似操作。

如何对所有帖子进行审核?

首先,启用草稿以将"保存"按钮更改为单独的"发布"和"保存草稿"按钮。然后设置 $EnablePublishAttr 。这将添加一个"publish"授权级别,用于区分页面草稿的编辑和发布。