使用Kentico API更新DocumentPublishTo date

时间:2016-09-15 19:31:08

标签: kentico

我们正在尝试使用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();
    }
}

2 个答案:

答案 0 :(得分:0)

如果您正在使用工作流程,那么您也需要advance it through workflow。这应该让你朝着正确的方向前进。

答案 1 :(得分:0)

不确定为什么要这样做,如果您只是想取消发布该文档,因为它不再有效,请考虑使用Archive()。

现在问你原来的问题:

发布方法将文档移动到工作流程,直到它到达已发布的工作流程步骤。

但是......这对于一个不在已发布步骤中的文档是有效的,除了极少数情况之外,它可能不会做任何事情。

您应该执行 CheckOut() - 创建新版本进行编辑,如果文档未处于已发布步骤,则会跳转到编辑步骤(启动新工作流程周期)

编辑属性并调用更新() - 保存版本属性

执行 CheckIn() - 解锁文档以进行编辑并在工作流程中移动

然后执行发布() - 通过工作流移动文档,并在结尾处“发布”最后一个版本。

同时检查 DocumentPublishFrom 的值,如果您想立即应用这些更改,则不应该将来这样做。