diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties index 7136d070e4..ba4497b389 100644 --- a/config/alfresco/messages/webclient.properties +++ b/config/alfresco/messages/webclient.properties @@ -1228,7 +1228,7 @@ delete_reports_info=To remove all deployment reports in the web project, click Y delete_reports_confirm=Are you sure you want to delete all deployment reports across all sandboxes in this webproject? release_server_title=Release Test Server release_server_info=To release the test server from this sandbox, click Yes. -release_server_confirm=Are you sure you want to release the test server allocated to this sandbox? +release_server_confirm=Are you sure you want to release the test server(s) allocated to this sandbox? website_showallsandboxes=Show All Sandboxes # Website actions and dialog messages diff --git a/source/java/org/alfresco/web/bean/wcm/DeleteSandboxDialog.java b/source/java/org/alfresco/web/bean/wcm/DeleteSandboxDialog.java index 2e71855d61..bc1e56bb07 100644 --- a/source/java/org/alfresco/web/bean/wcm/DeleteSandboxDialog.java +++ b/source/java/org/alfresco/web/bean/wcm/DeleteSandboxDialog.java @@ -25,6 +25,7 @@ package org.alfresco.web.bean.wcm; import java.text.MessageFormat; +import java.util.List; import javax.faces.context.FacesContext; @@ -96,8 +97,8 @@ public class DeleteSandboxDialog extends BaseDialogBean String mainStore = AVMUtil.buildUserMainStoreName(wpStoreId, username); // if the sandbox is allocated to a test server release it - NodeRef testServer = DeploymentUtil.findAllocatedTestServer(mainStore); - if (testServer != null) + List testServers = DeploymentUtil.findAllocatedTestServers(mainStore); + for(NodeRef testServer : testServers) { getNodeService().setProperty(testServer, WCMAppModel.PROP_DEPLOYSERVERALLOCATEDTO, null); diff --git a/source/java/org/alfresco/web/bean/wcm/DeploymentUtil.java b/source/java/org/alfresco/web/bean/wcm/DeploymentUtil.java index f0fb2cce44..5495c011c7 100644 --- a/source/java/org/alfresco/web/bean/wcm/DeploymentUtil.java +++ b/source/java/org/alfresco/web/bean/wcm/DeploymentUtil.java @@ -230,13 +230,15 @@ public final class DeploymentUtil } /** - * Returns the test server allocated to the given store. + * Returns the test servers allocated to the given store. * * @param store The store to get the test server for - * @return The allocated server or null if there isn't one + * @return The allocated server(s), an empty list if there isn't one */ - public static NodeRef findAllocatedTestServer(String store) + public static List findAllocatedTestServers(String store) { + ListserverList = new ArrayList(); + FacesContext fc = FacesContext.getCurrentInstance(); SearchService searchService = Repository.getServiceRegistry(fc).getSearchService(); @@ -257,18 +259,12 @@ public final class DeploymentUtil results = searchService.query(Repository.getStoreRef(), SearchService.LANGUAGE_LUCENE, query.toString()); - if (results.length() == 1) + if (results.length() > 0) { - testServer = results.getNodeRef(0); - } - else if (results.length() > 1) - { - // get the first one and warn that we found many! - testServer = results.getNodeRef(0); - - if (logger.isWarnEnabled()) - logger.warn("More than one allocated test server for store '" + - store + "' was found, should only be one, first one found returned!"); + for(int i = 0; i < results.length(); i++) + { + serverList.add(results.getNodeRef(i)); + } } } finally @@ -279,7 +275,7 @@ public final class DeploymentUtil } } - return testServer; + return serverList; } /** diff --git a/source/java/org/alfresco/web/bean/wcm/ManageReviewTaskDialog.java b/source/java/org/alfresco/web/bean/wcm/ManageReviewTaskDialog.java index c1b067a0aa..b7bfd576a8 100644 --- a/source/java/org/alfresco/web/bean/wcm/ManageReviewTaskDialog.java +++ b/source/java/org/alfresco/web/bean/wcm/ManageReviewTaskDialog.java @@ -162,8 +162,8 @@ public class ManageReviewTaskDialog extends ManageTaskDialog // if a test server has already been allocated inform the dialog // that an update is needed - NodeRef testServer = DeploymentUtil.findAllocatedTestServer(this.store); - if (testServer != null) + List testServers = DeploymentUtil.findAllocatedTestServers(this.store); + if (!testServers.isEmpty()) { params.put("updateTestServer", "true"); } diff --git a/source/java/org/alfresco/web/bean/wcm/ReleaseTestServerDialog.java b/source/java/org/alfresco/web/bean/wcm/ReleaseTestServerDialog.java index ad03c4c57e..95c5f71938 100644 --- a/source/java/org/alfresco/web/bean/wcm/ReleaseTestServerDialog.java +++ b/source/java/org/alfresco/web/bean/wcm/ReleaseTestServerDialog.java @@ -24,6 +24,7 @@ */ package org.alfresco.web.bean.wcm; +import java.util.List; import java.util.Map; import javax.faces.context.FacesContext; @@ -70,8 +71,8 @@ public class ReleaseTestServerDialog extends BaseDialogBean protected String finishImpl(FacesContext context, String outcome) throws Exception { - NodeRef testServer = DeploymentUtil.findAllocatedTestServer(this.store); - if (testServer != null) + List testServers = DeploymentUtil.findAllocatedTestServers(this.store); + for(NodeRef testServer : testServers) { getNodeService().setProperty(testServer, WCMAppModel.PROP_DEPLOYSERVERALLOCATEDTO, null); diff --git a/source/java/org/alfresco/web/ui/wcm/component/UIDeployWebsite.java b/source/java/org/alfresco/web/ui/wcm/component/UIDeployWebsite.java index c96a0a1247..3d002d9992 100644 --- a/source/java/org/alfresco/web/ui/wcm/component/UIDeployWebsite.java +++ b/source/java/org/alfresco/web/ui/wcm/component/UIDeployWebsite.java @@ -244,40 +244,63 @@ public class UIDeployWebsite extends UIInput // been removed then show a list of available test servers to choose // from. - NodeRef allocatedServer = DeploymentUtil.findAllocatedTestServer(getStore()); - if (allocatedServer != null) + List allocatedServers = DeploymentUtil.findAllocatedTestServers(getStore()); + if (!allocatedServers.isEmpty()) { - // there is an allocated server - renderAllocatedTestServer(context, out, nodeService, allocatedServer); + // there is at least one allocated server + for(NodeRef allocatedServer : allocatedServers) + { + renderAllocatedTestServer(context, out, nodeService, allocatedServer); + } } else { - // a test server needs to be selected - display the list of test servers + // a test server(s) needs to be selected - display the list of test servers List refs = DeploymentUtil.findTestServers(webProject, true); // Resolve the unsorted list of NodeRef to a sorted list of DeploymentServerConfig. List servers = toSortedDeploymentServerConfig(nodeService, refs); - if (servers.size() > 0) { - boolean first = true; - String currentDisplayGroup = ""; + ParentChildCheckboxHelper helper = new ParentChildCheckboxHelper(this.getClientId(context)); + //boolean first = true; + //String currentDisplayGroup = ""; + boolean selected = false; for (DeploymentServerConfig server: servers) - { - // Write the display group title if it is a new title - String displayGroup = (String)server.getProperties().get(DeploymentServerConfig.PROP_GROUP); - if(!currentDisplayGroup.equalsIgnoreCase(displayGroup)) - { - // yes title has changed - write out the new displayGroup - out.write("

"); - out.write(displayGroup); - out.write("

"); - currentDisplayGroup = displayGroup; - } - renderTestServer(context, out, nodeService, server.getServerRef(), first); - first = false; + { + // Get the display group + String displayGroup = (String)server.getProperties().get(DeploymentServerConfig.PROP_GROUP); + + helper.setCurrentDisplayGroup(displayGroup); + if(helper.newGroup) + { + out.write("

"); + out.write(" "); + out.write(displayGroup); + out.write("

"); + } + + if(helper.groupParentId.length() > 0) + { + // render the test server with a child checkbox + renderCheckableServer(context, out, nodeService, server.getServerRef(), selected, helper.groupChildName, helper.groupParentId); + } + else + { + // render the test server without a parent checkbox + renderCheckableServer(context, out, nodeService, server.getServerRef(), selected, this.getClientId(context)); + } } } else @@ -341,12 +364,12 @@ public class UIDeployWebsite extends UIInput if(helper.groupParentId.length() > 0) { // render the live server with a child checkbox - renderLiveServer(context, out, nodeService, server.getServerRef(), selected, helper.groupChildName, helper.groupParentId); + renderCheckableServer(context, out, nodeService, server.getServerRef(), selected, helper.groupChildName, helper.groupParentId); } else { // render the live server without a parent checkbox - renderLiveServer(context, out, nodeService, server.getServerRef(), selected, this.getClientId(context)); + renderCheckableServer(context, out, nodeService, server.getServerRef(), selected, this.getClientId(context)); } } } @@ -552,13 +575,13 @@ public class UIDeployWebsite extends UIInput out.write("\n"); } - private void renderLiveServer(FacesContext context, ResponseWriter out, NodeService nodeService, + private void renderCheckableServer(FacesContext context, ResponseWriter out, NodeService nodeService, NodeRef server, boolean selected, String checkBoxName) throws IOException { - renderLiveServer(context, out, nodeService, server, selected, checkBoxName, ""); + renderCheckableServer(context, out, nodeService, server, selected, checkBoxName, ""); } - private void renderLiveServer(FacesContext context, ResponseWriter out, NodeService nodeService, + private void renderCheckableServer(FacesContext context, ResponseWriter out, NodeService nodeService, NodeRef server, boolean selected, String checkBoxName, String parentId) throws IOException { String contextPath = context.getExternalContext().getRequestContextPath(); @@ -596,41 +619,18 @@ public class UIDeployWebsite extends UIInput renderPanelMiddle(out, contextPath, nodeService, server, true); - if (selected == false) - { - out.write("
 "); - out.write(Application.getMessage(context, "deploy_server_not_selected")); - out.write("
"); - } +// if (selected == false) +// { +// out.write("
 "); +// out.write(Application.getMessage(context, "deploy_server_not_selected")); +// out.write("
"); +// } renderPanelEnd(out, contextPath); } - private void renderTestServer(FacesContext context, ResponseWriter out, NodeService nodeService, - NodeRef server, boolean selected) throws IOException - { - String contextPath = context.getExternalContext().getRequestContextPath(); - - renderPanelStart(out, contextPath); - - out.write("
"); - out.write("
"); - - renderPanelMiddle(out, contextPath, nodeService, server, true); - renderPanelEnd(out, contextPath); - } - private void renderAllocatedTestServer(FacesContext context, ResponseWriter out, NodeService nodeService, NodeRef server) throws IOException { diff --git a/source/java/org/alfresco/web/ui/wcm/component/UIUserSandboxes.java b/source/java/org/alfresco/web/ui/wcm/component/UIUserSandboxes.java index 8d84210ee3..8d09148b41 100644 --- a/source/java/org/alfresco/web/ui/wcm/component/UIUserSandboxes.java +++ b/source/java/org/alfresco/web/ui/wcm/component/UIUserSandboxes.java @@ -416,8 +416,8 @@ public class UIUserSandboxes extends SelfRenderingComponent implements Serializa logger.debug("Building sandbox view for user store: " + mainStore); // determine if the sandbox has an allocated test server for deployment - NodeRef testServer = DeploymentUtil.findAllocatedTestServer(mainStore); - boolean hasAllocatedTestServer = (testServer != null); + List testServers = DeploymentUtil.findAllocatedTestServers(mainStore); + boolean hasAllocatedTestServer = (!testServers.isEmpty()); // determine if there are any previous deployment attempts List deployAttempts = DeploymentUtil.findDeploymentAttempts(mainStore);