diff --git a/config/alfresco/templates/webscripts/org/alfresco/slingshot/download.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/slingshot/download.get.desc.xml
index 92a58f7f4e..4fd72680a3 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/slingshot/download.get.desc.xml
+++ b/config/alfresco/templates/webscripts/org/alfresco/slingshot/download.get.desc.xml
@@ -7,6 +7,6 @@
/slingshot/node/{store_type}/{store_id}/{id}/content{property}/{filename}?a={attach?}
argument
user
- required
+ required
internal
\ No newline at end of file
diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml
index c1e3a18a4d..9b39c36c58 100644
--- a/config/alfresco/web-scripts-application-context.xml
+++ b/config/alfresco/web-scripts-application-context.xml
@@ -1855,6 +1855,7 @@
+
diff --git a/source/java/org/alfresco/repo/web/scripts/content/ContentGet.java b/source/java/org/alfresco/repo/web/scripts/content/ContentGet.java
index 46ee8f8660..4691ddcb36 100644
--- a/source/java/org/alfresco/repo/web/scripts/content/ContentGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/content/ContentGet.java
@@ -142,16 +142,16 @@ public class ContentGet extends StreamContent implements ServletContextAware
private void streamContentLocal(WebScriptRequest req, WebScriptResponse res, NodeRef nodeRef, boolean attach, QName propertyQName) throws IOException
{
String userAgent = req.getHeader("User-Agent");
-
- boolean rfc5987Supported = (null != userAgent) && (userAgent.contains("MSIE") || userAgent.contains(" Chrome/") || userAgent.contains(" FireFox/"));
+ userAgent = userAgent != null ? userAgent.toLowerCase() : "";
+ boolean rfc5987Supported = (userAgent.contains("msie") || userAgent.contains(" trident/") || userAgent.contains(" chrome/") || userAgent.contains(" firefox/"));
if (attach && rfc5987Supported)
{
String name = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
- //IE use file extension to get mimetype
- //So we set correct extension. see MNT-11246
- if(userAgent.contains("MSIE"))
+ // IE use file extension to get mimetype
+ // So we set correct extension. see MNT-11246
+ if (userAgent.contains("msie") || userAgent.contains(" trident/"))
{
String mimeType = contentService.getReader(nodeRef, propertyQName).getMimetype();
if (!mimetypeService.getMimetypes(FilenameUtils.getExtension(name)).contains(mimeType))
diff --git a/source/java/org/alfresco/slingshot/web/scripts/SlingshotContentGet.java b/source/java/org/alfresco/slingshot/web/scripts/SlingshotContentGet.java
index c80889dfd3..1f1c80874a 100644
--- a/source/java/org/alfresco/slingshot/web/scripts/SlingshotContentGet.java
+++ b/source/java/org/alfresco/slingshot/web/scripts/SlingshotContentGet.java
@@ -24,6 +24,8 @@ import java.util.Map;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.Client;
import org.alfresco.repo.Client.ClientType;
+import org.alfresco.repo.transaction.RetryingTransactionHelper;
+import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.repo.web.scripts.content.ContentGet;
import org.alfresco.service.cmr.activities.ActivityPoster;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -48,6 +50,7 @@ public class SlingshotContentGet extends ContentGet
{
protected SiteService siteService;
private ActivityPoster poster;
+ private RetryingTransactionHelper transactionHelper;
public void setSiteService(SiteService siteService)
{
@@ -59,9 +62,12 @@ public class SlingshotContentGet extends ContentGet
this.poster = poster;
}
- /* (non-Javadoc)
- * @see org.alfresco.repo.web.scripts.content.ContentGet#execute(org.springframework.extensions.webscripts.WebScriptRequest, org.springframework.extensions.webscripts.WebScriptResponse)
- */
+ public void setTransactionHelper(RetryingTransactionHelper transactionHelper)
+ {
+ this.transactionHelper = transactionHelper;
+ }
+
+
@Override
public void execute(final WebScriptRequest req, final WebScriptResponse res) throws IOException
{
@@ -87,9 +93,17 @@ public class SlingshotContentGet extends ContentGet
{
filename = (String)this.nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
}
- // post an activity - mirror the mechanism as if from the Share application
- poster.postFileFolderActivity(ActivityPoster.DOWNLOADED, null, null,
- site.getShortName(), null, nodeRef, filename, "documentlibrary", Client.asType(ClientType.webclient), null);
+ final String strFilename = filename;
+ transactionHelper.doInTransaction(new RetryingTransactionCallback() {
+ @Override
+ public Void execute() throws Throwable
+ {
+ // post an activity - mirror the mechanism as if from the Share application
+ poster.postFileFolderActivity(ActivityPoster.DOWNLOADED, null, null,
+ site.getShortName(), null, nodeRef, strFilename, "documentlibrary", Client.asType(ClientType.webclient), null);
+ return null;
+ }
+ }, false, true);
}
}
}