Hello Holger,
thanks again for your tip regarding the URL! This has now brought me to an idea how I can solve the requirement satisfactorily.
I enable the editor via a script in the ContentCreator to select which newsletter configuration he wants to view in the preview. Then I determine the appropriate preview URL via the PreviewUrlAgent and open a new browser tab via a ClientScriptOperation with the help of a small JavaScript snippet, which displays the appropriate preview in the release. (I configure the page references to be used for the preview in the project settings).
If anyone can benefit from it here is the script as well as its form.
Script:
import de.espirit.firstspirit.agency.*;
import de.espirit.firstspirit.webedit.server.*;
import de.espirit.firstspirit.agency.*;
import de.espirit.firstspirit.access.store.Store;
opAg = context.requireSpecialist(OperationAgent.TYPE);
op = opAg.getOperation(ClientScriptOperation.TYPE);
previewUrlAgent = context.requireSpecialist(PreviewUrlAgent.TYPE);
contentProducerPreviewUrlBuilder = previewUrlAgent.getContentProducerBuilder();
// show the form dialog
formData = context.showForm(false);
if(null == formData){
return;
}
newsletterType = formData.get(null, "sc_newsletter_type").get();
release = formData.get(null, "sc_show_release").get();
// Get possible PageRefs for newsletter preview
psFormData = context.getUserService().getStore(Store.Type.GLOBALSTORE, release).getProjectProperties().getFormData();
pageRefType1 = psFormData.get(null, "ps_nl_preview_type1").get().get();
pageRefType2 = psFormData.get(null, "ps_nl_preview_type2").get().get();
pageRefType3 = psFormData.get(null, "ps_nl_preview_type3").get().get();
pageRefType4 = psFormData.get(null, "ps_nl_preview_type4").get().get();
// Get url for page to show
url = null;
switch( newsletterType.getValue() )
{
case "1":
url = contentProducerPreviewUrlBuilder.getUrl(pageRefType1);
break;
case "2":
url = contentProducerPreviewUrlBuilder.getUrl(pageRefType2);
break;
case "3":
url = contentProducerPreviewUrlBuilder.getUrl(pageRefType3);
break;
case "4":
url = contentProducerPreviewUrlBuilder.getUrl(pageRefType4);
break;
default:
}
// Open newsletter preview page using client-side JavaScript
SCRIPT = "function executeScript() { window.open('"+ context.getConnection().getHost() + url +"', '_blank').focus(); }";
result = op.perform(SCRIPT, false);
Form:
<CMS_MODULE>
<CMS_LABEL bold="yes">
<LANGINFOS>
<LANGINFO lang="*" label="The newsletter preview will open in a new tap inside your browser."/>
<LANGINFO lang="DE" label="Die Newslettervorschau wird sich in einem neuen Tab innerhalb Ihres Browsers öffnen."/>
</LANGINFOS>
</CMS_LABEL>
<CMS_INPUT_RADIOBUTTON
name="sc_newsletter_type"
allowEmpty="no"
gridHeight="2"
gridWidth="2"
hFill="yes"
sortOrder="keep_order"
useLanguages="no">
<ENTRIES>
<ENTRY value="1">
<LANGINFOS>
<LANGINFO lang="*" label="Type1"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="2">
<LANGINFOS>
<LANGINFO lang="*" label="Type2"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="3">
<LANGINFOS>
<LANGINFO lang="*" label="Type3"/>
</LANGINFOS>
</ENTRY>
<ENTRY value="4">
<LANGINFOS>
<LANGINFO lang="*" label="Type4"/>
</LANGINFOS>
</ENTRY>
</ENTRIES>
<LANGINFOS>
<LANGINFO lang="*" label="Newsletter type"/>
<LANGINFO lang="DE" label="Newslettertyp"/>
</LANGINFOS>
</CMS_INPUT_RADIOBUTTON>
<CMS_INPUT_TOGGLE name="sc_show_release" hFill="yes" singleLine="no" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Show release state"/>
<LANGINFO lang="DE" label="Freigabestand anzeigen"/>
</LANGINFOS>
<OFF>
<LANGINFO lang="*" label="No"/>
<LANGINFO lang="DE" label="Nein"/>
</OFF>
<ON>
<LANGINFO lang="*" label="Yes"/>
<LANGINFO lang="DE" label="Ja"/>
</ON>
</CMS_INPUT_TOGGLE>
</CMS_MODULE>
Thanks again and best regards
Sandro