2013-01-15 39 views
1

我无法获取资源的上次发布日期。 OpenCms API无法做到这一点。 http://files.opencms.org/javadoc/core/org/opencms/file/CmsResource.html如何从OpenCms中的CmsResource获取上次发布的日期

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

History of a resource in OpenCms Workplace

从CmsResource类中的方法getDateReleased()总是返回DATE_RELEASED_DEFAULT直到您设置资源的可用性。

有什么想法? 谢谢!

回答

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,那么资源尚未发布。

相关问题