sakshik

Disable Download on a File

Blog Post created by sakshik on Apr 4, 2018

Problem: You don't want to disable download for all the files. You want to have a control over disabling download action on particular files in alfresco.

Solution: Use aspects. We will conditionalize disabling download action on an aspect and then apply that aspect to the file for which we want to disable download.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

 

Here are the steps:

First: Disable the top right corner Download button

Step 1) Stop alfresco server

Step 2) Create an XML file called hide-download-pdf.xml under

<ALF_HOME>\tomcat\shared\classes\alfresco\web-extension\site-data\extension:

<extension>
   <modules>
      <module>
         <id>Hide Download Buttons</id>
         <auto-deploy>true</auto-deploy>
         <customizations>
            <customization>
               <targetPackageRoot>org.alfresco</targetPackageRoot>
               <sourcePackageRoot>com.someco</sourcePackageRoot>
            </customization>
         </customizations>
      </module>
   </modules>

</extension>

Step 3) Create a file node-header.get.js with the following under 

<ALF_HOME>\tomcat\shared\classes\alfresco\web-extension/site-webscripts/com/someco/components/node-details

<import resource="classpath:/alfresco/templates/org/alfresco/import/alfresco-util.js">
var nodeDetails = AlfrescoUtil.getNodeDetails(model.nodeRef, model.site, null, model.libraryRoot);
var count = nodeDetails.item.node.properties["cm:autoVersion"];

if (count != undefined)
{
model.showDownload = "false";
}

Step 4) Restart alfresco server.

Go to a file in Alfresco -> Click Manage Aspects from the details options -> add cm:versionable aspect -> Hit Apply changes. You will see that the Download button will disappear

 

Second: Disable the Download action from browse options:

 

Step 1) Stop alfresco server

Step 2) To create a custom evaluator for an aspect, create an XML file custom-action-context.xml under
<ALF HOME>/tomcat/shared/classes/alfresco/web-extension folder.

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="custom.evaluator.doclib.hasversionable" class="org.alfresco.web.evaluator.HasAspectEvaluator">
<property name="aspects">
<list>
<value>cm:versionable</value>
</list>
</property>
</bean>
</beans>

 

 

Step 3) Add the following to share-config-custom.xml under

<config evaluator="string-compare" condition="DocLibActions">
<actions>
<action id="document-download" type="link" label="actions.document.download">
<param name="href">{downloadUrl}</param>
<evaluator negate=true>custom.evaluator.doclib.hasversionable</evaluator >
</action>
</actions>

Step 4) Restart alfresco server.

Go to a file in Alfresco -> Click Manage Aspects from the details options -> add cm:versionable aspect -> Hit Apply changes. You will see that the Download action from browse menu disappeared

Outcomes