Alfresco: Kein Download bei Schreibrecht (Consumer)

Alfresco-Share lässt im Standard den Download von Objekten zu, sobald Leserechte vorhanden sind. Das macht grundsätzlich so auch Sinn. Es kann aber doch sein, dass man unter gewissen Umständen den Download “verhindern” will, auch wenn der lesende Zugriff gestattet ist. Die hier beschriebene Methode verhindert den Download nicht per se in Alfresco (CIFS, etc.). Ich beschränke mich auf Alfresco-Share und begnüge mich auch damit, dass der Download-Button einfach nicht angezeigt wird. Höchstwahrscheinlich gibt es noch elegantere Mögichkeiten um dies in Alfresco zu bewerkstelligen. Die beschriebene Lösung gewinnt also bestimmt keinen “Schönheitspreis”. Für meine Belange reicht’s aber aus:

Download-Links

Alfresco-Aktionen sind ab Version 4 global in

/opt/alfresco/tomcat/webapps/share/WEB-INF/classes/alfresco/share-documentlibrary-config.xml

Sektion DocLibActions definiert.

Diese können über

/opt/alfresco/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml

überschrieben werden:

<!-- Document Library Actions config section -->
       <config evaluator="string-compare" condition="DocLibActions">
         <actions>
         <!-- Download document -->
            <action id="document-download" type="link" label="actions.document.download">
               <param name="href">{downloadUrl}</param>
                   <permissions>
                     <permission allow="true">Write</permission>
                   </permissions>
            </action>

         <!-- View document in browser -->
            <action id="document-view-content" type="link" label="actions.document.view">
               <param name="href">{viewUrl}</param>
                   <permissions>
                     <permission allow="true">Write</permission>
                   </permissions>
            </action>

         <!-- Copy to -->
            <action id="document-copy-to" type="javascript" label="actions.document.copy-to">
               <param name="function">onActionCopyTo</param>
                   <permissions>
                     <permission allow="true">Write</permission>
                   </permissions>
               <evaluator negate="true">evaluator.doclib.action.isLocked</evaluator>
            </action>

          <!-- Assign workflow -->
            <action id="document-assign-workflow" type="javascript" label="actions.document.assign-workflow">
               <param name="function">onActionAssignWorkflow</param>
                   <permissions>
                     <permission allow="true">Write</permission>
                   </permissions>
            </action>

          <!-- Publish document -->
            <action id="document-publish" type="javascript" label="actions.document.publish">
               <param name="function">onActionPublish</param>
                   <permissions>
                     <permission allow="true">Write</permission>
                   </permissions>
               <evaluator negate="true">evaluator.doclib.action.isLocked</evaluator>
            </action>

         <!-- Download folder -->
            <action id="folder-download" type="javascript" label="actions.folder.download" icon="document-download">
                 <permissions>
                   <permission allow="true">Write</permission>
                 </permissions>
               <param name="function">onActionFolderDownload</param>
            </action>
         </actions>
       </config>

Download Button

Die Aktionen sind nicht der einzige Weg um ein Dokument herunterladen zu können. Auf der Dokumenten-Detail Ansicht gibt es auch noch einen grossen Download-Button, der weg muss:

/opt/alfresco/tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/node-details/node-header.get.html.ftl
  • Backup von diesem File erstellen
  • Folgendes If-Statement kann ersatzlos gestrichen werden
Select all
          <\#if showDownload == "true">
             <!-- Download Button -->
             <span class="yui-button yui-link-button onDownloadDocumentClick">
                <span class="first-child">
                   <a href="$\{url.context\}/proxy/alfresco/$\{node.contentURL?js_string\}?a=true" tabindex="0">$\{msg("button.download")\}</a>
                </span>
             </span>
          </\#if>

Download as Zip

To disable Download As Zip Action, add the following entries in

/opt/alfresco/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml 
 <!-- Custom DocLibActions config section -->
<config evaluator="string-compare" condition="DocLibActions">
 
 <actions>
     <action id="folder-download" type="javascript" label="actions.folder.download" icon="document-download">
	 <param name="function">onActionFolderDownload</param>
 
          <!-- Disable Action Evaluator -->    
         <evaluator>evaluator.doclib.action.disableAction</evaluator>
     </action>
</actions>
 
</config>
 
 <!-- Document Library config section -->
<config evaluator="string-compare" condition="DocumentLibrary" replace="true">
 
<multi-select>
 
        <!--  Download as Zip commented
           <action type="action-link" id="onActionDownload" label="menu.selected-items.download" /> 
        -->
         <action type="action-link" id="onActionCopyTo" permission="Write" label="menu.selected-items.copy" />
         <action type="action-link" id="onActionMoveTo" permission="Delete" label="menu.selected-items.move"/>
         <action type="action-link" id="onActionAssignWorkflow" asset="document" label="menu.selected-items.assign-workflow"/>
         <action type="action-link" id="onActionDelete" permission="Delete" label="menu.selected-items.delete"/>
         <action type="action-link" id="onActionCloudSync" asset="document"  permission="CreateChildren" label="menu.selected-items.cloudSync" notAspect="sync:syncSetMemberNode" syncMode="ON_PREMISE" />
         <action type="action-link" id="onActionCloudSyncRequest" label="menu.selected-items.cloudRequestSync" hasAspect="sync:syncSetMemberNode" syncMode="ON_PREMISE" />
 
</multi-select>

</config>

Download Button auf Previewer entfernen

Über den Previewer ist es auch möglich, einen Download anzustossen. Diese Möglichkeiten enferne ich gleich ganz. Das geht so: http://192.168.2.32:8082/?p=534