diff --git a/config/alfresco/web-client-config-wcm-actions.xml b/config/alfresco/web-client-config-wcm-actions.xml
index 6fe4d2df8c..d201f94a29 100644
--- a/config/alfresco/web-client-config-wcm-actions.xml
+++ b/config/alfresco/web-client-config-wcm-actions.xml
@@ -301,6 +301,7 @@
+
diff --git a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java
index a7f449d3c8..f48beba988 100644
--- a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java
+++ b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java
@@ -35,7 +35,6 @@ import org.alfresco.model.WCMAppModel;
import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.avm.actions.AVMRevertStoreAction;
import org.alfresco.repo.avm.actions.AVMUndoSandboxListAction;
-import org.alfresco.repo.avm.actions.SimpleAVMSubmitAction;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
@@ -1110,6 +1109,7 @@ public class AVMBrowseBean implements IContextListener
// nothing to do
}
+
// ------------------------------------------------------------------------------
// Inner classes
diff --git a/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java b/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java
index d340acc16d..3d99c230c3 100644
--- a/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java
+++ b/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java
@@ -32,6 +32,7 @@ import javax.faces.context.FacesContext;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.model.WCMAppModel;
+import org.alfresco.repo.avm.AVMDAOs;
import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.workflow.WorkflowModel;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
@@ -167,65 +168,86 @@ public class SubmitDialog extends BaseDialogBean
@Override
protected String finishImpl(FacesContext context, String outcome) throws Exception
{
- // get the defaults from the workflow configuration attached to the selected workflow
- Map params = null;
- String workflowName = this.workflowSelectedValue[0];
- for (FormWorkflowWrapper wrapper : this.workflows)
+ if (getSubmitItemsSize() == 0)
{
- if (wrapper.Name.equals(workflowName))
- {
- params = wrapper.Params;
- }
+ return null;
}
- if (params != null)
+ // get the defaults from the workflow configuration attached to the selected workflow
+ if (this.workflowSelectedValue != null)
{
- // create container for our avm workflow package
- NodeRef workflowPackage = createWorkflowPackage();
- params.put(WorkflowModel.ASSOC_PACKAGE, workflowPackage);
-
- // add submission parameters
- params.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, getComment());
- params.put(AVMWorkflowUtil.PROP_LABEL, getLabel());
- params.put(AVMWorkflowUtil.PROP_FROM_PATH, AVMConstants.buildAVMStoreRootPath(this.avmBrowseBean.getSandbox()));
-
- // start the workflow to get access to the start task
- WorkflowDefinition wfDef = workflowService.getDefinitionByName(workflowName);
- WorkflowPath path = this.workflowService.startWorkflow(wfDef.id, params);
- if (path != null)
+ Map params = null;
+ String workflowName = this.workflowSelectedValue[0];
+ for (FormWorkflowWrapper wrapper : this.workflows)
{
- // extract the start task
- List tasks = this.workflowService.getTasksForWorkflowPath(path.id);
- if (tasks.size() == 1)
+ if (wrapper.Name.equals(workflowName))
{
- WorkflowTask startTask = tasks.get(0);
-
- if (startTask.state == WorkflowTaskState.IN_PROGRESS)
+ params = wrapper.Params;
+ }
+ }
+
+ if (params != null)
+ {
+ // create container for our avm workflow package
+ NodeRef workflowPackage = createWorkflowPackage();
+ params.put(WorkflowModel.ASSOC_PACKAGE, workflowPackage);
+
+ // add submission parameters
+ params.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, getComment());
+ params.put(AVMWorkflowUtil.PROP_LABEL, getLabel());
+ params.put(AVMWorkflowUtil.PROP_FROM_PATH, AVMConstants.buildAVMStoreRootPath(this.avmBrowseBean.getSandbox()));
+
+ // start the workflow to get access to the start task
+ WorkflowDefinition wfDef = workflowService.getDefinitionByName(workflowName);
+ WorkflowPath path = this.workflowService.startWorkflow(wfDef.id, params);
+ if (path != null)
+ {
+ // extract the start task
+ List tasks = this.workflowService.getTasksForWorkflowPath(path.id);
+ if (tasks.size() == 1)
{
- // end the start task to trigger the first 'proper' task in the workflow
- this.workflowService.endTask(startTask.id, null);
+ WorkflowTask startTask = tasks.get(0);
+
+ if (startTask.state == WorkflowTaskState.IN_PROGRESS)
+ {
+ // end the start task to trigger the first 'proper' task in the workflow
+ this.workflowService.endTask(startTask.id, null);
+ }
}
}
}
+ else
+ {
+ // TODO: jump to dialog and allow user to finish wf properties config!
+ throw new AlfrescoRuntimeException("Workflow parameters have not been configured, cannot submit items.");
+ }
}
else
{
- // TODO: jump to dialog and allow user to finish wf properties config!
- throw new AlfrescoRuntimeException("Workflow has not been configured correctly, cannot submit items.");
+ // direct submit to the staging area without workflow
+ List items = getSubmitItems();
+
+ // construct diffs for selected items for submission
+ String sandboxPath = AVMConstants.buildAVMStoreRootPath(this.avmBrowseBean.getSandbox());
+ String stagingPath = AVMConstants.buildAVMStoreRootPath(this.avmBrowseBean.getStagingStore());
+ List diffs = new ArrayList(items.size());
+ for (ItemWrapper wrapper : items)
+ {
+ String srcPath = sandboxPath + wrapper.getPath();
+ String destPath = stagingPath + wrapper.getPath();
+ AVMDifference diff = new AVMDifference(-1, srcPath, -1, destPath, AVMDifference.NEWER);
+ diffs.add(diff);
+ }
+
+ // write changes to layer so files are marked as modified
+ this.avmSyncService.update(diffs, null, true, true, false, false, this.label, this.comment);
+ AVMDAOs.Instance().fAVMNodeDAO.flush();
+ avmSyncService.flatten(sandboxPath, stagingPath);
}
return outcome;
}
- /**
- * @see org.alfresco.web.bean.dialog.BaseDialogBean#getFinishButtonDisabled()
- */
- @Override
- public boolean getFinishButtonDisabled()
- {
- return (getWorkflowSelectedValue() == null || getSubmitItemsSize() == 0);
- }
-
/**
* @return Returns the workflow comment.
*/
diff --git a/source/web/jsp/wcm/create-website-wizard/details.jsp b/source/web/jsp/wcm/create-website-wizard/details.jsp
index 30c830d9f5..c254c915eb 100644
--- a/source/web/jsp/wcm/create-website-wizard/details.jsp
+++ b/source/web/jsp/wcm/create-website-wizard/details.jsp
@@ -61,7 +61,7 @@
if (valid == true)
{
valid = validateRegex(document.getElementById("wizard:wizard-body:dnsname"),
- "^[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$", true, null,
+ "^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$", true, null,
'', true);
}
return valid;
diff --git a/source/web/jsp/wcm/submit-dialog.jsp b/source/web/jsp/wcm/submit-dialog.jsp
index 91da43b874..410b60cd13 100644
--- a/source/web/jsp/wcm/submit-dialog.jsp
+++ b/source/web/jsp/wcm/submit-dialog.jsp
@@ -30,7 +30,22 @@
function pageLoaded()
{
document.getElementById("dialog:dialog-body:comment").focus();
+ checkButtonState();
}
+
+ function checkButtonState()
+ {
+ if (document.getElementById("dialog:dialog-body:comment").value.length == 0 ||
+ document.getElementById("dialog:dialog-body:label").value.length == 0)
+ {
+ document.getElementById("dialog:finish-button").disabled = true;
+ }
+ else
+ {
+ document.getElementById("dialog:finish-button").disabled = false;
+ }
+ }
+