2013-01-15 41 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,那麼資源尚未發佈。

相關問題