1

CQ5に対応する質問があります。ページがアクティブ化されると、そのページのバージョンが作成されます。ページを変更して以前のバージョンと比較すると、緑色のコンテンツが diffrence として表示されます。

コードと API を使用してこれを行い、変更されたコンテンツをメールで送信したいと考えています。

それに対する解決策はありますか?

4

2 に答える 2

3

ページが「差分モード」のときにわかることから、レンダリングしているコンテンツの差分出力をレンダリングするのは、各コンポーネントの責任です。

独自のコンポーネントでは、 DiffInfo / DiffService APIを使用して独自の差分サポートを展開できるようです。その後、独自のコンポーネントのコンテンツの差分が表示されます

これにより、現在のバージョンと選択した以前のバージョンとの差分が得られます。

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);

ページ上のすべてのコンポーネントが差分をサポートしている場合、ページのレンダリングされた出力を取得して電子メールに含める必要があります。SlingRequestProcessorを使用してこれを行うことができます。ただし、電子メール クライアントはブラウザーと同じように HTML をレンダリングしないため (外部 CSS の問題など)、これが難しいと感じるかもしれません。

于 2013-06-26T21:02:11.467 に答える
2

プログラムでノードのバージョン履歴にアクセスするには、次のようにします。

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

VersionHistory を使用すると、Node の特定の javax.jcr.version.Version にアクセスできます (Version は Node を拡張します)。

特定のコンポーネントの差分を作成するには、com.day.cq.commons.DiffInfo興味深いかもしれません。詳細については、 http://dev.day.com/docs/en/cq/current/javadoc/com/day/cq/commons/DiffInfo.htmlを参照してください。

于 2013-06-26T08:09:16.793 に答える