2014-11-25 3 views
1

Для целей аудита я получил требование создать инструмент, в котором авторы могут просматривать более старые версии страницы CQ. Мне удалось получить доступные версии с JCR VersionManager, используя следующий код (используется в SlingServlet с сд: Страница в качестве ResourceType):Показать старую версию страницы CQ

Session session = request.getResourceResolver().adaptTo(Session.class); 
VersionManager vm = session.getWorkspace().getVersionManager(); 
VersionHistory versionHistory = vm.getVersionHistory(request.getResource().getPath()); 
VersionIterator vIt = versionHistory.getAllVersions(); 
while (vIt.hasNext()) { 
    Version version = vIt.nextVersion(); 
    String no = version.getName(); 
    Calendar createdDate = version.getCreated(); 
    // do something with it 
} 

Путь версии указывает, например, /jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0, где я вижу дочерний узел с именем jcr:frozenNode, который, как представляется, представляет узел jcr: content этой конкретной версии.

Как я могу показать CQ для отображения страницы в этой версии? Я ожидал бы URL с некоторым параметром или селектором, но я не нашел никакой документации. Я попытался перестроить его с помощью Timewarp, но там URL-адрес кажется еще оригинальным, и волшебство где-то скрыто.

ответ

1

Я также был в контакте с поддержкой adobe относительно этого, и рядом с timewarp, похоже, нет встроенной функции для достижения этой цели. Тем не менее, я экспериментировал и нашел возможное решение. Хотя сложный макет с множеством фиксированных компонентов в шаблоне может быть нелегким, к счастью, в нашем случае у нас в основном есть parsys. Так что мое решение заключается в следующем: я загрузить старую версию через два селекторов в URL:

  1. Я назвал его «versionhistory», который используется для съемки другого сценария рендеринга под названием versionhistory.jsp на компоненте страницы.
  2. содержит фактические версии имени/узла (заменяющий «» с „_“, чтобы не добавлять больше селекторов

В моем versionhistory.jsp я просто добавить правильный путь для компонента parsys (беря пример путь от вопрос) и включают те же элементы компоновки, что и в сценарии по умолчанию, например page.jsp:

<cq:include path="/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0/jcr:frozenNode/par" resourceType="foundation/components/parsys" /> 
Смежные вопросы