我们正在尝试使用Kentico API更新Document的DocumentPublishTo日期。
下面的代码片段会更新属性(我可以在UI中看到它的变化)。但是,该文件仍然出版。另外,请注意DocumentPublishTo仅在我们开始更新DocumentName之后才更新......有什么想法吗?
public void RejectPublishedTranslations(IEnumerable<string> cultures)
{
var publishStop = DateTime.Now.AddMinutes(-1);
var translatedDocs = DocumentHelper.GetDocuments().Path("/500").Culture(cultures.ToArray()).CombineWithDefaultCulture(false);
foreach (var document in translatedDocs)
{
Console.WriteLine("Unpublish culture {0} for document {1}", document.DocumentCulture, document.NodeAliasPath);
document.DocumentName = document.DocumentName; //apparently needs to be called so kentico can actually store the DocumentPublishTo property
document.DocumentPublishTo = publishStop;
Console.WriteLine("IsPublished {0}", document.IsPublished);
document.Update(true);
document.Publish();
}
}
答案 0 :(得分:0)
如果您正在使用工作流程,那么您也需要advance it through workflow。这应该让你朝着正确的方向前进。
答案 1 :(得分:0)
不确定为什么要这样做,如果您只是想取消发布该文档,因为它不再有效,请考虑使用Archive()。
现在问你原来的问题:
发布方法将文档移动到工作流程,直到它到达已发布的工作流程步骤。
但是......这对于一个不在已发布步骤中的文档是有效的,除了极少数情况之外,它可能不会做任何事情。
您应该执行 CheckOut() - 创建新版本进行编辑,如果文档未处于已发布步骤,则会跳转到编辑步骤(启动新工作流程周期)
编辑属性并调用更新() - 保存版本属性
执行 CheckIn() - 解锁文档以进行编辑并在工作流程中移动
然后执行发布() - 通过工作流移动文档,并在结尾处“发布”最后一个版本。
同时检查 DocumentPublishFrom 的值,如果您想立即应用这些更改,则不应该将来这样做。