diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml
index 7742570ada..1141382111 100644
--- a/config/alfresco/web-scripts-application-context.xml
+++ b/config/alfresco/web-scripts-application-context.xml
@@ -14,6 +14,7 @@
+
diff --git a/source/java/org/alfresco/web/bean/BrowseBean.java b/source/java/org/alfresco/web/bean/BrowseBean.java
index b6ca26bf66..6915e95f53 100644
--- a/source/java/org/alfresco/web/bean/BrowseBean.java
+++ b/source/java/org/alfresco/web/bean/BrowseBean.java
@@ -799,7 +799,7 @@ public class BrowseBean implements IContextListener
node = new MapNode(nodeRef, this.nodeService, fileInfo.getProperties());
// only display the user has the permissions to navigate to the target of the link
NodeRef destRef = (NodeRef)node.getProperties().get(ContentModel.PROP_LINK_DESTINATION);
- if (new Node(destRef).hasPermission(PermissionService.READ) == true)
+ if (destRef != null && new Node(destRef).hasPermission(PermissionService.READ) == true)
{
node.addPropertyResolver("url", this.resolverLinkUrl);
node.addPropertyResolver("webdavUrl", this.resolverLinkWebdavUrl);
@@ -818,7 +818,7 @@ public class BrowseBean implements IContextListener
node = new MapNode(nodeRef, this.nodeService, fileInfo.getProperties());
// only display the user has the permissions to navigate to the target of the link
NodeRef destRef = (NodeRef)node.getProperties().get(ContentModel.PROP_LINK_DESTINATION);
- if (new Node(destRef).hasPermission(PermissionService.READ) == true)
+ if (destRef != null && new Node(destRef).hasPermission(PermissionService.READ) == true)
{
node.addPropertyResolver("icon", this.resolverSpaceIcon);
node.addPropertyResolver("smallIcon", this.resolverSmallIcon);
diff --git a/source/java/org/alfresco/web/bean/TemplateMailHelperBean.java b/source/java/org/alfresco/web/bean/TemplateMailHelperBean.java
index e7dee24396..aab3a71eeb 100644
--- a/source/java/org/alfresco/web/bean/TemplateMailHelperBean.java
+++ b/source/java/org/alfresco/web/bean/TemplateMailHelperBean.java
@@ -39,6 +39,8 @@ import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.web.app.Application;
+import org.alfresco.web.app.servlet.BaseTemplateContentServlet;
+import org.alfresco.web.app.servlet.BaseTemplateContentServlet.URLHelper;
import org.alfresco.web.bean.repository.Repository;
import org.alfresco.web.ui.common.Utils;
import org.alfresco.web.ui.repo.component.template.DefaultModelHelper;
@@ -123,6 +125,9 @@ public class TemplateMailHelperBean
services, Application.getCurrentUser(fc), templateRef);
model.put("role", roleText);
model.put("space", node);
+ // object to allow client urls to be generated in emails
+ model.put("url", new BaseTemplateContentServlet.URLHelper(
+ fc.getExternalContext().getRequestContextPath()));
body = services.getTemplateService().processTemplate("freemarker", templateRef.toString(), model);
}
diff --git a/source/java/org/alfresco/web/bean/dashboard/PageConfig.java b/source/java/org/alfresco/web/bean/dashboard/PageConfig.java
index a46b2e2164..9e1726258c 100644
--- a/source/java/org/alfresco/web/bean/dashboard/PageConfig.java
+++ b/source/java/org/alfresco/web/bean/dashboard/PageConfig.java
@@ -391,7 +391,8 @@ final class Column
*/
public Column(Column copy)
{
- this.dashlets = (List)((ArrayList)copy.dashlets).clone();
+ this.dashlets = new ArrayList(copy.dashlets.size());
+ this.dashlets.addAll(copy.dashlets);
}
public void addDashlet(DashletDefinition dashlet)
diff --git a/source/java/org/alfresco/web/bean/wcm/RegenerateRenditionsWizard.java b/source/java/org/alfresco/web/bean/wcm/RegenerateRenditionsWizard.java
index cbea440c11..0066fe8939 100644
--- a/source/java/org/alfresco/web/bean/wcm/RegenerateRenditionsWizard.java
+++ b/source/java/org/alfresco/web/bean/wcm/RegenerateRenditionsWizard.java
@@ -494,7 +494,8 @@ public class RegenerateRenditionsWizard
query.append("+ASPECT:\"" + WCMAppModel.ASPECT_RENDITION + "\"");
}
- if (this.regenerateScope.equals(REGENERATE_SCOPE_FORM))
+ if (this.regenerateScope.equals(REGENERATE_SCOPE_FORM) &&
+ this.selectedForms != null)
{
query.append(" +(");
for (int i = 0; i < this.selectedForms.length; i++)
@@ -508,7 +509,9 @@ public class RegenerateRenditionsWizard
}
query.append(") ");
}
- if (this.regenerateScope.equals(REGENERATE_SCOPE_RENDERING_ENGINE_TEMPLATE))
+
+ if (this.regenerateScope.equals(REGENERATE_SCOPE_RENDERING_ENGINE_TEMPLATE) &&
+ this.selectedRenderingEngineTemplates != null)
{
query.append(" +(");
for (int i = 0; i < this.selectedRenderingEngineTemplates.length; i++)
diff --git a/source/java/org/alfresco/web/bean/wizard/InviteUsersWizard.java b/source/java/org/alfresco/web/bean/wizard/InviteUsersWizard.java
index 6ec7c7a838..b556e5d5ae 100644
--- a/source/java/org/alfresco/web/bean/wizard/InviteUsersWizard.java
+++ b/source/java/org/alfresco/web/bean/wizard/InviteUsersWizard.java
@@ -494,7 +494,8 @@ public abstract class InviteUsersWizard extends BaseWizardBean
String personName = Application.getCurrentUser(context).getFullName(this.nodeService);
String msgInvitedTo = Application.getMessage(context, MSG_INVITED_TO);
Node node = this.getNode();
- String path = this.nodeService.getPath(node.getNodeRef()).toDisplayPath(this.nodeService);
+ String path = this.nodeService.getPath(node.getNodeRef()).toDisplayPath(
+ this.nodeService, this.permissionService);
buf.append(MessageFormat.format(msgInvitedTo, new Object[] {
path + '/' + node.getName(),
personName}) );
diff --git a/source/java/org/alfresco/web/forms/FormInstanceDataImpl.java b/source/java/org/alfresco/web/forms/FormInstanceDataImpl.java
index bce2bd56c0..eb5650f04b 100644
--- a/source/java/org/alfresco/web/forms/FormInstanceDataImpl.java
+++ b/source/java/org/alfresco/web/forms/FormInstanceDataImpl.java
@@ -23,24 +23,30 @@
*/
package org.alfresco.web.forms;
-import java.io.*;
-import java.util.*;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+
import javax.faces.context.FacesContext;
-import org.alfresco.model.ContentModel;
+
import org.alfresco.model.WCMAppModel;
import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.service.ServiceRegistry;
-import org.alfresco.service.cmr.avm.AVMNotFoundException;
import org.alfresco.service.cmr.avm.AVMService;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
-import org.alfresco.service.cmr.repository.*;
-import org.alfresco.service.namespace.QName;
+import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.web.bean.repository.Repository;
import org.alfresco.web.bean.wcm.AVMUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.w3c.dom.*;
+import org.w3c.dom.Document;
import org.xml.sax.SAXException;
/**
@@ -48,10 +54,8 @@ import org.xml.sax.SAXException;
*
* @author Ariel Backenroth
*/
-/* package */ class FormInstanceDataImpl
- implements FormInstanceData
+/* package */ class FormInstanceDataImpl implements FormInstanceData
{
-
private static final Log LOGGER = LogFactory.getLog(RenditionImpl.class);
private final NodeRef nodeRef;
@@ -151,17 +155,15 @@ import org.xml.sax.SAXException;
if (LOGGER.isDebugEnabled())
LOGGER.debug("regenerating renditions of " + this);
-
final AVMService avmService = this.getServiceRegistry().getAVMService();
- String originalParentAvmPath =
- avmService.getNodeProperty(AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getFirst(),
- AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getSecond(),
- WCMAppModel.PROP_ORIGINAL_PARENT_PATH).getStringValue();
+ PropertyValue pv = avmService.getNodeProperty(
+ AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getFirst(),
+ AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getSecond(),
+ WCMAppModel.PROP_ORIGINAL_PARENT_PATH);
- if (originalParentAvmPath == null)
- {
- originalParentAvmPath = AVMNodeConverter.SplitBase(this.getPath())[0];
- }
+ String originalParentAvmPath = (pv == null) ?
+ AVMNodeConverter.SplitBase(this.getPath())[0] : pv.getStringValue();
+
final HashSet allRets =
new HashSet(this.getForm().getRenderingEngineTemplates());
final List result = new LinkedList();
diff --git a/source/java/org/alfresco/web/scripts/RepoStore.java b/source/java/org/alfresco/web/scripts/RepoStore.java
index 4dec38e133..2d17d815e9 100644
--- a/source/java/org/alfresco/web/scripts/RepoStore.java
+++ b/source/java/org/alfresco/web/scripts/RepoStore.java
@@ -50,6 +50,7 @@ import org.alfresco.service.cmr.repository.ScriptLocation;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.SearchService;
+import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.util.AbstractLifecycleBean;
import org.springframework.beans.BeansException;
@@ -82,6 +83,7 @@ public class RepoStore implements WebScriptStore, ApplicationContextAware, Appli
protected ContentService contentService;
protected FileFolderService fileService;
protected NamespaceService namespaceService;
+ protected PermissionService permissionService;
/**
@@ -132,6 +134,14 @@ public class RepoStore implements WebScriptStore, ApplicationContextAware, Appli
this.namespaceService = namespaceService;
}
+ /**
+ * Sets the permission service
+ */
+ public void setPermissionService(PermissionService permissionService)
+ {
+ this.permissionService = permissionService;
+ }
+
/**
* Sets whether the repo store must exist
*
@@ -248,7 +258,8 @@ public class RepoStore implements WebScriptStore, ApplicationContextAware, Appli
*/
protected String getPath(NodeRef nodeRef)
{
- return nodeService.getPath(nodeRef).toDisplayPath(nodeService) + "/" + nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
+ return nodeService.getPath(nodeRef).toDisplayPath(nodeService, permissionService) +
+ "/" + nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
}
/**