From ba3f9629b50fba86323ee22d61b27aed0a4bb1c3 Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Wed, 14 Oct 2009 11:08:21 +0000 Subject: [PATCH] Merged V3.2 to HEAD 16740: Fix for ETHREEOH-2563 and ETHREEOH-2899. 16741: Fix for ETHREEOH-1781 - web-client-config-custom.xml.unicode.sample has incorrect comment. 16757: Merged DEV-TEMPORARY to V3.2 16730: ETHREEOH-2749: Entering a search containing a single quote breaks the script that performs next/previous page in OpenSearch JSF component 16731: ETHREEOH-2411: Error message appears when trying to create advanced workflow with long description 16732: ETHREEOH-1944: Navigation via shortcuts brings up incorrect dialogs 16761: Merged DEV-TEMPORARY to V3.2 16750: ETHREEOH-2405: system error if user goto Web Projects space from any web project which was deleted by another user. 16762: Displaying error title when error text is displayed 16763: Merged DEV-TEMPORARY to V3.2 16756: ETHREEOH-258: System Error message appears while clicking "Manage Task" icon in "My Completed Task" component for the task, if the user to whom the workflow was assign to is deleted. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@16911 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- ...eb-client-config-custom.xml.unicode.sample | Bin 8944 -> 8944 bytes .../web/app/AlfrescoNavigationHandler.java | 11 +++- .../bean/content/DocumentDetailsDialog.java | 52 ++++++++++++++++++ .../alfresco/web/bean/wcm/AVMBrowseBean.java | 28 ++++++---- .../property/BaseAssociationEditor.java | 5 +- .../property/UIAssociationEditor.java | 11 ++-- .../property/UIChildAssociationEditor.java | 4 +- 7 files changed, 91 insertions(+), 20 deletions(-) diff --git a/config/alfresco/extension/web-client-config-custom.xml.unicode.sample b/config/alfresco/extension/web-client-config-custom.xml.unicode.sample index 8aa340cb4adea0bea4852841653661ab698381eb..62cb6cdfa02b57ce48df6336223fd8e5d205f8d5 100644 GIT binary patch delta 25 hcmez1`oVR>EvCr_1T!`}Fn?p8949QZIe>ePH~^m53YP!? delta 36 scmez1`oVR>EvCs0Vg{4- parameters) + { + super.init(parameters); + //Remember active node. + Stack stack = getRecentNodeRefsStack(); + stack.push(getNode().getNodeRef().getId()); + } + + @Override + @SuppressWarnings("unchecked") + public void restored() + { + super.restored(); + Stack stack = getRecentNodeRefsStack(); + if (stack.isEmpty() == false) + { + browseBean.setupContentAction((String) stack.peek(), true); + } + } + + @Override + @SuppressWarnings("unchecked") + public String cancel() + { + Stack stack = getRecentNodeRefsStack(); + if (stack.isEmpty() == false) + { + stack.pop(); + } + return super.cancel(); + } + + @SuppressWarnings("unchecked") + private Stack getRecentNodeRefsStack() + { + FacesContext fc = FacesContext.getCurrentInstance(); + Stack stack = (Stack) fc.getExternalContext().getSessionMap().get(DOC_DETAILS_STACK); + if (stack == null) + { + stack = new Stack(); + fc.getExternalContext().getSessionMap().put(DOC_DETAILS_STACK, stack); + } + return stack; + } + /** * Returns the URL to download content for the current document * @@ -692,6 +742,7 @@ public class DocumentDetailsDialog extends BaseDetailsBean implements Navigatio } // prepare for showing details for this node + getRecentNodeRefsStack().clear(); this.browseBean.setupContentAction(next.getId(), false); break; } @@ -731,6 +782,7 @@ public class DocumentDetailsDialog extends BaseDetailsBean implements Navigatio } // prepare for showing details for this node + getRecentNodeRefsStack().clear(); this.browseBean.setupContentAction(previous.getId(), false); break; } diff --git a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java index 5ea257a0d7..9e1a2d51f6 100644 --- a/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java +++ b/source/java/org/alfresco/web/bean/wcm/AVMBrowseBean.java @@ -1060,9 +1060,9 @@ public class AVMBrowseBean implements IContextListener public boolean getIsManagerRole() { Node wpNode = getWebsite(); - if (wpNode != null) + if (wpNode != null && nodeService.exists(wpNode.getNodeRef())) { - return getWebProjectService().isContentManager(wpNode.getNodeRef()); + return getWebProjectService().isContentManager(wpNode.getNodeRef()); } return false; } @@ -1070,7 +1070,7 @@ public class AVMBrowseBean implements IContextListener public boolean getIsManagerOrPublisherRole() { Node wpNode = getWebsite(); - if (wpNode != null) + if (wpNode != null && nodeService.exists(wpNode.getNodeRef())) { User user = Application.getCurrentUser(FacesContext.getCurrentInstance()); String userRole = getWebProjectService().getWebUserRole(wpNode.getNodeRef(), user.getUserName()); @@ -1095,7 +1095,6 @@ public class AVMBrowseBean implements IContextListener this.showAllSandboxes = value; } - /** * @return true if the website has had a deployment attempt */ @@ -1112,14 +1111,21 @@ public class AVMBrowseBean implements IContextListener Map request = context.getExternalContext().getRequestMap(); if (request.get(REQUEST_BEEN_DEPLOYED_RESULT) == null) { - // see if there are any deployment attempts for the staging area - NodeRef webProjectRef = this.getWebsite().getNodeRef(); - String store = (String)getNodeService().getProperty(webProjectRef, + if (!nodeService.exists(this.getWebsite().getNodeRef())) + { + result = false; + } + else + { + // see if there are any deployment attempts for the staging area + NodeRef webProjectRef = this.getWebsite().getNodeRef(); + String store = (String)getNodeService().getProperty(webProjectRef, WCMAppModel.PROP_AVMSTORE); - List deployAttempts = DeploymentUtil.findDeploymentAttempts(store); - - // add a placeholder object in the request so we don't evaluate this again for this request - result = new Boolean(deployAttempts != null && deployAttempts.size() > 0); + List deployAttempts = DeploymentUtil.findDeploymentAttempts(store); + + // add a placeholder object in the request so we don't evaluate this again for this request + result = new Boolean(deployAttempts != null && deployAttempts.size() > 0); + } request.put(REQUEST_BEEN_DEPLOYED_RESULT, result); } else diff --git a/source/java/org/alfresco/web/ui/repo/component/property/BaseAssociationEditor.java b/source/java/org/alfresco/web/ui/repo/component/property/BaseAssociationEditor.java index 179bff21cc..e4208d064f 100644 --- a/source/java/org/alfresco/web/ui/repo/component/property/BaseAssociationEditor.java +++ b/source/java/org/alfresco/web/ui/repo/component/property/BaseAssociationEditor.java @@ -317,7 +317,7 @@ public abstract class BaseAssociationEditor extends UIInput String targetType = assocDef.getTargetClass().getName().toString(); boolean allowMany = assocDef.isTargetMany(); - populateAssocationMaps((Node)getValue()); + populateAssocationMaps((Node)getValue(), nodeService); if (isDisabled()) { @@ -655,8 +655,9 @@ public abstract class BaseAssociationEditor extends UIInput * Populates all the internal Maps with the appropriate association reference objects * * @param node The Node we are dealing with + * @param nodeService The NodeService */ - protected abstract void populateAssocationMaps(Node node); + protected abstract void populateAssocationMaps(Node node, NodeService nodeService); /** * Renders the existing associations in a read-only form diff --git a/source/java/org/alfresco/web/ui/repo/component/property/UIAssociationEditor.java b/source/java/org/alfresco/web/ui/repo/component/property/UIAssociationEditor.java index e338759cf7..3d921e65ed 100644 --- a/source/java/org/alfresco/web/ui/repo/component/property/UIAssociationEditor.java +++ b/source/java/org/alfresco/web/ui/repo/component/property/UIAssociationEditor.java @@ -73,10 +73,10 @@ public class UIAssociationEditor extends BaseAssociationEditor } /** - * @see org.alfresco.web.ui.repo.component.property.BaseAssociationEditor#populateAssocationMaps(org.alfresco.web.bean.repository.Node) + * @see org.alfresco.web.ui.repo.component.property.BaseAssociationEditor#populateAssocationMaps(org.alfresco.web.bean.repository.Node, org.alfresco.service.cmr.repository.NodeService) */ @SuppressWarnings("unchecked") - protected void populateAssocationMaps(Node node) + protected void populateAssocationMaps(Node node, NodeService nodeService) { // we need to remember the original set of associations (if there are any) // and place them in a map keyed by the noderef of the child node @@ -92,8 +92,11 @@ public class UIAssociationEditor extends BaseAssociationEditor { AssociationRef assoc = (AssociationRef)iter.next(); - // add the association to the map - this.originalAssocs.put(assoc.getTargetRef().toString(), assoc); + if (nodeService.exists(assoc.getTargetRef())) + { + // add the association to the map + this.originalAssocs.put(assoc.getTargetRef().toString(), assoc); + } } } } diff --git a/source/java/org/alfresco/web/ui/repo/component/property/UIChildAssociationEditor.java b/source/java/org/alfresco/web/ui/repo/component/property/UIChildAssociationEditor.java index 1ca20b3d54..00867ab397 100644 --- a/source/java/org/alfresco/web/ui/repo/component/property/UIChildAssociationEditor.java +++ b/source/java/org/alfresco/web/ui/repo/component/property/UIChildAssociationEditor.java @@ -70,10 +70,10 @@ public class UIChildAssociationEditor extends BaseAssociationEditor } /** - * @see org.alfresco.web.ui.repo.component.property.BaseAssociationEditor#populateAssocationMaps(org.alfresco.web.bean.repository.Node) + * @see org.alfresco.web.ui.repo.component.property.BaseAssociationEditor#populateAssocationMaps(org.alfresco.web.bean.repository.Node, org.alfresco.service.cmr.repository.NodeService) */ @SuppressWarnings("unchecked") - protected void populateAssocationMaps(Node node) + protected void populateAssocationMaps(Node node, NodeService nodeService) { // we need to remember the original set of associations (if there are any) // and place them in a map keyed by the noderef of the child node