diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties
index 86a612b7fb..645c75b2d5 100644
--- a/config/alfresco/messages/webclient.properties
+++ b/config/alfresco/messages/webclient.properties
@@ -652,6 +652,10 @@ create_form_configure_rendering_engine_templates_title=Step Two - Configure Rend
create_form_configure_rendering_engine_templates_desc=Enter information about the rendering engine templates you want to use for this form.
create_form_select_default_workflow_title=Stop Three - Select default workflow
create_form_select_default_workflow_desc=Select the workflow you want to be used by default for this form.
+create_form_summary_desc=The wizard has successfully created the content and all renditions.
+create_form_summary_content_details=Content Details
+create_form_summary_rendition_details=Rendition Details
+create_form_summary_submit_message=Submit {0} when wizard finishes.
selected_rendering_engines=Selected Rendering Engines
create_form_configure_rendering_engines_title=Configure Rendering Engines
diff --git a/config/alfresco/web-client-config-wizards.xml b/config/alfresco/web-client-config-wizards.xml
index 7741385a54..d9b57f9788 100644
--- a/config/alfresco/web-client-config-wizards.xml
+++ b/config/alfresco/web-client-config-wizards.xml
@@ -230,9 +230,9 @@
instruction-id="default_instruction" />
-
diff --git a/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java b/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java
index 4cc8cd8ee5..dee32f6830 100644
--- a/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java
+++ b/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java
@@ -370,15 +370,6 @@ public class CreateFormWizard
*/
public void addSelectedRenderingEngineTemplate(final ActionEvent event)
{
- for (RenderingEngineTemplateData retd : this.renderingEngineTemplates)
- {
- if (retd.getOutputPathPatternForRendition().equals(this.outputPathPatternForRendition))
- {
- throw new AlfrescoRuntimeException("rendering engine template with output path " + this.outputPathPatternForRendition +
- " already exists");
- }
- }
-
final RenderingEngineTemplateData data =
this.new RenderingEngineTemplateData(this.getRenderingEngineTemplateFileName(),
this.getRenderingEngineTemplateFile(),
diff --git a/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java b/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java
index 88f07c9785..01313ae0ac 100644
--- a/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java
+++ b/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java
@@ -46,9 +46,7 @@ import org.alfresco.web.app.Application;
import org.alfresco.web.bean.content.BaseContentWizard;
import org.alfresco.web.data.IDataContainer;
import org.alfresco.web.data.QuickSort;
-import org.alfresco.web.forms.Form;
-import org.alfresco.web.forms.FormProcessor;
-import org.alfresco.web.forms.FormsService;
+import org.alfresco.web.forms.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;
@@ -64,7 +62,9 @@ public class CreateWebContentWizard extends BaseContentWizard
protected String formName;
protected List createMimeTypes;
protected String createdPath = null;
-
+ protected List renditions = null;
+ protected FormInstanceData formInstanceData = null;
+
/** AVM service bean reference */
protected AVMService avmService;
@@ -88,7 +88,6 @@ public class CreateWebContentWizard extends BaseContentWizard
this.avmBrowseBean = avmBrowseBean;
}
-
// ------------------------------------------------------------------------------
// Wizard implementation
@@ -96,19 +95,6 @@ public class CreateWebContentWizard extends BaseContentWizard
protected String finishImpl(FacesContext context, String outcome)
throws Exception
{
- if (logger.isDebugEnabled())
- logger.debug("saving file content to " + this.fileName);
- saveContent(null, this.content);
-
- if (MimetypeMap.MIMETYPE_XML.equals(this.mimeType) && this.formName != null)
- {
- final Form form = this.getForm();
- final NodeRef formInstanceDataNodeRef =
- AVMNodeConverter.ToNodeRef(-1, this.createdPath);
-
- form.registerFormInstanceData(formInstanceDataNodeRef);
- FormsService.getInstance().generateRenditions(formInstanceDataNodeRef);
- }
// return the default outcome
return outcome;
@@ -125,6 +111,8 @@ public class CreateWebContentWizard extends BaseContentWizard
*/
protected void saveContent(File fileContent, String strContent) throws Exception
{
+ if (logger.isDebugEnabled())
+ logger.debug("saving file content to " + this.fileName);
// get the parent path of the location to save the content
String path = this.avmBrowseBean.getCurrentPath();
if (MimetypeMap.MIMETYPE_XML.equals(this.mimeType) && this.formName != null)
@@ -158,10 +146,18 @@ public class CreateWebContentWizard extends BaseContentWizard
this.createdPath = path + '/' + this.fileName;
// add titled aspect for the read/edit properties screens
- NodeRef fileRef = AVMNodeConverter.ToNodeRef(-1, this.createdPath);
+ final NodeRef formInstanceDataNodeRef = AVMNodeConverter.ToNodeRef(-1, this.createdPath);
Map titledProps = new HashMap(1, 1.0f);
titledProps.put(ContentModel.PROP_TITLE, this.fileName);
- this.nodeService.addAspect(fileRef, ContentModel.ASPECT_TITLED, titledProps);
+ this.nodeService.addAspect(formInstanceDataNodeRef, ContentModel.ASPECT_TITLED, titledProps);
+ this.formInstanceData = new FormInstanceDataImpl(formInstanceDataNodeRef);
+
+ if (MimetypeMap.MIMETYPE_XML.equals(this.mimeType) && this.formName != null)
+ {
+ final Form form = this.getForm();
+ form.registerFormInstanceData(formInstanceDataNodeRef);
+ this.renditions = FormsService.getInstance().generateRenditions(formInstanceDataNodeRef);
+ }
}
@Override
@@ -331,21 +327,37 @@ public class CreateWebContentWizard extends BaseContentWizard
}
};
}
+
+ public FormInstanceData getFormInstanceData()
+ throws Exception
+ {
+ if (this.formInstanceData == null)
+ {
+ this.saveContent(null, this.content);
+ }
+ return this.formInstanceData;
+ }
+ public List getRenditions()
+ {
+ return this.renditions;
+ }
+
/**
* @return Returns the summary data for the wizard.
*/
public String getSummary()
{
+
ResourceBundle bundle = Application.getBundle(FacesContext.getCurrentInstance());
// TODO: show first few lines of content here?
return buildSummary(
new String[] {bundle.getString("file_name"),
- bundle.getString("type"),
- bundle.getString("content_type")},
- new String[] {this.fileName, getSummaryObjectType(),
- getSummaryMimeType(this.mimeType)});
+ bundle.getString("content_type"),
+ bundle.getString("Location")},
+ new String[] {this.fileName, getSummaryObjectType(),
+ getSummaryMimeType(this.mimeType)});
}
diff --git a/source/java/org/alfresco/web/forms/FormImpl.java b/source/java/org/alfresco/web/forms/FormImpl.java
index 3f8c24b39f..e920b420db 100644
--- a/source/java/org/alfresco/web/forms/FormImpl.java
+++ b/source/java/org/alfresco/web/forms/FormImpl.java
@@ -50,7 +50,7 @@ import org.apache.commons.logging.LogFactory;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
-public class FormImpl
+class FormImpl
implements Form
{
private static final Log LOGGER = LogFactory.getLog(FormImpl.class);
diff --git a/source/java/org/alfresco/web/forms/FormInstanceData.java b/source/java/org/alfresco/web/forms/FormInstanceData.java
new file mode 100644
index 0000000000..7cd97db419
--- /dev/null
+++ b/source/java/org/alfresco/web/forms/FormInstanceData.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2005 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the
+ * License.
+ */
+package org.alfresco.web.forms;
+
+import java.io.Serializable;
+
+/**
+ * Encapsulation of form instance data.
+ *
+ * @author Ariel Backenroth
+ */
+public interface FormInstanceData
+ extends Serializable
+{
+
+ /** the form generate this form instance data */
+ public Form getForm();
+
+ /** the name of this instance data */
+ public String getName();
+
+ /** the path relative to the containing webapp */
+ public String getWebappRelativePath();
+}
diff --git a/source/java/org/alfresco/web/forms/FormInstanceDataImpl.java b/source/java/org/alfresco/web/forms/FormInstanceDataImpl.java
new file mode 100644
index 0000000000..317059745a
--- /dev/null
+++ b/source/java/org/alfresco/web/forms/FormInstanceDataImpl.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2005 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the
+ * License.
+ */
+package org.alfresco.web.forms;
+
+import javax.faces.context.FacesContext;
+import org.alfresco.model.ContentModel;
+import org.alfresco.model.WCMModel;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.repo.avm.AVMNodeConverter;
+import org.alfresco.service.ServiceRegistry;
+import org.alfresco.service.cmr.repository.ContentReader;
+import org.alfresco.service.cmr.repository.ContentService;
+import org.alfresco.service.cmr.repository.MimetypeService;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.NodeService;
+import org.alfresco.service.cmr.repository.TemplateNode;
+import org.alfresco.service.cmr.repository.TemplateService;
+import org.alfresco.service.namespace.QName;
+import org.alfresco.web.bean.repository.Repository;
+import org.alfresco.web.bean.wcm.AVMConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Encapsulation of a rendition.
+ *
+ * @author Ariel Backenroth
+ */
+public class FormInstanceDataImpl
+ implements FormInstanceData
+{
+
+ private final NodeRef nodeRef;
+
+ public FormInstanceDataImpl(final NodeRef nodeRef)
+ {
+ this.nodeRef = nodeRef;
+ }
+ /** the name of this rendition */
+ public String getName()
+ {
+ final NodeService nodeService = this.getServiceRegistry().getNodeService();
+ return (String)
+ nodeService.getProperty(this.nodeRef, ContentModel.PROP_NAME);
+ }
+
+ /** the path relative to the containing webapp */
+ public String getWebappRelativePath()
+ {
+ return AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getSecond();
+ }
+
+ public Form getForm()
+ {
+ final NodeService nodeService = this.getServiceRegistry().getNodeService();
+ final NodeRef formNodeRef = (NodeRef)
+ nodeService.getProperty(this.nodeRef,
+ WCMModel.PROP_PARENT_FORM);
+ return new FormImpl(formNodeRef);
+ }
+
+ /** the node ref containing the contents of this rendition */
+ public NodeRef getNodeRef()
+ {
+ return this.nodeRef;
+ }
+
+ private ServiceRegistry getServiceRegistry()
+ {
+ final FacesContext fc = FacesContext.getCurrentInstance();
+ return Repository.getServiceRegistry(fc);
+ }
+}
diff --git a/source/java/org/alfresco/web/forms/FormsService.java b/source/java/org/alfresco/web/forms/FormsService.java
index d32b92e685..d2de70b22a 100644
--- a/source/java/org/alfresco/web/forms/FormsService.java
+++ b/source/java/org/alfresco/web/forms/FormsService.java
@@ -275,7 +275,7 @@ public final class FormsService
*
* @param formInstanceDataNodeRef the noderef containing the form instance data
*/
- public void generateRenditions(final NodeRef formInstanceDataNodeRef)
+ public List generateRenditions(final NodeRef formInstanceDataNodeRef)
throws IOException,
SAXException,
RenderingEngine.RenderingException
@@ -291,6 +291,7 @@ public final class FormsService
AVMNodeConverter.ToAVMVersionPath(formInstanceDataNodeRef).getSecond();
LOGGER.debug("generating renditions for " + formInstanceDataAvmPath);
+ final List result = new LinkedList();
for (RenderingEngineTemplate ret : form.getRenderingEngineTemplates())
{
// get the node ref of the node that will contain the content
@@ -312,17 +313,17 @@ public final class FormsService
final NodeRef renditionNodeRef =
AVMNodeConverter.ToNodeRef(-1, renditionAvmPath);
-
form.registerFormInstanceData(renditionNodeRef);
ret.registerRendition(renditionNodeRef, formInstanceDataNodeRef);
Map props = new HashMap(1, 1.0f);
props.put(ContentModel.PROP_TITLE, AVMNodeConverter.SplitBase(renditionAvmPath)[1]);
nodeService.addAspect(renditionNodeRef, ContentModel.ASPECT_TITLED, props);
-
+ result.add(new RenditionImpl(renditionNodeRef));
if (LOGGER.isDebugEnabled())
LOGGER.debug("generated " + renditionAvmPath + " using " + ret);
}
+ return result;
}
/**
@@ -330,7 +331,7 @@ public final class FormsService
*
* @param formInstanceDataNodeRef the node ref containing the form instance data.
*/
- public void regenerateRenditions(final NodeRef formInstanceDataNodeRef)
+ public List regenerateRenditions(final NodeRef formInstanceDataNodeRef)
throws IOException,
SAXException,
RenderingEngine.RenderingException
@@ -348,7 +349,7 @@ public final class FormsService
// other parameter values passed to rendering engine
final String formInstanceDataAvmPath = AVMNodeConverter.ToAVMVersionPath(formInstanceDataNodeRef).getSecond();
LOGGER.debug("regenerating renditions for " + formInstanceDataAvmPath);
-
+ final List result = new LinkedList();
for (RenderingEngineTemplate ret : form.getRenderingEngineTemplates())
{
final String renditionAvmPath =
@@ -376,9 +377,13 @@ public final class FormsService
ret.getRenderingEngine().render(formInstanceData, ret, parameters, out);
out.close();
+ final NodeRef renditionNodeRef =
+ AVMNodeConverter.ToNodeRef(-1, renditionAvmPath);
+ result.add(new RenditionImpl(renditionNodeRef));
if (LOGGER.isDebugEnabled())
- LOGGER.debug("generated " + renditionAvmPath + " using " + ret);
+ LOGGER.debug("regenerated " + renditionAvmPath + " using " + ret);
}
+ return result;
}
private static String getOutputAvmPathForRendition(final RenderingEngineTemplate ret,
diff --git a/source/java/org/alfresco/web/forms/Rendition.java b/source/java/org/alfresco/web/forms/Rendition.java
new file mode 100644
index 0000000000..c0ef18e1a8
--- /dev/null
+++ b/source/java/org/alfresco/web/forms/Rendition.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the
+ * License.
+ */
+package org.alfresco.web.forms;
+
+import org.alfresco.service.cmr.repository.NodeRef;
+import java.io.Serializable;
+
+/**
+ * Encapsulation of a rendition.
+ *
+ * @author Ariel Backenroth
+ */
+public interface Rendition
+ extends Serializable
+{
+ /** the name of this instance data */
+ public String getName();
+
+ /** the path relative to the containing webapp */
+ public String getWebappRelativePath();
+
+ /** the primary form instance data used to generate this rendition */
+ public FormInstanceData getPrimaryFormInstanceData();
+
+ /** the rendering engine template that generated this rendition */
+ public RenderingEngineTemplate getRenderingEngineTemplate();
+
+ /** the node ref containing the contents of this rendition */
+ public NodeRef getNodeRef();
+}
diff --git a/source/java/org/alfresco/web/forms/RenditionImpl.java b/source/java/org/alfresco/web/forms/RenditionImpl.java
new file mode 100644
index 0000000000..3d308e3fc2
--- /dev/null
+++ b/source/java/org/alfresco/web/forms/RenditionImpl.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2005 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the
+ * License.
+ */
+package org.alfresco.web.forms;
+
+import javax.faces.context.FacesContext;
+import org.alfresco.model.ContentModel;
+import org.alfresco.model.WCMModel;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.repo.avm.AVMNodeConverter;
+import org.alfresco.service.ServiceRegistry;
+import org.alfresco.service.cmr.repository.ContentReader;
+import org.alfresco.service.cmr.repository.ContentService;
+import org.alfresco.service.cmr.repository.MimetypeService;
+import org.alfresco.service.cmr.repository.NodeRef;
+import org.alfresco.service.cmr.repository.NodeService;
+import org.alfresco.service.cmr.repository.TemplateNode;
+import org.alfresco.service.cmr.repository.TemplateService;
+import org.alfresco.service.namespace.QName;
+import org.alfresco.web.bean.repository.Repository;
+import org.alfresco.web.bean.wcm.AVMConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Encapsulation of a rendition.
+ *
+ * @author Ariel Backenroth
+ */
+public class RenditionImpl
+ implements Rendition
+{
+
+ private final NodeRef nodeRef;
+
+ public RenditionImpl(final NodeRef nodeRef)
+ {
+ this.nodeRef = nodeRef;
+ }
+
+ /** the name of this rendition */
+ public String getName()
+ {
+ final NodeService nodeService = this.getServiceRegistry().getNodeService();
+ return (String)
+ nodeService.getProperty(this.nodeRef, ContentModel.PROP_NAME);
+ }
+
+ /** the path relative to the containing webapp */
+ public String getWebappRelativePath()
+ {
+ return AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getSecond();
+ }
+
+ public FormInstanceData getPrimaryFormInstanceData()
+ {
+ final NodeService nodeService = this.getServiceRegistry().getNodeService();
+ final NodeRef fidNodeRef = (NodeRef)
+ nodeService.getProperty(this.nodeRef,
+ WCMModel.PROP_PRIMARY_FORM_INSTANCE_DATA);
+ return new FormInstanceDataImpl(fidNodeRef);
+ }
+
+ /** the rendering engine template that generated this rendition */
+ public RenderingEngineTemplate getRenderingEngineTemplate()
+ {
+ final NodeService nodeService = this.getServiceRegistry().getNodeService();
+ final NodeRef retNodeRef = (NodeRef)
+ nodeService.getProperty(this.nodeRef,
+ WCMModel.PROP_PARENT_RENDERING_ENGINE_TEMPLATE);
+ final NodeRef rpNodeRef = (NodeRef)
+ nodeService.getProperty(this.nodeRef,
+ WCMModel.PROP_PARENT_RENDITION_PROPERTIES);
+ return new RenderingEngineTemplateImpl(retNodeRef, rpNodeRef);
+ }
+
+ /** the node ref containing the contents of this rendition */
+ public NodeRef getNodeRef()
+ {
+ return this.nodeRef;
+ }
+
+ private ServiceRegistry getServiceRegistry()
+ {
+ final FacesContext fc = FacesContext.getCurrentInstance();
+ return Repository.getServiceRegistry(fc);
+ }
+}
diff --git a/source/web/jsp/wcm/create-web-content-wizard/summary.jsp b/source/web/jsp/wcm/create-web-content-wizard/summary.jsp
new file mode 100644
index 0000000000..af93998b54
--- /dev/null
+++ b/source/web/jsp/wcm/create-web-content-wizard/summary.jsp
@@ -0,0 +1,55 @@
+<%--
+ Copyright (C) 2005 Alfresco, Inc.
+
+ Licensed under the Mozilla Public License version 1.1
+ with a permitted attribution clause. You may obtain a
+ copy of the License at
+
+ http://www.alfresco.org/legal/license.txt
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ either express or implied. See the License for the specific
+ language governing permissions and limitations under the
+ License.
+ --%>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="/WEB-INF/alfresco.tld" prefix="a" %>
+<%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %>
+<%@ page isELIgnored="false" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${rendition.name}
+
+ ${rendition.webappRelativePath}
+
+
+
+