2013-06-24 2 views
1

질문이 있으십니까? 페이지가 활성화되면 해당 페이지에 대한 버전이 생성됩니다. 이제 페이지를 수정하고 이전 버전과 비교하면 내용이 녹색으로 diffrence로 표시됩니다.CQ : 두 버전의 페이지를 비교하여 업데이트 된 콘텐츠를 얻으려면 어떻게해야합니까?

이제 코드와 API를 통해이를 수행하고 메일을 통해 수정 된 콘텐츠를 가져오고 싶습니다.

아무 해결책이 있습니까?

답변

2

노드 버전 기록에 프로그래밍 방식으로 액세스하면 다음과 같이 처리 할 수 ​​있습니다.

Workspace workspace = node.getSession().getWorkspace(); 
VersionManager versionManager = workspace.getVersionManager(); 
VersionHistory versionHistory = versionManager.getVersionHistory(nde.getPath()); 

VersionHistory는 노드 (버전 확장 노드)의 특정 javax.jcr.version.Version에 대한 액세스를 제공합니다.

특정 구성 요소의 diff를 만들려면 com.day.cq.commons.DiffInfo이 재미있을 수 있습니다. 자세한 내용은 http://dev.day.com/docs/en/cq/current/javadoc/com/day/cq/commons/DiffInfo.html을 참조하십시오.

3

페이지가 "diff 모드"일 때 볼 수있는 것은 렌더링되는 내용에 대해 diff 출력을 렌더링하는 각 구성 요소의 책임입니다.

자신의 구성 요소에서 DiffInfo/DiffService 개의 API를 사용하여 diff에 대한 자체 지원을 롤백 할 수있는 것처럼 보입니다. 그런 다음 자신의 구성 요소에 콘텐츠에 대한 차이점을 볼

이 당신에게 현재 버전과 선택된 이전 버전 사이에 사랑하는 줄 것이다 :

ValueMap currentValues = ResourceUtil.getValueMap(resource); 
String title = currentValues.get(NameConstants.PN_TITLE, ""); 

DiffInfo diffInfo = resource.adaptTo(DiffInfo.class);  
ValueMap diffValues = ResourceUtil.getValueMap(diffInfo.getContent()); 
String diffText = diffValues.get(NameConstants.PN_TITLE, ""); 

DiffService diffService = sling.getService(DiffService.class); 
String diffOutput = diffInfo.getDiffOutput(diffService, title, diffText, false); 

을 때 페이지 지원에 컴포넌트은 diff의 모든 다음 전자 메일에 포함 할 페이지의 렌더링 된 출력물을 가져와야합니다. 이 작업을 수행하려면 SlingRequestProcessor을 사용할 수 있습니다. 이메일 클라이언트가 브라우저에서와 같은 방식으로 HTML을 렌더링하지 않으므로 (예 : 외부 CSS 등의 문제) 어렵습니다.

관련 문제