1

我无法获得资源的最后发布日期。OpenCms API 无法做到这一点。 http://files.opencms.org/javadoc/core/org/opencms/file/CmsResource.html

这很奇怪,它必须存储在某个地方,因为 OpenCms Workplace 在 History 选项中显示此信息。

OpenCms Workplace 中资源的历史

CmsResource 类中的方法 getDateReleased() 始终返回 DATE_RELEASED_DEFAULT,直到您设置资源的可用性。

有什么想法吗?谢谢!

4

1 回答 1

2

最后,我通过挖掘 OpenCms 的源代码来实现这一点。我在 getListItems 方法中找到了解决方案:

https://github.com/alkacon/opencms-core/blob/branch_8_5_x/src/org/opencms/workplace/commons/CmsHistoryList.java

所以我构建了这个方法来从任何资源中获取最后发布的日期:

public static Date getLastPublishedDate(CmsJspActionElement cms, CmsResource resource) throws Exception {
    CmsObject cmso = cms.getCmsObject();
    String sitePath = cmso.getSitePath(resource);

    if (cmso.readAllAvailableVersions(sitePath).size() > 0) {
        I_CmsHistoryResource histRes = cmso.readAllAvailableVersions(sitePath).get(0);
        int publishTag = histRes.getPublishTag();
        CmsHistoryProject project = cmso.readHistoryProject(publishTag);            
        return new Date(project.getPublishingDate());                                   
    } else {
        return null;
    }   
}

如果返回 NULL,则资源尚未发布。

于 2013-01-16T12:46:29.710 回答