Sitecore明确标识用户点击项目保存按钮

时间:2013-09-03 04:26:23

标签: sitecore

在Sitecore中,当非管理员用户选择项目的锁定和编辑选项时,我们正在创建新版本并将其工作流程状态更改为之前版本的一个。这是使用项目锁定事件完成的。 此外,当用户在新版本中单击“保存”按钮时,如果它处于某个工作流状态(状态X),它应该转移到另一个状态(状态Y)。我们使用OnItemSaving事件完成了这项工作。 但是这种方法存在一个问题,在项目锁定事件处理程序中,当使用以下代码更改新版本的工作流状态时

using (new Sitecore.SecurityModel.SecurityDisabler())
{
      latestVersion.Editing.BeginEdit();
      latestVersion.Fields["__workflow state"].Value = previousVersion.Fields["__workflow state"].Value;
      latestVersion.Editing.EndEdit();
}

由于EndEdit()函数,它会立即触发项目保存事件。 因此,如果项目被更改为状态X,它将立即更改为状态Y,这是我们不希望发生的事情。

我们需要做的是清楚地识别用户点击一般项目保存中的保存按钮。这可能是一件事吗?

1 个答案:

答案 0 :(得分:4)

您可以将自己的处理器添加到saveUI管道,而不是使用OnItemSaving,例如处理器之后:

<saveUI>
    ...
    ...
    <processor mode="on" type="Sitecore.Pipelines.Save.Save, Sitecore.Kernel" />

John West在博客文章Access field values in saveUI pipeline processors with Sitecore

中解释道
  

Sitecore仅在用户保存项目时调用saveUI管道,而不是   当您使用API​​更新项目时。

所以看起来这正是你想要实现的目标。