diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties index 5679fee65e..c41409bc27 100644 --- a/config/alfresco/messages/webclient.properties +++ b/config/alfresco/messages/webclient.properties @@ -649,7 +649,7 @@ create_form_step1_desc=Upload an XML Schema create_form_step2_title=Configure Rendering Engines create_form_step2_desc=Select rendering engines and rendering engine template to render form instance data processed by the form. selected_rendering_engines=Selected Rendering Engines -configure_rendering_engines_step1_desc=Upload rendering engine template and specify the extension to use for its generated assets. +configure_rendering_engines_step1_desc=Upload rendering engine template and specify the extension to use for its renditions. rendering_engine_file=Rendering Engine Template File rendering_engine_type=Rendering Engine Type extension_for_renditions=Extension for renditions diff --git a/source/java/org/alfresco/web/bean/wcm/AVMEditBean.java b/source/java/org/alfresco/web/bean/wcm/AVMEditBean.java index 50fca9ba84..f6ff1db0c1 100644 --- a/source/java/org/alfresco/web/bean/wcm/AVMEditBean.java +++ b/source/java/org/alfresco/web/bean/wcm/AVMEditBean.java @@ -33,12 +33,12 @@ import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.util.Pair; import org.alfresco.web.app.AlfrescoNavigationHandler; import org.alfresco.web.app.Application; import org.alfresco.web.app.servlet.DownloadContentServlet; import org.alfresco.web.bean.CheckinCheckoutBean; import org.alfresco.web.bean.FileUploadBean; -import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; import org.alfresco.web.forms.Form; import org.alfresco.web.forms.FormProcessor; @@ -55,7 +55,7 @@ import org.w3c.dom.Document; */ public class AVMEditBean { - private static Log logger = LogFactory.getLog(AVMEditBean.class); + private static final Log LOGGER = LogFactory.getLog(AVMEditBean.class); private static final String MSG_ERROR_UPDATE = "error_update"; private static final String MSG_UPLOAD_SUCCESS = "file_upload_success"; @@ -143,7 +143,8 @@ public class AVMEditBean */ public String getUrl() { - return DownloadContentServlet.generateDownloadURL(AVMNodeConverter.ToNodeRef(-1, getAvmNode().getPath()), getAvmNode().getName()); + return DownloadContentServlet.generateDownloadURL(AVMNodeConverter.ToNodeRef(-1, getAvmNode().getPath()), + getAvmNode().getName()); } /** @@ -264,13 +265,25 @@ public class AVMEditBean // retrieve the content reader for this node NodeRef avmRef = AVMNodeConverter.ToNodeRef(-1, getAvmNode().getPath()); - if (logger.isDebugEnabled()) - logger.debug("Editing AVM node: " + avmRef.toString()); + if (this.nodeService.hasAspect(avmRef, WCMModel.ASPECT_RENDITION)) + { + if (LOGGER.isDebugEnabled()) + LOGGER.debug(avmRef + " is a rendition, editing primary rendition instead"); + avmRef = (NodeRef)this.nodeService.getProperty(avmRef, WCMModel.PROP_PRIMARY_FORM_INSTANCE_DATA); + + final Pair p = AVMNodeConverter.ToAVMVersionPath(avmRef); + if (LOGGER.isDebugEnabled()) + LOGGER.debug("Editing primary form instance data " + p.getSecond() + " version " + p.getFirst()); + final AVMNode avmNode = new AVMNode(this.avmService.lookup(p.getFirst(), p.getSecond())); + this.avmBrowseBean.setAvmActionNode(avmNode); + } + if (LOGGER.isDebugEnabled()) + LOGGER.debug("Editing AVM node: " + avmRef.toString()); ContentReader reader = contentService.getReader(avmRef, ContentModel.PROP_CONTENT); if (reader != null) { String mimetype = reader.getMimetype(); - + String outcome = null; // calculate which editor screen to display if (MimetypeMap.MIMETYPE_TEXT_PLAIN.equals(mimetype) || MimetypeMap.MIMETYPE_XML.equals(mimetype) || @@ -281,17 +294,10 @@ public class AVMEditBean setEditorOutput(reader.getContentString()); // navigate to appropriate screen - FacesContext fc = FacesContext.getCurrentInstance(); - String outcome; - if (MimetypeMap.MIMETYPE_XML.equals(mimetype)) - { - outcome = "dialog:editAvmXmlInline"; - } - else - { - outcome = "dialog:editAvmTextInline"; - } - fc.getApplication().getNavigationHandler().handleNavigation(fc, null, outcome); + outcome = ((MimetypeMap.MIMETYPE_XML.equals(mimetype) && + this.nodeService.hasAspect(avmRef, WCMModel.ASPECT_FORM_INSTANCE_DATA)) + ? "dialog:editAvmXmlInline" + : "dialog:editAvmTextInline"); } else if (MimetypeMap.MIMETYPE_HTML.equals(mimetype)) { @@ -300,15 +306,16 @@ public class AVMEditBean setEditorOutput(null); // navigate to appropriate screen - FacesContext fc = FacesContext.getCurrentInstance(); - fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "dialog:editAvmHtmlInline"); + outcome = "dialog:editAvmHtmlInline"; } else { // normal downloadable document - FacesContext fc = FacesContext.getCurrentInstance(); - fc.getApplication().getNavigationHandler().handleNavigation(fc, null, "dialog:editAvmFile"); + outcome = "dialog:editAvmFile"; } + + final FacesContext fc = FacesContext.getCurrentInstance(); + fc.getApplication().getNavigationHandler().handleNavigation(fc, null, outcome); } } @@ -355,8 +362,8 @@ public class AVMEditBean // commit the transaction tx.commit(); - // TODO: regenerate form content - if (nodeService.getProperty(avmRef, WCMModel.PROP_PARENT_FORM) != null) + // regenerate form content + if (nodeService.hasAspect(avmRef, WCMModel.ASPECT_FORM_INSTANCE_DATA)) { final FormsService fs = FormsService.getInstance(); fs.regenerateRenditions(avmRef); diff --git a/source/java/org/alfresco/web/forms/FormsService.java b/source/java/org/alfresco/web/forms/FormsService.java index 120903f06b..f71cb3cb57 100644 --- a/source/java/org/alfresco/web/forms/FormsService.java +++ b/source/java/org/alfresco/web/forms/FormsService.java @@ -297,8 +297,7 @@ public final class FormsService props = new HashMap(2, 1.0f); props.put(WCMModel.PROP_PARENT_RENDERING_ENGINE, re.getNodeRef()); - props.put(WCMModel.PROP_PRIMARY_FORM_INSTANCE_DATA, - AVMNodeConverter.ToNodeRef(-1, parentPath + formInstanceDataFileName)); + props.put(WCMModel.PROP_PRIMARY_FORM_INSTANCE_DATA, formInstanceDataNodeRef); nodeService.addAspect(renditionNodeRef, WCMModel.ASPECT_RENDITION, props); props = new HashMap(1, 1.0f); diff --git a/source/web/jsp/wcm/create-web-content-wizard/details.jsp b/source/web/jsp/wcm/create-web-content-wizard/details.jsp index 281ec7da2b..1ee4399fb6 100644 --- a/source/web/jsp/wcm/create-web-content-wizard/details.jsp +++ b/source/web/jsp/wcm/create-web-content-wizard/details.jsp @@ -44,7 +44,7 @@ else { document.getElementById("wizard:next-button").disabled = false; - document.getElementById("wizard:finish-button").disabled = false; + document.getElementById("wizard:finish-button").disabled = true; } }